blob: 914ded0f7c200c5040ed09a41ba1800e8a661126 [file] [log] [blame]
b.liu68a94c92025-05-24 12:53:41 +08001
2
3#define GSW_HAL_SUCCESS 0
4#define GSW_HAL_FAIL -1
5#define GSW_HAL_MEM_INVAILD -2
6
7#define GSW_EU_ECALL_MAX_MSD 140
8#define GSW_EU_ECALL_MAX_PHONE_NUMBER 82
9
10typedef enum
11{
12 GSW_EU_ECALL_TYPE_TEST = 1,
13 GSW_EU_ECALL_TYPE_EMERGENCY = 2,
14 GSW_EU_ECALL_TYPE_RECONFIG = 3,
15} gsw_eu_ecall_type_e;
16
17typedef struct
18{
19 uint32_t msd_len;
20 uint8_t msd[GSW_EU_ECALL_MAX_MSD];
21 gsw_eu_ecall_type_e type;
22 int32_t auto_trigger;
23 char ecall_number[GSW_EU_ECALL_MAX_PHONE_NUMBER];
24} gsw_eu_ecall_info_t;
25
26
27
28typedef enum {
29 GSW_EU_ECALL_STATE_NONE = -1,
30 GSW_EU_ECALL_STATE_INACTIVE = 0,
31 GSW_EU_ECALL_STATE_ORIGINATING_CALL = 1,
32 GSW_EU_ECALL_STATE_IN_CALL_TRANSMITTING = 2,
33 GSW_EU_ECALL_STATE_WAITING_FOR_AL_ACK = 3,
34 GSW_EU_ECALL_STATE_IN_CALL = 4,
35 GSW_EU_ECALL_STATE_IDLE_ALLOW_MT_ECALL = 5,
36} gsw_eu_ecall_state_e;
37
38typedef enum {
39 GSW_EU_ECALL_MODE_NORMAL = 0,
40 GSW_EU_ECALL_MODE_ONLY = 1,
41 GSW_EU_ECALL_MODE_DEFAULT = 2,
42} gsw_eu_ecall_mode_e;
43
44
45typedef struct
46{
47 uint8_t enable;
48 uint8_t voice_mute;
49 gsw_eu_ecall_mode_e mode;
50 uint8_t report_event;
51 uint16_t start_timer;
52 uint16_t hack_timer;
53 uint16_t trans_timer;
54 uint8_t fail_redial;
55 uint8_t drop_redial;
56 uint16_t cleardown_timer;
57 uint16_t init_timer;
58 uint16_t nad_reg_timer;
59 uint16_t nad_dereg_timer;
60 uint8_t standard;
61 uint16_t era_glonass_redial;
62 uint16_t auto_answer; //auto_answer
63} gsw_eu_ecall_config_t;
64
65typedef enum {
66 GSW_EU_ECALL_CONFIG_ENABLE = (1 << 0),
67 GSW_EU_ECALL_CONFIG_VOICE_MUTE = (1 << 1),
68 GSW_EU_ECALL_CONFIG_MODE = (1 << 2),
69 GSW_EU_ECALL_CONFIG_REPORT_EVENT = (1 << 3),
70 GSW_EU_ECALL_CONFIG_START_TIMER = (1 << 4),
71 GSW_EU_ECALL_CONFIG_HACK_TIMER = (1 << 5),
72 GSW_EU_ECALL_CONFIG_TRANS_TIMER = (1 << 6),
73 GSW_EU_ECALL_CONFIG_FAIL_REDIAL = (1 << 7),
74 GSW_EU_ECALL_CONFIG_DROP_REDIAL = (1 << 8),
75 GSW_EU_ECALL_CONFIG_CLEARDOWN_TIMER = (1 << 9),
76 GSW_EU_ECALL_CONFIG_INIT_TIMER = (1 << 10),
77 GSW_EU_ECALL_CONFIG_NAD_REG_TIMER = (1 << 11),
78 GSW_EU_ECALL_CONFIG_NAD_DEREG_TIMER = (1 << 12),
79 GSW_EU_ECALL_CONFIG_STANDARD = (1 << 13),
80 GSW_EU_ECALL_CONFIG_ERA_GLONASS_REDIAL = (1 << 14),
81 GSW_EU_ECALL_CONFIG_AUTO_ANSWER = (1 << 15),
82} gsw_eu_ecall_config_e;
83
84typedef enum {
85 GSW_EU_ECALL_EVENT_FAIL_NONE = 0,
86 GSW_EU_ECALL_EVENT_FAIL_TIMEOUT = 1,
87 GSW_EU_ECALL_EVENT_FAIL_HACK_TIMEOUT = 2,
88 GSW_EU_ECALL_EVENT_FAIL_MSD_TRANS_TIMEOUT = 3,
89 GSW_EU_ECALL_EVENT_FAIL_IVS_RESET_TIMEOUT = 4,
90 GSW_EU_ECALL_EVENT_FAIL_CLEAR_DOWN_FALLBACK_TIMEOUT = 5,
91 GSW_EU_ECALL_EVENT_FAIL_IVS_INITIATION_TIMEOUT = 6,
92} gsw_eu_ecall_event_fail_e;
93
94typedef enum {
95 GSW_EU_ECALL_EVENT_PROCESS_IVS_NONE = 0,
96 GSW_EU_ECALL_EVENT_PROCESS_IVS_START_RECEIVED_MSD = 1,
97 GSW_EU_ECALL_EVENT_PROCESS_IVS_NACK_RECEIVED = 2,
98 GSW_EU_ECALL_EVENT_PROCESS_IVS_ACK_RECEIVED = 3,
99 GSW_EU_ECALL_EVENT_PROCESS_IVS_TX_COMPLETED = 4,
100 GSW_EU_ECALL_EVENT_PROCESS_IVS_HLACK_RECEIVED = 5,
101} gsw_eu_ecall_event_process_e;
102
103typedef enum {
104 GSW_EU_ECALL_EVENT_MSDUPADTE_NONE = -1,
105 GSW_EU_ECALL_EVENT_MSDUPDATE_IVS_UPDATING_MSD = 0,
106 GSW_EU_ECALL_EVENT_MSDUPDATE_PSAP_REQURE_UPDATE_MSD = 1,
107 GSW_EU_ECALL_EVENT_MSDUPDATE_IVS_UPDATE_MSD_TIMEOUT = 2,
108} gsw_eu_ecall_event_msdupdate_e;
109
110typedef enum {
111 GSW_EU_ECALL_EVENT_ESTABLISH_NONE = -1,
112 GSW_EU_ECALL_EVENT_ESTABLISH_SUCCESS = 0,
113 GSW_EU_ECALL_EVENT_ESTABLISH_FAIL = 1,
114} gsw_eu_ecall_event_establish_e;
115
116typedef enum {
117 GSW_EU_ECALL_EVENT_EXTEND_STATE_NONE = -1,
118 GSW_EU_ECALL_EVENT_EXTEND_STATE_START_RECV_SYN = 0,
119 GSW_EU_ECALL_EVENT_EXTEND_STATE_T9_TIMEOUT = 1,
120 GSW_EU_ECALL_EVENT_EXTEND_STATE_T10_TIMEOUT = 2,
121 GSW_EU_ECALL_EVENT_EXTEND_STATE_IVS_ALACK_RECEIVED = 3,
122 GSW_EU_ECALL_EVENT_EXTEND_STATE_IVS_LLACK_RECEIVED = 4,
123 GSW_EU_ECALL_EVENT_EXTEND_STATE_STOPPED = 5,
124 GSW_EU_ECALL_EVENT_EXTEND_STATE_ANSWERING_INCOMING_PSAP_ECALL = 6,
125 GSW_EU_ECALL_EVENT_EXTEND_STATE_CLEARDOWN_RECEIVED = 7,
126 GSW_EU_ECALL_EVENT_EXTEND_STATE_CALLBACK_TIMEOUT = 8,
127 GSW_EU_ECALL_EVENT_IVS_NORMAL_CLEARING = 9,
128 GSW_EU_ECALL_EVENT_IVS_ABNORMAL_CLEARING = 10,
129} gsw_eu_ecall_event_extend_state_e;
130
131typedef struct
132{
133 uint8_t ori_remainder_times;
134 uint16_t time;
135} gsw_eu_ecall_event_originate_fail_redial_t;
136
137typedef struct
138{
139 uint8_t drop_remainder_times;
140 uint16_t time; /* The minimum time duration between the previous call attempt */
141} gsw_eu_ecall_event_drop_redial_t;
142
143
144typedef struct
145{
146 gsw_eu_ecall_event_fail_e fail;
147 gsw_eu_ecall_event_process_e process;
148 gsw_eu_ecall_event_msdupdate_e msdupdate;
149 gsw_eu_ecall_event_establish_e establish;
150 uint16_t hack_code;
151 gsw_eu_ecall_event_originate_fail_redial_t ori_redial;
152 gsw_eu_ecall_event_drop_redial_t drop_redial;
153 gsw_eu_ecall_event_extend_state_e extend_state;
154} gsw_eu_ecall_event_t;
155
156typedef void (*gsw_eu_ecall_event_cb_f)(gsw_eu_ecall_event_t *p_event);
157
158
159typedef enum {
160 GSW_EU_ECALL_MSD_TRANS_STATUS_NONE = -1,
161 GSW_EU_ECALL_MSD_TRANS_STATUS_SUCCESS = 0,
162 GSW_EU_ECALL_MSD_TRANS_STATUS_FAILURE = 1,
163} gsw_eu_ecall_msd_trans_status_e;
164
165typedef void (*gsw_eu_ecall_status_cb_f)(uint32_t id, gsw_eu_ecall_msd_trans_status_e status);
166
167
168/**
169* @brief init the Europe Ecall voice
170* @param [in] None
171* @param [out] None
172* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
173*/
174int32_t gsw_eu_ecall_voice_init(void);
175
176/**
177* @brief deinit the Europe Ecall voice
178* @param [in] None
179* @param [out] None
180* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
181*/
182int32_t gsw_eu_ecall_voice_deinit(void);
183
184/**
185* @brief start a Europe Ecall
186* @param [in] gsw_eu_ecall_info_t *p_info: ecall info
187* @param [out] None
188* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
189*/
190int32_t gsw_eu_ecall_start(gsw_eu_ecall_info_t *p_info);
191
192/**
193* @brief hangup a Europe Ecall
194* @param [in] None
195* @param [out] None
196* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
197*/
198int32_t gsw_eu_ecall_hangup(void);
199
200/**
201* @brief update msd data
202* @param [in] uint8_t *msd: msd data
203* @param [in] uint32_t msd_len: msd data length
204* @param [out] None
205* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
206*/
207int32_t gsw_eu_ecall_updateMsd(const uint8_t *msd, uint32_t msd_len);
208
209/**
210* @brief using push mode send msd data
211* @param [in] GSW_EU_ECALL_STATE_E state: ecall state
212* @param [out] None
213* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
214*/
215int32_t gsw_eu_ecall_pushMsd(gsw_eu_ecall_state_e state);
216
217/**
218* @brief get ecall config
219* @param [in] None
220* @param [out] gsw_eu_ecall_config_t *p_config: ecall config
221* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
222*/
223int32_t gsw_eu_ecall_getConfig(gsw_eu_ecall_config_t *p_config);
224
225/**
226* @brief set ecall config
227* @param [in] int32_t item: config item
228* @param [in] gsw_eu_ecall_config_t *p_config: config info
229* @param [out] None
230* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
231*/
232int32_t gsw_eu_ecall_setConfig(int32_t item, gsw_eu_ecall_config_t *p_config);
233
234/**
235* @brief register the ecall event callback
236* @param [in] gsw_eu_ecall_event_cb_f cb: callback
237* @param [out] None
238* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
239*/
240int32_t gsw_eu_ecall_setEventCB(gsw_eu_ecall_event_cb_f cb);
241
242/**
243* @brief register the ecall status callback
244* @p:callback
245* @param [out] None
246* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
247*/
248int32_t gsw_eu_ecall_setStatusCB(gsw_eu_ecall_status_cb_f cb);
249
250
251
252
253
254
255
256
257