blob: 86bd5627ddbb032aac71aef955b85b7c2a77491d [file] [log] [blame]
b.liu4e243dc2023-11-27 11:20:00 +08001#include "lynq_qser_network.h"
r.xiaoe73f8702024-01-06 01:40:03 -08002#include "mbtk_type.h"
3#include "mbtk_info_api.h"
r.xiaoba8483c2024-04-14 18:53:10 -07004#include "mbtk_log.h"
r.xiaoe73f8702024-01-06 01:40:03 -08005
6#include <stdio.h>
7#include <stdlib.h>
8
r.xiaofca7c472024-04-24 01:00:23 -07009
r.xiaoe73f8702024-01-06 01:40:03 -080010mbtk_info_handle_t* lynq_nw_info_handle = NULL;
11uint64_t tmp_mode = 0xFF;
12
13nw_client_handle_type g_nw_val = -1;
14
r.xiaoe73f8702024-01-06 01:40:03 -080015typedef struct
16{
17 QSER_NW_RxMsgHandlerFunc_t handlerPtr;
18 void* contextPtr;
19} lynq_cust_cb_func;
20
21static lynq_cust_cb_func lynq_func_cb_handle;
22
23static int roaming_pref = 1; // Open roaming for default.
24
25typedef enum {
26 RADIO_TECH_3GPP = 1, /* 3GPP Technologies - GSM, WCDMA */
27 RADIO_TECH_3GPP2 = 2 /* 3GPP2 Technologies - CDMA */
28} RIL_RadioTechnologyFamily;
29
30
31typedef struct
32{
33 uint8 *lynq_operator_l;
34 uint8 *lynq_operator_s;
35 uint32 lynq_mcc_mnc;
36} lynq_operator_mcc_mnc_t;
37
38static lynq_operator_mcc_mnc_t lynq_operator_mcc_mnc[] =
39{
40 {"China Mobile","CMCC",46000},
41 {"China Unicom","CU",46001},
42 {"China Mobile","CMCC",46002},
43 {"China Telecom","CT",46003},
44 {"China Mobile","CMCC",46004},
45 {"China Telecom","CT",46005},
46 {"China Unicom","CU",46006},
47 {"China Mobile","CMCC",46007},
48 {"China Mobile","CMCC",46008},
49 {"China Unicom","CU",46009},
50 {"China Telecom","CT",46011}
51};
52
r.xiaofca7c472024-04-24 01:00:23 -070053#if 0
54//T106的实现
55/*Used to wait for an update signal*/
56int lynq_wait_signalchanges(int *handle)
r.xiaoe73f8702024-01-06 01:40:03 -080057{
r.xiaofca7c472024-04-24 01:00:23 -070058 LYDBGLOG("start wait signalchanges info");
59 if(NULL == handle)
60 {
61 LYERRLOG("illegal input");
62 return LYNQ_E_PARAMETER_ANONALY;
63 }
64 wait_urc_signal_changes();
65 LYDBGLOG("get signalchanges");
66 *handle = s_module_wait_urc_id;
67 return RESULT_OK;
68}
69
70bool is_support_urc(int urc_id)
71{
72 switch(urc_id)
73 {
74 case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED:
75 case RIL_UNSOL_RESPONSE_PS_NETWORK_STATE_CHANGED:
76 case RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED:
77 case RIL_UNSOL_SIGNAL_STRENGTH:
78 return true;
79 default:
80 return false;
81 }
82}
83
84/*Used to get urc info*/
85int lynq_get_urc_info(const int handle,signalStrength_t *solSigStren,int *slot_id)
86{
87 if(g_module_init_flag != MODULE_RUNNING)
88 {
89 LYERRLOG("%s module state %d error",__func__,g_module_init_flag);
90 return -1;
91 }
92 LYDBGLOG("start get urc info");
93 if(is_support_urc(handle)==false)
94 {
95 LYINFLOG("invalid handle!!!");
96 return -1;
97 }
98 if((handle ==RIL_UNSOL_SIGNAL_STRENGTH && NULL == solSigStren) ||
99 (handle !=RIL_UNSOL_SIGNAL_STRENGTH && NULL == slot_id))
100 {
101 LYINFLOG("incoming solSigStren or slot_id is NULL!!!");
102 return -1;
103 }
104 switch(handle)
105 {
106 case RIL_UNSOL_SIGNAL_STRENGTH: //1009
107 {
108 LYDBGLOG("get state update to signal info");
109 solSigStren->gw_sig_valid = s_network_urc_solSigStren.gw_sig_valid;
110 solSigStren->rssi = s_network_urc_solSigStren.rssi;
111 solSigStren->wcdma_signalstrength = s_network_urc_solSigStren.wcdma_signalstrength;
112 solSigStren->wcdma_sig_valid = s_network_urc_solSigStren.wcdma_sig_valid;
113 solSigStren->rscp = s_network_urc_solSigStren.rscp;
114 solSigStren->ecno = s_network_urc_solSigStren.ecno;
115 solSigStren->lte_signalstrength = s_network_urc_solSigStren.lte_signalstrength;
116 solSigStren->lte_sig_valid = s_network_urc_solSigStren.lte_sig_valid;
117 solSigStren->rsrp = s_network_urc_solSigStren.rsrp;
118 solSigStren->rsrq = s_network_urc_solSigStren.rsrq;
119 solSigStren->rssnr = s_network_urc_solSigStren.rssnr;
120 solSigStren->nr_sig_valid = s_network_urc_solSigStren.nr_sig_valid;
121 solSigStren->ssRsrp = s_network_urc_solSigStren.ssRsrp;
122 solSigStren->ssRsrq = s_network_urc_solSigStren.ssRsrq;
123 solSigStren->ssSinr = s_network_urc_solSigStren.ssSinr;
124 solSigStren->csiRsrp = s_network_urc_solSigStren.csiRsrp;
125 solSigStren->csiRsrq = s_network_urc_solSigStren.csiRsrq;
126 solSigStren->csiSinr = s_network_urc_solSigStren.csiSinr;
127 break;
128 }
129 default:
130 {
131 *slot_id = s_module_urc_slot_id;
132 LYINFLOG("slot_id = %d",s_module_urc_slot_id);
133 }
134 }
135 return 0;
136}
137
138
139void urc_msg_process_voice_reg()
140{
141 if(s_handlerPtr != NULL)
142 {
143 s_handlerPtr(g_nw_val,NW_IND_VOICE_REG_EVENT_IND_FLAG,NULL,0,s_contextPtr);
144 }
145}
146
147void urc_msg_process_data_reg()
148{
149 if(s_handlerPtr != NULL)
150 {
151 s_handlerPtr(g_nw_val,NW_IND_DATA_REG_EVENT_IND_FLAG,NULL,0,s_contextPtr);
152 }
153}
154
155void urc_msg_process_ims_reg()
156{
157 if(s_handlerPtr != NULL)
158 {
159 s_handlerPtr(g_nw_val,NW_IND_IMS_REG_EVENT_IND_FLAG,NULL,0,s_contextPtr);
160 }
161}
162
163void *new_network_thread_recv(void *context)
164{
165 int handle = -1;
166 uint32_t ind_flag = 0;
167
168 while (1)
169 {
170 lynq_wait_signalchanges(&handle);
171
172 switch(handle)
173 {
174 case 1002: //RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED:
175 {
176 urc_msg_process_voice_reg();
177
178 break;
179 }
180 case 3015://RIL_UNSOL_RESPONSE_PS_NETWORK_STATE_CHANGED:
181 {
182 urc_msg_process_data_reg();
183 break;
184 }
185 case 1009://RIL_UNSOL_SIGNAL_STRENGTH:
186 {
187 urc_msg_process_signal_strength();
188 break;
189 }
190 case 1037://RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED:
191 {
192 urc_msg_process_ims_reg();
193 break;
194 }
195 }
196 }
197 return NULL;
198}
199
200void urc_msg_process_signal_strength()
201{
202 signalStrength_t signalstrength;
203 int slot_id;
204
205 int ret = lynq_get_urc_info(1009,&signalstrength,&slot_id);
206 if (ret == 0)
207 {
208 QSER_NW_SINGNAL_EVENT_IND_T msg_buf;
209 msg_buf.gsm_sig_info_valid = signalstrength.gw_sig_valid;
210 msg_buf.gsm_sig_info.rssi = signalstrength.rssi;
211 msg_buf.wcdma_sig_info_valid = signalstrength.wcdma_sig_valid;
212 msg_buf.wcdma_sig_info.rssi = signalstrength.rscp;
213 msg_buf.wcdma_sig_info.ecio = signalstrength.ecno;
214 msg_buf.tdscdma_sig_info_valid = 0;
215 msg_buf.lte_sig_info_valid = signalstrength.lte_sig_valid;
216 msg_buf.lte_sig_info.rssi = -125;
217 msg_buf.lte_sig_info.rsrp = signalstrength.rsrp;
218 msg_buf.lte_sig_info.rsrq = signalstrength.rsrq;
219 msg_buf.lte_sig_info.snr = signalstrength.rssnr;
220 msg_buf.cdma_sig_info_valid = 0;
221 msg_buf.hdr_sig_info_valid = 0;
222 msg_buf.nr_sig_info_valid = signalstrength.nr_sig_valid;
223 msg_buf.nr_sig_info.ssRsrp = signalstrength.ssRsrp;
224 msg_buf.nr_sig_info.ssRsrq = signalstrength.ssRsrq;
225 msg_buf.nr_sig_info.ssSinr = signalstrength.ssSinr;
226 msg_buf.nr_sig_info.csiRsrp = signalstrength.csiRsrp;
227 msg_buf.nr_sig_info.csiRsrq = signalstrength.csiRsrq;
228 msg_buf.nr_sig_info.csiSinr = signalstrength.csiSinr;
229 void *ind_msg_buf= &msg_buf;
230 if(s_handlerPtr!=NULL)
231 {
232 s_handlerPtr(g_nw_val,NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG,ind_msg_buf,sizeof (msg_buf) ,s_contextPtr);
233 }
234 }
235}
236
237#endif
238
239
240
241void lynq_signal_state_change_cb(const void* data, int data_len)
242{
243#if 0
r.xiaocfd7c682024-01-22 03:59:46 -0800244
245/*
r.xiaoe73f8702024-01-06 01:40:03 -0800246 uint8 *net_data = NULL;
247
248 net_data = (uint8*)data;
r.xiaoe73f8702024-01-06 01:40:03 -0800249
r.xiaocfd7c682024-01-22 03:59:46 -0800250 if(data && data_len > 0)
r.xiaoe73f8702024-01-06 01:40:03 -0800251 {
r.xiaocfd7c682024-01-22 03:59:46 -0800252 if(*net_data == 0)
253 { // CS
254 printf("CS:act=%d, mode=%d\n", *(net_data + 1), *(net_data + 2));
255 }
256 else
257 { // PS
258 printf("PS[%s]:act=%d, mode=%d\n", *(net_data + 3) == 0 ? "GSM/WCDMA" : "LTE", *(net_data + 1), *(net_data + 2));
259 }
r.xiaoe73f8702024-01-06 01:40:03 -0800260 }
261 else
262 {
r.xiaocfd7c682024-01-22 03:59:46 -0800263 printf("NET_CB : NULL");
r.xiaoe73f8702024-01-06 01:40:03 -0800264 }
r.xiaoe73f8702024-01-06 01:40:03 -0800265*/
266
r.xiaofca7c472024-04-24 01:00:23 -0700267 if(s_handlerPtr != NULL)//数据原样输出
r.xiaoe73f8702024-01-06 01:40:03 -0800268 {
r.xiaofca7c472024-04-24 01:00:23 -0700269 s_handlerPtr(g_nw_val, NW_IND_DATA_REG_EVENT_IND_FLAG, data, data_len, NULL);
r.xiaoe73f8702024-01-06 01:40:03 -0800270 }
r.xiaofca7c472024-04-24 01:00:23 -0700271#endif
272
273 /*
274 data_signal[0] = signal.type;
275 data_signal[1] = signal.rssi;
276 data_signal[2] = signal.rxlev;
277 data_signal[3] = signal.ber;
278 data_signal[4] = signal.rscp;
279 data_signal[5] = signal.ecno;
280 data_signal[6] = signal.rsrq;
281 data_signal[7] = signal.rsrp;
282 */
283
284 uint8 *net_data = NULL;
285 QSER_NW_SINGNAL_EVENT_IND_T msg_buf;
286
287 if(data && data_len > 0)
288 {
289 net_data = (uint8*)data;
290 //printf("net_data[0] => *net_data =%d\n",*net_data);
291 msg_buf.gsm_sig_info_valid = FALSE;
292 msg_buf.lte_sig_info_valid = FALSE;
293 msg_buf.wcdma_sig_info_valid = FALSE;
294
295 if(*net_data == MBTK_RADIO_TECH_GSM || *net_data == MBTK_RADIO_TECH_GSM_COMPACT || \
296 *net_data == MBTK_RADIO_TECH_GSM_EGPRS) //GSM
297 {
298 msg_buf.gsm_sig_info_valid = TRUE;
299 }
300 else if(*net_data == MBTK_RADIO_TECH_E_UTRAN) //LTE
301 {
302 msg_buf.lte_sig_info_valid = TRUE;
303 }
304 else if (*net_data == MBTK_RADIO_TECH_UTRAN || *net_data == MBTK_RADIO_TECH_UTRAN_HSDPA || \
305 *net_data == MBTK_RADIO_TECH_UTRAN_HSUPA || *net_data == MBTK_RADIO_TECH_UTRAN_HSDPA_HSUPA || \
306 *net_data == MBTK_RADIO_TECH_UTRAN_HSPA )//WCDMA
307 {
308 msg_buf.wcdma_sig_info_valid = TRUE;
309 }
310
311 //msg_buf.gsm_sig_info_valid = TRUE;//signalstrength.gw_sig_valid;
312 msg_buf.gsm_sig_info.rssi = *(net_data + 1);//signalstrength.rssi;
313 printf("rssi = %d\n", *(net_data + 1));
314 //msg_buf.wcdma_sig_info_valid = TRUE;//.wcdma_sig_valid;
315 msg_buf.wcdma_sig_info.rssi = *(net_data + 4);//signalstrength.rscp;
316 printf("rscp = %d\n", *(net_data + 4));
317 msg_buf.wcdma_sig_info.ecio = *(net_data + 5);//signalstrength.ecno;
318 printf("ecno = %d\n", *(net_data + 5));
319 msg_buf.tdscdma_sig_info_valid = FALSE;
320 //msg_buf.lte_sig_info_valid = TRUE;//signalstrength.lte_sig_valid;
321 msg_buf.lte_sig_info.rssi = -125;
322 msg_buf.lte_sig_info.rsrp = *(net_data + 7);//signalstrength.rsrp;
323 printf("rsrp = %d\n", *(net_data + 7));
324 msg_buf.lte_sig_info.rsrq = *(net_data + 6);//signalstrength.rsrq;
325 printf("rsrq = %d\n", *(net_data + 6));
326 msg_buf.lte_sig_info.snr = 0x7FFFFFFFF; //signalstrength.rssnr;(当前mbtk没有该参数)
327 msg_buf.cdma_sig_info_valid = FALSE;
328 msg_buf.hdr_sig_info_valid = FALSE;
329 msg_buf.nr_sig_info_valid = FALSE;//(当前mbtk没有该参数)
330 msg_buf.nr_sig_info.ssRsrp = 0;
331 msg_buf.nr_sig_info.ssRsrq = 0;
332 msg_buf.nr_sig_info.ssSinr = 0;
333 msg_buf.nr_sig_info.csiRsrp = 0;
334 msg_buf.nr_sig_info.csiRsrq = 0;
335 msg_buf.nr_sig_info.csiSinr = 0;
336
337 void *ind_msg_buf= &msg_buf;
338 if(lynq_func_cb_handle.handlerPtr != NULL)
339 {
340 lynq_func_cb_handle.handlerPtr(g_nw_val, NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG, ind_msg_buf, sizeof (msg_buf), lynq_func_cb_handle.contextPtr);
341 }
342 }
343 else
344 {
345 LOGE("lynq_nw_state_change_cb : NULL");
346 }
347
r.xiaoe73f8702024-01-06 01:40:03 -0800348}
349
350
351static uint8 lynq_net_pre_change(bool mbtk_2_lynq,int net_mode)
352{
353 uint8 mbtk_net_pre = 0xFF;
354
355#if 0
356 此参数表在别处使用
357 E_QSER_NW_RADIO_TECH_TD_SCDMA = 1, Y3 1
358 E_QSER_NW_RADIO_TECH_GSM = 2, /**< GSM; only supports voice. */ YL2 0
359 E_QSER_NW_RADIO_TECH_HSPAP = 3, /**< HSPA+. */ 3 1
360 E_QSER_NW_RADIO_TECH_LTE = 4, /**< LTE. */ 4 5
361 E_QSER_NW_RADIO_TECH_EHRPD = 5, /**< EHRPD. */ 3 1
362 E_QSER_NW_RADIO_TECH_EVDO_B = 6, /**< EVDO B. */ D3 1
363 E_QSER_NW_RADIO_TECH_HSPA = 7, /**< HSPA. */ 3 1
364 E_QSER_NW_RADIO_TECH_HSUPA = 8, /**< HSUPA. */ 3.5 1
365 E_QSER_NW_RADIO_TECH_HSDPA = 9, /**< HSDPA. */ 3.5 1
366 E_QSER_NW_RADIO_TECH_EVDO_A = 10, /**< EVDO A. */ D3 1
367 E_QSER_NW_RADIO_TECH_EVDO_0 = 11, /**< EVDO 0. */ D3 1
368 E_QSER_NW_RADIO_TECH_1xRTT = 12, /**< 1xRTT. */ 2 0
369 E_QSER_NW_RADIO_TECH_IS95B = 13, /**< IS95B. */ 3 0
370 E_QSER_NW_RADIO_TECH_IS95A = 14, /**< IS95A. */ 3 0
371 E_QSER_NW_RADIO_TECH_UMTS = 15, /**< UMTS. */ L3 1
372 E_QSER_NW_RADIO_TECH_EDGE = 16, /**< EDGE. */ 2.75 0
373 E_QSER_NW_RADIO_TECH_GPRS = 17, /**< GPRS. */ 2.5 0
374 E_QSER_NW_RADIO_TECH_NONE = 18 /**< No technology selected. */
375#endif
376 /*
377 0 : GSM only
378 1 : UMTS only
379 2 : GSM/UMTS(auto)
380 3 : GSM/UMTS(GSM preferred)
381 4 : GSM/UMTS(UMTS preferred)
382 5 : LTE only
383 6 : GSM/LTE(auto)
384 7 : GSM/LTE(GSM preferred)
385 8 : GSM/LTE(LTE preferred)
386 9 : UMTS/LTE(auto)
387 10 : UMTS/LTE(UMTS preferred)
388 11 : UMTS/LTE(LTE preferred)
389 12 : GSM/UMTS/LTE(auto)
390 13 : GSM/UMTS/LTE(GSM preferred)
391 14 : GSM/UMTS/LTE(UMTS preferred)
392 15 : GSM/UMTS/LTE(LTE preferred)
393 */
394
395 if(mbtk_2_lynq) {
396 switch(net_mode)
397 {
398 //使用之前set的tmp_mode的值来进行回显get
399 case QSER_NW_MODE_GSM:
400 mbtk_net_pre = QSER_NW_MODE_GSM;
401 break;
402 case QSER_NW_MODE_WCDMA:
403 mbtk_net_pre = QSER_NW_MODE_WCDMA;
404 break;
405 case QSER_NW_MODE_CDMA:
406 mbtk_net_pre = QSER_NW_MODE_CDMA;
407 break;
408 case QSER_NW_MODE_EVDO:
409 mbtk_net_pre = QSER_NW_MODE_EVDO;
410 break;
411 case QSER_NW_MODE_LTE:
412 mbtk_net_pre = QSER_NW_MODE_LTE;
413 break;
414 case QSER_NW_MODE_TDSCDMA:
415 mbtk_net_pre = QSER_NW_MODE_TDSCDMA;
416 break;
417 default:
418 mbtk_net_pre = 0xFF;
419 break;
420 }
421 } else {
422 switch(net_mode)
423 {
r.xiaofca7c472024-04-24 01:00:23 -0700424 //只做234G的下配 MBTK_NET_PREF_GSM_ONLY/MBTK_NET_PREF_UMTS_ONLY/MBTK_NET_PREF_LTE_ONLY
r.xiaoe73f8702024-01-06 01:40:03 -0800425 case QSER_NW_MODE_GSM:
426 mbtk_net_pre = MBTK_NET_PREF_GSM_ONLY;
427 break;
428 case QSER_NW_MODE_WCDMA:
r.xiaofca7c472024-04-24 01:00:23 -0700429 mbtk_net_pre = MBTK_NET_PREF_UMTS_ONLY;
r.xiaoe73f8702024-01-06 01:40:03 -0800430 break;
431 case QSER_NW_MODE_CDMA:
r.xiaofca7c472024-04-24 01:00:23 -0700432 //mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_UMTS_PREF;
r.xiaoe73f8702024-01-06 01:40:03 -0800433 break;
434 case QSER_NW_MODE_EVDO:
r.xiaofca7c472024-04-24 01:00:23 -0700435 //mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_UMTS_PREF;
r.xiaoe73f8702024-01-06 01:40:03 -0800436 break;
437 case QSER_NW_MODE_LTE:
r.xiaofca7c472024-04-24 01:00:23 -0700438 mbtk_net_pre = MBTK_NET_PREF_LTE_ONLY;
r.xiaoe73f8702024-01-06 01:40:03 -0800439 break;
440 case QSER_NW_MODE_TDSCDMA:
r.xiaofca7c472024-04-24 01:00:23 -0700441 //mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_UMTS_PREF;
r.xiaoe73f8702024-01-06 01:40:03 -0800442 break;
443 default:
444 mbtk_net_pre = 0xFF;
445 break;
446 }
447 }
448 return mbtk_net_pre;
449}
b.liu5fa9e772023-11-23 18:00:55 +0800450
451int qser_nw_client_init(nw_client_handle_type *ph_nw)
452{
r.xiaoe73f8702024-01-06 01:40:03 -0800453 //UNUSED(ph_nw);
b.liu5fa9e772023-11-23 18:00:55 +0800454
r.xiaoe73f8702024-01-06 01:40:03 -0800455 if(lynq_nw_info_handle == NULL)
456 {
457 lynq_nw_info_handle = mbtk_info_handle_get();
458 if(lynq_nw_info_handle)
459 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800460 LOGI("creat lynq_nw_info_handle is success");
r.xiaoe73f8702024-01-06 01:40:03 -0800461 *ph_nw = lynq_nw_info_handle->client_fd;
462 g_nw_val = lynq_nw_info_handle->client_fd;
463 }
464 else
465 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800466 LOGE("creat lynq_nw_info_handle is fail");
r.xiaoe73f8702024-01-06 01:40:03 -0800467 return -1;
468 }
469 }
470
b.liu5fa9e772023-11-23 18:00:55 +0800471 return 0;
472}
473
474int qser_nw_client_deinit(nw_client_handle_type h_nw)
475{
r.xiaoe73f8702024-01-06 01:40:03 -0800476 //UNUSED(h_nw);
477 if (h_nw != g_nw_val || g_nw_val == -1)
478 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800479 LOGE("handle NULL");
r.xiaoe73f8702024-01-06 01:40:03 -0800480 return -1;
481 }
482
r.xiaofca7c472024-04-24 01:00:23 -0700483 mbtk_signal_state_change_cb_reg(lynq_nw_info_handle, NULL);
484
r.xiaoe73f8702024-01-06 01:40:03 -0800485 if(lynq_nw_info_handle)
486 {
487 mbtk_info_handle_free(&lynq_nw_info_handle);
488 }
489 else
490 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800491 LOGE("deinit lynq_nw_info_handle is fail");
r.xiaoe73f8702024-01-06 01:40:03 -0800492 return -1;
493 }
b.liu5fa9e772023-11-23 18:00:55 +0800494
495 return 0;
496}
497
498int qser_nw_set_config(nw_client_handle_type h_nw,QSER_NW_CONFIG_INFO_T *pt_info)
499{
r.xiaoe73f8702024-01-06 01:40:03 -0800500 //UNUSED(h_nw);
501 //UNUSED(pt_info);
502 if (h_nw != g_nw_val || g_nw_val == -1)
503 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800504 LOGE("handle NULL");
r.xiaoe73f8702024-01-06 01:40:03 -0800505 return -1;
506 }
507
508 if(lynq_nw_info_handle == NULL)
509 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800510 LOGE("lynq_nw_info_handle == NULL.");
r.xiaoe73f8702024-01-06 01:40:03 -0800511 return -1;
512 }
513
514 if(pt_info == NULL)
515 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800516 LOGE("pt_info == NULL.");
r.xiaoe73f8702024-01-06 01:40:03 -0800517 return -1;
518 }
519
520 roaming_pref = pt_info->roaming_pref;
521
522 mbtk_band_info_t band;
523 memset(&band, 0, sizeof(mbtk_band_info_t));
524 tmp_mode = pt_info->preferred_nw_mode;//临时保存一下原本的mode
525
526 //printf("tmp_mode = [%llu]",tmp_mode);
527 band.net_pref = lynq_net_pre_change(FALSE, pt_info->preferred_nw_mode);
r.xiaod9dd06e2024-02-02 04:17:52 -0800528 LOGI("band.net_pref = [%d] ",band.net_pref);
r.xiaoe73f8702024-01-06 01:40:03 -0800529
530 if(band.net_pref == 0xFF)
531 {
532 LOGE("lynq_net_pre_change() fail.");
533 return -1;
534 }
535
536 if(mbtk_current_band_set(lynq_nw_info_handle, &band))
537 {
538 return -1;
539 }
b.liu5fa9e772023-11-23 18:00:55 +0800540
541 return 0;
542}
543
544int qser_nw_get_operator_name(nw_client_handle_type h_nw, QSER_NW_OPERATOR_NAME_INFO_T *pt_info)
545{
r.xiaoe73f8702024-01-06 01:40:03 -0800546 //UNUSED(h_nw);
547 //UNUSED(pt_info);
548 if (h_nw != g_nw_val || g_nw_val == -1)
549 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800550 LOGE("handle NULL");
r.xiaoe73f8702024-01-06 01:40:03 -0800551 return -1;
552 }
b.liu5fa9e772023-11-23 18:00:55 +0800553
r.xiaoe73f8702024-01-06 01:40:03 -0800554 if(lynq_nw_info_handle == NULL)
555 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800556 LOGE("lynq_nw_info_handle == NULL.");
r.xiaoe73f8702024-01-06 01:40:03 -0800557 return -1;
558 }
559
560 if(pt_info == NULL)
561 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800562 LOGE("pt_info == NULL.");
r.xiaoe73f8702024-01-06 01:40:03 -0800563 return -1;
564 }
565
566 char OperatorFN[128];
567 char OperatorSH[128];
568 char MccMnc[128];
569 mbtk_net_info_t net;
570 if(!mbtk_net_sel_mode_get(lynq_nw_info_handle, &net) && net.plmn > 0)
571 {
572 // printf("Net : %d, %d, %d\n", net.net_sel_mode, net.net_type, net.plmn);
573 int i = 0;
574 while(i < ARRAY_SIZE(lynq_operator_mcc_mnc))
575 {
576 if(lynq_operator_mcc_mnc[i].lynq_mcc_mnc == net.plmn)
577 break;
578 i++;
579 }
580
581 if(i == ARRAY_SIZE(lynq_operator_mcc_mnc)) // No found mcc&mnc
582 {
583 strcpy(OperatorFN, "UNKNOWN");
584 strcpy(OperatorSH, "UNKNOWN");
585 sprintf(MccMnc, "%d", net.plmn);
586 }
587 else
588 {
589 strcpy(OperatorFN, lynq_operator_mcc_mnc[i].lynq_operator_l);
590 strcpy(OperatorSH, lynq_operator_mcc_mnc[i].lynq_operator_s);
591 sprintf(MccMnc, "%d", lynq_operator_mcc_mnc[i].lynq_mcc_mnc);
592 }
593 memset(pt_info->long_eons,0,128);
594 memcpy(pt_info->long_eons,lynq_operator_mcc_mnc[i].lynq_operator_l,strlen(lynq_operator_mcc_mnc[i].lynq_operator_l));
595 memset(pt_info->short_eons,0,128);
596 memcpy(pt_info->short_eons,lynq_operator_mcc_mnc[i].lynq_operator_s,strlen(lynq_operator_mcc_mnc[i].lynq_operator_s));
597 memset(pt_info->mcc,0,4);
598 memset(pt_info->mnc,0,4);
599 sprintf(pt_info->mcc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)/100);
600 sprintf(pt_info->mnc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)%100);
601 //pt_info->act;
602 return 0;
603 }
604
605 return -1;
b.liu5fa9e772023-11-23 18:00:55 +0800606}
607
608int qser_nw_get_reg_status(nw_client_handle_type h_nw, QSER_NW_REG_STATUS_INFO_T *pt_info)
609{
r.xiaoe73f8702024-01-06 01:40:03 -0800610 //UNUSED(h_nw);
611 //UNUSED(pt_info);
612 if (h_nw != g_nw_val || g_nw_val == -1)
613 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800614 LOGE("handle NULL");
r.xiaoe73f8702024-01-06 01:40:03 -0800615 return -1;
616 }
617
618 if(lynq_nw_info_handle == NULL)
619 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800620 LOGE("lynq_nw_info_handle == NULL.");
r.xiaoe73f8702024-01-06 01:40:03 -0800621 return -1;
622 }
623
624 if(pt_info == NULL)
625 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800626 LOGE("pt_info == NULL.");
r.xiaoe73f8702024-01-06 01:40:03 -0800627 return -1;
628 }
629
630 /*VOICE/DATA/IMS*/
631 mbtk_net_reg_info_t reg;
632 int err = mbtk_net_reg_get(lynq_nw_info_handle, &reg);
633 if(err)
634 {
635 LOGE("mbtk_net_reg_get fail.");
636 return -1;
637 }
638 else
639 {
640 memset(pt_info, 0x0, sizeof(QSER_NW_REG_STATUS_INFO_T));
641
642
643 char OperatorFN[128];
644 char OperatorSH[128];
645 char MccMnc[128];
646 mbtk_net_info_t net;
647 if(!mbtk_net_sel_mode_get(lynq_nw_info_handle, &net) && net.plmn > 0)
648 {
649 // printf("Net : %d, %d, %d\n", net.net_sel_mode, net.net_type, net.plmn);
650 int i = 0;
651 while(i < ARRAY_SIZE(lynq_operator_mcc_mnc))
652 {
653 if(lynq_operator_mcc_mnc[i].lynq_mcc_mnc == net.plmn)
654 break;
655 i++;
656 }
657
658 if(i == ARRAY_SIZE(lynq_operator_mcc_mnc)) // No found mcc&mnc
659 {
660 strcpy(OperatorFN, "UNKNOWN");
661 strcpy(OperatorSH, "UNKNOWN");
662 sprintf(MccMnc, "%d", net.plmn);
663 }
664 else
665 {
666 sprintf(MccMnc, "%d", lynq_operator_mcc_mnc[i].lynq_mcc_mnc);
667 }
668 sprintf(pt_info->data_registration_details_3gpp.mcc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)/100);
669 sprintf(pt_info->data_registration_details_3gpp.mnc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)%100);
670 sprintf(pt_info->voice_registration_details_3gpp.mcc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)/100);
671 sprintf(pt_info->voice_registration_details_3gpp.mnc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)%100);
672 //pt_info->act;
673 }
674
675 //暂时未知是否其他也被使用,现根据ql模块的传输情况,
676 //只配置3gpp,涉及call,data状态没有对应的匹配的就没有赋值
677
r.xiaofca7c472024-04-24 01:00:23 -0700678 pt_info->voice_registration_valid = TRUE;
679 pt_info->voice_registration.deny_reason = 0;
680 pt_info->voice_registration.roaming = 0;
681 pt_info->voice_registration.tech_domain = 0;
r.xiaoe73f8702024-01-06 01:40:03 -0800682
r.xiaofca7c472024-04-24 01:00:23 -0700683
684 pt_info->data_registration_valid = TRUE;
685 pt_info->data_registration.deny_reason = 0;
686 pt_info->data_registration.roaming = 0;
687 pt_info->data_registration.tech_domain = 0;
688
689 if (reg.call_state == 1 || reg.call_state == 5)
690 {
691 pt_info->voice_registration.registration_state = E_QSER_NW_SERVICE_FULL;
692 }
693 else if (reg.call_state == 0 || reg.call_state == 2 || reg.call_state == 3 || reg.call_state == 4)
694 {
695 pt_info->voice_registration.registration_state = E_QSER_NW_SERVICE_NONE;
696 }
697
698 if (reg.data_state == 1 || reg.data_state == 5)
699 {
700 pt_info->data_registration.registration_state = E_QSER_NW_SERVICE_FULL;
701 }
702 else if (reg.data_state == 0 || reg.data_state == 2 || reg.data_state == 3 || reg.data_state == 4)
703 {
704 pt_info->data_registration.registration_state = E_QSER_NW_SERVICE_NONE;
705 }
706
r.xiaoe73f8702024-01-06 01:40:03 -0800707
708 pt_info->voice_registration_details_3gpp_valid = TRUE;
709 pt_info->voice_registration_details_3gpp.lac = reg.lac;
710 pt_info->voice_registration_details_3gpp.cid = reg.ci;
711 //补位填0 or 1
712 pt_info->voice_registration_details_3gpp.tech_domain = 1;
713 pt_info->voice_registration_details_3gpp.roaming = 0;
714 pt_info->voice_registration_details_3gpp.forbidden = 0;
715 pt_info->voice_registration_details_3gpp.psc = 0;
716 pt_info->voice_registration_details_3gpp.tac = 0;
717
718 pt_info->data_registration_details_3gpp_valid = TRUE;
719 pt_info->data_registration_details_3gpp.lac = reg.lac;
720 pt_info->data_registration_details_3gpp.cid = reg.ci;
721 //补位填0 or 1
722 pt_info->data_registration_details_3gpp.tech_domain = 1;
723 pt_info->data_registration_details_3gpp.roaming = 0;
724 pt_info->data_registration_details_3gpp.forbidden = 0;
725 pt_info->data_registration_details_3gpp.psc = 0;
726 pt_info->data_registration_details_3gpp.tac = 0;
727
728
729 pt_info->voice_registration_details_3gpp2_valid = FALSE;
730 //pt_info->voice_registration_details_3gpp2
731
732 pt_info->data_registration_details_3gpp2_valid = FALSE;
733 //pt_info->data_registration_details_3gpp2
734
735
736 switch(reg.type)
737 {
738 case MBTK_RADIO_TECH_GSM:
739 case MBTK_RADIO_TECH_GSM_COMPACT:
740 case MBTK_RADIO_TECH_GSM_EGPRS:
741 case MBTK_RADIO_TECH_UTRAN_HSPA:
742 {
743 pt_info->data_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_GPRS;
744 pt_info->voice_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_GSM;
r.xiaofca7c472024-04-24 01:00:23 -0700745 pt_info->data_registration.radio_tech = E_QSER_NW_RADIO_TECH_GPRS;
746 pt_info->voice_registration.radio_tech = E_QSER_NW_RADIO_TECH_GSM;
r.xiaoe73f8702024-01-06 01:40:03 -0800747 break;
748 }
749 case MBTK_RADIO_TECH_UTRAN:
750 case MBTK_RADIO_TECH_UTRAN_HSDPA:
751 case MBTK_RADIO_TECH_UTRAN_HSUPA:
752 case MBTK_RADIO_TECH_UTRAN_HSDPA_HSUPA:
753 {
754 pt_info->data_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_UMTS;
755 pt_info->voice_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_UMTS;
r.xiaofca7c472024-04-24 01:00:23 -0700756 pt_info->data_registration.radio_tech = E_QSER_NW_RADIO_TECH_UMTS;
757 pt_info->voice_registration.radio_tech = E_QSER_NW_RADIO_TECH_UMTS;
r.xiaoe73f8702024-01-06 01:40:03 -0800758 break;
759 }
760 case MBTK_RADIO_TECH_E_UTRAN:
761 {
762 pt_info->data_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_LTE;
763 pt_info->voice_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_LTE;
r.xiaofca7c472024-04-24 01:00:23 -0700764 pt_info->data_registration.radio_tech = E_QSER_NW_RADIO_TECH_LTE;
765 pt_info->voice_registration.radio_tech = E_QSER_NW_RADIO_TECH_LTE;
r.xiaoe73f8702024-01-06 01:40:03 -0800766 break;
767 }
768 default:
769 {
770 pt_info->data_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_NONE;
771 pt_info->voice_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_NONE;
r.xiaofca7c472024-04-24 01:00:23 -0700772 pt_info->data_registration.radio_tech = E_QSER_NW_RADIO_TECH_NONE;
773 pt_info->voice_registration.radio_tech = E_QSER_NW_RADIO_TECH_NONE;
774 pt_info->data_registration.registration_state = E_QSER_NW_SERVICE_NONE;
775 pt_info->voice_registration.registration_state = E_QSER_NW_SERVICE_NONE;
r.xiaoe73f8702024-01-06 01:40:03 -0800776 break;
777 }
778 }
779 }
b.liu5fa9e772023-11-23 18:00:55 +0800780
781 return 0;
782}
783
784int qser_nw_get_signal_strength(nw_client_handle_type h_nw,QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info)
785{
r.xiaoe73f8702024-01-06 01:40:03 -0800786 //UNUSED(h_nw);
787 //UNUSED(pt_info);
788 if (h_nw != g_nw_val || g_nw_val == -1)
789 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800790 LOGE("handle NULL");
r.xiaoe73f8702024-01-06 01:40:03 -0800791 return -1;
792 }
793
794 if(lynq_nw_info_handle == NULL)
795 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800796 LOGE("lynq_nw_info_handle == NULL.");
r.xiaoe73f8702024-01-06 01:40:03 -0800797 return -1;
798 }
799
800 if(pt_info == NULL)
801 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800802 LOGE("pt_info == NULL.");
r.xiaoe73f8702024-01-06 01:40:03 -0800803 return -1;
804 }
805
806 int ret;
807 mbtk_signal_info_t signal;
808 ret = mbtk_net_signal_get(lynq_nw_info_handle, &signal);
809 if(ret != 0) {
810 LOGE("mbtk_net_signal_get fail.");
811 return -1;
812 }
813 else
814 {
815 memset(pt_info, 0x0, sizeof(QSER_NW_SIGNAL_STRENGTH_INFO_T));
r.xiaofca7c472024-04-24 01:00:23 -0700816
r.xiaoe73f8702024-01-06 01:40:03 -0800817 if(signal.type == MBTK_RADIO_TECH_GSM || signal.type == MBTK_RADIO_TECH_GSM_COMPACT || \
818 signal.type == MBTK_RADIO_TECH_GSM_EGPRS) //GSM
819 {
820 pt_info->gsm_sig_info_valid = TRUE;
821 pt_info->gsm_sig_info.rssi = signal.rssi;
822 }
823 else if(signal.type == MBTK_RADIO_TECH_E_UTRAN) //LTE
824 {
825 pt_info->lte_sig_info_valid = TRUE;
826 pt_info->lte_sig_info.rsrp = signal.rsrp;
827 pt_info->lte_sig_info.rsrq = signal.rsrq;
r.xiaofca7c472024-04-24 01:00:23 -0700828 pt_info->lte_sig_info.snr = 0x7FFFFFFFF; //->MBTK接口无该参数(对应参数为rssnr,该值INT_MAX:0x7FFFFFFFF表示无效值),写死值为0x7FFFFFFFF
829 pt_info->lte_sig_info.rssi = -125;
r.xiaoe73f8702024-01-06 01:40:03 -0800830 }
831 else if (signal.type == MBTK_RADIO_TECH_UTRAN || signal.type == MBTK_RADIO_TECH_UTRAN_HSDPA || \
832 signal.type == MBTK_RADIO_TECH_UTRAN_HSUPA || signal.type == MBTK_RADIO_TECH_UTRAN_HSDPA_HSUPA || \
833 signal.type == MBTK_RADIO_TECH_UTRAN_HSPA )//WCDMA
834 {
835 pt_info->wcdma_sig_info_valid = TRUE;
r.xiaofca7c472024-04-24 01:00:23 -0700836 pt_info->wcdma_sig_info.rssi = signal.rscp;
837 pt_info->wcdma_sig_info.ecio = signal.ecno;
r.xiaoe73f8702024-01-06 01:40:03 -0800838 }
839 else
840 {
841 return -1;
842 }
r.xiaofca7c472024-04-24 01:00:23 -0700843 /*
844 pt_info->gsm_sig_info_valid = 1//signal.gw_sig_valid;
845 pt_info->gsm_sig_info.rssi = signal.rssi;//signal.rssi-110;
846 pt_info->wcdma_sig_info_valid = 1//signal.wcdma_sig_valid;
847 pt_info->wcdma_sig_info.rssi = signal.rscp;//signal.wcdma_signalstrength-110;
848 pt_info->wcdma_sig_info.ecio = //signal.ecno/5;
849 pt_info->tdscdma_sig_info_valid = 0;
850 pt_info->lte_sig_info_valid = 1//signal.lte_sig_valid;
851 pt_info->lte_sig_info.rssi = -125;//signal.lte_signalstrength-110;
852 pt_info->lte_sig_info.rsrp = signal.rsrp;//signal.rsrp*(-1);
853 pt_info->lte_sig_info.rsrq = signal.rsrq;//signal.rsrq*(-1);
854 pt_info->lte_sig_info.snr = 0x7FFFFFFFF;//signal.rssnr;
855 pt_info->cdma_sig_info_valid = 0;
856 pt_info->hdr_sig_info_valid = 0;
857 //mbtk 无nr
858 pt_info->nr_sig_info_valid = 0//signal.nr_sig_valid;
859 pt_info->nr_sig_info.ssRsrp = 0//signal.ssRsrp;
860 pt_info->nr_sig_info.ssRsrq = 0//signal.ssRsrq;
861 pt_info->nr_sig_info.ssSinr = 0//signal.ssSinr;
862 pt_info->nr_sig_info.csiRsrp = 0//signal.csiRsrp;
863 pt_info->nr_sig_info.csiRsrq = 0//signal.csiRsrq;
864 pt_info->nr_sig_info.csiSinr = 0//signal.csiSinr;
865 */
r.xiaoe73f8702024-01-06 01:40:03 -0800866 }
b.liu5fa9e772023-11-23 18:00:55 +0800867
868 return 0;
869}
870
b.liu4e243dc2023-11-27 11:20:00 +0800871int qser_nw_add_rx_msg_handler (nw_client_handle_type h_nw, QSER_NW_RxMsgHandlerFunc_t handlerPtr, void* contextPtr)
b.liu5fa9e772023-11-23 18:00:55 +0800872{
r.xiaoe73f8702024-01-06 01:40:03 -0800873 //UNUSED(h_nw);
874 //UNUSED(handlerPtr);
875 //UNUSED(contextPtr);
876
877 if (h_nw != g_nw_val || g_nw_val == -1)
878 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800879 LOGE("handle NULL");
r.xiaoe73f8702024-01-06 01:40:03 -0800880 return -1;
881 }
882
883 if(lynq_nw_info_handle == NULL)
884 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800885 LOGE("lynq_nw_info_handle == NULL.");
r.xiaoe73f8702024-01-06 01:40:03 -0800886 return -1;
887 }
888
889 lynq_func_cb_handle.handlerPtr = handlerPtr;
890 lynq_func_cb_handle.contextPtr = contextPtr;
891
r.xiaofca7c472024-04-24 01:00:23 -0700892 mbtk_signal_state_change_cb_reg(lynq_nw_info_handle, lynq_signal_state_change_cb);
b.liu5fa9e772023-11-23 18:00:55 +0800893
894 return 0;
895}
896
897int qser_nw_set_oos_config (nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info)
898{
r.xiaocfd7c682024-01-22 03:59:46 -0800899 //UNUSED(h_nw);
900 //UNUSED(pt_info);
901 if (h_nw != g_nw_val || g_nw_val == -1)
902 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800903 LOGE("handle NULL");
r.xiaocfd7c682024-01-22 03:59:46 -0800904 return -1;
905 }
906
907 if (pt_info == NULL)
908 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800909 LOGE("QSER_NW_OOS_CONFIG_INFO_T NULL");
r.xiaocfd7c682024-01-22 03:59:46 -0800910 return -1;
911 }
912
913 uint32 oosPhase_0, oosPhase_1, oosPhase_2;
914 char tmp_type;
915 mbtk_oos_info oos_info;
916
917 memset(&oos_info, 0x00, sizeof(mbtk_oos_info));
918
919
920 tmp_type = pt_info->type;
921
922 if (tmp_type == QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN)
923 {//如果没有配置对应的值,例如,10,20
924 //oosPhase_2这个位置没有配置,则使用默认值20,既不限制次数的5s进行一次扫描
925 //同理oosPhase_0,oosPhase_1这个位置没有配置,则使用默认值5,10,既限制次数5次的5s,10s进行一次扫描
926 //输入多少配置多少,可以缺省使用默认值
927 if (pt_info->u.full_band_scan_info.t_min < 0 || pt_info->u.full_band_scan_info.t_step < 0 || pt_info->u.full_band_scan_info.t_max < 0)
928 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800929 LOGE("qser_nw_set_oos_config set time < 0 ");
r.xiaocfd7c682024-01-22 03:59:46 -0800930 return -1;
931 }
932 else if ((pt_info->u.full_band_scan_info.t_min > 0 && pt_info->u.full_band_scan_info.t_min <= 255) && pt_info->u.full_band_scan_info.t_step == 0 && pt_info->u.full_band_scan_info.t_max == 0)
933 {
934 oosPhase_0 = pt_info->u.full_band_scan_info.t_min;
935 oos_info.mode = 1;
936 oos_info.oosPhase[0] = oosPhase_0;
937 }
938 else if ((pt_info->u.full_band_scan_info.t_min > 0 && pt_info->u.full_band_scan_info.t_min <= 255) && (pt_info->u.full_band_scan_info.t_step > 0 && pt_info->u.full_band_scan_info.t_step <= 255) && pt_info->u.full_band_scan_info.t_max == 0)
939 {
940 oosPhase_0 = pt_info->u.full_band_scan_info.t_min;
941 oosPhase_1 = pt_info->u.full_band_scan_info.t_step;
942 oos_info.mode = 1;
943 oos_info.oosPhase[0] = oosPhase_0;
944 oos_info.oosPhase[1] = oosPhase_1;
945 }
946 else if ((pt_info->u.full_band_scan_info.t_min > 0 && pt_info->u.full_band_scan_info.t_min <= 255) && (pt_info->u.full_band_scan_info.t_step > 0 && pt_info->u.full_band_scan_info.t_step <= 255) && (pt_info->u.full_band_scan_info.t_max > 0 && pt_info->u.full_band_scan_info.t_max <= 255))
947 {
948 oosPhase_0 = pt_info->u.full_band_scan_info.t_min;
949 oosPhase_1 = pt_info->u.full_band_scan_info.t_step;
950 oosPhase_2 = pt_info->u.full_band_scan_info.t_max;
951 oos_info.mode = 1;
952 oos_info.oosPhase[0] = oosPhase_0;
953 oos_info.oosPhase[1] = oosPhase_1;
954 oos_info.oosPhase[2] = oosPhase_2;
955 }
956 else if (pt_info->u.full_band_scan_info.t_min == 0 && pt_info->u.full_band_scan_info.t_step == 0 && pt_info->u.full_band_scan_info.t_max == 0)
957 {
958 oos_info.mode = 0;
959 }
960 else
961 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800962 LOGE("qser_nw_set_oos_config set Format err");
r.xiaocfd7c682024-01-22 03:59:46 -0800963 return -1;
964 }
965
966 int err = mbtk_oos_set(lynq_nw_info_handle, &oos_info);
967 if (err != 0)
968 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800969 LOGE("qser_nw_set_oos_config mbtk_oos_set err");
r.xiaocfd7c682024-01-22 03:59:46 -0800970 return -1;
971 }
972 }
973 else if (tmp_type == QSER_NW_OOS_CFG_TYPE_FAST_SCAN)
974 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800975 LOGE("Not currently supported");
r.xiaocfd7c682024-01-22 03:59:46 -0800976 return -1;
977 }
978 else
979 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800980 LOGE("type is error");
r.xiaocfd7c682024-01-22 03:59:46 -0800981 return -1;
982 }
b.liu5fa9e772023-11-23 18:00:55 +0800983
984 return 0;
985}
986
987int qser_nw_get_oos_config (nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info)
988{
r.xiaocfd7c682024-01-22 03:59:46 -0800989 //UNUSED(h_nw);
990 //UNUSED(pt_info);
991 if (h_nw != g_nw_val || g_nw_val == -1)
992 {
r.xiaod9dd06e2024-02-02 04:17:52 -0800993 LOGE("handle NULL");
r.xiaocfd7c682024-01-22 03:59:46 -0800994 return -1;
995 }
996
997 mbtk_oos_info oos_info;
998 uint32 oosPhase_0, oosPhase_1, oosPhase_2;
999 char cmd[100] = {0};
1000
1001 memset(&oos_info, 0x00, sizeof(mbtk_oos_info));
1002
1003 int err = mbtk_oos_get(lynq_nw_info_handle, &oos_info);
1004 if (err != 0)
1005 {
r.xiaod9dd06e2024-02-02 04:17:52 -08001006 LOGE("qser_nw_get_oos_config mbtk_oos_get err ");
r.xiaocfd7c682024-01-22 03:59:46 -08001007 return -1;
1008 }
r.xiaoffbe6ce2024-01-22 19:01:01 -08001009/*
r.xiaocfd7c682024-01-22 03:59:46 -08001010 printf("oos_info.mode =[%d] \n",oos_info.mode);
1011 printf("oos_info.1 =[%d] \n",oos_info.oosPhase[0]);
1012 printf("oos_info.2 =[%d] \n",oos_info.oosPhase[1]);
1013 printf("oos_info.3 =[%d] \n",oos_info.oosPhase[2]);
r.xiaoffbe6ce2024-01-22 19:01:01 -08001014*/
r.xiaocfd7c682024-01-22 03:59:46 -08001015 if(oos_info.mode == 0)//关闭状态
1016 {
1017 pt_info->u.full_band_scan_info.t_min = 0;
1018 pt_info->u.full_band_scan_info.t_step = 0;
1019 pt_info->u.full_band_scan_info.t_max = 0;
1020 }
1021 else
1022 {
1023 pt_info->u.full_band_scan_info.t_min = (int)oos_info.oosPhase[0];
1024 pt_info->u.full_band_scan_info.t_step = (int)oos_info.oosPhase[1];
1025 pt_info->u.full_band_scan_info.t_max = (int)oos_info.oosPhase[2];
1026 }
1027 pt_info->type = QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN;
1028
1029
1030 if (pt_info == NULL)
1031 {
r.xiaod9dd06e2024-02-02 04:17:52 -08001032 LOGE("qser_nw_get_oos_config pt_info is null ");
r.xiaocfd7c682024-01-22 03:59:46 -08001033 return -1;
1034 }
b.liu5fa9e772023-11-23 18:00:55 +08001035
1036 return 0;
r.xiaoe73f8702024-01-06 01:40:03 -08001037}
1038
1039int qser_nw_set_rf_mode (nw_client_handle_type h_nw, E_QSER_NW_RF_MODE_TYPE_T rf_mode)
1040{
1041 //UNUSED(h_nw);
1042 //UNUSED(rf_mode);
1043 int ret;
r.xiaocfd7c682024-01-22 03:59:46 -08001044 mbtk_modem_info_t info;
r.xiaoe73f8702024-01-06 01:40:03 -08001045
1046 if (h_nw != g_nw_val || g_nw_val == -1)
1047 {
r.xiaod9dd06e2024-02-02 04:17:52 -08001048 LOGE("handle NULL");
r.xiaoe73f8702024-01-06 01:40:03 -08001049 return -1;
1050 }
1051
1052 if(lynq_nw_info_handle == NULL)
1053 {
r.xiaod9dd06e2024-02-02 04:17:52 -08001054 LOGE("lynq_nw_info_handle == NULL.");
r.xiaoe73f8702024-01-06 01:40:03 -08001055 return -1;
1056 }
1057
r.xiaocfd7c682024-01-22 03:59:46 -08001058/*
r.xiaoe73f8702024-01-06 01:40:03 -08001059 if (rf_mode == 4)
1060 {
1061 printf("Flight Mode no Support Now\n");
1062 return -1;
1063 }
r.xiaocfd7c682024-01-22 03:59:46 -08001064*/
1065 if (rf_mode != 4 && rf_mode != 0 && rf_mode != 1)
1066 {
r.xiaod9dd06e2024-02-02 04:17:52 -08001067 LOGE("mode is error!");
r.xiaocfd7c682024-01-22 03:59:46 -08001068 return -1;
1069 }
r.xiaoe73f8702024-01-06 01:40:03 -08001070
r.xiaocfd7c682024-01-22 03:59:46 -08001071 info.fun = rf_mode;
1072 info.rst = 0;
1073 ret = mbtk_set_modem_fun(lynq_nw_info_handle, &info);
1074
1075 //ret = mbtk_radio_state_set(lynq_nw_info_handle, rf_mode);
r.xiaoe73f8702024-01-06 01:40:03 -08001076 if (ret != 0)
1077 {
1078 LOGE("mbtk_radio_state_set fail.");
1079 return -1;
1080 }
1081 else
1082 {
r.xiaod9dd06e2024-02-02 04:17:52 -08001083 LOGI("qser_nw_set_rf_mode is success\n");
r.xiaoe73f8702024-01-06 01:40:03 -08001084 }
1085
1086 return 0;
1087}
1088
1089int qser_nw_get_rf_mode (nw_client_handle_type h_nw, E_QSER_NW_RF_MODE_TYPE_T *rf_mode)
1090{
1091 //UNUSED(h_nw);
1092 //UNUSED(rf_mode);
1093 int ret;
1094 int tmp_rf;
1095
1096 if (h_nw != g_nw_val || g_nw_val == -1)
1097 {
r.xiaod9dd06e2024-02-02 04:17:52 -08001098 LOGE("handle NULL");
r.xiaoe73f8702024-01-06 01:40:03 -08001099 return -1;
1100 }
1101
1102 if(lynq_nw_info_handle == NULL)
1103 {
r.xiaod9dd06e2024-02-02 04:17:52 -08001104 LOGE("lynq_nw_info_handle == NULL.");
r.xiaoe73f8702024-01-06 01:40:03 -08001105 return -1;
1106 }
1107
r.xiaocfd7c682024-01-22 03:59:46 -08001108 ret = mbtk_get_modem_fun(lynq_nw_info_handle, &tmp_rf);
1109
1110 //ret = mbtk_radio_state_get(lynq_nw_info_handle, &tmp_rf);
r.xiaoe73f8702024-01-06 01:40:03 -08001111 if (ret != 0)
1112 {
1113 LOGE("mbtk_radio_state_get fail.");
1114 return -1;
1115 }
1116 else
1117 {
r.xiaod9dd06e2024-02-02 04:17:52 -08001118 LOGI("qser_nw_get_rf_mode is success\n");
r.xiaoe73f8702024-01-06 01:40:03 -08001119 *rf_mode = tmp_rf;
1120 }
1121
1122
1123 return 0;
1124}
1125
r.xiaoba8483c2024-04-14 18:53:10 -07001126int qser_nw_set_ims_enable(nw_client_handle_type h_nw, E_QSER_NW_IMS_MODE_TYPE_T ims_mode)
1127{
1128 int ret = 0;
1129
1130 if (h_nw != g_nw_val || g_nw_val == -1)
1131 {
1132 LOGE("handle NULL");
1133 return -1;
1134 }
1135
1136 if(lynq_nw_info_handle == NULL)
1137 {
1138 LOGE("lynq_nw_info_handle == NULL.");
1139 return -1;
1140 }
1141
1142 ret = mbtk_net_ims_set(lynq_nw_info_handle, ims_mode);
1143 if (ret != 0)
1144 {
1145 LOGE("mbtk_net_ims_set fail.");
1146 return -1;
1147 }
1148
1149 return 0;
1150}
1151
1152int qser_nw_get_ims_reg_status(nw_client_handle_type h_nw, QSER_NW_IMS_REG_STATUS_INFO_T *pt_info)
1153{
1154 int ret = 0;
1155 int tmp_pt;
1156
1157 if (h_nw != g_nw_val || g_nw_val == -1)
1158 {
1159 LOGE("handle NULL");
1160 return -1;
1161 }
1162
1163 if(lynq_nw_info_handle == NULL)
1164 {
1165 LOGE("lynq_nw_info_handle == NULL.");
1166 return -1;
1167 }
1168
1169 ret = mbtk_net_ims_get(lynq_nw_info_handle, &tmp_pt);
1170 if (ret != 0)
1171 {
1172 LOGE("mbtk_net_ims_get fail.");
1173 return -1;
1174 }
1175
1176 if (tmp_pt == 0)
1177 pt_info->registration_state = E_QSER_NW_IMS_SERVICE_NONE;
1178 else if (tmp_pt == 1)
1179 pt_info->registration_state = E_QSER_NW_IMS_SERVICE_REGISTERED;
1180 else
1181 {
1182 LOGE("mbtk_net_ims_get value error fail.");
1183 return -1;
1184 }
1185
1186 return 0;
1187}
1188
r.xiaoe73f8702024-01-06 01:40:03 -08001189