blob: 777ea467c5b1280f6b88f7842c4b5b8f11a05c53 [file] [log] [blame]
b.liu4e243dc2023-11-27 11:20:00 +08001#include "lynq_qser_sim.h"
2#include "mbtk_type.h"
wangyouqiang3e3bf922024-01-05 15:38:34 +08003#include "mbtk_info_api.h"
b.liu5fa9e772023-11-23 18:00:55 +08004
wangyouqiang3e3bf922024-01-05 15:38:34 +08005/****************************DEFINE***************************************/
6#define QSER_RESULT_SUCCESS 0
7#define QSER_RESULT_FAIL -1
8/****************************DEFINE***************************************/
9
10/****************************VARIABLE***************************************/
11extern mbtk_info_handle_t* qser_info_handle;
12extern int qser_info_handle_num;
13static bool inited = FALSE;
14static uint qser_h_sim = 0x5F6F7F8F;
15/****************************VARIABLE***************************************/
16
17/******************************FUNC*****************************************/
18/******************************FUNC*****************************************/
19
20/****************************API***************************************/
b.liu5fa9e772023-11-23 18:00:55 +080021int qser_sim_client_init(sim_client_handle_type *ph_sim)
22{
wangyouqiang3e3bf922024-01-05 15:38:34 +080023 //UNUSED(ph_sim);
24 if(ph_sim == NULL)
25 {
26 LOGE("[qser_data_call] ph_sim is NULL.");
27 return QSER_RESULT_FAIL;
28 }
b.liu5fa9e772023-11-23 18:00:55 +080029
wangyouqiang3e3bf922024-01-05 15:38:34 +080030 if(!inited && qser_info_handle == NULL)
31 {
32 qser_info_handle = mbtk_info_handle_get();
33 if(qser_info_handle)
34 {
35 qser_info_handle_num++;
36 inited = TRUE;
37 //mbtk_pdp_state_change_cb_reg(qser_info_handle, qser_wan_net_state_change_cb);
38 }
39 else
40 {
41 LOGE("[qser_data_call] mbtk_info_handle_get() fail.");
42 return QSER_RESULT_FAIL;
43 }
44 }
45 else
46 {
47 if(!inited)
48 {
49 qser_info_handle_num++;
50 inited = TRUE;
51 //mbtk_pdp_state_change_cb_reg(qser_info_handle, qser_wan_net_state_change_cb);
52 }
53 }
54 *ph_sim = qser_h_sim;
55
56 LOGE("[qser_data_call] mbtk_info_handle_get() success.");
57 return QSER_RESULT_SUCCESS;
b.liu5fa9e772023-11-23 18:00:55 +080058}
59
60int qser_sim_getimsi(sim_client_handle_type h_sim, QSER_SIM_APP_ID_INFO_T *pt_info,char *imsi,size_t imsiLen)
61{
wangyouqiang3e3bf922024-01-05 15:38:34 +080062 //UNUSED(h_sim);
b.liu5fa9e772023-11-23 18:00:55 +080063 UNUSED(pt_info);
wangyouqiang3e3bf922024-01-05 15:38:34 +080064 //UNUSED(imsi);
65 //UNUSED(imsiLen);
b.liu5fa9e772023-11-23 18:00:55 +080066
wangyouqiang3e3bf922024-01-05 15:38:34 +080067 if(h_sim != qser_h_sim)
68 {
69 LOGE("[qser_data_call] h_sim is error.");
70 return QSER_RESULT_FAIL;
71 }
72
73 if(qser_info_handle == NULL)
74 {
75 LOGE("[qser_data_call] handle is NULL.");
76 return QSER_RESULT_FAIL;
77 }
78
79 if(imsi == NULL || imsiLen < 15)
80 {
81 LOGE("[qser_data_call] imsi is NULL.");
82 return QSER_RESULT_FAIL;
83 }
84
85 memset(imsi,0,imsiLen);
86 int err = mbtk_imsi_get(qser_info_handle, imsi);
87 if(err)
88 {
89 LOGE("[qser_data_call] mbtk_imsi_get is fail.");
90 return QSER_RESULT_FAIL;
91 }
92
93 if(strlen(imsi) > imsiLen)
94 {
95 LOGE("[qser_data_call] get datalength out of range.");
96 return QSER_RESULT_FAIL;
97 }
98
99 return QSER_RESULT_SUCCESS;
b.liu5fa9e772023-11-23 18:00:55 +0800100}
101
102int qser_sim_geticcid(sim_client_handle_type h_sim,QSER_SIM_SLOT_ID_TYPE_T simId,char *iccid, size_t iccidLen)
103{
wangyouqiang3e3bf922024-01-05 15:38:34 +0800104 //UNUSED(h_sim);
b.liu5fa9e772023-11-23 18:00:55 +0800105 UNUSED(simId);
wangyouqiang3e3bf922024-01-05 15:38:34 +0800106 //UNUSED(iccid);
107 //UNUSED(iccidLen);
b.liu5fa9e772023-11-23 18:00:55 +0800108
wangyouqiang3e3bf922024-01-05 15:38:34 +0800109 if(h_sim != qser_h_sim)
110 {
111 LOGE("[qser_data_call] h_sim is error.");
112 return QSER_RESULT_FAIL;
113 }
114
115 if(qser_info_handle == NULL)
116 {
117 LOGE("[qser_data_call] handle is NULL.");
118 return QSER_RESULT_FAIL;
119 }
120
r.xiao2ad43d12024-03-23 00:03:29 -0700121 if(iccid == NULL || iccidLen < QSER_SIM_ICCID_LEN_MAX)
wangyouqiang3e3bf922024-01-05 15:38:34 +0800122 {
123 LOGE("[qser_data_call] iccid is NULL.");
124 return QSER_RESULT_FAIL;
125 }
126
127 memset(iccid, 0, iccidLen);
128 int err = mbtk_iccid_get(qser_info_handle, iccid);
129 if(err)
130 {
131 LOGE("[qser_data_call] mbtk_iccid_get is fail.");
132 return QSER_RESULT_FAIL;
133 }
134
135 if(strlen(iccid) > iccidLen)
136 {
137 LOGE("[qser_data_call] get datalength out of range.");
138 return QSER_RESULT_FAIL;
139 }
140
141 return QSER_RESULT_SUCCESS;
b.liu5fa9e772023-11-23 18:00:55 +0800142}
143
144int qser_sim_getphonenumber(sim_client_handle_type h_sim,QSER_SIM_APP_ID_INFO_T *pt_info, char*phone_num, size_t phoneLen)
145{
wangyouqiang3e3bf922024-01-05 15:38:34 +0800146 //UNUSED(h_sim);
b.liu5fa9e772023-11-23 18:00:55 +0800147 UNUSED(pt_info);
wangyouqiang3e3bf922024-01-05 15:38:34 +0800148 //UNUSED(phone_num);
149 //UNUSED(phoneLen);
b.liu5fa9e772023-11-23 18:00:55 +0800150
wangyouqiang3e3bf922024-01-05 15:38:34 +0800151 if(h_sim != qser_h_sim)
152 {
153 LOGE("[qser_data_call] h_sim is error.");
154 return QSER_RESULT_FAIL;
155 }
156
157 if(qser_info_handle == NULL)
158 {
159 LOGE("[qser_data_call] handle is NULL.");
160 return QSER_RESULT_FAIL;
161 }
162
163 if(phone_num == NULL || phoneLen < 11)
164 {
165 LOGE("[qser_data_call] phone_num is NULL.");
166 return QSER_RESULT_FAIL;
167 }
168
169 memset(phone_num, 0, phoneLen);
170 int err = mbtk_phone_number_get(qser_info_handle, phone_num);
171 if(err)
172 {
173 LOGE("[qser_data_call] mbtk_phone_number_get is fail.");
174 return QSER_RESULT_FAIL;
175 }
176
177 if(strlen(phone_num) > phoneLen)
178 {
179 LOGE("[qser_data_call] get datalength out of range.");
180 return QSER_RESULT_FAIL;
181 }
182
183 return QSER_RESULT_SUCCESS;
b.liu5fa9e772023-11-23 18:00:55 +0800184}
185
186int qser_sim_verifypin(sim_client_handle_type h_sim,QSER_SIM_VERIFY_PIN_INFO_T *pt_info)
187{
wangyouqiang3e3bf922024-01-05 15:38:34 +0800188 //UNUSED(h_sim);
189 //UNUSED(pt_info);
b.liu5fa9e772023-11-23 18:00:55 +0800190
wangyouqiang3e3bf922024-01-05 15:38:34 +0800191 if(h_sim != qser_h_sim)
192 {
193 LOGE("[qser_data_call] h_sim is error.");
194 return QSER_RESULT_FAIL;
195 }
196
197 if(qser_info_handle == NULL)
198 {
199 LOGE("[qser_data_call] handle is NULL.");
200 return QSER_RESULT_FAIL;
201 }
202
203 if(pt_info == NULL)
204 {
205 LOGE("[qser_data_call] pt_info is NULL.");
206 return QSER_RESULT_FAIL;
207 }
208
209 int err = mbtk_verify_pin(qser_info_handle, pt_info->pin_value);
210 if(err)
211 {
212 LOGE("[qser_data_call] mbtk_verify_pin is fail.");
213 return QSER_RESULT_FAIL;
214 }
215
216 return QSER_RESULT_SUCCESS;
b.liu5fa9e772023-11-23 18:00:55 +0800217}
218
219int qser_sim_changepin(sim_client_handle_type h_sim,QSER_SIM_CHANGE_PIN_INFO_T *pt_info)
220{
wangyouqiang3e3bf922024-01-05 15:38:34 +0800221 //UNUSED(h_sim);
222 //UNUSED(pt_info);
b.liu5fa9e772023-11-23 18:00:55 +0800223
wangyouqiang3e3bf922024-01-05 15:38:34 +0800224 if(h_sim != qser_h_sim)
225 {
226 LOGE("[qser_data_call] h_sim is error.");
227 return QSER_RESULT_FAIL;
228 }
229
230 if(qser_info_handle == NULL)
231 {
232 LOGE("[qser_data_call] handle is NULL.");
233 return QSER_RESULT_FAIL;
234 }
235
236 if(pt_info == NULL)
237 {
238 LOGE("[qser_data_call] pt_info is NULL.");
239 return QSER_RESULT_FAIL;
240 }
241
242 mbtk_change_pin_info pin_info = {0};
243 memcpy(pin_info.old_pin_value, pt_info->old_pin_value, pt_info->old_pin_value_len);
244 memcpy(pin_info.new_pin_value, pt_info->new_pin_value, pt_info->new_pin_value_len);
245 int err = mbtk_change_pin(qser_info_handle, &pin_info);
246 if(err)
247 {
248 LOGE("[qser_data_call] mbtk_change_pin is fail.");
249 return QSER_RESULT_FAIL;
250 }
251
252 return QSER_RESULT_SUCCESS;
b.liu5fa9e772023-11-23 18:00:55 +0800253}
254
255int qser_sim_unblockpin(sim_client_handle_type h_sim, QSER_SIM_UNBLOCK_PIN_INFO_T *pt_info)
256{
wangyouqiang3e3bf922024-01-05 15:38:34 +0800257 //UNUSED(h_sim);
258 //UNUSED(pt_info);
b.liu5fa9e772023-11-23 18:00:55 +0800259
wangyouqiang3e3bf922024-01-05 15:38:34 +0800260 if(h_sim != qser_h_sim)
261 {
262 LOGE("[qser_data_call] h_sim is error.");
263 return QSER_RESULT_FAIL;
264 }
265
266 if(qser_info_handle == NULL)
267 {
268 LOGE("[qser_data_call] handle is NULL.");
269 return QSER_RESULT_FAIL;
270 }
271
272 if(pt_info == NULL)
273 {
274 LOGE("[qser_data_call] pt_info is NULL.");
275 return QSER_RESULT_FAIL;
276 }
277
278 mbtk_unlock_pin_info puk_pin_info = {0};
279 memcpy(puk_pin_info.pin_value, pt_info->new_pin_value, pt_info->new_pin_value_len);
280 memcpy(puk_pin_info.puk_value, pt_info->puk_value, pt_info->puk_value_len);
281 int err = mbtk_unlock_pin(qser_info_handle, &puk_pin_info);
282 if(err)
283 {
284 LOGE("[qser_data_call] mbtk_unlock_pin is fail.");
285 return QSER_RESULT_FAIL;
286 }
287
288 return QSER_RESULT_SUCCESS;
b.liu5fa9e772023-11-23 18:00:55 +0800289}
290
291int qser_sim_enablepin(sim_client_handle_type h_sim, QSER_SIM_ENABLE_PIN_INFO_T *pt_info)
292{
wangyouqiang3e3bf922024-01-05 15:38:34 +0800293 //UNUSED(h_sim);
294 //UNUSED(pt_info);
b.liu5fa9e772023-11-23 18:00:55 +0800295
wangyouqiang3e3bf922024-01-05 15:38:34 +0800296 if(h_sim != qser_h_sim)
297 {
298 LOGE("[qser_data_call] h_sim is error.");
299 return QSER_RESULT_FAIL;
300 }
301
302 if(qser_info_handle == NULL)
303 {
304 LOGE("[qser_data_call] handle is NULL.");
305 return QSER_RESULT_FAIL;
306 }
307
308 if(pt_info == NULL)
309 {
310 LOGE("[qser_data_call] pt_info is NULL.");
311 return QSER_RESULT_FAIL;
312 }
313
314 mbtk_enable_pin_info pin_info = {0};
315 memcpy(pin_info.pin_value, pt_info->pin_value, pt_info->pin_value_len);
316 pin_info.enable = 1;
317 int err = mbtk_enable_pin(qser_info_handle, &pin_info);
318 if(err)
319 {
320 LOGE("[qser_data_call] mbtk_enable_pin is fail.");
321 return QSER_RESULT_FAIL;
322 }
323
324 return QSER_RESULT_SUCCESS;
b.liu5fa9e772023-11-23 18:00:55 +0800325}
326
327int qser_sim_disablepin(sim_client_handle_type h_sim, QSER_SIM_DISABLE_PIN_INFO_T *pt_info)
328{
wangyouqiang3e3bf922024-01-05 15:38:34 +0800329 //UNUSED(h_sim);
330 //UNUSED(pt_info);
b.liu5fa9e772023-11-23 18:00:55 +0800331
wangyouqiang3e3bf922024-01-05 15:38:34 +0800332 if(h_sim != qser_h_sim)
333 {
334 LOGE("[qser_data_call] h_sim is error.");
335 return QSER_RESULT_FAIL;
336 }
337
338 if(qser_info_handle == NULL)
339 {
340 LOGE("[qser_data_call] handle is NULL.");
341 return QSER_RESULT_FAIL;
342 }
343
344 if(pt_info == NULL)
345 {
346 LOGE("[qser_data_call] pt_info is NULL.");
347 return QSER_RESULT_FAIL;
348 }
349
350 mbtk_enable_pin_info pin_info = {0};
351 memcpy(pin_info.pin_value, pt_info->pin_value, pt_info->pin_value_len);
352 pin_info.enable = 0;
353 int err = mbtk_enable_pin(qser_info_handle, &pin_info);
354 if(err)
355 {
356 LOGE("[qser_data_call] mbtk_enable_pin is fail.");
357 return QSER_RESULT_FAIL;
358 }
359
360 return QSER_RESULT_SUCCESS;
b.liu5fa9e772023-11-23 18:00:55 +0800361}
362
363int qser_sim_getcardstatus(sim_client_handle_type h_sim,QSER_SIM_SLOT_ID_TYPE_T simId,QSER_SIM_CARD_STATUS_INFO_T *pt_info)
364{
wangyouqiang3e3bf922024-01-05 15:38:34 +0800365 //UNUSED(h_sim);
366 //UNUSED(simId);
367 //UNUSED(pt_info);
b.liu5fa9e772023-11-23 18:00:55 +0800368
wangyouqiang3e3bf922024-01-05 15:38:34 +0800369 if(h_sim != qser_h_sim)
370 {
371 LOGE("[qser_data_call] h_sim is error.");
372 return QSER_RESULT_FAIL;
373 }
374
375 if(qser_info_handle == NULL)
376 {
377 LOGE("[qser_data_call] handle is NULL.");
378 return QSER_RESULT_FAIL;
379 }
380
381 if(pt_info == NULL)
382 {
383 LOGE("[qser_data_call] pt_info is NULL.");
384 return QSER_RESULT_FAIL;
385 }
386
387 mbtk_sim_state_enum sim;
388 mbtk_sim_card_type_enum sim_card_type;
389 mbtk_pin_puk_last_times qser_last_times = {0};
390 int err = mbtk_sim_state_get(qser_info_handle, &sim);
391 if(err)
392 {
393 LOGE("[qser_data_call] mbtk_sim_state_get fail [err = %d].", err);
394 return QSER_RESULT_FAIL;
395 }
396 else
397 {
398 LOGE("[qser_data_call] sim = %d.", sim);
399 memset(pt_info, 0x0, sizeof(QSER_SIM_CARD_STATUS_INFO_T));
400 switch (sim)
401 {
402 case 0: //ABSENT
403 pt_info->e_card_state = QSER_SIM_CARD_STATE_ABSENT;
404 break;
405 case 1: //NOT READY
r.xiao2ad43d12024-03-23 00:03:29 -0700406 pt_info->e_card_state = QSER_SIM_CARD_STATE_ABSENT;
wangyouqiang3e3bf922024-01-05 15:38:34 +0800407 break;
408 case 2: //READY
409 pt_info->e_card_state = QSER_SIM_CARD_STATE_PRESENT;
410 break;
411 case 3: //SIM PIN
412 pt_info->e_card_state = QSER_SIM_CARD_STATE_UNKNOWN;
413 break;
414 case 4: //SIM PUK
415 pt_info->e_card_state = QSER_SIM_CARD_STATE_UNKNOWN;
416 break;
417 case 5: //NETWORK
418 pt_info->e_card_state = QSER_SIM_CARD_STATE_ERROR_SIM_TECHNICAL_PROBLEMS;
419 break;
420 default:
421 pt_info->e_card_state = QSER_SIM_CARD_STATE_UNKNOWN;
422 break;
423 }
424 }
425
426 err = mbtk_sim_card_type_get(qser_info_handle, &sim_card_type);
427 if(err)
428 {
429 LOGE("[qser_data_call] mbtk_sim_state_get fail [err = %d].", err);
430 return QSER_RESULT_FAIL;
431 }
432 else
433 {
434 if(sim_card_type == 0 || sim_card_type == 2)
435 pt_info->e_card_type = QSER_SIM_CARD_TYPE_ICC;
436 else if(sim_card_type == 1 || sim_card_type == 3)
437 pt_info->e_card_type = QSER_SIM_CARD_TYPE_UICC;
438 else
439 pt_info->e_card_type = QSER_SIM_CARD_TYPE_UNKNOWN;
440 }
441
442 err = mbtk_pin_last_num_get(qser_info_handle, &qser_last_times);
443 if(err)
444 {
445 LOGE("[qser_data_call] mbtk_sim_state_get fail [err = %d].", err);
446 return QSER_RESULT_FAIL;
447 }
448 else
449 {
450 pt_info->card_app_info.app_3gpp.pin1_num_retries = qser_last_times.p1_retry;
451 pt_info->card_app_info.app_3gpp.pin2_num_retries = qser_last_times.p2_retry;
452 pt_info->card_app_info.app_3gpp.puk1_num_retries = qser_last_times.puk1_retry;
453 pt_info->card_app_info.app_3gpp.puk2_num_retries = qser_last_times.puk2_retry;
454 }
455
456 return QSER_RESULT_SUCCESS;
457}
458
459int qser_sim_getimei(sim_client_handle_type h_sim, char *imei)
460{
461 //UNUSED(h_sim);
462 //UNUSED(imei);
463
464 if(h_sim != qser_h_sim)
465 {
466 LOGE("[qser_data_call] h_sim is error.");
467 return QSER_RESULT_FAIL;
468 }
469
470 if(qser_info_handle == NULL)
471 {
472 LOGE("[qser_data_call] handle is NULL.");
473 return QSER_RESULT_FAIL;
474 }
475
476 if(imei == NULL)
477 {
478 LOGE("[qser_data_call] imei is NULL.");
479 return QSER_RESULT_FAIL;
480 }
481
482 int err = mbtk_imei_get(qser_info_handle, imei);
483 if(err)
484 {
485 LOGE("[qser_data_call] mbtk_imei_get Error : %d\n", err);
486 return QSER_RESULT_FAIL;
487 }
488 return QSER_RESULT_SUCCESS;
489}
490
491int qser_get_imei_and_sv(sim_client_handle_type h_sim,char *imei, char*sv)
492{
493 //UNUSED(h_sim);
494 //UNUSED(imei);
495 //UNUSED(sv);
496 if(h_sim != qser_h_sim)
497 {
498 LOGE("[qser_data_call] h_sim is error.");
499 return QSER_RESULT_FAIL;
500 }
501
502 if(qser_info_handle == NULL)
503 {
504 LOGE("[qser_data_call] handle is NULL.");
505 return QSER_RESULT_FAIL;
506 }
507
508 if(imei == NULL || sv == NULL)
509 {
510 LOGE("[qser_data_call] param is NULL.");
511 return QSER_RESULT_FAIL;
512 }
513
514 int length = 0;
515 int err = mbtk_imei_get(qser_info_handle, imei);
516 if(err)
517 {
518 LOGE("[qser_data_call] mbtk_imei_get Error: %d\n", err);
519 return QSER_RESULT_FAIL;
520 }
521
522 length = strlen(imei);
523 memcpy(sv, imei, length);
524 memcpy(sv + length - 1, "01", 2);
525 return QSER_RESULT_SUCCESS;
526}
527
528int qser_reset_modem(sim_client_handle_type h_sim)
529{
530 //UNUSED(h_sim);
531
532 if(h_sim != qser_h_sim)
533 {
534 LOGE("[qser_data_call] h_sim is error.");
535 return QSER_RESULT_FAIL;
536 }
537
538 if(qser_info_handle == NULL)
539 {
540 LOGE("[qser_data_call] handle is NULL.");
541 return QSER_RESULT_FAIL;
542 }
543
544 mbtk_system_reboot(0);
545 return QSER_RESULT_SUCCESS;
546}
547
548int qser_get_version(sim_client_handle_type h_sim, char *buf)
549{
550 //UNUSED(h_sim);
551 //UNUSED(buf);
552
553 if(h_sim != qser_h_sim)
554 {
555 LOGE("[qser_data_call] h_sim is error.");
556 return QSER_RESULT_FAIL;
557 }
558
559 if(qser_info_handle == NULL)
560 {
561 LOGE("[qser_data_call] handle is NULL.");
562 return QSER_RESULT_FAIL;
563 }
564
565 if(buf == NULL)
566 {
567 LOGE("[qser_data_call] buf is NULL.");
568 return QSER_RESULT_FAIL;
569 }
570
571 int err = mbtk_version_get(qser_info_handle, buf);
572 if(err)
573 {
574 LOGE("[qser_data_call] mbtk_version_get Error : %d\n", err);
575 return QSER_RESULT_FAIL;
576 }
577 return QSER_RESULT_SUCCESS;
578}
579
580int qser_reset_sim(sim_client_handle_type h_sim)
581{
582 //UNUSED(h_sim);
583
584 if(h_sim != qser_h_sim)
585 {
586 LOGE("[qser_data_call] h_sim is error.");
587 return QSER_RESULT_FAIL;
588 }
589
590 if(qser_info_handle == NULL)
591 {
592 LOGE("[qser_data_call] handle is NULL.");
593 return QSER_RESULT_FAIL;
594 }
595
596 //mbtk_sim_power_set(0);
597 //sleep(1);
598 //mbtk_sim_power_set(1);
wangyouqiang924284e2024-02-19 17:40:16 +0800599 mbtk_modem_info_t info;
600 info.fun = MBTK_DEV_MODEM_DISABLE_SIM;
601 info.rst = 0;
602 int err = mbtk_set_modem_fun(qser_info_handle, &info);
603 if(err)
604 {
605 LOGE("[qser_data_call] mbtk_set_modem_fun Error : %d\n", err);
606 return QSER_RESULT_FAIL;
607 }
608
609 info.fun = MBTK_DEV_MODEM_FULL_FUN;
610 err = mbtk_set_modem_fun(qser_info_handle, &info);
611 if(err)
612 {
613 LOGE("[qser_data_call] mbtk_set_modem_fun Error : %d\n", err);
614 return QSER_RESULT_FAIL;
615 }
wangyouqiang3e3bf922024-01-05 15:38:34 +0800616 return QSER_RESULT_SUCCESS;
b.liu5fa9e772023-11-23 18:00:55 +0800617}
618
619int qser_sim_client_deinit(sim_client_handle_type h_sim)
620{
wangyouqiang3e3bf922024-01-05 15:38:34 +0800621 //UNUSED(h_sim);
622 if(h_sim != qser_h_sim)
623 {
624 LOGE("[qser_data_call] h_sim is error.");
625 return QSER_RESULT_FAIL;
626 }
627
628 if(qser_info_handle)
629 {
630 LOGE("qser_info_handle_num = %d", qser_info_handle_num);
631 if(qser_info_handle_num == 1)
632 { // 最后一个引用,可释放。
633 int ret = mbtk_info_handle_free(&qser_info_handle);
634 if(ret)
635 {
636 LOGE("[qser_data_call] mbtk_info_handle_free() fail.");
637 return QSER_RESULT_FAIL;
638 }
639 else
640 {
641 qser_info_handle_num = 0;
642 qser_info_handle = NULL;
643 inited = FALSE;
644 }
645 }
646 else
647 {
648 qser_info_handle_num--;
649 }
650 }
651 else
652 {
653 LOGE("[qser_data_call] handle not inited.");
654 return QSER_RESULT_FAIL;
655 }
b.liu5fa9e772023-11-23 18:00:55 +0800656
wangyouqiang3e3bf922024-01-05 15:38:34 +0800657 return QSER_RESULT_SUCCESS;
b.liu5fa9e772023-11-23 18:00:55 +0800658}
wangyouqiang3e3bf922024-01-05 15:38:34 +0800659/****************************API***************************************/
b.liu5fa9e772023-11-23 18:00:55 +0800660