blob: 0b1b86edf35361120c408782ac039abbdc83ae35 [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 )
ll385fe342023-01-10 14:47:46 +08009#define LYNQ_CALL_MAX 3
lh25827952022-01-10 00:34:35 -080010#define LYNQ_CALL_FAIL_VENDOR_CAUSE 64
q.huang3cda0392022-10-20 15:25:45 +080011#define MAX_IP_LENGTH 128
12#define MAX_VLAN_INFO_LENGTH 128
13
lh25827952022-01-10 00:34:35 -080014typedef enum {
q.huangfe1b4052022-04-18 00:09:50 -040015 LYNQ_CALL_FAIL_UNOBTAINABLE_NUMBER = 1,
16 LYNQ_CALL_FAIL_NORMAL = 16,
17 LYNQ_CALL_FAIL_BUSY = 17,
18 LYNQ_CALL_FAIL_CONGESTION = 34,
19 LYNQ_CALL_FAIL_ACM_LIMIT_EXCEEDED = 68,
20 LYNQ_CALL_FAIL_CALL_BARRED = 240,
21 LYNQ_CALL_FAIL_FDN_BLOCKED = 241,
22 LYNQ_CALL_FAIL_IMSI_UNKNOWN_IN_VLR = 242,
23 LYNQ_CALL_FAIL_IMEI_NOT_ACCEPTED = 243,
24 LYNQ_CALL_FAIL_DIAL_MODIFIED_TO_USSD = 244, /* STK Call Control */
25 LYNQ_CALL_FAIL_DIAL_MODIFIED_TO_SS = 245,
26 LYNQ_CALL_FAIL_DIAL_MODIFIED_TO_DIAL = 246,
27 LYNQ_CALL_FAIL_CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000,
28 LYNQ_CALL_FAIL_CDMA_DROP = 1001,
29 LYNQ_CALL_FAIL_CDMA_INTERCEPT = 1002,
30 LYNQ_CALL_FAIL_CDMA_REORDER = 1003,
31 LYNQ_CALL_FAIL_CDMA_SO_REJECT = 1004,
32 LYNQ_CALL_FAIL_CDMA_RETRY_ORDER = 1005,
33 LYNQ_CALL_FAIL_CDMA_ACCESS_FAILURE = 1006,
34 LYNQ_CALL_FAIL_CDMA_PREEMPTED = 1007,
35 LYNQ_CALL_FAIL_CDMA_NOT_EMERGENCY = 1008, /* For non-emergency number dialed
lh25827952022-01-10 00:34:35 -080036 during emergency callback mode */
q.huangfe1b4052022-04-18 00:09:50 -040037 LYNQ_CALL_FAIL_CDMA_ACCESS_BLOCKED = 1009, /* CDMA network access probes blocked */
38 LYNQ_CALL_FAIL_ERROR_UNSPECIFIED = 0xffff
lh25827952022-01-10 00:34:35 -080039} lynq_last_call_fail_cause_t;
40typedef struct
41{
42 lynq_last_call_fail_cause_t cause_code;
43 char vendor_cause[LYNQ_CALL_FAIL_VENDOR_CAUSE];
44}lynqLastCallFailCause;
45int lynq_init_call(int uToken);
46int lynq_deinit_call();
47int lynq_call(int *handle,char addr[]);
48int lynq_call_answer();
49int lynq_call_hungup(int*handle);
50int lynq_call_hungup_all();
lh25827952022-01-10 00:34:35 -080051int lynq_set_auto_answercall(const int mode);
q.huangb0eb7b02022-03-29 04:17:32 -040052int lynq_get_mute_mic(int *status);
lh25827952022-01-10 00:34:35 -080053int lynq_set_mute_mic(const int enable);
q.huang9ee6d5b2022-04-05 23:11:02 -040054int lynq_get_speech_volume(int *volume);
55int lynq_set_speech_volume(const int volume);
56int lynq_incall_record_start(const char* file_path);
q.huangb0eb7b02022-03-29 04:17:32 -040057int lynq_incall_record_stop();
lh25827952022-01-10 00:34:35 -080058int lynq_set_DTMF(const char callnum);
59int lynq_set_DTMF_volume(const int volume);
60int lynq_get_current_call_state(int *handle, int *call_state,int *toa,int *direction,char addr[]);
lla0438322022-07-20 09:30:19 +000061/*lei add for T8TSK-17 2022/7/20*/
62int lynq_switch_waiting_or_holding_and_active(void);
63int lynq_hangup_waiting_or_background(void);
64int lynq_hangup_foreground_resume_background(void);
ll385fe342023-01-10 14:47:46 +080065
66/*lei add for API-163/API-164 2023/1/3*/
67/**
68 * @brief wait_call_state_change
69 *
70 * @param handle call_id
71 * @return int
72 */
73int lynq_wait_call_state_change(int *handle);
74/*lei add for API-163/API-164 2023/1/3*/
lla0438322022-07-20 09:30:19 +000075/*lei add for T8TSK-17 2022/7/20*/
q.huangfe1b4052022-04-18 00:09:50 -040076
77#ifdef ECALL_SUPPORT
78typedef enum{
79 LYNQ_ECALL_SET_NUMBER = 0, /* Set Number */
80 LYNQ_ECALL_SET_URI = 1, /* Set Uri */
81}LYNQ_ECall_Set_Type;
82
83typedef enum{
84 LYNQ_EMER_CAT_MANUAL_ECALL = 0, /* Manual Emergency eCall */
85 LYNQ_EMER_CAT_AUTO_ECALL = 1, /* Automatic Emergency eCall */
86}LYNQ_ECall_Category;
87
88typedef enum{
89 LYNQ_ECALL_TEST = 0, /* Test eCall */
90 LYNQ_ECALL_EMERGENCY = 1, /* Emergency eCall */
91 LYNQ_ECALL_RECONFIG = 2, /* Reconfiguration eCall */
q.huangf6c2ac82022-08-29 20:04:31 +080092 LYNQ_ECALL_MO_MAX=3,
93 LYNQ_ECALL_CALLBACK = 3, /* Callback eCall */
q.huangfe1b4052022-04-18 00:09:50 -040094 LYNQ_ECALL_VAR_MAX,
q.huangf6c2ac82022-08-29 20:04:31 +080095 LYNQ_ECALL_VAR_NONE=LYNQ_ECALL_VAR_MAX,
q.huangfe1b4052022-04-18 00:09:50 -040096}LYNQ_ECall_Variant;
97
q.huang18d08bf2022-04-19 20:27:44 -040098typedef enum{
99 LYNQ_ECALL_SENDING_START = 1,
100 LYNQ_ECALL_SENDING_MSD = 2,
101 LYNQ_ECALL_LLACK_RECEIVED = 3,
102 LYNQ_ECALL_ALACK_POSITIVE_RECEIVED = 4,
103 LYNQ_ECALL_ALACK_CLEARDOWN_RECEIVED = 5,
q.huang3cda0392022-10-20 15:25:45 +0800104 LYNQ_ECALL_DAILING = 9,
105 LYNQ_ECALL_ALERTING = 10,
q.huang18d08bf2022-04-19 20:27:44 -0400106 LYNQ_ECALL_ACTIVE = 11,
107 LYNQ_ECALL_DISCONNECTED = 12,
108 LYNQ_ECALL_IMS_ACTIVE = 13,
109 LYNQ_ECALL_IMS_DISCONNECTED = 14,
110 LYNQ_ECALL_ABNORMAL_HANGUP=15,
111 LYNQ_ECALL_IMS_MSD_ACK = 20,
112 LYNQ_ECALL_IMS_UPDATE_MSD = 21,
113 LYNQ_ECALL_IMS_IN_BAND_TRANSFER = 22,
114 LYNQ_ECALL_IMS_MSD_NACK = 23,
115 LYNQ_ECALL_IMS_SRVCC = 24,
116 LYNQ_ECALL_ONLY_DEREGISTRATION = 31,
117 LYNQ_ECALL_MAY_DEREGISTER = 32,
118 LYNQ_ECALL_PSAP_CALLBACK_START = 40,
119 LYNQ_ECALL_PSAP_CALLBACK_IMS_UPDATE_MSD = 41,
q.huangf6c2ac82022-08-29 20:04:31 +0800120 LYNQ_ECALL_SENDING_START_IN_VOICE=8000,
q.huang783ed5d2022-06-02 14:49:02 +0800121 LYNQ_ECALL_T2_TIMER_OUT = 9000,
122 LYNQ_ECALL_T5_TIMER_OUT = 9001,
123 LYNQ_ECALL_T6_TIMER_OUT = 9002,
124 LYNQ_ECALL_T7_TIMER_OUT = 9003,
125 LYNQ_ECALL_REDIAL_TIMER_OUT = 9004,
q.huang42d80e72022-07-01 11:49:47 +0800126 LYNQ_ECALL_AUTO_ANS_TIMER_OUT = 9005,
127 LYNQ_ECALL_AUTO_ANS_IMS_TIMER_OUT = 9006,
q.huang18d08bf2022-04-19 20:27:44 -0400128 LYNQ_ECALL_UNSPECIFIED = 0xffff,
129}LYNQ_ECall_Indication;
130
q.huangfe1b4052022-04-18 00:09:50 -0400131int lynq_set_test_num(LYNQ_ECall_Set_Type type, const char *test_num, int test_num_length);
q.huang892722f2022-05-10 20:37:21 +0800132int 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);
133int lynq_set_msd(int* handle, const unsigned char *msd_data, int msd_length);
q.huangfe1b4052022-04-18 00:09:50 -0400134int lynq_set_ivs(int enable);
135int lynq_ivs_push_msd();
q.huang2b60c482022-06-30 19:39:20 +0800136int lynq_wait_ecall_indication(int* handle, LYNQ_ECall_Indication *eCall_Indication);
q.huangfe1b4052022-04-18 00:09:50 -0400137#endif
q.huangfe1b4052022-04-18 00:09:50 -0400138
q.huang877d6b32022-06-06 16:15:31 +0800139/*Audio Path setting begin*/
140typedef enum{
141 AUDIO_MODE_CODEC = 0, /* Codec */
142 AUDIO_MODE_RTP = 1, /* RTP */
143}LYNQ_Audio_Mode;
144
145typedef enum{
146 RTP_CLIENT = 0,
147 RTP_SERVER =1,
q.huang3e761702022-06-28 20:12:01 +0800148 RTP_MODE_MAX
q.huang877d6b32022-06-06 16:15:31 +0800149}LYNQ_Rtp_Mode;
150
151/*set*/
152int lynq_set_voice_audio_mode(const LYNQ_Audio_Mode audio_mode);
q.huang3e761702022-06-28 20:12:01 +0800153int lynq_set_remote_rtp_ip(const char* ip, const int ip_length);
q.huang97fcbe52022-09-30 17:33:20 +0800154int lynq_set_vlan_info(const char* vlan_info, const int vlan_info_length);
q.huang65033cb2022-06-06 20:23:15 +0800155int lynq_set_rtp_port(const LYNQ_Rtp_Mode rtp_mode, const int port);
q.huang877d6b32022-06-06 16:15:31 +0800156int lynq_set_rtp_param(const int clock_rate,const int channels,const int latency); //only for client
157/*get*/
158LYNQ_Audio_Mode lynq_get_voice_audio_mode();
q.huang3e761702022-06-28 20:12:01 +0800159int lynq_get_remote_rtp_ip(char* ip, const int ip_length);
q.huang97fcbe52022-09-30 17:33:20 +0800160int lynq_get_vlan_info(char* vlan_info, const int vlan_info_length);
q.huang877d6b32022-06-06 16:15:31 +0800161int lynq_get_rtp_port(const LYNQ_Rtp_Mode rtp_mode, int* port);
162int lynq_get_rtp_param(int* clock_rate,int* channels, int* latency);//only for client
163/*Audio Path setting end*/
q.huang3cda0392022-10-20 15:25:45 +0800164
165void lynq_set_test_mode(const int test_mode);
lh25827952022-01-10 00:34:35 -0800166#ifdef __cplusplus
167}
168#endif
169#endif