blob: b4c88736521d8a38f23f7c7042c83dca6c07ef86 [file] [log] [blame]
hong.liud2417072025-06-27 07:10:37 -07001#include <stdbool.h>
b.liu68a94c92025-05-24 12:53:41 +08002#include <unistd.h>
3#include <dlfcn.h>
4#include <time.h>
hong.liud2417072025-06-27 07:10:37 -07005#include "gsw_nw_interface.h"
b.liu68a94c92025-05-24 12:53:41 +08006
7#define MBTK_BUFF_TEMP_SIZE_32 32
8#define MBTK_ERR_OK 0
9#define MBTK_ERR_FAIL -1
xf.li56b78fb2025-06-13 03:29:21 -070010#define GSW_SIM_ICCID_LENGTH 15+1
11#define GSW_SIM_IMSI_LENGTH 15+1
12#define GSW_SIM_MSISDN_LENGTH 15+1
b.liu68a94c92025-05-24 12:53:41 +080013
14//mbtk include
15typedef unsigned int uint32;
16typedef unsigned char uint8;
17typedef unsigned short uint16;
18typedef void (*mbtk_info_callback_func)(const void* data, int data_len);
19typedef struct
20{
21 int client_fd;
22 pthread_t read_thread_id;
23 int exit_fd[2];
24 bool is_waitting;
25 pthread_cond_t cond;
26 pthread_mutex_t mutex;
27
28 pthread_mutex_t send_mutex;
29
30 // Temp response data.
31 uint16 info_err;
32 uint16 data_len;
33 void *data;
34
35 //mbtk wyq for server_ready_status add start
36 char server_ready_status;
37 //mbtk wyq for server_ready_status add end
38
39 mbtk_info_callback_func net_state_cb;
40 mbtk_info_callback_func call_state_cb;
41 mbtk_info_callback_func sms_state_cb;
42 mbtk_info_callback_func radio_state_cb;
43 mbtk_info_callback_func sim_state_cb;
44 mbtk_info_callback_func pdp_state_cb;
45 //add signal by xr
46 mbtk_info_callback_func signal_state_cb;
47} mbtk_info_handle_t;
48
49typedef enum {
50 MBTK_SIM_ABSENT = 0,
51 MBTK_SIM_NOT_READY = 1,
52 MBTK_SIM_READY = 2,
53 MBTK_SIM_PIN = 3,
54 MBTK_SIM_PUK = 4,
55 MBTK_SIM_NETWORK_PERSONALIZATION = 5
56} mbtk_sim_state_enum;
57
58typedef enum
59{
60 MBTK_DEV_MODEM_MIN_FUN, //Modem 最小功能
61 MBTK_DEV_MODEM_FULL_FUN, //Modem 全功能
62 MBTK_DEV_MODEM_DISABLE_RECEIVE_RF_CIRCUITS = 3, //Modem 禁用射频接收电路
63 MBTK_DEV_MODEM_DISABLE_TRANSMIT_AND_RECEIVE_RF_CIRCUITS, //Modem禁用射频发射和接收电路
64 MBTK_DEV_MODEM_DISABLE_SIM, //Modem 禁用(U)SIM 卡
65 MBTK_DEV_MODEM_TURN_OFF_FULL_SECONDARY_RECEIVE, //Modem 完全禁用辅助接收
66}MBTK_DEV_MODEM_FUNCTION;
67
68typedef struct
69{
70 MBTK_DEV_MODEM_FUNCTION fun;
71 int rst;
72} mbtk_modem_info_t;
73
74//api
75
76static mbtk_info_handle_t* (*mbtk_info_handle_get)(void);
b.liu68a94c92025-05-24 12:53:41 +080077#define lib_mbtk_path "/lib/libmbtk_lib.so"
78
79static int sim_init_flag = 0;
80mbtk_info_handle_t* sim_info_handle = NULL;
81static int (*mbtk_info_handle_free)(mbtk_info_handle_t** handle);
82int (*mbtk_sim_state_get)(mbtk_info_handle_t* handle, mbtk_sim_state_enum *sim_state);
83int (*mbtk_imsi_get)(mbtk_info_handle_t* handle, void *imsi);
84int (*mbtk_iccid_get)(mbtk_info_handle_t* handle, void *iccid);
85int (*mbtk_phone_number_get)(mbtk_info_handle_t* handle, void *phone_number);
b.liu68a94c92025-05-24 12:53:41 +080086int (*mbtk_set_modem_fun)(mbtk_info_handle_t* handle, mbtk_modem_info_t *info);
87int (*mbtk_sim_power_set)(int power);
88static void (*mbtk_log)(int level, const char *format, ...);
89static void (*mbtk_log_init)(char *path, char *tag);
90
91#ifndef LOG_ERR_LEVEL
92#define LOG_ERR_LEVEL 3 /* error conditions */
93#endif
94#ifndef LOG_WARN_LEVEL
95#define LOG_WARN_LEVEL 4 /* warning conditions */
96#endif
97#ifndef LOG_INFO_LEVEL
98#define LOG_INFO_LEVEL 6 /* informational */
99#endif
100#ifndef LOG_DEBUG_LEVEL
101#define LOG_DEBUG_LEVEL 7 /* debug-level messages */
102#endif
103#ifndef LOG_VERBOSE_LEVEL
104#define LOG_VERBOSE_LEVEL 8
105#endif
106
l.yang6a42e4d2025-05-28 01:04:20 -0700107#define GSW_SIM "[HAL][GSW_SIM]"
108
b.liu68a94c92025-05-24 12:53:41 +0800109#define LOGV(fmt, args ...) \
110 do{ \
111 char *file_ptr_1001 = __FILE__; \
112 char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
113 char line_1001[10] = {0}; \
114 sprintf(line_1001, "%d", __LINE__); \
115 while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
116 if(*ptr_1001 == '/') \
117 break; \
118 ptr_1001--; \
119 } \
l.yang6a42e4d2025-05-28 01:04:20 -0700120 mbtk_log(LOG_VERBOSE_LEVEL, "%s#%s: "GSW_SIM"" fmt, ptr_1001 + 1, line_1001, ##args); \
b.liu68a94c92025-05-24 12:53:41 +0800121 } while(0)
122
123#define LOGI(fmt, args...) \
124 do{ \
125 char *file_ptr_1001 = __FILE__; \
126 char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
127 char line_1001[10] = {0}; \
128 sprintf(line_1001, "%d", __LINE__); \
129 while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
130 if(*ptr_1001 == '/') \
131 break; \
132 ptr_1001--; \
133 } \
l.yang6a42e4d2025-05-28 01:04:20 -0700134 mbtk_log(LOG_INFO_LEVEL, "%s#%s: "GSW_SIM"" fmt, ptr_1001 + 1, line_1001, ##args); \
b.liu68a94c92025-05-24 12:53:41 +0800135 } while(0)
136
137#define LOGD(fmt, args...) \
138 do{ \
139 char *file_ptr_1001 = __FILE__; \
140 char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
141 char line_1001[10] = {0}; \
142 sprintf(line_1001, "%d", __LINE__); \
143 while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
144 if(*ptr_1001 == '/') \
145 break; \
146 ptr_1001--; \
147 } \
l.yang6a42e4d2025-05-28 01:04:20 -0700148 mbtk_log(LOG_DEBUG_LEVEL, "%s#%s: "GSW_SIM"" fmt, ptr_1001 + 1, line_1001, ##args); \
b.liu68a94c92025-05-24 12:53:41 +0800149 } while(0)
150
151#define LOGW(fmt, args...) \
152 do{ \
153 char *file_ptr_1001 = __FILE__; \
154 char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
155 char line_1001[10] = {0}; \
156 sprintf(line_1001, "%d", __LINE__); \
157 while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
158 if(*ptr_1001 == '/') \
159 break; \
160 ptr_1001--; \
161 } \
l.yang6a42e4d2025-05-28 01:04:20 -0700162 mbtk_log(LOG_WARN_LEVEL, "%s#%s: "GSW_SIM"" fmt, ptr_1001 + 1, line_1001, ##args); \
b.liu68a94c92025-05-24 12:53:41 +0800163 } while(0)
164
165#define LOGE(fmt, args...) \
166 do{ \
167 char *file_ptr_1001 = __FILE__; \
168 char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
169 char line_1001[10] = {0}; \
170 sprintf(line_1001, "%d", __LINE__); \
171 while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
172 if(*ptr_1001 == '/') \
173 break; \
174 ptr_1001--; \
175 } \
l.yang6a42e4d2025-05-28 01:04:20 -0700176 mbtk_log(LOG_ERR_LEVEL, "%s#%s: "GSW_SIM"" fmt, ptr_1001 + 1, line_1001, ##args); \
b.liu68a94c92025-05-24 12:53:41 +0800177 } while(0)
178
179
180
181
182static void *dlHandle_mbtk;
183
184
185static int gsw_sim_api_import()
186{
187 dlHandle_mbtk = dlopen(lib_mbtk_path, RTLD_NOW);
188 if (dlHandle_mbtk == NULL)
189 {
xy.heb41615b2025-05-28 16:33:20 +0800190 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800191 }
192
193 mbtk_log_init = (void (*)(char *path, char *tag))dlsym(dlHandle_mbtk, "mbtk_log_init");
194 if (mbtk_log_init == NULL)
195 {
xy.heb41615b2025-05-28 16:33:20 +0800196 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800197 }
198
199 mbtk_log = (void (*)(int level, const char *format, ...))dlsym(dlHandle_mbtk, "mbtk_log");
200 if (mbtk_log == NULL)
201 {
xy.heb41615b2025-05-28 16:33:20 +0800202 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800203 }
204
205 mbtk_info_handle_get = (mbtk_info_handle_t* (*)(void))dlsym(dlHandle_mbtk, "mbtk_info_handle_get");
206 if (mbtk_info_handle_get == NULL)
207 {
208 LOGE("mbtk_info_handle_get dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800209 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800210 }
211
212 mbtk_info_handle_free = (int (*)(mbtk_info_handle_t** handle))dlsym(dlHandle_mbtk, "mbtk_info_handle_free");
213 if (mbtk_info_handle_free == NULL)
214 {
215 LOGE("mbtk_info_handle_free dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800216 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800217 }
218
219 mbtk_imsi_get = (int (*)(mbtk_info_handle_t* handle, void *imsi))dlsym(dlHandle_mbtk, "mbtk_imsi_get");
220 if (mbtk_imsi_get == NULL)
221 {
222 LOGE("mbtk_imsi_get dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800223 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800224 }
225
226 mbtk_iccid_get = (int (*)(mbtk_info_handle_t* handle, void *iccid))dlsym(dlHandle_mbtk, "mbtk_iccid_get");
227 if (mbtk_iccid_get == NULL)
228 {
229 LOGE("mbtk_iccid_get dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800230 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800231 }
232
233 mbtk_phone_number_get = (int (*)(mbtk_info_handle_t* handle, void *phone_number))dlsym(dlHandle_mbtk, "mbtk_phone_number_get");
234 if (mbtk_phone_number_get == NULL)
235 {
236 LOGE("mbtk_phone_number_get dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800237 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800238 }
239
q.huang238b22a2025-06-10 14:36:59 +0800240
b.liu68a94c92025-05-24 12:53:41 +0800241 mbtk_sim_state_get = (int (*)(mbtk_info_handle_t* handle, mbtk_sim_state_enum *sim_state))dlsym(dlHandle_mbtk, "mbtk_sim_state_get");
242 if (mbtk_sim_state_get == NULL)
243 {
244 LOGE("mbtk_sim_state_get dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800245 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800246 }
247
248 mbtk_set_modem_fun = (int (*)(mbtk_info_handle_t* handle, mbtk_modem_info_t *info))dlsym(dlHandle_mbtk, "mbtk_set_modem_fun");
249 if (mbtk_set_modem_fun == NULL)
250 {
251 LOGE("mbtk_set_modem_fun dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800252 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800253 }
254
255 mbtk_sim_power_set = (int (*)(int power))dlsym(dlHandle_mbtk, "mbtk_sim_power_set");
256 if (mbtk_sim_power_set == NULL)
257 {
258 LOGE("mbtk_sim_power_set dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800259 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800260 }
261
262 LOGD("gsw_sim_api_import end\n");
263 return GSW_HAL_SUCCESS;
264}
265
266/**
267 * @brief sim sdk init
268 * @param [in] token usr id define by who use
269 * @retval 0: success
270 * @retval other: fail
271 */
272int gsw_sim_sdk_init(int32_t token)
273{
xy.heb41615b2025-05-28 16:33:20 +0800274 int ret = GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800275
276 if(sim_init_flag == 1 && sim_info_handle != NULL)
277 {
278 return GSW_HAL_SUCCESS;
279 }
280
281 ret = gsw_sim_api_import();
282 if(ret != GSW_HAL_SUCCESS)
283 {
284 if(mbtk_log != NULL)
285 {
286 LOGE("gsw_sim_import fail\n");
287 }
xy.heb41615b2025-05-28 16:33:20 +0800288 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800289 }
290
291 mbtk_log_init("syslog", "MBTK_RIL");
292
293 sim_info_handle = mbtk_info_handle_get();
294 if(sim_info_handle == NULL)
295 {
296 LOGE("mbtk_info_handle_get fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800297 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800298 }
299
300 sim_init_flag = 1;
301 return GSW_HAL_SUCCESS;
302}
303
304
305/**
306 * @brief sim sdk deinit
307 * @param
308 * @retval 0: success
309 * @retval other: fail
310 */
311int gsw_sim_sdk_deinit(void)
312{
313 int ret = -1;
314
q.huang238b22a2025-06-10 14:36:59 +0800315 if(sim_init_flag == 0 || sim_info_handle == NULL)
b.liu68a94c92025-05-24 12:53:41 +0800316 {
q.huang238b22a2025-06-10 14:36:59 +0800317 printf("sim sdk has been deinit\n");
xy.heb41615b2025-05-28 16:33:20 +0800318 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800319 }
320
321 ret = mbtk_info_handle_free(&sim_info_handle);
322 if(ret != GSW_HAL_SUCCESS)
323 {
324 LOGE("mbtk_info_handle_free fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800325 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800326 }
327
328 sim_init_flag = 0;
329 sim_info_handle = NULL;
330 dlclose(dlHandle_mbtk);
331
332 return GSW_HAL_SUCCESS;
333
334}
335
336
337/**
338 * @brief get sim state
339 * @param [out] sim_state sim status as sim_status_e_type
340 * @retval 0: success
341 * @retval other: fail
342 */
343int gsw_get_sim_status(int *sim_state)
344{
q.huang238b22a2025-06-10 14:36:59 +0800345 printf("gsw_get_sim_status enter\n");
b.liu68a94c92025-05-24 12:53:41 +0800346 int ret = -1;
347
q.huang238b22a2025-06-10 14:36:59 +0800348 if(sim_init_flag == 0 || sim_info_handle == NULL)
b.liu68a94c92025-05-24 12:53:41 +0800349 {
q.huang238b22a2025-06-10 14:36:59 +0800350 printf("sim sdk has been deinit\n");
xy.heb41615b2025-05-28 16:33:20 +0800351 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800352 }
353
354 mbtk_sim_state_enum sim = MBTK_SIM_ABSENT;
355
356 LOGD("mbtk_get_sim_status start\n");
357 ret = mbtk_sim_state_get(sim_info_handle, &sim);
358 if(ret)
359 {
360 LOGE("[gsw_get_sim_status] mbtk_sim_state_get fail [err = %d].", ret);
xy.heb41615b2025-05-28 16:33:20 +0800361 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800362 }
363
364 else
365 {
366 LOGD("[gsw_get_sim_status] sim = %d\n", sim);
367 switch (sim)
368 {
369 case MBTK_SIM_ABSENT:
370 {
371 *sim_state = SIM_STATUS_ABSENT;
372 break;
373 }
374 case MBTK_SIM_NOT_READY:
375 {
q.huangba7f39c2025-06-06 18:44:46 +0800376 *sim_state = SIM_STATUS_ERROR;// not SIM_STATUS_PRESENT, changed for gsw requirement, hq at 250606
b.liu68a94c92025-05-24 12:53:41 +0800377 break;
378 }
379
380 case MBTK_SIM_READY:
381 {
q.huangba7f39c2025-06-06 18:44:46 +0800382 *sim_state = SIM_STATUS_PRESENT;// not SIM_STATUS_READY, changed for gsw requirement, hq at 250606
b.liu68a94c92025-05-24 12:53:41 +0800383 break;
384 }
385
386 case MBTK_SIM_PIN:
387 {
388 *sim_state = SIM_STATUS_PIN;
389 break;
390 }
391
392 case MBTK_SIM_PUK:
393 {
394 break;
395 }
396
397 case MBTK_SIM_NETWORK_PERSONALIZATION:
398 {
399 break;
400 }
401
402 }
403 }
404
405 return GSW_HAL_SUCCESS;
406}
407
408/**
409 * @brief get iccid function
410 * @param [in] len iccid length,max is 20
411 * @param [out] iccid return iccid from this func
412 * @retval 0: success
413 * @retval other: fail
414 */
415int gsw_get_sim_iccid(int len, char *iccid)
416{
417 int ret = -1;
418
q.huang238b22a2025-06-10 14:36:59 +0800419 if(sim_init_flag == 0 || sim_info_handle == NULL)
b.liu68a94c92025-05-24 12:53:41 +0800420 {
q.huang238b22a2025-06-10 14:36:59 +0800421 printf("sim sdk has been deinit\n");
xy.heb41615b2025-05-28 16:33:20 +0800422 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800423 }
424
425 if(iccid == NULL)
426 {
427 LOGE("iccid is NULL.");
xy.heb41615b2025-05-28 16:33:20 +0800428 return GSW_HAL_ARG_INVALID;
b.liu68a94c92025-05-24 12:53:41 +0800429 }
430
431 if(len < GSW_SIM_ICCID_LENGTH)
432 {
433 LOGE("iccid len is too short,len = %d\n", len);
xy.heb41615b2025-05-28 16:33:20 +0800434 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800435 }
436
437 ret = mbtk_iccid_get(sim_info_handle, (void *)iccid);
438 if(ret != MBTK_ERR_OK)
439 {
440 LOGE("[gsw_sim] mbtk_iccid_get fail [err = %d].", ret);
xy.heb41615b2025-05-28 16:33:20 +0800441 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800442 }
443
444 return GSW_HAL_SUCCESS;
445}
446
447/**
448 * @brief get imsi function
449 * @param [in] len imsi length,max is 20
450 * @param [out] iccid return imsi from this func
451 * @retval 0: success
452 * @retval other: fail
453 */
454int gsw_get_sim_imsi(int len, char *imsi)
455{
456 int ret = -1;
457
q.huang238b22a2025-06-10 14:36:59 +0800458 if(sim_init_flag == 0 || sim_info_handle == NULL)
b.liu68a94c92025-05-24 12:53:41 +0800459 {
q.huang238b22a2025-06-10 14:36:59 +0800460 printf("sim sdk has been deinit\n");
xy.heb41615b2025-05-28 16:33:20 +0800461 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800462 }
463
464 if(imsi == NULL)
465 {
466 LOGE("imsi is NULL.");
xy.heb41615b2025-05-28 16:33:20 +0800467 return GSW_HAL_ARG_INVALID;
b.liu68a94c92025-05-24 12:53:41 +0800468 }
469
470 if(len < GSW_SIM_IMSI_LENGTH)
471 {
472 LOGE("imsi len is too short,len = %d\n", len);
xy.heb41615b2025-05-28 16:33:20 +0800473 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800474 }
475
476 ret = mbtk_imsi_get(sim_info_handle, (void *)imsi);
477 if(ret != MBTK_ERR_OK)
478 {
479 LOGE("[gsw_sim] mbtk_imsi_get fail [err = %d].", ret);
xy.heb41615b2025-05-28 16:33:20 +0800480 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800481 }
482
483 return GSW_HAL_SUCCESS;
484}
485
486/**
487 * @brief get sim msisdn function
488 * @param [in] len msisdn length,max is 20
489 * @param [out] msisdn msisdn length,max is 20
490 * @retval 0: success
491 * @retval other: fail
492 */
493int gsw_get_sim_msisdn(int len, char *msisdn)
494{
495 int ret = -1;
496
q.huang238b22a2025-06-10 14:36:59 +0800497 if(sim_init_flag == 0 || sim_info_handle == NULL)
b.liu68a94c92025-05-24 12:53:41 +0800498 {
499 printf("sim sdk has been deinit\n");
xy.heb41615b2025-05-28 16:33:20 +0800500 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800501 }
502
503 if(msisdn == NULL)
504 {
505 printf("msisdn is NULL.");
xy.heb41615b2025-05-28 16:33:20 +0800506 return GSW_HAL_ARG_INVALID;
b.liu68a94c92025-05-24 12:53:41 +0800507 }
508
509 if(len < GSW_SIM_MSISDN_LENGTH)
510 {
511 printf("msisdn len is too short,len = %d\n", len);
xy.heb41615b2025-05-28 16:33:20 +0800512 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800513 }
514
515 ret = mbtk_phone_number_get(sim_info_handle, (void *)msisdn);
516 if(ret != MBTK_ERR_OK)
517 {
518 LOGE("[gsw_sim] mbtk_phone_number_get fail [err = %d].", ret);
xy.heb41615b2025-05-28 16:33:20 +0800519 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800520 }
521
522 return GSW_HAL_SUCCESS;
523}
524
525/**
b.liu68a94c92025-05-24 12:53:41 +0800526 * @brief set sim power down
527 * @param
528 * @retval 0: success
529 * @retval other: fail
530 */
531int gsw_set_sim_power_down(void)
532{
533 int ret = -1;
q.huang238b22a2025-06-10 14:36:59 +0800534 if(sim_init_flag == 0 || sim_info_handle == NULL)
b.liu68a94c92025-05-24 12:53:41 +0800535 {
q.huang238b22a2025-06-10 14:36:59 +0800536 printf("sim sdk has been deinit\n");
xy.heb41615b2025-05-28 16:33:20 +0800537 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800538 }
539
yq.wangc81f7332025-06-10 14:10:55 +0800540 mbtk_modem_info_t info;
541 info.fun = MBTK_DEV_MODEM_DISABLE_SIM;
542 info.rst = 0;
543
544 ret = mbtk_set_modem_fun(sim_info_handle, &info);
545 if(ret)
b.liu68a94c92025-05-24 12:53:41 +0800546 {
yq.wangc81f7332025-06-10 14:10:55 +0800547 LOGE("mbtk_set_modem_fun() fail [err = %d].", ret);
xy.heb41615b2025-05-28 16:33:20 +0800548 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800549 }
yq.wangc81f7332025-06-10 14:10:55 +0800550
b.liu68a94c92025-05-24 12:53:41 +0800551 return GSW_HAL_SUCCESS;
552}
553
554
555
556/**
557 * @brief set sim power up
558 * @param
559 * @retval 0: success
560 * @retval other: fail
561 */
562int gsw_set_sim_power_up(void)
563{
564 int ret = -1;
q.huang238b22a2025-06-10 14:36:59 +0800565 if(sim_init_flag == 0 || sim_info_handle == NULL)
b.liu68a94c92025-05-24 12:53:41 +0800566 {
q.huang238b22a2025-06-10 14:36:59 +0800567 printf("sim sdk has been deinit\n");
xy.heb41615b2025-05-28 16:33:20 +0800568 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800569 }
570
yq.wangc81f7332025-06-10 14:10:55 +0800571 mbtk_modem_info_t info;
572 info.fun = MBTK_DEV_MODEM_FULL_FUN;
573 info.rst = 0;
574
575 ret = mbtk_set_modem_fun(sim_info_handle, &info);
576 if(ret)
b.liu68a94c92025-05-24 12:53:41 +0800577 {
yq.wangc81f7332025-06-10 14:10:55 +0800578 LOGE("mbtk_set_modem_fun() fail [err = %d].", ret);
xy.heb41615b2025-05-28 16:33:20 +0800579 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800580 }
yq.wangc81f7332025-06-10 14:10:55 +0800581
b.liu68a94c92025-05-24 12:53:41 +0800582 return GSW_HAL_SUCCESS;
583}