blob: e15766728d1ffb4a8fd0b4485673a760f27c0e50 [file] [log] [blame]
lh25827952022-01-10 00:34:35 -08001#ifndef LYNQ_CALL_H
2#define LYNQ_CALL_H 1
3#ifdef __cplusplus
4extern "C" {
5#endif
6#define LYNQ_PHONE_NUMBER_MAX 32
7#define INDEX_IS_NUMBER( alpha_char ) \
8 ( ( (alpha_char >= '0') && (alpha_char <= '9') ) ? 1 : 0 )
9#define LYNQ_CALL_MAX 10
10#define LYNQ_CALL_FAIL_VENDOR_CAUSE 64
11typedef enum {
q.huangfe1b4052022-04-18 00:09:50 -040012 LYNQ_CALL_FAIL_UNOBTAINABLE_NUMBER = 1,
13 LYNQ_CALL_FAIL_NORMAL = 16,
14 LYNQ_CALL_FAIL_BUSY = 17,
15 LYNQ_CALL_FAIL_CONGESTION = 34,
16 LYNQ_CALL_FAIL_ACM_LIMIT_EXCEEDED = 68,
17 LYNQ_CALL_FAIL_CALL_BARRED = 240,
18 LYNQ_CALL_FAIL_FDN_BLOCKED = 241,
19 LYNQ_CALL_FAIL_IMSI_UNKNOWN_IN_VLR = 242,
20 LYNQ_CALL_FAIL_IMEI_NOT_ACCEPTED = 243,
21 LYNQ_CALL_FAIL_DIAL_MODIFIED_TO_USSD = 244, /* STK Call Control */
22 LYNQ_CALL_FAIL_DIAL_MODIFIED_TO_SS = 245,
23 LYNQ_CALL_FAIL_DIAL_MODIFIED_TO_DIAL = 246,
24 LYNQ_CALL_FAIL_CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000,
25 LYNQ_CALL_FAIL_CDMA_DROP = 1001,
26 LYNQ_CALL_FAIL_CDMA_INTERCEPT = 1002,
27 LYNQ_CALL_FAIL_CDMA_REORDER = 1003,
28 LYNQ_CALL_FAIL_CDMA_SO_REJECT = 1004,
29 LYNQ_CALL_FAIL_CDMA_RETRY_ORDER = 1005,
30 LYNQ_CALL_FAIL_CDMA_ACCESS_FAILURE = 1006,
31 LYNQ_CALL_FAIL_CDMA_PREEMPTED = 1007,
32 LYNQ_CALL_FAIL_CDMA_NOT_EMERGENCY = 1008, /* For non-emergency number dialed
lh25827952022-01-10 00:34:35 -080033 during emergency callback mode */
q.huangfe1b4052022-04-18 00:09:50 -040034 LYNQ_CALL_FAIL_CDMA_ACCESS_BLOCKED = 1009, /* CDMA network access probes blocked */
35 LYNQ_CALL_FAIL_ERROR_UNSPECIFIED = 0xffff
lh25827952022-01-10 00:34:35 -080036} lynq_last_call_fail_cause_t;
37typedef struct
38{
39 lynq_last_call_fail_cause_t cause_code;
40 char vendor_cause[LYNQ_CALL_FAIL_VENDOR_CAUSE];
41}lynqLastCallFailCause;
42int lynq_init_call(int uToken);
43int lynq_deinit_call();
44int lynq_call(int *handle,char addr[]);
45int lynq_call_answer();
46int lynq_call_hungup(int*handle);
47int lynq_call_hungup_all();
48int lynq_wait_incoming_call(int *handle);
49int lynq_set_auto_answercall(const int mode);
q.huangb0eb7b02022-03-29 04:17:32 -040050int lynq_get_mute_mic(int *status);
lh25827952022-01-10 00:34:35 -080051int lynq_set_mute_mic(const int enable);
q.huang9ee6d5b2022-04-05 23:11:02 -040052int lynq_get_speech_volume(int *volume);
53int lynq_set_speech_volume(const int volume);
54int lynq_incall_record_start(const char* file_path);
q.huangb0eb7b02022-03-29 04:17:32 -040055int lynq_incall_record_stop();
lh25827952022-01-10 00:34:35 -080056int lynq_set_DTMF(const char callnum);
57int lynq_set_DTMF_volume(const int volume);
58int lynq_get_current_call_state(int *handle, int *call_state,int *toa,int *direction,char addr[]);
q.huangfe1b4052022-04-18 00:09:50 -040059
60#ifdef ECALL_SUPPORT
61typedef enum{
62 LYNQ_ECALL_SET_NUMBER = 0, /* Set Number */
63 LYNQ_ECALL_SET_URI = 1, /* Set Uri */
64}LYNQ_ECall_Set_Type;
65
66typedef enum{
67 LYNQ_EMER_CAT_MANUAL_ECALL = 0, /* Manual Emergency eCall */
68 LYNQ_EMER_CAT_AUTO_ECALL = 1, /* Automatic Emergency eCall */
69}LYNQ_ECall_Category;
70
71typedef enum{
72 LYNQ_ECALL_TEST = 0, /* Test eCall */
73 LYNQ_ECALL_EMERGENCY = 1, /* Emergency eCall */
74 LYNQ_ECALL_RECONFIG = 2, /* Reconfiguration eCall */
75 LYNQ_ECALL_VAR_MAX,
76}LYNQ_ECall_Variant;
77
q.huang18d08bf2022-04-19 20:27:44 -040078typedef enum{
79 LYNQ_ECALL_SENDING_START = 1,
80 LYNQ_ECALL_SENDING_MSD = 2,
81 LYNQ_ECALL_LLACK_RECEIVED = 3,
82 LYNQ_ECALL_ALACK_POSITIVE_RECEIVED = 4,
83 LYNQ_ECALL_ALACK_CLEARDOWN_RECEIVED = 5,
84 LYNQ_ECALL_ACTIVE = 11,
85 LYNQ_ECALL_DISCONNECTED = 12,
86 LYNQ_ECALL_IMS_ACTIVE = 13,
87 LYNQ_ECALL_IMS_DISCONNECTED = 14,
88 LYNQ_ECALL_ABNORMAL_HANGUP=15,
89 LYNQ_ECALL_IMS_MSD_ACK = 20,
90 LYNQ_ECALL_IMS_UPDATE_MSD = 21,
91 LYNQ_ECALL_IMS_IN_BAND_TRANSFER = 22,
92 LYNQ_ECALL_IMS_MSD_NACK = 23,
93 LYNQ_ECALL_IMS_SRVCC = 24,
94 LYNQ_ECALL_ONLY_DEREGISTRATION = 31,
95 LYNQ_ECALL_MAY_DEREGISTER = 32,
96 LYNQ_ECALL_PSAP_CALLBACK_START = 40,
97 LYNQ_ECALL_PSAP_CALLBACK_IMS_UPDATE_MSD = 41,
q.huang783ed5d2022-06-02 14:49:02 +080098 LYNQ_ECALL_T2_TIMER_OUT = 9000,
99 LYNQ_ECALL_T5_TIMER_OUT = 9001,
100 LYNQ_ECALL_T6_TIMER_OUT = 9002,
101 LYNQ_ECALL_T7_TIMER_OUT = 9003,
102 LYNQ_ECALL_REDIAL_TIMER_OUT = 9004,
q.huang18d08bf2022-04-19 20:27:44 -0400103 LYNQ_ECALL_UNSPECIFIED = 0xffff,
104}LYNQ_ECall_Indication;
105
q.huangfe1b4052022-04-18 00:09:50 -0400106int lynq_set_test_num(LYNQ_ECall_Set_Type type, const char *test_num, int test_num_length);
q.huang892722f2022-05-10 20:37:21 +0800107int lynq_fast_ecall(int* handle, LYNQ_ECall_Category lynq_ecall_cat, LYNQ_ECall_Variant lynq_ecall_variant, const char *addr, int addr_length, const unsigned char *msd_data, int msd_length);
108int lynq_set_msd(int* handle, const unsigned char *msd_data, int msd_length);
q.huangfe1b4052022-04-18 00:09:50 -0400109int lynq_set_ivs(int enable);
110int lynq_ivs_push_msd();
q.huang18d08bf2022-04-19 20:27:44 -0400111int lynq_wait_ecall_indication(LYNQ_ECall_Indication *Endication);
q.huangfe1b4052022-04-18 00:09:50 -0400112#endif
113/*E-CALL interface end*/
114
lh25827952022-01-10 00:34:35 -0800115#ifdef __cplusplus
116}
117#endif
118#endif