blob: 9fc90b195541552ee5323e7cde9f1a2dec2fb02c [file] [log] [blame]
b.liu68a94c92025-05-24 12:53:41 +08001#include <stdio.h>
2#include <stdlib.h>
3#include <stdbool.h>
4#include <dlfcn.h>
5#include <stdint.h>
6#include <string.h>
7#include <pthread.h>
8
9//mbtk include
10#define LYNQ_AIR_PLANE_MODE_ON 4 //at+cfun = 4
11#define LYNQ_AIR_PLANE_MODE_OFF 1 // at+cfun = 1
12
13
14#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
15
16#ifndef FALSE
17#define FALSE (0)
18#endif
19
20
21#ifndef TRUE
22#define TRUE (!FALSE)
23#endif
24
25typedef unsigned int uint32;
26typedef unsigned char uint8;
27typedef unsigned short uint16;
28typedef void (*mbtk_info_callback_func)(const void* data, int data_len);
29
30typedef enum
31{
32 MBTK_DEV_MODEM_MIN_FUN, //Modem 最小功能
33 MBTK_DEV_MODEM_FULL_FUN, //Modem 全功能
34 MBTK_DEV_MODEM_DISABLE_RECEIVE_RF_CIRCUITS = 3, //Modem 禁用射频接收电路
35 MBTK_DEV_MODEM_DISABLE_TRANSMIT_AND_RECEIVE_RF_CIRCUITS, //Modem禁用射频发射和接收电路
36 MBTK_DEV_MODEM_DISABLE_SIM, //Modem 禁用(U)SIM 卡
37 MBTK_DEV_MODEM_TURN_OFF_FULL_SECONDARY_RECEIVE, //Modem 完全禁用辅助接收
38}MBTK_DEV_MODEM_FUNCTION;
39
40typedef enum
41{
42 MBTK_CELL_TYPE_GSM = 0,
43 MBTK_CELL_TYPE_UMTS,
44 MBTK_CELL_TYPE_LTE
45} mbtk_cell_type_enum;
46
47typedef struct
48{
49 MBTK_DEV_MODEM_FUNCTION fun;
50 int rst;
51} mbtk_modem_info_t;
52
53typedef struct
54{
55 int client_fd;
56 pthread_t read_thread_id;
57 int exit_fd[2];
58 bool is_waitting;
59 pthread_cond_t cond;
60 pthread_mutex_t mutex;
61
62 pthread_mutex_t send_mutex;
63
64 // Temp response data.
65 uint16 info_err;
66 uint16 data_len;
67 void *data;
68
69 //mbtk wyq for server_ready_status add start
70 char server_ready_status;
71 //mbtk wyq for server_ready_status add end
72
73 mbtk_info_callback_func net_state_cb;
74 mbtk_info_callback_func call_state_cb;
75 mbtk_info_callback_func sms_state_cb;
76 mbtk_info_callback_func radio_state_cb;
77 mbtk_info_callback_func sim_state_cb;
78 mbtk_info_callback_func pdp_state_cb;
79 //add signal by xr
80 mbtk_info_callback_func signal_state_cb;
81} mbtk_info_handle_t;
82
83
84
85typedef struct
86{
87 // LTE server cell: tac, PCI, dlEuarfcn, ulEuarfcn, band
88 // LTE cell: phyCellId,euArfcn,rsrp,rsrq
89 // WCDMA server cell: lac, ci, arfcn
90 // WCDMA cell: lac, ci, arfcn
91 // GSM server cell: lac, ci, arfcn, bsic
92 // GSM cell:
93 mbtk_cell_type_enum type : 8;
94 uint32 value1; //tac
95 uint32 value2; //pci
96 uint32 value3; //dlEuarfcn
97 uint32 value4; //ul arfcn
98 uint32 value5; //band
99 uint32 value6; //mcc
100 uint32 value7; //mnc
101 uint32 value8; //cid
102 uint32 value9; //rsrp
103 uint32 value10; //cell identiy
104} __attribute__((packed)) mbtk_cell_info_t;
105
106
107
108
109
110typedef struct
111{
112 uint8 net_pref; // mbtk_net_pref_enum
113 uint16 gsm_band; // mbtk_gsm_band_enum
114 uint16 umts_band; // mbtk_umts_band_enum
115 uint32 tdlte_band; // mbtk_tdlte_band_enum
116 uint32 fddlte_band; // mbtk_fddlte_band_enum
117 uint32 lte_ext_band; // mbtk_lte_ext_band_enum
118} __attribute__((packed)) mbtk_band_info_t;
119
120typedef struct list_arraynode
121{
122 void *data;
123 struct list_arraynode *next;
124} list_arraynode_t;
125
126typedef struct list_treenode
127{
128 list_arraynode_t *data;
129 int count;
130 struct list_treenode *left;
131 struct list_treenode *right;
132} list_treenode_t;
133
134typedef int (*list_sort_func)(void *data1, void *data2);
135typedef void (*list_free_func)(void *data);
136
137typedef struct list_node
138{
139 uint32 size;
140 list_sort_func sort_func;
141 list_free_func free_func;
142
143 uint32 cur_index;
144 list_arraynode_t *cur_array_data;
145
146 list_arraynode_t array_data;
147 list_treenode_t tree_data;
148} list_node_t;
149
150/*
1510: GSM
1521: GSM Compact
1532: UTRAN
1543: GSM w/EGPRS
1554: UTRAN w/HSDPA
1565: UTRAN w/HSUPA
1576: UTRAN w/HSDPA and HSUPA
1587: E-UTRAN
1598: UTRAN HSPA+
160*/
161typedef enum {
162 MBTK_RADIO_TECH_GSM = 0,
163 MBTK_RADIO_TECH_GSM_COMPACT,
164 MBTK_RADIO_TECH_UTRAN,
165 MBTK_RADIO_TECH_GSM_EGPRS,
166 MBTK_RADIO_TECH_UTRAN_HSDPA,
167 MBTK_RADIO_TECH_UTRAN_HSUPA,
168 MBTK_RADIO_TECH_UTRAN_HSDPA_HSUPA,
169 MBTK_RADIO_TECH_E_UTRAN, // LTE
170 MBTK_RADIO_TECH_UTRAN_HSPA
171} mbtk_radio_technology_enum;
172
173typedef struct
174{
175 /*
176 0: automatic
177 1: manual
178 */
179 uint8 net_sel_mode;
180 /*
181 0: GSM
182 1: GSM Compact
183 2: UTRAN
184 3: GSM w/EGPRS
185 4: UTRAN w/HSDPA
186 5: UTRAN w/HSUPA
187 6: UTRAN w/HSDPA and HSUPA
188 7: E-UTRAN
189 8: UTRAN HSPA+
190 0xFF: Unused
191 */
192 uint8 net_type;
193 //uint8 plmn[10]; // 46000
194 /*
195 0: unknown
196 1: available
197 2: current
198 3: forbidden
199 */
200 uint8 net_state;
201 uint32 plmn;
202} __attribute__((packed)) mbtk_net_info_t;
203
204
205typedef enum
206{
207 MBTK_NET_REG_STATE_NON = 0,
208 MBTK_NET_REG_STATE_HOME,
209 MBTK_NET_REG_STATE_SEARCHING,
210 MBTK_NET_REG_STATE_DENIED,
211 MBTK_NET_REG_STATE_UNKNOWN,
212 MBTK_NET_REG_STATE_ROAMING,
213 MBTK_NET_REG_STATE_SMS_ONLY,
214 MBTK_NET_REG_STATE_ROAMING_SMS,
215 MBTK_NET_REG_STATE_ATTACHED_EMERGENCY,
216 MBTK_NET_REG_STATE_CSFB_HOME,
217 MBTK_NET_REG_STATE_CSFB_ROAMING,
218 MBTK_NET_REG_STATE_EMERGENCY_ONLY
219} mbtk_net_reg_state_enum;
220
221typedef struct
222{
223 uint8 call_state;// mbtk_net_reg_state_enum
224 uint8 data_state;// mbtk_net_reg_state_enum
225 uint8 ims_state;// mbtk_net_reg_state_enum
226 uint8 type; // mbtk_radio_technology_enum
227 uint16 lac;
228 uint32 ci;
229} __attribute__((packed)) mbtk_net_reg_info_t;
230
231typedef struct
232{
233 uint8 type; // mbtk_radio_technology_enum
234 uint8 rssi; // 0: 113 dBm or less
235 // 1: 111 dBm
236 // 2��30: 109��53 dBm
237 // 31: 51 dBm or greater
238 // 99: not known or not detectable
239 uint8 rxlev;// 0:rssi < -110 dBm
240 // 1: -110 dBm �� rssi < -109 dBm
241 // 2: -109 dBm �� rssi < -108 dBm
242 // ......
243 // 61: -50 dBm �� rssi < -49 dBm
244 // 62: -49 dBm �� rssi < -48 dBm
245 // 63: -48 dBm �� rssi
246 // 99: not known or not detectable
247 uint8 ber; // 0...7 as RXQUAL values in the table in 3GPP TS 45.008 [20] subclause 8.2.4
248 // 99 not known or not detectable
249 uint8 rscp; // 0: rscp < -120 dBm
250 // 1: -120 dBm �� rscp < -119 dBm
251 // 2: -119 dBm �� rscp < -118 dBm
252 // ......
253 // 94: -27 dBm �� rscp < -26 dBm
254 // 95: -26 dBm �� rscp < -25 dBm
255 // 96: - 25 dBm �� rscp
256 // 255: not known or not detectable
257 uint8 ecno; // 0: Ec/Io < -24 dB
258 // 1: -24 dB �� Ec/Io < -23.5 dB
259 // 2: -23.5 dB �� Ec/Io < -23 dB
260 // ......
261 // 47: -1 dB �� Ec/Io < -0.5 dB
262 // 48: -0.5 dB �� Ec/Io < 0 dB
263 // 49: 0 dB �� Ec/Io
264 // 255: not known or not detectable
265 uint8 rsrq; // 0: rsrq < -19.5 dB
266 // 1: -19.5 dB �� rsrq < -19 dB
267 // 2: -19 dB �� rsrq < -18.5 dB
268 // ......
269 // 32: -4 dB �� rsrq < -3.5 dB
270 // 33: -3.5 dB �� rsrq < -3 dB
271 // 34: -3 dB �� rsrq
272 // 255: not known or not detectable
273 uint8 rsrp; // 0: rsrp < -140 dBm
274 // 1: -140 dBm �� rsrp < -139 dBm
275 // 2: -139 dBm �� rsrp < -138 dBm
276 // ......
277 // 95: -46 dBm �� rsrp < -45 dBm
278 // 96: -45 dBm �� rsrp < -44 dBm
279 // 97: -44 dBm �� rsrp
280 // 255: not known or not detectable
281} __attribute__((packed)) mbtk_signal_info_t;
282
283#define lib_gsw_nw_path "/lib/libgsw_lib.so"
284static void *dlHandle_nw = NULL;
285
286//gsw include
287
288
289#define GSW_HAL_SUCCESS 0
290#define GSW_HAL_FAIL -1
291#define GSW_HAL_MEM_INVAILD -2
292#define GSW_NW_OPERATION_NAME_LEN 128
293#define GSW_NW_PLMN_LEN 6
294#define GSW_NW_MCC_LEN 3
295#define GSW_NW_MNC_LEN 3
296#define GSW_NW_PARA_MAX_LEN 128
297#define GSW_MCC_MAX_LEN 16
298#define GSW_MNC_MAX_LEN 16
299#define GSW_APN_CHANNEL_MAX 10
300#define GSW_POXY_ADDR_MAX_LEN 64
301#define GSW_PDP_TYPE_MAX_LEN 16
302#define GSW_APN_MAX_LEN 65
303#define GSW_APN_ID_MAX_LEN 32
304#define GSW_APN_TYPE_MAX_LEN 50
305#define GSW_USR_MAX_LEN 16
306#define GSW_PWD_MAX_LEN 16
307#define GSW_AUTH_TYPE_MAX_LEN 50
308#define GSW_PROTOCO_MAX_LEN 64
309#define GSW_CARRIER_ID_MAX_LEN 64
310#define GSW_IFACE_NAME_MAX_LEN 50
311#define GSW_PDP_ADDR_MAX_LEN 64
312#define GSW_DNS_APN_MAX_LEN 64
313#define GSW_GETWAYS_ADDR_MAX_LEN 64
314#define GSW_RSP_MAX_LEN 256
315#define GSW_PLMN_LIST_MAX_LEN 85
316
317
318
319typedef enum service_domain
320{
321 GSW_SRV_DOMAIN_NO_SVC = 0x0, /**< no service */
322 GSW_SRV_DOMAIN_CS_ONLY = 0x1, /**< cs only */
323 GSW_SRV_DOMAIN_PS_ONLY = 0x2, /**< ps only */
324 GSW_SRV_DOMAIN_CS_PS = 0x3, /**< reg all in service */
325} GSW_SERVICE_DOMAIN_E;
326
327typedef enum gsw_network_reg_state
328{
329 GSW_NETWORK_REG_NOT_REGISTERED = 0x0, /**< no service */
330 GSW_NETWORK_REG_REGISTERED = 0x1, /**< reg in service home */
331 GSW_NETWORK_REG_NOT_REGISTERED_SEARCHING = 0x2, /**< searching network */
332 GSW_NETWORK_REG_REGISTRATION_DENIED = 0x3, /**< network denny device */
333 GSW_NETWORK_REG_REGISTRATION_UNKNOWN = 0x4, /**< unknown state */
334 GSW_NETWORK_REG_REGISTRATION_ROAMING = 0x5, /**< roaming state in service */
335 GSW_NETWORK_REG_LIMITED_SERVICE = 0x6, /**< limited service */
336} GSW_NW_REG_STATE_E;
337
338typedef enum gsw_network_radio_interface
339{
340 GSW_NETWORK_RADIO_NO_SVC = 0x0, /**< radio state no service */
341 GSW_NETWORK_RADIO_CDMA_1X = 0x1, /**< cdma 1x */
342 GSW_NETWORK_RADIO_CDMA_1XEVDO = 0x2, /**< cdma evdo */
343 GSW_NETWORK_RADIO_AMPS = 0x3, /**< amps gsm 2g*/
344 GSW_NETWORK_RADIO_GSM = 0x4, /**< gsm */
345 GSW_NETWORK_RADIO_UMTS = 0x5, /**< umts wcdma*/
346 GSW_NETWORK_RADIO_LTE = 0x6, /**< LTE 4G */
347 GSW_NETWORK_RADIO_TDSCDMA = 0x7, /**< TDS 3G*/
348 GSW_NETWORK_RADIO_NR5G = 0x8, /**< NR 5G*/
349} GSW_NW_RADIO_ACCESS_TECH_E;
350
351
352typedef enum gsw_network_roaming_state
353{
354 GSW_NETWORK_ROAMING_OFF = 0x0, /**< roaming off */
355 GSW_NETWORK_ROAMING_ON = 0x1, /**< roaming on*/
356} GSW_NW_ROAMING_STATE_E;
357
358typedef enum oprate_mode
359{
360 GSW_OP_MODE_LPM = 0, /**< radio state off*/
361 GSW_OP_MODE_ONLINE = 1, /**< radio state on*/
362 GSW_OP_MODE_FTM = 2, /**< radio state ftm*/
363 GSW_OP_MODE_OFFLINE = 3, /**< radio state offline*/
364} OPERATE_MODE_E;
365
366typedef enum prefer_mode
367{
368 GSW_PREFER_MODE_GSW = 1, /**<2G only*/
369 GSW_PREFER_MODE_WCDMA = 2, /**< 3G only*/
370 GSW_PREFER_MODE_WCDMA_GSM = 3, /**< 3G/2G*/
371 GSW_PREFER_MODE_LTE = 4, /**< 4G only*/
372 GSW_PREFER_MODE_NR5G = 5, /**< 5G only*/
373 GSW_PREFER_MODE_NR5G_LTE = 8, /**< 5G/4G*/
374 GSW_PREFER_MODE_LTE_WCDMA_GSM = 9, /**< 4G/3G/2G*/
375 GSW_PREFER_MODE_NR5G_LTE_WCDMA_GSM = 32, /**< 5G/4G/3G/2G*/
376} PREFER_MODE_E;
377
378typedef enum gsw_hal_nw_mode_state_type
379{
380 GSW_MODEM_STATE_UNKNOWN = 0,
381 GSW_MODEM_STATE_ONLINE,
382 GSW_MODEM_STATE_OFFLINE,
383 GSW_SDK_STATE_SERVICE_DOWN,
384 GSW_SDK_STATE_SERVICE_UP,// service down->up 需要routectl 重启
385 GSW_SDK_STATE_GPS_DOWN,
386 GSW_SDK_STATE_GPS_UP,
387} gsw_mode_state_e;
388
389
390typedef struct
391{
392 GSW_NW_RADIO_ACCESS_TECH_E rej_rat; /**< current network radio tech*/
393 GSW_SERVICE_DOMAIN_E rej_domain; /**< reject code from ps or cs*/
394 int rej_cause; /**< reject code number*/
395} GSW_NW_REJ_CAUSE_E;
396
397typedef struct
398{
399 int32_t gw_sig_valid; /**< 1 valid,1 invalid*/
400 int32_t rssi; /**< Valid values are (0-31, 99) as defined in TS 27.007 8.5 */
401 int32_t wcdma_sig_valid;/**< 1 valid,0 invalid*/
402 int32_t rscp; /**< The Received Signal Code Power in dBm multipled by -1.
403 * Range : 25 to 120
404 * INT_MAX: 0x7FFFFFFF denotes invalid value.
405 * Reference: 3GPP TS 25.123, section 9.1.1.1 */
406 int32_t ecno; /**< Valid values are positive integers. This value is the actual Ec/Io multiplied
407 * by -10. Example: If the actual Ec/Io is -12.5 dB, then this response value
408 * will be 125.*/
409 int32_t lte_sig_valid;/**< 1 valid,0 invalid*/
410 int32_t rsrp; /**< The current Reference Signal Receive Power in dBm multipled by -1.
411 * Range: 44 to 140 dBm
412 * INT_MAX: 0x7FFFFFFF denotes invalid value.
413 * Reference: 3GPP TS 36.133 9.1.4 */
414 int32_t rsrq; /**< The current Reference Signal Receive Quality in dB multiplied by -1.
415 * Range: 20 to 3 dB.
416 * INT_MAX: 0x7FFFFFFF denotes invalid value.
417 * Reference: 3GPP TS 36.133 9.1.7 */
418 int32_t rssnr; /**< The current reference signal signal-to-noise ratio in 0.1 dB units.
419 * Range: -200 to +300 (-200 = -20.0 dB, +300 = 30dB).
420 * INT_MAX : 0x7FFFFFFF denotes invalid value.
421 * Reference: 3GPP TS 36.101 8.1.1 */
422 int32_t nr_sig_valid;/**<1 valid,0 invalid*/
423 int32_t ssRsrp; /**< SS(Synchronization Signal) reference signal received power, multipled by -1.
424 * Reference: 3GPP TS 38.215.
425 * Range [44, 140], INT_MAX means invalid/unreported.*/
426 int32_t ssRsrq; /**< SS reference signal received quality, multipled by -1.
427 * Reference: 3GPP TS 38.215.
428 * Range [3, 20], INT_MAX means invalid/unreported.*/
429 int32_t ssSinr; /**< SS signal-to-noise and interference ratio.
430 * Reference: 3GPP TS 38.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
431 * Range [-23, 40], INT_MAX means invalid/unreported.*/
432 int32_t csiRsrp; /**< CSI reference signal received power, multipled by -1.
433 * Reference: 3GPP TS 38.215.
434 * Range [44, 140], INT_MAX means invalid/unreported.*/
435 int32_t csiRsrq; /**< CSI reference signal received quality, multipled by -1.
436 * Reference: 3GPP TS 38.215.
437 * Range [3, 20], INT_MAX means invalid/unreported.*/
438 int32_t csiSinr; /**< CSI signal-to-noise and interference ratio.
439 * Reference: 3GPP TS 138.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
440 * Range [-23, 40], INT_MAX means invalid/unreported.*/
441} signalStrength_t;
442
443typedef struct
444{
445 GSW_NW_REG_STATE_E reg_state; /**< network cs regstate*/
446 GSW_NW_REG_STATE_E ps_state; /**< network ps regstate*/
447 GSW_NW_RADIO_ACCESS_TECH_E reg_rat; /**< current radio state*/
448 GSW_SERVICE_DOMAIN_E srv_domain; /**< current cs or ps state*/
449 GSW_NW_ROAMING_STATE_E roaming_ind; /**< roaming state*/
450 char reg_plmn[GSW_NW_PLMN_LEN + 1]; /**< current cell plmn*/
451 char operator_name[GSW_NW_OPERATION_NAME_LEN + 1]; /**< operator name*/
452 char cell_id[128]; /**< cell id*/
453 char tac[128]; /**< cell tac*/
454 char lac[128]; /**< cell lac*/
455 int sid; /**< cell sid cdma*/
456 int nid; /**< cell nid cdma*/
457} GSW_NW_SERVING_INFO;
458
459
460typedef struct
461{
462 char long_eons[128]; /* Full name of the operator*/
463 char short_eons[128]; /* Shor name of the operator*/
464 char mcc[4]; /* Mobile country code*/
465 char mnc[4]; /* Mobile network code*/
466}gsw_mobile_operator_name;
467
468#define MAX_CELL_EXT_INFO (5)
469
470typedef struct
471{
472 unsigned char cell_id_valid;
473 unsigned char pci_valid;
474 unsigned char psc_valid;
475 unsigned char band_valid;
476 unsigned char arfcn_valid;
477 unsigned char rssi_valid;
478 unsigned char rsrp_valid;
479 unsigned char rsrq_valid;
480 unsigned char sinr_valid;
481 unsigned char rscp_valid;
482 unsigned char ecio_valid;
483 GSW_NW_RADIO_ACCESS_TECH_E rat;
484 unsigned int cell_id;
485 int pci;
486 int psc;
487 int band;
488 int arfcn;
489 int rssi;
490 int rsrp;
491 int rsrq;
492 int sinr;
493 int rscp;
494 int ecio;
495 char mcc[5];
496 char mnc[5];
497} GSW_NW_CELL_EXT_INFO;
498
499typedef struct
500{
501 GSW_NW_RADIO_ACCESS_TECH_E rat; /**< current radio state*/
502
503 unsigned char mcc_valid;
504 char mcc[5];
505
506 unsigned char mnc_valid;
507 char mnc[5];
508
509 unsigned char cell_id_valid;
510 unsigned int cell_id; /**< cell id*/
511
512 unsigned char pci_valid;
513 int pci; /**<physical cell id*/
514
515 unsigned char psc_valid;
516 int psc; /*wcdma primary scramble code*/
517
518 unsigned char nrarfcn_valid;
519 int nrarfcn; /*nr cell freq*/
520
521 unsigned char earfcn_valid;
522 int earfcn; /*lte cell freq*/
523
524 unsigned char uarfcn_valid;
525 int uarfcn; /*wcdma cell freq*/
526
527 unsigned char arfcn_valid;
528 int arfcn; /*gsw cell freq*/
529
530 unsigned char tac_valid;
531 unsigned int tac; /**< cell tac*/
532
533 unsigned char lac_valid;
534 unsigned int lac; /**< cell lac*/
535
536 unsigned char sid_valid;
537 int sid; /**< cell sid cdma*/
538
539 unsigned char nid_valid;
540 int nid; /**< cell nid cdma*/
541
542 unsigned char lteMode_valid;
543 int lteMode; /*tdd 0, fdd 1*/
544
545 unsigned char rssi_valid;
546 int rssi; /**< Valid values are (0-31, 99) as defined in TS 27.007 8.5 */
547
548 unsigned char rscp_valid;
549 int rscp; /**< The Received Signal Code Power in dBm multipled by -1.
550 * Range : 25 to 120
551 * INT_MAX: 0x7FFFFFFF denotes invalid value.
552 * Reference: 3GPP TS 25.123, section 9.1.1.1 */
553
554 unsigned char ecio_valid;
555 int ecio; /**< Valid values are positive integers. This value is the actual Ec/Io multiplied
556 * by -10. Example: If the actual Ec/Io is -12.5 dB, then this response value
557 * will be 125.*/
558
559 unsigned char rsrp_valid;
560 int rsrp; /**< The current Reference Signal Receive Power in dBm multipled by -1.
561 * Range: 44 to 140 dBm
562 * INT_MAX: 0x7FFFFFFF denotes invalid value.
563 * Reference: 3GPP TS 36.133 9.1.4 */
564
565 unsigned char rsrq_valid;
566 int rsrq; /**< The current Reference Signal Receive Quality in dB multiplied by -1.
567 * Range: 20 to 3 dB.
568 * INT_MAX: 0x7FFFFFFF denotes invalid value.
569 * Reference: 3GPP TS 36.133 9.1.7 */
570
571 unsigned char rssnr_valid;
572 int rssnr; /**< The current reference signal signal-to-noise ratio in 0.1 dB units.
573 * Range: -200 to +300 (-200 = -20.0 dB, +300 = 30dB).
574 * INT_MAX : 0x7FFFFFFF denotes invalid value.
575 * Reference: 3GPP TS 36.101 8.1.1 */
576
577 unsigned char band_valid;
578 int band;
579
580 unsigned char bler_valid;
581 int bler; /*bit error rate*/
582
583 GSW_NW_CELL_EXT_INFO ext_info[MAX_CELL_EXT_INFO]; /* Used to hold neighborhood information for service cells. */
584} GSW_NW_CELL_INFO;
585
586typedef struct {
587 char mcc[GSW_MCC_MAX_LEN];
588 char mnc[GSW_MNC_MAX_LEN];
589} gsw_nw_plmn_t;
590
591
592typedef struct {
593 int plmn_list_len;
594 gsw_nw_plmn_t plmn_list[GSW_PLMN_LIST_MAX_LEN];
595} gsw_nw_plmn_list_t;
596
597typedef struct
598{
599 /* Configuration parameters for MCM network full band network scan when OOS (out of service)*/
600 int t_min;
601 int t_step;
602 int t_max;
603}GSW_NW_OOS_CONFIG_INFO_T;
604
605typedef void (* GSW_NW_ServingInfoHandlePtr)(GSW_NW_SERVING_INFO serving_info);
606typedef void (* GSW_NW_SigInfoHandlePtr)(signalStrength_t sig_info);
607typedef void (* GSW_NW_RejectCauseHandlePtr)(GSW_NW_REJ_CAUSE_E *rej_cause);
608typedef void (* GSW_HAL_NW_AIRPLANE_MODE_HANDLE_PTR)(int32_t airplane_mode);
609typedef void (* GSW_NW_ModemStateHandlePtr)(gsw_mode_state_e state);
610
611int (*gsw_reg_serving_info_callback)(GSW_NW_ServingInfoHandlePtr handle_ptr);
612int (*gsw_reg_sig_info_callback)(GSW_NW_SigInfoHandlePtr handle_ptr);
613int (*gsw_reg_rej_cause_callback)(GSW_NW_RejectCauseHandlePtr handle_ptr);
614int (*gsw_nw_sdk_init)(int token);
615int (*gsw_nw_sdk_deinit)(void);
616int (*gsw_get_nwinfo)(GSW_NW_SERVING_INFO *serving_info);
617int (*gsw_get_netype)(int32_t *netype);
618int (*gsw_get_opmode)(int *op_mode);
619int (*gsw_set_opmode)(int32_t op_mode);
620int (*gsw_get_mode_preference)(int32_t *mode_pref);
621int (*gsw_set_mode_preference)(int32_t mode_pref);
622int (*gsw_get_sig_info)(int32_t *csq_value);
623int (*gsw_network_set_power_mode)(int8_t mode);
624int (*gsw_sigInfo_to_csq)(int32_t netType, int32_t sigValue);
625int (*gsw_get_forbidden_networks)(gsw_nw_plmn_list_t *plmn_list);
626int (*gsw_add_forbidden_networks)(gsw_nw_plmn_list_t *plmn_list);
627int (*gsw_remove_forbidden_networks)(gsw_nw_plmn_list_t *plmn_list);
628int (*gsw_clear_forbidden_networks)(void);
629int (*gsw_get_mobile_operator_name)(gsw_mobile_operator_name *nw_operator_name_infos);
630int (*gsw_reg_set_modem_status_event_callback)(GSW_NW_ModemStateHandlePtr handle_ptr);
631int (*gsw_get_cell_info)(GSW_NW_CELL_INFO *cell_info);
632int (*gsw_oos_config_get)(GSW_NW_OOS_CONFIG_INFO_T *pt_info);
633int (*gsw_oos_config_set)(GSW_NW_OOS_CONFIG_INFO_T *pt_info);
634
635
636static int gsw_nw_api_import()
637{
638 dlHandle_nw = dlopen(lib_gsw_nw_path, RTLD_NOW);
639 if (dlHandle_nw == NULL) {
640 printf("error: %s\n", dlerror());
641 return -1;
642 }
643
644 gsw_nw_sdk_init = (int(*)(int token))dlsym(dlHandle_nw, "gsw_nw_sdk_init");
645 if (gsw_nw_sdk_init == NULL) {
646 printf("gsw_nw_sdk_init dlysm failed \n");
647 return -1;
648 }
649
650 gsw_nw_sdk_deinit = (int(*)(void))dlsym(dlHandle_nw, "gsw_nw_sdk_deinit");
651 if (gsw_nw_sdk_deinit == NULL) {
652 printf("gsw_nw_sdk_deinit dlysm failed \n");
653 return -1;
654 }
655
656 gsw_get_nwinfo = (int(*)(GSW_NW_SERVING_INFO *serving_info))dlsym(dlHandle_nw, "gsw_get_nwinfo");
657 if (gsw_get_nwinfo == NULL) {
658 printf("gsw_get_nwinfo dlysm failed \n");
659 return -1;
660 }
661
662 gsw_get_netype = (int(*)(int32_t *netype))dlsym(dlHandle_nw, "gsw_get_netype");
663 if (gsw_get_netype == NULL) {
664 printf("gsw_get_netype dlysm failed \n");
665 return -1;
666 }
667
668 gsw_get_opmode = (int(*)(int *op_mode))dlsym(dlHandle_nw, "gsw_get_opmode");
669 if (gsw_get_opmode == NULL) {
670 printf("gsw_get_opmode dlysm failed \n");
671 return -1;
672 }
673
674 gsw_set_opmode = (int(*)(int32_t op_mode))dlsym(dlHandle_nw, "gsw_set_opmode");
675 if (gsw_set_opmode == NULL) {
676 printf("gsw_set_opmode dlysm failed \n");
677 return -1;
678 }
679
680 gsw_get_mode_preference = (int(*)(int32_t *mode_pref))dlsym(dlHandle_nw, "gsw_get_mode_preference");
681 if (gsw_get_mode_preference == NULL) {
682 printf("gsw_get_mode_preference dlysm failed \n");
683 return -1;
684 }
685
686 gsw_set_mode_preference = (int(*)(int32_t mode_pref))dlsym(dlHandle_nw, "gsw_set_mode_preference");
687 if (gsw_set_mode_preference == NULL) {
688 printf("gsw_set_mode_preference dlysm failed \n");
689 return -1;
690 }
691
692 gsw_get_sig_info = (int(*)(int32_t *csq_value))dlsym(dlHandle_nw, "gsw_get_sig_info");
693 if (gsw_get_sig_info == NULL) {
694 printf("gsw_get_sig_info dlysm failed \n");
695 return -1;
696 }
697
698 gsw_network_set_power_mode = (int(*)(int8_t mode))dlsym(dlHandle_nw, "gsw_network_set_power_mode");
699 if (gsw_network_set_power_mode == NULL) {
700 printf("gsw_network_set_power_mode dlysm failed \n");
701 return -1;
702 }
703
704 gsw_sigInfo_to_csq = (int(*)(int32_t netType, int32_t sigValue))dlsym(dlHandle_nw, "gsw_sigInfo_to_csq");
705 if (gsw_sigInfo_to_csq == NULL) {
706 printf("gsw_sigInfo_to_csq dlysm failed \n");
707 return -1;
708 }
709
710 gsw_get_forbidden_networks = (int(*)(gsw_nw_plmn_list_t *plmn_list))dlsym(dlHandle_nw, "gsw_get_forbidden_networks");
711 if (gsw_get_forbidden_networks == NULL) {
712 printf("gsw_get_forbidden_networks dlysm failed \n");
713 return -1;
714 }
715
716 gsw_add_forbidden_networks = (int(*)(gsw_nw_plmn_list_t *plmn_list))dlsym(dlHandle_nw, "gsw_add_forbidden_networks");
717 if (gsw_add_forbidden_networks == NULL) {
718 printf("gsw_add_forbidden_networks dlysm failed \n");
719 return -1;
720 }
721
722 gsw_remove_forbidden_networks = (int(*)(gsw_nw_plmn_list_t *plmn_list))dlsym(dlHandle_nw, "gsw_remove_forbidden_networks");
723 if (gsw_remove_forbidden_networks == NULL) {
724 printf("gsw_remove_forbidden_networks dlysm failed \n");
725 return -1;
726 }
727
728 gsw_clear_forbidden_networks = (int(*)(void))dlsym(dlHandle_nw, "gsw_clear_forbidden_networks");
729 if (gsw_clear_forbidden_networks == NULL) {
730 printf("gsw_clear_forbidden_networks dlysm failed \n");
731 return -1;
732 }
733
734 gsw_get_mobile_operator_name = (int(*)(gsw_mobile_operator_name *nw_operator_name_infos))dlsym(dlHandle_nw, "gsw_get_mobile_operator_name");
735 if (gsw_get_mobile_operator_name == NULL) {
736 printf("gsw_get_mobile_operator_name dlysm failed \n");
737 return -1;
738 }
739
740 gsw_reg_set_modem_status_event_callback = (int(*)(GSW_NW_ModemStateHandlePtr handle_ptr))dlsym(dlHandle_nw, "gsw_reg_set_modem_status_event_callback");
741 if (gsw_reg_set_modem_status_event_callback == NULL) {
742 printf("gsw_reg_set_modem_status_event_callback dlysm failed \n");
743 return -1;
744 }
745
746 gsw_get_cell_info = (int(*)(GSW_NW_CELL_INFO *cell_info))dlsym(dlHandle_nw, "gsw_get_cell_info");
747 if (gsw_get_cell_info == NULL) {
748 printf("gsw_get_cell_info dlysm failed \n");
749 return -1;
750 }
751
752 gsw_reg_serving_info_callback = (int(*)(GSW_NW_ServingInfoHandlePtr handle_ptr))dlsym(dlHandle_nw, "gsw_reg_serving_info_callback");
753 if (gsw_reg_serving_info_callback == NULL) {
754 printf("gsw_reg_serving_info_callback dlysm failed \n");
755 return -1;
756 }
757
758 gsw_reg_sig_info_callback = (int(*)(GSW_NW_SigInfoHandlePtr handle_ptr))dlsym(dlHandle_nw, "gsw_reg_sig_info_callback");
759 if (gsw_reg_sig_info_callback == NULL) {
760 printf("gsw_reg_sig_info_callback dlysm failed \n");
761 return -1;
762 }
763
764 gsw_reg_rej_cause_callback = (int(*)(GSW_NW_RejectCauseHandlePtr handle_ptr))dlsym(dlHandle_nw, "gsw_reg_rej_cause_callback");
765 if (gsw_reg_rej_cause_callback == NULL) {
766 printf("gsw_reg_rej_cause_callback dlysm failed \n");
767 return -1;
768 }
769
770 gsw_oos_config_get = (int(*)(GSW_NW_OOS_CONFIG_INFO_T *oos_config))dlsym(dlHandle_nw, "gsw_oos_config_get");
771 if (gsw_oos_config_get == NULL) {
772 printf("gsw_oos_config_get dlysm failed \n");
773 return -1;
774 }
775
776 gsw_oos_config_set = (int(*)(GSW_NW_OOS_CONFIG_INFO_T *oos_config))dlsym(dlHandle_nw, "gsw_oos_config_set");
777 if (gsw_oos_config_set == NULL) {
778 printf("gsw_oos_config_set dlysm failed \n");
779 return -1;
780 }
781
782 return 0;
783
784}
785
786static void gsw_serving_info_callback(GSW_NW_SERVING_INFO serving_info)
787{
788 printf("gsw_serving_info_callback: \n");
789 printf("reg_state = %d\n", serving_info.reg_state);
790 printf("ps_state = %d\n", serving_info.ps_state);
791 printf("reg_rat = %d\n", serving_info.reg_rat);
792 printf("srv_domain = %d\n", serving_info.srv_domain);
793 printf("roaming_ind = %d\n", serving_info.roaming_ind);
794 printf("reg_plmn = %s\n", serving_info.reg_plmn);
795 printf("operator_name = %s\n", serving_info.operator_name);
796 printf("cell_id = %s\n", serving_info.cell_id);
797 printf("tac = %s\n", serving_info.tac);
798 printf("lac = %s\n", serving_info.lac);
799 printf("sid = %d\n", serving_info.sid);
800 printf("nid = %d\n", serving_info.nid);
801}
802
803static void gsw_sig_info_callback(signalStrength_t sig_info)
804{
805 printf("gsw_sig_info_callback: \n");
806 printf("gw_sig_valid = %d\n", sig_info.gw_sig_valid);
807 printf("rssi = %d\n", sig_info.rssi);
808 printf("wcdma_sig_valid = %d\n", sig_info.wcdma_sig_valid);
809 printf("rscp = %d\n", sig_info.rscp);
810 printf("ecno = %d\n", sig_info.ecno);
811 printf("lte_sig_valid = %d\n", sig_info.lte_sig_valid);
812 printf("rsrp = %d\n", sig_info.rsrp);
813 printf("rsrq = %d\n", sig_info.rsrq);
814 printf("rssnr = %d\n", sig_info.rssnr);
815 printf("nr_sig_valid = %d\n", sig_info.nr_sig_valid);
816 printf("ssRsrp = %d\n", sig_info.ssRsrp);
817 printf("ssRsrq = %d\n", sig_info.ssRsrq);
818 printf("ssSinr = %d\n", sig_info.ssSinr);
819 printf("csiRsrp = %d\n", sig_info.csiRsrp);
820 printf("csiRsrq = %d\n", sig_info.csiRsrq);
821 printf("csiSinr = %d\n", sig_info.csiSinr);
822}
823
824static void gsw_rej_cause_callback(GSW_NW_REJ_CAUSE_E *rej_cause)
825{
826 printf("gsw_rej_cause_callback: \n");
827 printf("rej_rat = %d\n", rej_cause->rej_rat);
828 printf("rej_domain = %d\n", rej_cause->rej_domain);
829 printf("rej_cause = %d\n", rej_cause->rej_cause);
830}
831
832static void gsw_modem_status_cb(gsw_mode_state_e state)
833{
834 printf("gsw_modem_status_cb: \n");
835 printf("state = %d\n", state);
836}
837
838
839void dump_items()
840{
841 printf("\n");
842 printf("The current module is: network \n");
843
844 printf("-------------------------------------------------------------------------\n");
845 printf("| index | function name |\n");
846 printf("| -1 exit\n");
847 printf(" 1 gsw_nw_sdk_init\n");
848 printf(" 2 gsw_nw_sdk_deinit\n");
849 printf(" 3 gsw_get_nwinfo\n");
850 printf(" 4 gsw_get_netype\n");
851 printf(" 5 gsw_get_opmode\n");
852 printf(" 6 gsw_set_opmode\n");
853 printf(" 7 gsw_get_mode_preference\n");
854 printf(" 8 gsw_set_mode_preference\n");
855 printf(" 9 gsw_get_sig_info\n");
856 printf(" 10 gsw_network_set_power_mode\n");
857 printf(" 11 gsw_sigInfo_to_csq\n");
858 printf(" 12 gsw_get_forbidden_networks\n");
859 printf(" 13 gsw_add_forbidden_networks\n");
860 printf(" 14 gsw_remove_forbidden_networks\n");
861 printf(" 15 gsw_clear_forbidden_networks\n");
862 printf(" 16 gsw_get_mobile_operator_name\n");
863 printf(" 17 gsw_reg_set_modem_status_event_callback\n");
864 printf(" 18 gsw_get_cell_info\n");
865 printf(" 19 gsw_reg_serving_info_callback\n");
866 printf(" 20 gsw_reg_sig_info_callback\n");
867 printf(" 21 gsw_reg_rej_cause_callback\n");
868 printf(" 22 gsw_oos_config_get\n");
869 printf(" 23 gsw_oos_config_set\n");
870 printf("-------------------------------------------------------------------------\n");
871}
872
873int main(int argc, char *argv[])
874{
875 int ret;
876 char operator[10];
877 int opt;
878
879 ret = gsw_nw_api_import();
880 if (ret != 0) {
881 printf("gsw_nw_api_import failed \n");
882 return -1;
883 }
884
885
886 while(1)
887 {
888 dump_items();
889 printf("input the index of module: ");
890
891 opt = -1;
892 printf("%s",fgets(operator, sizeof(operator), stdin));
893 fflush(stdin);
894
895 opt = atoi(operator);
896 switch (opt) {
897 case -1:
898 {
899 printf("main exit\n");
900 return 0;
901 }
902 case 1:
903 {
904 printf("gsw_nw_sdk_init\n");
905 ret = gsw_nw_sdk_init(1024);
906 printf("gsw_nw_sdk_init ret = %d\n",ret);
907 break;
908 }
909 case 2:
910 {
911 printf("gsw_nw_sdk_deinit\n");
912 ret = gsw_nw_sdk_deinit();
913 printf("gsw_nw_sdk_deinit ret = %d\n",ret);
914 break;
915 }
916 case 3:
917 {
918 GSW_NW_SERVING_INFO* nwinfo;
919 nwinfo = (GSW_NW_SERVING_INFO*)malloc(sizeof(GSW_NW_SERVING_INFO));
920 memset(nwinfo, 0x00, sizeof(GSW_NW_SERVING_INFO));
921 printf("gsw_get_nwinfo start\n");
922 ret = gsw_get_nwinfo(nwinfo);
923 if(ret != 0)
924 {
925 printf("gsw_get_nwinfo failed \n");
926 continue;
927 }
928 printf("nwinfo.reg_state = %d\nnwinfo.ps_state = %d\nnwinfo.reg_rat = %d\nnwinfo.srv_domain = %d\nnwinfo.roaming_ind = %d\nnwinfo.reg_plmn = %s\nnwinfo.operator_name = %s\nnwinfo.cell_id = %s\nnwinfo.lac = %s\nnwinfo.sid=%d\nnwinfo.nid = %d\n",nwinfo->reg_state, nwinfo->ps_state, nwinfo->reg_rat, nwinfo->srv_domain, nwinfo->roaming_ind, nwinfo->reg_plmn, nwinfo->operator_name, nwinfo->cell_id, nwinfo->lac, nwinfo->sid, nwinfo->nid);
929 free(nwinfo);
930 break;
931 }
932 case 4:
933 {
934 int nettype;
935 ret = gsw_get_netype(&nettype);
936 if(ret != 0)
937 {
938 printf("gsw_get_netype failed \n");
939 continue;
940 }
941 printf("nettype = %d\n", nettype);
942 break;
943 }
944
945 case 5:
946 {
947 int opmode;
948 ret = gsw_get_opmode(&opmode);
949 if(ret != 0)
950 {
951 printf("gsw_get_opmode failed \n");
952 continue;
953 }
954 printf("opmode = %d\n", opmode);
955 break;
956 }
957
958 case 6:
959 {
960 printf("input the opmode: ");
961 memset(operator,0x00, sizeof(operator));
962 printf("%s\n",fgets(operator, sizeof(operator)-1, stdin));
963 fflush(stdin);
964 opt = atoi(operator);
965 ret = gsw_set_opmode(opt);
966 if(ret != 0)
967 {
968 printf("gsw_set_opmode failed \n");
969 continue;
970 }
971 break;
972 }
973
974 case 7:
975 {
976 int mode_pref;
977 ret = gsw_get_mode_preference(&mode_pref);
978 if(ret != 0)
979 {
980 printf("gsw_get_mode_preference failed \n");
981 continue;
982 }
983 printf("mode_pref = %d\n", mode_pref);
984 break;
985 }
986
987 case 8:
988 {
989 printf("input the mode_pref: ");
990 memset(operator,0x00, sizeof(operator));
991 printf("%s\n",fgets(operator, sizeof(operator)-1, stdin));
992 fflush(stdin);
993 opt = atoi(operator);
994 ret = gsw_set_mode_preference(opt);
995 if(ret != 0)
996 {
997 printf("gsw_set_mode_preference failed \n");
998 continue;
999 }
1000 break;
1001 }
1002
1003 case 9:
1004 {
1005 int siginfo;
1006 ret = gsw_get_sig_info(&siginfo);
1007 if(ret != 0)
1008 {
1009 printf("gsw_get_sig_info failed \n");
1010 continue;
1011 }
1012 printf("signal info: siginfo = %d\n", siginfo);
1013 break;
1014 }
1015
1016 case 10:
1017 {
1018 printf("input the power mode: ");
1019 memset(operator,0x00, sizeof(operator));
1020 printf("%s\n",fgets(operator, sizeof(operator)-1, stdin));
1021 fflush(stdin);
1022 opt = atoi(operator);
1023 ret = gsw_network_set_power_mode(opt);
1024 if(ret != 0)
1025 {
1026 printf("gsw_network_set_power_mode failed \n");
1027 continue;
1028 }
1029 break;
1030 }
1031
1032 case 11:
1033 {
1034 int nettype;
1035 int sigValue;
1036 printf("please input the netType:");
1037 memset(operator,0x00, sizeof(operator));
1038 printf("%s\n",fgets(operator, sizeof(operator)-1, stdin));
1039 fflush(stdin);
1040 nettype = atoi(operator);
1041
1042 printf("input the sigValue: ");
1043 memset(operator,0x00, sizeof(operator));
1044 printf("%s\n",fgets(operator, sizeof(operator)-1, stdin));
1045 fflush(stdin);
1046 sigValue = atoi(operator);
1047
1048 ret = gsw_sigInfo_to_csq(nettype, sigValue);
1049 printf("csq = %d\n", ret);
1050
1051 break;
1052 }
1053
1054 case 12:
1055 {
1056 printf("gsw_get_forbidden_networks start\n");
1057 gsw_nw_plmn_list_t fplmn_list;
1058 fplmn_list.plmn_list_len = 0;
1059 ret = gsw_get_forbidden_networks(&fplmn_list);
1060 if(ret != 0)
1061 {
1062 printf("gsw_get_forbidden_networks failed \n");
1063 continue;
1064 }
1065
1066 printf("gsw_get_forbidden_networks end\n");
1067 for(int i = 0; i < fplmn_list.plmn_list_len; i++)
1068 {
1069 printf("list[%d] mcc = %s,mnc = %s\n",i, fplmn_list.plmn_list[i].mcc, fplmn_list.plmn_list[i].mnc);
1070 }
1071
1072 break;
1073 }
1074 case 13:
1075 {
1076 printf("gsw_add_forbidden_networks start\n");
1077 gsw_nw_plmn_list_t fplmn_list_set;
1078 fplmn_list_set.plmn_list_len = 1;
1079 strcpy(fplmn_list_set.plmn_list[0].mcc, "460");
1080 strcpy(fplmn_list_set.plmn_list[0].mnc, "09");
1081
1082 ret = gsw_add_forbidden_networks(&fplmn_list_set);
1083 if(ret != 0)
1084 {
1085 printf("gsw_add_forbidden_networks failed \n");
1086 continue;
1087 }
1088 printf("gsw_add_forbidden_networks end\n");
1089 break;
1090 }
1091 case 14:
1092 {
1093 printf("gsw_add_forbidden_networks start\n");
1094 gsw_nw_plmn_list_t fplmn_list_remove;
1095 fplmn_list_remove.plmn_list_len = 1;
1096 strcpy(fplmn_list_remove.plmn_list[0].mcc, "460");
1097 strcpy(fplmn_list_remove.plmn_list[0].mnc, "02");
1098
1099 ret = gsw_remove_forbidden_networks(&fplmn_list_remove);
1100 if(ret != 0)
1101 {
1102 printf("gsw_add_forbidden_networks failed \n");
1103 continue;
1104 }
1105 printf("gsw_add_forbidden_networks end\n");
1106 break;
1107 }
1108
1109 case 15:
1110 {
1111 printf("gsw_clear_forbidden_networks start\n");
1112 ret = gsw_clear_forbidden_networks();
1113 if(ret != 0)
1114 {
1115 printf("gsw_clear_forbidden_networks failed \n");
1116 continue;
1117 }
1118 printf("gsw_clear_forbidden_networks end\n");
1119 break;
1120 }
1121
1122 case 16:
1123 {
1124 gsw_mobile_operator_name opname;
1125
1126 ret = gsw_get_mobile_operator_name(&opname);
1127 if(ret != 0)
1128 {
1129 printf("gsw_get_mobile_operator_name failed \n");
1130 continue;
1131 }
1132
1133 printf("opname.operator_name = %s\nopname.operator_code = %s\nopname.mcc=%s\nopname.mnc=%s", opname.long_eons, opname.short_eons, opname.mcc, opname.mnc);
1134 break;
1135 }
1136
1137 case 17:
1138 {
1139 printf("gsw_reg_set_modem_status_event_callback\n");
1140 ret = gsw_reg_set_modem_status_event_callback(gsw_modem_status_cb);
1141 if(ret != 0)
1142 {
1143 printf("gsw_reg_set_modem_status_event_callback failed \n");
1144 continue;
1145 }
1146 printf("gsw_reg_set_modem_status_event_callback success\n");
1147 break;
1148 }
1149
1150 case 18:
1151 {
1152 printf("gsw_get_cell_info starts\n");
1153 GSW_NW_CELL_INFO cell_info;
1154 memset(&cell_info, 0x00, sizeof(GSW_NW_CELL_INFO));
1155 ret = gsw_get_cell_info(&cell_info);
1156 if(ret != 0)
1157 {
1158 printf("gsw_get_cell_info failed \n");
1159 continue;
1160 }
1161
1162 printf("--------------------serving cell info ------------------------------\n");
1163 printf("mcc_valid = %d\n",cell_info.mcc_valid);
1164 printf("mcc = %s\n",cell_info.mcc);
1165 printf("mnc_valid = %d\n",cell_info.mnc_valid);
1166 printf("mnc = %s\n",cell_info.mnc);
1167 printf("cell_id_valid = %d\n",cell_info.cell_id_valid);
1168 printf("cell_id = %u\n",cell_info.cell_id);
1169 printf("pci_valid = %d\n",cell_info.pci_valid);
1170 printf("pci = %d\n",cell_info.pci);
1171 printf("psc_valid = %d\n",cell_info.psc_valid);
1172 printf("psc = %d\n",cell_info.psc);
1173 printf("earfcn_valid = %d\n",cell_info.earfcn_valid);
1174 printf("earfcn = %d\n",cell_info.earfcn);
1175 printf("uarfcn_valid = %d\n",cell_info.uarfcn_valid);
1176 printf("uarfcn = %d\n",cell_info.uarfcn);
1177 printf("arfcn_valid = %d\n",cell_info.arfcn_valid);
1178 printf("arfcn = %d\n",cell_info.arfcn);
1179 printf("tac_valid = %d\n",cell_info.tac_valid);
1180 printf("tac = %u\n",cell_info.tac);
1181 printf("lac_valid = %d\n",cell_info.lac_valid);
1182 printf("lac = %u\n",cell_info.lac);
1183 printf("sid_valid = %d\n",cell_info.sid_valid);
1184 printf("sid = %d\n",cell_info.sid);
1185 printf("nid_valid = %d\n",cell_info.nid_valid);
1186 printf("nid = %d\n",cell_info.nid);
1187 printf("lteMode_valid = %d\n",cell_info.lteMode_valid);
1188 printf("lteMode = %d\n",cell_info.lteMode);
1189 printf("rssi_valid = %d\n",cell_info.rssi_valid);
1190 printf("rssi = %d\n",cell_info.rssi);
1191 printf("rsrq_valid = %d\n",cell_info.rsrq_valid);
1192 printf("rsrq = %d\n",cell_info.rsrq);
1193 printf("ecio_valid = %d\n",cell_info.ecio_valid);
1194 printf("ecio = %d\n",cell_info.ecio);
1195 printf("rsrp_valid = %d\n",cell_info.rsrp_valid);
1196 printf("rsrp = %d\n",cell_info.rsrp);
1197 printf("rsrq_valid = %d\n",cell_info.rsrq_valid);
1198 printf("rsrq = %d\n",cell_info.rsrq);
1199 printf("rssnr_valid = %d\n",cell_info.rssnr_valid);
1200 printf("rssnr = %d\n",cell_info.rssnr);
1201 printf("band_valid = %d\n",cell_info.band_valid);
1202 printf("band = %d\n",cell_info.band);
1203 printf("bler_valid = %d\n",cell_info.bler_valid);
1204 printf("bler = %d\n",cell_info.bler);
1205
1206
1207 printf("-----------------------------------------------------------------------------------\n");
1208
1209 printf("-------------------------------------inter cell info ------------------------------\n");
1210
1211 for(int i = 0; i <MAX_CELL_EXT_INFO ; i++)
1212 {
1213 printf("-----------------------------------------------------------\n");
1214 printf("inter cell info[%d] rat = %d\n",i,cell_info.ext_info[i].rat);
1215
1216 printf("inter cell info[%d] mcc = %s\n",i,cell_info.ext_info[i].mcc);
1217
1218 printf("inter cell info[%d] mnc = %s\n",i,cell_info.ext_info[i].mnc);
1219
1220 printf("inter cell info[%d] pci_valid = %d\n",i,cell_info.ext_info[i].pci_valid);
1221 printf("inter cell info[%d] pci = %d\n",i,cell_info.ext_info[i].pci);
1222
1223 printf("inter cell info[%d] arfcn_valid = %d\n",i,cell_info.ext_info[i].arfcn_valid);
1224 printf("inter cell info[%d] arfcn = %d\n",i,cell_info.ext_info[i].arfcn);
1225
1226 printf("inter cell info[%d] rsrp_valid = %d\n",i,cell_info.ext_info[i].rsrp_valid);
1227 printf("inter cell info[%d] rsrp = %d\n",i,cell_info.ext_info[i].rsrp);
1228
1229 printf("inter cell info[%d] rsrq_valid = %d\n",i,cell_info.ext_info[i].rsrq_valid);
1230 printf("inter cell info[%d] rsrq = %d\n",i,cell_info.ext_info[i].rsrq);
1231
1232 printf("inter cell info[%d] cell_id_valid = %d\n",i,cell_info.ext_info[i].cell_id_valid);
1233 printf("inter cell info[%d] cell_id = %u\n",i,cell_info.ext_info[i].cell_id);
1234
1235 printf("inter cell info[%d] band_valid = %d\n",i,cell_info.ext_info[i].band_valid);
1236 printf("inter cell info[%d] band = %u\n",i,cell_info.ext_info[i].band);
1237
1238 printf("-----------------------------------------------------------\n");
1239 }
1240
1241
1242 break;
1243 }
1244
1245 case 19:
1246 {
1247 printf("gsw_reg_serving_info_callback start\n");
1248 ret = gsw_reg_serving_info_callback(gsw_serving_info_callback);
1249 break;
1250 }
1251
1252 case 20:
1253 {
1254 printf("gsw_reg_sig_info_callback start\n");
1255 ret = gsw_reg_sig_info_callback(gsw_sig_info_callback);
1256 break;
1257 }
1258
1259 case 21:
1260 {
1261 printf("gsw_reg_rej_cause_callback\n");
1262 ret = gsw_reg_rej_cause_callback(gsw_rej_cause_callback);
1263 break;
1264 }
1265
1266 case 22:
1267 {
1268 printf("gsw_oos_config_get\n");
1269 GSW_NW_OOS_CONFIG_INFO_T oos_cfg;
1270 ret = gsw_oos_config_get(&oos_cfg);
1271 if(ret != 0)
1272 {
1273 printf("gsw_oos_config_get failed \n");
1274 continue;
1275 }
1276
1277 else
1278 {
1279 printf("oos_cfg.t_min = %d\n",oos_cfg.t_min);
1280 printf("oos_cfg.t_max = %d\n",oos_cfg.t_max);
1281 printf("oos_cfg.t_step = %d\n",oos_cfg.t_step);
1282 }
1283 break;
1284 }
1285
1286 case 23:
1287 {
1288 printf("gsw_oos_config_set\n");
1289 GSW_NW_OOS_CONFIG_INFO_T oos_cfg;
1290 oos_cfg.t_min = 5;
1291 oos_cfg.t_step = 5;
1292 oos_cfg.t_max = 5;
1293
1294 ret = gsw_oos_config_set(&oos_cfg);
1295 if(ret != 0)
1296 {
1297 printf("gsw_oos_config_set failed \n");
1298 continue;
1299 }
1300 else
1301 {
1302 printf("gsw_oos_config_set success\n");
1303 }
1304 break;
1305 }
1306
1307
1308 default:
1309 {
1310 continue;
1311 }
1312
1313
1314 }
1315 }
1316
1317
1318}