blob: 2f3b4915953d40f0d03e1e27656459e18d01c55a [file] [log] [blame]
liubin281ac462023-07-19 14:22:54 +08001#ifndef MBTK_INFO_INCLUDE
2#define MBTK_INFO_INCLUDE
3#include <netinet/in.h>
4
5#include "mbtk_type.h"
6#include "mbtk_list.h"
7#include "mbtk_log.h"
8#include "mbtk_utils.h"
9#include "mbtk_info_api.h"
10
11#define MBTK_INFO_PACKET_FLAG 0x5F6F7F8F
12#define SOCK_INFO_PATH "/tmp/info_sock"
13#define SOCK_MSG_LEN_MAX 2048
14
15// Tag(4) + Packet_Length(2)
16#define SOCK_PACK_EXTRA_LEN 6
17// SOCK_PACK_EXTRA_LEN + Id(2) + Error(2) + Number(2)
18#define SOCK_PACK_LEN_MIN (SOCK_PACK_EXTRA_LEN + 6)
19
20typedef enum
21{
22 MBTK_INFO_TYPE_REQ,
23 MBTK_INFO_TYPE_RSP,
24 MBTK_INFO_TYPE_IND,
25 MBTK_INFO_TYPE_UNKNOWN
26} mbtk_info_type_enum;
27
28typedef enum
29{
30 // Device Information
31 MBTK_INFO_ID_DEV_BEGIN = 0,
32 // <string> IMEI
33 MBTK_INFO_ID_DEV_IMEI_REQ,
34 MBTK_INFO_ID_DEV_IMEI_RSP,
35 // <string> SN
36 MBTK_INFO_ID_DEV_SN_REQ,
37 MBTK_INFO_ID_DEV_SN_RSP,
38 // <string> MEID
39 MBTK_INFO_ID_DEV_MEID_REQ,
40 MBTK_INFO_ID_DEV_MEID_RSP,
41 // <string> VERSION
42 MBTK_INFO_ID_DEV_VERSION_REQ,
43 MBTK_INFO_ID_DEV_VERSION_RSP,
44 // <string> MODEL
45 MBTK_INFO_ID_DEV_MODEL_REQ,
46 MBTK_INFO_ID_DEV_MODEL_RSP,
47 // <uint8> 0:Close 1:Open
48 MBTK_INFO_ID_DEV_VOLTE_REQ,
49 MBTK_INFO_ID_DEV_VOLTE_RSP,
50 // <string> Temperature
51 MBTK_INFO_ID_DEV_TEMP_REQ, // Temperature
52 MBTK_INFO_ID_DEV_TEMP_RSP,
53 // <uint8><string> YYYY-MM-DD-HH:MM:SS
54 MBTK_INFO_ID_DEV_TIME_REQ, // Time
55 MBTK_INFO_ID_DEV_TIME_RSP,
56 //<string> "23/03/20,01:58:00+32"
57 MBTK_INFO_ID_NET_TIME_REQ, // Time
58 MBTK_INFO_ID_NET_TIME_RSP,
59
60 MBTK_INFO_ID_DEV_MODEM_REQ,
61 MBTK_INFO_ID_DEV_MODEM_RSP,
62
63 MBTK_INFO_ID_DEV_END,
64
65 // Sim Information
66 MBTK_INFO_ID_SIM_BEGIN = 1000,
67 // <uint8> 0:NOT_EXIST 1:READY ...
68 MBTK_INFO_ID_SIM_STATE_REQ,
69 MBTK_INFO_ID_SIM_STATE_RSP,
70 // <uint8> 0: SIM 1: USIM 2: TEST SIM 3: TEST USIM 4: UNKNOWN
71 MBTK_INFO_ID_SIM_STYPE_REQ,
72 MBTK_INFO_ID_SIM_STYPE_RSP,
73 // <string> PIN
74 MBTK_INFO_ID_SIM_PIN_REQ,
75 MBTK_INFO_ID_SIM_PIN_RSP,
76 // <string> PIN
77 MBTK_INFO_ID_SIM_ENABLE_PIN_REQ,
78 MBTK_INFO_ID_SIM_ENABLE_PIN_RSP,
79 // <string> PUK
80 MBTK_INFO_ID_SIM_PUK_REQ,
81 MBTK_INFO_ID_SIM_PUK_RSP,
82 // <string> PLMN
83 MBTK_INFO_ID_SIM_PLMN_REQ,
84 MBTK_INFO_ID_SIM_PLMN_RSP,
85 // <uint8> <uint8> <uint8> <uint8> PIN PUK LAST TIMES
86 MBTK_INFO_ID_SIM_PINPUK_TIMES_REQ,
87 MBTK_INFO_ID_SIM_PINPUK_TIMES_RSP,
88 // <string> IMSI
89 MBTK_INFO_ID_SIM_IMSI_REQ,
90 MBTK_INFO_ID_SIM_IMSI_RSP,
91 // <string> ICCID
92 MBTK_INFO_ID_SIM_ICCID_REQ,
93 MBTK_INFO_ID_SIM_ICCID_RSP,
94 // <string> Phone Number
95 MBTK_INFO_ID_SIM_PN_REQ,
96 MBTK_INFO_ID_SIM_PN_RSP,
97 // <string> <string> old_PIN new_PIN
98 MBTK_INFO_ID_SIM_CHANGE_PIN_REQ,
99 MBTK_INFO_ID_SIM_CHANGE_PIN_RSP,
100
101 MBTK_INFO_ID_SIM_END,
102
103 // Network Information
104 MBTK_INFO_ID_NET_BEGIN = 2000,
105 // <uint8> 0:OFF 1:ON
106 MBTK_INFO_ID_NET_RADIO_REQ,
107 MBTK_INFO_ID_NET_RADIO_RSP,
108 // sel_mode(uint8)type(uint8)plmn(uint32)...sel_mode(uint8)type(uint8)plmn(uint32)
109 MBTK_INFO_ID_NET_AVAILABLE_REQ,
110 MBTK_INFO_ID_NET_AVAILABLE_RSP,
111 // <uint8> 0: automatic 1: manual
112 // or
113 // sel_mode(uint8)type(uint8)plmn(uint32)
114 MBTK_INFO_ID_NET_SEL_MODE_REQ,
115 MBTK_INFO_ID_NET_SEL_MODE_RSP,
116 // mbtk_band_info_t
117 MBTK_INFO_ID_NET_BAND_REQ,
118 MBTK_INFO_ID_NET_BAND_RSP,
119 // mbtk_signal_info_t
120 MBTK_INFO_ID_NET_SIGNAL_REQ,
121 MBTK_INFO_ID_NET_SIGNAL_RSP,
122 // mbtk_net_reg_info_t
123 MBTK_INFO_ID_NET_REG_REQ,
124 MBTK_INFO_ID_NET_REG_RSP,
125 // mbtk_apn_info_t
126 MBTK_INFO_ID_NET_APN_REQ,
127 MBTK_INFO_ID_NET_APN_RSP,
128 // mbtk_cell_info_t[]
129 MBTK_INFO_ID_NET_CELL_REQ,
130 MBTK_INFO_ID_NET_CELL_RSP,
131 // REQ:
132 // <call_type[1]><cid[1]><timeout[1]>
133 // call_type : mbtk_data_call_type_enum
134 // cid : 1 - 15
135 // timeout : second
136 // RSP:
137 // <type[1]><ipv4><ipv6>
138 // type : 0-IPV4 1-IPV6 2-IPV4V6
139 // ipv4 : mbtk_ipv4_info_t
140 // ipv6 : mbtk_ipv6_info_t
141 MBTK_INFO_ID_NET_DATA_CALL_REQ,
142 MBTK_INFO_ID_NET_DATA_CALL_RSP,
143
144 MBTK_INFO_ID_NET_END,
145
146 // Call Information
147 MBTK_INFO_ID_CALL_BEGIN = 3000,
148 MBTK_INFO_ID_CALL_STATE_REQ,
149 MBTK_INFO_ID_CALL_STATE_RSP,
150
151 // Start call.
152 MBTK_INFO_ID_CALL_START_REQ,
153 MBTK_INFO_ID_CALL_START_RSP,
154 //answer call
155 MBTK_INFO_ID_CALL_ANSWER_REQ,
156 MBTK_INFO_ID_CALL_ANSWER_RSP,
157 //hang up all call
158 MBTK_INFO_ID_CALL_HANGUP_REQ,
159 MBTK_INFO_ID_CALL_HANGUP_RSP,
160 //hang up a call
161 MBTK_INFO_ID_CALL_HANGUP_A_REQ,
162 MBTK_INFO_ID_CALL_HANGUP_A_RSP,
163 //hang up waiting or background call
164 MBTK_INFO_ID_CALL_HANGUP_B_REQ,
165 MBTK_INFO_ID_CALL_HANGUP_B_RSP,
166 //hang up foreground resume background
167 MBTK_INFO_ID_CALL_HANGUP_C_REQ,
168 MBTK_INFO_ID_CALL_HANGUP_C_RSP,
169 //wait in call
170 MBTK_INFO_ID_CALL_WAITIN_REQ,
171 MBTK_INFO_ID_CALL_WAITIN_RSP,
172 //mute call
173 MBTK_INFO_ID_CALL_MUTE_REQ,
174 MBTK_INFO_ID_CALL_MUTE_RSP,
175 //dtmf call
176 MBTK_INFO_ID_CALL_DTMF_REQ,
177 MBTK_INFO_ID_CALL_DTMF_RSP,
178
179 MBTK_INFO_ID_CALL_END,
180
181 // SMS Information
182 MBTK_INFO_ID_SMS_BEGIN = 4000,
183 MBTK_INFO_ID_SMS_STATE_REQ,
184 MBTK_INFO_ID_SMS_STATE_RSP,
185 MBTK_INFO_ID_SMS_CMGF_REQ,
186 MBTK_INFO_ID_SMS_CMGF_RSP,
187 MBTK_INFO_ID_SMS_CPMS_REQ,
188 MBTK_INFO_ID_SMS_CPMS_RSP,
189 MBTK_INFO_ID_SMS_CMGS_REQ,
190 MBTK_INFO_ID_SMS_CMGS_RSP,
191 MBTK_INFO_ID_SMS_CMSS_REQ,
192 MBTK_INFO_ID_SMS_CMSS_RSP,
193 MBTK_INFO_ID_SMS_CMGR_REQ,
194 MBTK_INFO_ID_SMS_CMGR_RSP,
195 MBTK_INFO_ID_SMS_CMGW_REQ,
196 MBTK_INFO_ID_SMS_CMGW_RSP,
197 MBTK_INFO_ID_SMS_CMGD_REQ,
198 MBTK_INFO_ID_SMS_CMGD_RSP,
199 MBTK_INFO_ID_SMS_CMGL_REQ,
200 MBTK_INFO_ID_SMS_CMGL_RSP,
201 MBTK_INFO_ID_SMS_CSCA_REQ,
202 MBTK_INFO_ID_SMS_CSCA_RSP,
203 MBTK_INFO_ID_SMS_CSMP_REQ,
204 MBTK_INFO_ID_SMS_CSMP_RSP,
205 MBTK_INFO_ID_SMS_CSCB_REQ,
206 MBTK_INFO_ID_SMS_CSCB_RSP,
207 MBTK_INFO_ID_SMS_CNMI_REQ,
208 MBTK_INFO_ID_SMS_CNMI_RSP,
209
210 MBTK_INFO_ID_SMS_END,
211
212 // PhoneBook Information
213 MBTK_INFO_ID_PB_BEGIN = 5000,
214 MBTK_INFO_ID_PB_STATE_REQ,
215 MBTK_INFO_ID_PB_STATE_RSP,
216
217 MBTK_INFO_ID_PB_END,
218
r.xiaocfd7c682024-01-22 03:59:46 -0800219 //wakeup
220 MBTK_INFO_ID_WAKEUP_STA_BEGIN = 6000,
r.xiaoec113d12024-01-12 02:13:28 -0800221 MBTK_INFO_ID_WAKEUP_STA_REQ,
222 MBTK_INFO_ID_WAKEUP_STA_RSP,
223
r.xiaocfd7c682024-01-22 03:59:46 -0800224 MBTK_INFO_ID_WAKEUP_STA_END,
225
r.xiaoec113d12024-01-12 02:13:28 -0800226 //oos(out of service))
r.xiaocfd7c682024-01-22 03:59:46 -0800227 MBTK_INFO_ID_OOS_STA_BEGIN = 7000,
r.xiaoec113d12024-01-12 02:13:28 -0800228 MBTK_INFO_ID_OOS_STA_REQ,
229 MBTK_INFO_ID_OOS_STA_RSP,
230
r.xiaocfd7c682024-01-22 03:59:46 -0800231 MBTK_INFO_ID_OOS_STA_END,
wangyouqiang38e53362024-01-23 10:53:48 +0800232
233 //led
234 MBTK_INFO_ID_LED_BEGIN = 8000,
235 MBTK_INFO_ID_LED_REQ,
236 MBTK_INFO_ID_LED_RSP,
237 MBTK_INFO_ID_LED_END,
r.xiaoec113d12024-01-12 02:13:28 -0800238
liubin281ac462023-07-19 14:22:54 +0800239 // IND Information
240 MBTK_INFO_ID_IND_BEGIN = 10000,
241 // <uint8> State
242 MBTK_INFO_ID_IND_NET_STATE_CHANGE,
243 // <uint8> State
244 MBTK_INFO_ID_IND_CALL_STATE_CHANGE,
245 // <uint8> State
246 MBTK_INFO_ID_IND_SMS_STATE_CHANGE,
247 // <uint8> State
248 MBTK_INFO_ID_IND_RADIO_STATE_CHANGE,
249 // <uint8> State
250 MBTK_INFO_ID_IND_SIM_STATE_CHANGE,
251 // <uint8> State
252 MBTK_INFO_ID_IND_PDP_STATE_CHANGE,
253 // <uint8> State
254 MBTK_INFO_ID_IND_SERVER_STATE_CHANGE,////mbtk wyq for server_ready_status add
255
256 MBTK_INFO_ID_IND_END,
257 MBTK_INFO_ID_REQ_UNKNOWN // Unknown information.
258} mbtk_info_id_enum;
259
260typedef enum {
261 MBTK_NET_CS_STATE = 0,
262 MBTK_NET_PS_STATE
263} mbtk_net_state_type_enum;
264
265typedef enum {
266 MBTK_INFO_ERR_SUCCESS = 300,
267 MBTK_INFO_ERR_FORMAT, // Packet format error.
268 MBTK_INFO_ERR_REQ_UNKNOWN, // Unknown request.
269 MBTK_INFO_ERR_REQ_PARAMETER, // Request parameter error.
270 MBTK_INFO_ERR_UNSUPPORTED, // Unsupported operation.
271 MBTK_INFO_ERR_MEMORY, // Insufficient memory.
272 MBTK_INFO_ERR_IND_FULL, // Register IND fail(FULL).
273 MBTK_INFO_ERR_IND_UNKNOWN, // Register IND fail(Unknown IND).
274 MBTK_INFO_ERR_CID, // CID error.
275 MBTK_INFO_ERR_TIMEOUT, // Timeout.
276 MBTK_INFO_ERR_TIME_FORMAT, // Time format error.
277
278 //mbtk wyq for data_call add start
279 MBTK_INFO_ERR_CID_EXIST,
280 MBTK_INFO_ERR_CID_NO_EXIST,
281 MBTK_INFO_ERR_NET_NO_INIT,
282 //mbtk wyq for data_call add end
283
284 MBTK_INFO_ERR_UNKNOWN = 400, // Unknown error.
285 // CME error start index.
286 MBTK_INFO_ERR_CME = 500,
287 MBTK_INFO_ERR_CME_NON = 1000
288} mbtk_info_err_enum;
289
290/*
291GSM band��
292 1 �C PGSM 900 (standard or primary)
293 2 �C DCS GSM 1800
294 4 �C PCS GSM 1900
295 8 �C EGSM 900 (extended)
296 16 �C GSM 450
297 32 �C GSM 480
298 64 �C GSM 850
299 512 - BAND_LOCK_BIT // used for GSM band setting
300*/
301typedef enum
302{
303 MBTK_GSM_BAND_PGSM_900 = 1,
304 MBTK_GSM_BAND_DCS_GSM_1800 = 2,
305 MBTK_GSM_BAND_PCS_GSM_1900 = 4,
306 MBTK_GSM_BAND_EGSM_900 = 8,
307 MBTK_GSM_BAND_GSM_450 = 16,
308 MBTK_GSM_BAND_GSM_480 = 32,
309 MBTK_GSM_BAND_GSM_850 = 64,
310 MBTK_GSM_BAND_BAND_LOCK_BIT = 512
311} mbtk_gsm_band_enum;
312
313/*
314UMTS band��
315 1 �C UMTS_BAND_1
316 2 �C UMTS_BAND_2
317 4 �C UMTS_BAND_3
318 8 �C UMTS_BAND_4
319 16 �C UMTS_BAND_5
320 32 �C UMTS_BAND_6
321 64 �C UMTS_BAND_7
322 128 �C UMTS_BAND_8
323 256 �C UMTS_BAND_9
324*/
325typedef enum
326{
327 MBTK_UMTS_BAND_1 = 1,
328 MBTK_UMTS_BAND_2 = 2,
329 MBTK_UMTS_BAND_3 = 4,
330 MBTK_UMTS_BAND_4 = 8,
331 MBTK_UMTS_BAND_5 = 16,
332 MBTK_UMTS_BAND_6 = 32,
333 MBTK_UMTS_BAND_7 = 64,
334 MBTK_UMTS_BAND_8 = 128,
335 MBTK_UMTS_BAND_9 = 256
336} mbtk_umts_band_enum;
337
338/*
339LTEbandH(TDD-LTE band)
340 32 �C TDLTE_BAND_38
341 64 �C TDLTE_BAND_39
342 128 �C TDLTE_BAND_40
343 256 �C TDLTE_BAND_41
344*/
345typedef enum
346{
347 MBTK_TDLTE_BAND_38 = 32,
348 MBTK_TDLTE_BAND_39 = 64,
349 MBTK_TDLTE_BAND_40 = 128,
350 MBTK_TDLTE_BAND_41 = 256
351} mbtk_tdlte_band_enum;
352
353/*
354LTEbandL(FDD-LTE band)
355 1 �C FDDLTE_BAND_1
356 4 �C FDDLTE _BAND_3
357 8 �C FDDLTE _BAND_4
358 64 �C FDDLTE _BAND_7
359 65536 �C FDDLTE _BAND_17
360 524288 �C FDDLTE _BAND_20
361*/
362typedef enum
363{
364 MBTK_FDDLTE_BAND_1 = 1,
365 MBTK_FDDLTE_BAND_3 = 4,
366 MBTK_FDDLTE_BAND_4 = 8,
367 MBTK_FDDLTE_BAND_7 = 64,
368 MBTK_FDDLTE_BAND_17 = 65536,
369 MBTK_FDDLTE_BAND_20 = 524288
370} mbtk_fddlte_band_enum;
371
372/*
3730: unknown
3741: available
3752: current
3763: forbidden
377*/
378typedef enum
379{
380 MBTK_NET_AVIL_STATE_UNKNOWN = 0,
381 MBTK_NET_AVIL_STATE_AVAILABLE,
382 MBTK_NET_AVIL_STATE_CURRENT,
383 MBTK_NET_AVIL_STATE_FORBIDDEN
384} mbtk_net_avil_state_enum;
385
386typedef struct
387{
388 uint16 tac;
389 uint16 earfcn;
390} mbtk_local_info_t;
391
392typedef struct
393{
394 uint16 info_id;
395 uint16 info_err;
396 const uint8 *data;
397 uint16 data_len;
398} mbtk_info_pack_t;
399
400typedef struct
401{
402 uint8 type; // 0: GSM 1: UMTS 2: LTE
403 bool running;
404
405 int cell_num;
406 mbtk_cell_info_t cell[CELL_NUM_MAX];
407} mbtK_cell_pack_info_t;
408
409typedef enum {
410 MBTK_MOBILE_ORIGINATED_CALL,
411 MBTK_TERMINATED_CALL,
412} mbtk_call_dir_enum;
413
414typedef enum {
415 MBTK_VOICE,
416 MBTK_DATA,
417 MBTK_FAX,
418 MBTK_VOICE_FOLLOWED_BY_DATA_VOICE_MODE,
419 MBTK_ALTERNATING_VOICE_VOICE_MODE,
420 MBTK_ALTERNATING_FAX_VOICE_MODE,
421 MBTK_VOICE_FOLLOWED_BY_DATA_DATA_MODE,
422 MBTK_ALTERNATING_VOICE_DATA_MODE,
423 MBTK_ALTERNATING_FAX_FAX_MODE,
424 MBTL_UNKNOW,
425} mbtk_call_mode_enum;
426
427typedef enum {
428 MBTK_NOT_MULITYPARTY_CALL,
429 MBTK_MULITYPARTY__CALL,
430} mbtk_call_mpty_enum;
431
432typedef struct
433{
434 int cid;
435 bool act;
436 bool waitting;
437} info_cgact_wait_t;
438
439typedef struct
440{
441 uint32 count;
442 list_node_t *net_list;
443} mbtk_net_array_info_t;
444
445typedef struct
446{
447 bool inited;
448 mbtk_radio_state_enum radio_state;
449 mbtk_sim_state_enum sim_state;
450 mbtk_radio_technology_enum net_type;
451 mbtk_ip_type_enum ip_type;
452 struct sockaddr_in addr4;
453 struct sockaddr_in preferred_dns4;
454 struct sockaddr_in alternate_dns4;
455
456 struct sockaddr_in6 addr6;
457 struct sockaddr_in6 preferred_dns6;
458 struct sockaddr_in6 alternate_dns6;
459} net_info_t;
460
461#ifdef __cplusplus
462extern "C" {
463#endif
464char* type2str(mbtk_info_type_enum type);
465
466char* apn2str(mbtk_ip_type_enum type);
467
468char* id2str(int id);
469
470char* err2str(mbtk_info_err_enum err);
471
472/*
473IPv6 : 254.128.0.0.0.0.0.0.0.1.0.2.144.5.212.239 -> uint128
474*/
475int str_2_ipv6(const void *ip_str, void *ipv6);
476
477/*
478IPv6 : uint128 -> fe80::215:1dff:fe81:484c
479*/
480int ipv6_2_str(const void *ipv6, void *ipv6_str);
481
482/*
4830 GSM
4841 GSM_COMPACT
4852 UTRAN
4863 GSM_EGPRS
4874 UTRAN_HSDPA
4885 UTRAN_HSUPA
4896 UTRAN_HSDPA_HSUPA
4907 EUTRAN
4918 ECGSM
492*/
493mbtk_net_type_enum mbtk_net_type_get(mbtk_radio_technology_enum radio_tech);
494
495mbtk_info_type_enum mbtk_info_type_get(int info_id);
496
497mbtk_info_pack_t* mbtk_info_pack_creat(int info_id);
498
499#if 0
500int mbtk_info_pack_data_set(mbtk_info_pack_t *pack, const void *data, int data_len);
501void* mbtk_info_pack_data_get(mbtk_info_pack_t *pack, int *data_len);
502#endif
503
504int mbtk_info_pack_send(int fd, mbtk_info_pack_t *pack);
505
506mbtk_info_pack_t** mbtk_info_pack_recv(int fd, bool is_server, mbtk_info_err_enum *err);
507
508int mbtk_info_pack_free(mbtk_info_pack_t **pack);
509#ifdef __cplusplus
510}
511#endif
512
513
514#endif /* MBTK_INFO_INCLUDE */
515
516