blob: 97be1122c5d7ea593a111dfd2554424639213b40 [file] [log] [blame]
b.liu68a94c92025-05-24 12:53:41 +08001#include "gsw_nw_interface.h"
2#include <unistd.h>
3#include <dlfcn.h>
4#include <time.h>
5
6#define MBTK_BUFF_TEMP_SIZE_32 32
7#define MBTK_ERR_OK 0
8#define MBTK_ERR_FAIL -1
xf.li56b78fb2025-06-13 03:29:21 -07009#define GSW_SIM_ICCID_LENGTH 15+1
10#define GSW_SIM_IMSI_LENGTH 15+1
11#define GSW_SIM_MSISDN_LENGTH 15+1
b.liu68a94c92025-05-24 12:53:41 +080012
13//mbtk include
14typedef unsigned int uint32;
15typedef unsigned char uint8;
16typedef unsigned short uint16;
17typedef void (*mbtk_info_callback_func)(const void* data, int data_len);
18typedef struct
19{
20 int client_fd;
21 pthread_t read_thread_id;
22 int exit_fd[2];
23 bool is_waitting;
24 pthread_cond_t cond;
25 pthread_mutex_t mutex;
26
27 pthread_mutex_t send_mutex;
28
29 // Temp response data.
30 uint16 info_err;
31 uint16 data_len;
32 void *data;
33
34 //mbtk wyq for server_ready_status add start
35 char server_ready_status;
36 //mbtk wyq for server_ready_status add end
37
38 mbtk_info_callback_func net_state_cb;
39 mbtk_info_callback_func call_state_cb;
40 mbtk_info_callback_func sms_state_cb;
41 mbtk_info_callback_func radio_state_cb;
42 mbtk_info_callback_func sim_state_cb;
43 mbtk_info_callback_func pdp_state_cb;
44 //add signal by xr
45 mbtk_info_callback_func signal_state_cb;
46} mbtk_info_handle_t;
47
48typedef enum {
49 MBTK_SIM_ABSENT = 0,
50 MBTK_SIM_NOT_READY = 1,
51 MBTK_SIM_READY = 2,
52 MBTK_SIM_PIN = 3,
53 MBTK_SIM_PUK = 4,
54 MBTK_SIM_NETWORK_PERSONALIZATION = 5
55} mbtk_sim_state_enum;
56
57typedef enum
58{
59 MBTK_DEV_MODEM_MIN_FUN, //Modem 最小功能
60 MBTK_DEV_MODEM_FULL_FUN, //Modem 全功能
61 MBTK_DEV_MODEM_DISABLE_RECEIVE_RF_CIRCUITS = 3, //Modem 禁用射频接收电路
62 MBTK_DEV_MODEM_DISABLE_TRANSMIT_AND_RECEIVE_RF_CIRCUITS, //Modem禁用射频发射和接收电路
63 MBTK_DEV_MODEM_DISABLE_SIM, //Modem 禁用(U)SIM 卡
64 MBTK_DEV_MODEM_TURN_OFF_FULL_SECONDARY_RECEIVE, //Modem 完全禁用辅助接收
65}MBTK_DEV_MODEM_FUNCTION;
66
67typedef struct
68{
69 MBTK_DEV_MODEM_FUNCTION fun;
70 int rst;
71} mbtk_modem_info_t;
72
73//api
74
75static mbtk_info_handle_t* (*mbtk_info_handle_get)(void);
b.liu68a94c92025-05-24 12:53:41 +080076#define lib_mbtk_path "/lib/libmbtk_lib.so"
77
78static int sim_init_flag = 0;
79mbtk_info_handle_t* sim_info_handle = NULL;
80static int (*mbtk_info_handle_free)(mbtk_info_handle_t** handle);
81int (*mbtk_sim_state_get)(mbtk_info_handle_t* handle, mbtk_sim_state_enum *sim_state);
82int (*mbtk_imsi_get)(mbtk_info_handle_t* handle, void *imsi);
83int (*mbtk_iccid_get)(mbtk_info_handle_t* handle, void *iccid);
84int (*mbtk_phone_number_get)(mbtk_info_handle_t* handle, void *phone_number);
b.liu68a94c92025-05-24 12:53:41 +080085int (*mbtk_set_modem_fun)(mbtk_info_handle_t* handle, mbtk_modem_info_t *info);
86int (*mbtk_sim_power_set)(int power);
87static void (*mbtk_log)(int level, const char *format, ...);
88static void (*mbtk_log_init)(char *path, char *tag);
89
90#ifndef LOG_ERR_LEVEL
91#define LOG_ERR_LEVEL 3 /* error conditions */
92#endif
93#ifndef LOG_WARN_LEVEL
94#define LOG_WARN_LEVEL 4 /* warning conditions */
95#endif
96#ifndef LOG_INFO_LEVEL
97#define LOG_INFO_LEVEL 6 /* informational */
98#endif
99#ifndef LOG_DEBUG_LEVEL
100#define LOG_DEBUG_LEVEL 7 /* debug-level messages */
101#endif
102#ifndef LOG_VERBOSE_LEVEL
103#define LOG_VERBOSE_LEVEL 8
104#endif
105
l.yang6a42e4d2025-05-28 01:04:20 -0700106#define GSW_SIM "[HAL][GSW_SIM]"
107
b.liu68a94c92025-05-24 12:53:41 +0800108#define LOGV(fmt, args ...) \
109 do{ \
110 char *file_ptr_1001 = __FILE__; \
111 char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
112 char line_1001[10] = {0}; \
113 sprintf(line_1001, "%d", __LINE__); \
114 while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
115 if(*ptr_1001 == '/') \
116 break; \
117 ptr_1001--; \
118 } \
l.yang6a42e4d2025-05-28 01:04:20 -0700119 mbtk_log(LOG_VERBOSE_LEVEL, "%s#%s: "GSW_SIM"" fmt, ptr_1001 + 1, line_1001, ##args); \
b.liu68a94c92025-05-24 12:53:41 +0800120 } while(0)
121
122#define LOGI(fmt, args...) \
123 do{ \
124 char *file_ptr_1001 = __FILE__; \
125 char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
126 char line_1001[10] = {0}; \
127 sprintf(line_1001, "%d", __LINE__); \
128 while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
129 if(*ptr_1001 == '/') \
130 break; \
131 ptr_1001--; \
132 } \
l.yang6a42e4d2025-05-28 01:04:20 -0700133 mbtk_log(LOG_INFO_LEVEL, "%s#%s: "GSW_SIM"" fmt, ptr_1001 + 1, line_1001, ##args); \
b.liu68a94c92025-05-24 12:53:41 +0800134 } while(0)
135
136#define LOGD(fmt, args...) \
137 do{ \
138 char *file_ptr_1001 = __FILE__; \
139 char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
140 char line_1001[10] = {0}; \
141 sprintf(line_1001, "%d", __LINE__); \
142 while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
143 if(*ptr_1001 == '/') \
144 break; \
145 ptr_1001--; \
146 } \
l.yang6a42e4d2025-05-28 01:04:20 -0700147 mbtk_log(LOG_DEBUG_LEVEL, "%s#%s: "GSW_SIM"" fmt, ptr_1001 + 1, line_1001, ##args); \
b.liu68a94c92025-05-24 12:53:41 +0800148 } while(0)
149
150#define LOGW(fmt, args...) \
151 do{ \
152 char *file_ptr_1001 = __FILE__; \
153 char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
154 char line_1001[10] = {0}; \
155 sprintf(line_1001, "%d", __LINE__); \
156 while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
157 if(*ptr_1001 == '/') \
158 break; \
159 ptr_1001--; \
160 } \
l.yang6a42e4d2025-05-28 01:04:20 -0700161 mbtk_log(LOG_WARN_LEVEL, "%s#%s: "GSW_SIM"" fmt, ptr_1001 + 1, line_1001, ##args); \
b.liu68a94c92025-05-24 12:53:41 +0800162 } while(0)
163
164#define LOGE(fmt, args...) \
165 do{ \
166 char *file_ptr_1001 = __FILE__; \
167 char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
168 char line_1001[10] = {0}; \
169 sprintf(line_1001, "%d", __LINE__); \
170 while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
171 if(*ptr_1001 == '/') \
172 break; \
173 ptr_1001--; \
174 } \
l.yang6a42e4d2025-05-28 01:04:20 -0700175 mbtk_log(LOG_ERR_LEVEL, "%s#%s: "GSW_SIM"" fmt, ptr_1001 + 1, line_1001, ##args); \
b.liu68a94c92025-05-24 12:53:41 +0800176 } while(0)
177
178
179
180
181static void *dlHandle_mbtk;
182
183
184static int gsw_sim_api_import()
185{
186 dlHandle_mbtk = dlopen(lib_mbtk_path, RTLD_NOW);
187 if (dlHandle_mbtk == NULL)
188 {
xy.heb41615b2025-05-28 16:33:20 +0800189 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800190 }
191
192 mbtk_log_init = (void (*)(char *path, char *tag))dlsym(dlHandle_mbtk, "mbtk_log_init");
193 if (mbtk_log_init == NULL)
194 {
xy.heb41615b2025-05-28 16:33:20 +0800195 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800196 }
197
198 mbtk_log = (void (*)(int level, const char *format, ...))dlsym(dlHandle_mbtk, "mbtk_log");
199 if (mbtk_log == NULL)
200 {
xy.heb41615b2025-05-28 16:33:20 +0800201 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800202 }
203
204 mbtk_info_handle_get = (mbtk_info_handle_t* (*)(void))dlsym(dlHandle_mbtk, "mbtk_info_handle_get");
205 if (mbtk_info_handle_get == NULL)
206 {
207 LOGE("mbtk_info_handle_get dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800208 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800209 }
210
211 mbtk_info_handle_free = (int (*)(mbtk_info_handle_t** handle))dlsym(dlHandle_mbtk, "mbtk_info_handle_free");
212 if (mbtk_info_handle_free == NULL)
213 {
214 LOGE("mbtk_info_handle_free dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800215 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800216 }
217
218 mbtk_imsi_get = (int (*)(mbtk_info_handle_t* handle, void *imsi))dlsym(dlHandle_mbtk, "mbtk_imsi_get");
219 if (mbtk_imsi_get == NULL)
220 {
221 LOGE("mbtk_imsi_get dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800222 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800223 }
224
225 mbtk_iccid_get = (int (*)(mbtk_info_handle_t* handle, void *iccid))dlsym(dlHandle_mbtk, "mbtk_iccid_get");
226 if (mbtk_iccid_get == NULL)
227 {
228 LOGE("mbtk_iccid_get dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800229 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800230 }
231
232 mbtk_phone_number_get = (int (*)(mbtk_info_handle_t* handle, void *phone_number))dlsym(dlHandle_mbtk, "mbtk_phone_number_get");
233 if (mbtk_phone_number_get == NULL)
234 {
235 LOGE("mbtk_phone_number_get dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800236 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800237 }
238
q.huang238b22a2025-06-10 14:36:59 +0800239
b.liu68a94c92025-05-24 12:53:41 +0800240 mbtk_sim_state_get = (int (*)(mbtk_info_handle_t* handle, mbtk_sim_state_enum *sim_state))dlsym(dlHandle_mbtk, "mbtk_sim_state_get");
241 if (mbtk_sim_state_get == NULL)
242 {
243 LOGE("mbtk_sim_state_get dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800244 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800245 }
246
247 mbtk_set_modem_fun = (int (*)(mbtk_info_handle_t* handle, mbtk_modem_info_t *info))dlsym(dlHandle_mbtk, "mbtk_set_modem_fun");
248 if (mbtk_set_modem_fun == NULL)
249 {
250 LOGE("mbtk_set_modem_fun dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800251 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800252 }
253
254 mbtk_sim_power_set = (int (*)(int power))dlsym(dlHandle_mbtk, "mbtk_sim_power_set");
255 if (mbtk_sim_power_set == NULL)
256 {
257 LOGE("mbtk_sim_power_set dlsym fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800258 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800259 }
260
261 LOGD("gsw_sim_api_import end\n");
262 return GSW_HAL_SUCCESS;
263}
264
265/**
266 * @brief sim sdk init
267 * @param [in] token usr id define by who use
268 * @retval 0: success
269 * @retval other: fail
270 */
271int gsw_sim_sdk_init(int32_t token)
272{
xy.heb41615b2025-05-28 16:33:20 +0800273 int ret = GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800274
275 if(sim_init_flag == 1 && sim_info_handle != NULL)
276 {
277 return GSW_HAL_SUCCESS;
278 }
279
280 ret = gsw_sim_api_import();
281 if(ret != GSW_HAL_SUCCESS)
282 {
283 if(mbtk_log != NULL)
284 {
285 LOGE("gsw_sim_import fail\n");
286 }
xy.heb41615b2025-05-28 16:33:20 +0800287 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800288 }
289
290 mbtk_log_init("syslog", "MBTK_RIL");
291
292 sim_info_handle = mbtk_info_handle_get();
293 if(sim_info_handle == NULL)
294 {
295 LOGE("mbtk_info_handle_get fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800296 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800297 }
298
299 sim_init_flag = 1;
300 return GSW_HAL_SUCCESS;
301}
302
303
304/**
305 * @brief sim sdk deinit
306 * @param
307 * @retval 0: success
308 * @retval other: fail
309 */
310int gsw_sim_sdk_deinit(void)
311{
312 int ret = -1;
313
q.huang238b22a2025-06-10 14:36:59 +0800314 if(sim_init_flag == 0 || sim_info_handle == NULL)
b.liu68a94c92025-05-24 12:53:41 +0800315 {
q.huang238b22a2025-06-10 14:36:59 +0800316 printf("sim sdk has been deinit\n");
xy.heb41615b2025-05-28 16:33:20 +0800317 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800318 }
319
320 ret = mbtk_info_handle_free(&sim_info_handle);
321 if(ret != GSW_HAL_SUCCESS)
322 {
323 LOGE("mbtk_info_handle_free fail\n");
xy.heb41615b2025-05-28 16:33:20 +0800324 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800325 }
326
327 sim_init_flag = 0;
328 sim_info_handle = NULL;
329 dlclose(dlHandle_mbtk);
330
331 return GSW_HAL_SUCCESS;
332
333}
334
335
336/**
337 * @brief get sim state
338 * @param [out] sim_state sim status as sim_status_e_type
339 * @retval 0: success
340 * @retval other: fail
341 */
342int gsw_get_sim_status(int *sim_state)
343{
q.huang238b22a2025-06-10 14:36:59 +0800344 printf("gsw_get_sim_status enter\n");
b.liu68a94c92025-05-24 12:53:41 +0800345 int ret = -1;
346
q.huang238b22a2025-06-10 14:36:59 +0800347 if(sim_init_flag == 0 || sim_info_handle == NULL)
b.liu68a94c92025-05-24 12:53:41 +0800348 {
q.huang238b22a2025-06-10 14:36:59 +0800349 printf("sim sdk has been deinit\n");
xy.heb41615b2025-05-28 16:33:20 +0800350 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800351 }
352
353 mbtk_sim_state_enum sim = MBTK_SIM_ABSENT;
354
355 LOGD("mbtk_get_sim_status start\n");
356 ret = mbtk_sim_state_get(sim_info_handle, &sim);
357 if(ret)
358 {
359 LOGE("[gsw_get_sim_status] mbtk_sim_state_get fail [err = %d].", ret);
xy.heb41615b2025-05-28 16:33:20 +0800360 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800361 }
362
363 else
364 {
365 LOGD("[gsw_get_sim_status] sim = %d\n", sim);
366 switch (sim)
367 {
368 case MBTK_SIM_ABSENT:
369 {
370 *sim_state = SIM_STATUS_ABSENT;
371 break;
372 }
373 case MBTK_SIM_NOT_READY:
374 {
q.huangba7f39c2025-06-06 18:44:46 +0800375 *sim_state = SIM_STATUS_ERROR;// not SIM_STATUS_PRESENT, changed for gsw requirement, hq at 250606
b.liu68a94c92025-05-24 12:53:41 +0800376 break;
377 }
378
379 case MBTK_SIM_READY:
380 {
q.huangba7f39c2025-06-06 18:44:46 +0800381 *sim_state = SIM_STATUS_PRESENT;// not SIM_STATUS_READY, changed for gsw requirement, hq at 250606
b.liu68a94c92025-05-24 12:53:41 +0800382 break;
383 }
384
385 case MBTK_SIM_PIN:
386 {
387 *sim_state = SIM_STATUS_PIN;
388 break;
389 }
390
391 case MBTK_SIM_PUK:
392 {
393 break;
394 }
395
396 case MBTK_SIM_NETWORK_PERSONALIZATION:
397 {
398 break;
399 }
400
401 }
402 }
403
404 return GSW_HAL_SUCCESS;
405}
406
407/**
408 * @brief get iccid function
409 * @param [in] len iccid length,max is 20
410 * @param [out] iccid return iccid from this func
411 * @retval 0: success
412 * @retval other: fail
413 */
414int gsw_get_sim_iccid(int len, char *iccid)
415{
416 int ret = -1;
417
q.huang238b22a2025-06-10 14:36:59 +0800418 if(sim_init_flag == 0 || sim_info_handle == NULL)
b.liu68a94c92025-05-24 12:53:41 +0800419 {
q.huang238b22a2025-06-10 14:36:59 +0800420 printf("sim sdk has been deinit\n");
xy.heb41615b2025-05-28 16:33:20 +0800421 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800422 }
423
424 if(iccid == NULL)
425 {
426 LOGE("iccid is NULL.");
xy.heb41615b2025-05-28 16:33:20 +0800427 return GSW_HAL_ARG_INVALID;
b.liu68a94c92025-05-24 12:53:41 +0800428 }
429
430 if(len < GSW_SIM_ICCID_LENGTH)
431 {
432 LOGE("iccid len is too short,len = %d\n", len);
xy.heb41615b2025-05-28 16:33:20 +0800433 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800434 }
435
436 ret = mbtk_iccid_get(sim_info_handle, (void *)iccid);
437 if(ret != MBTK_ERR_OK)
438 {
439 LOGE("[gsw_sim] mbtk_iccid_get fail [err = %d].", ret);
xy.heb41615b2025-05-28 16:33:20 +0800440 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800441 }
442
443 return GSW_HAL_SUCCESS;
444}
445
446/**
447 * @brief get imsi function
448 * @param [in] len imsi length,max is 20
449 * @param [out] iccid return imsi from this func
450 * @retval 0: success
451 * @retval other: fail
452 */
453int gsw_get_sim_imsi(int len, char *imsi)
454{
455 int ret = -1;
456
q.huang238b22a2025-06-10 14:36:59 +0800457 if(sim_init_flag == 0 || sim_info_handle == NULL)
b.liu68a94c92025-05-24 12:53:41 +0800458 {
q.huang238b22a2025-06-10 14:36:59 +0800459 printf("sim sdk has been deinit\n");
xy.heb41615b2025-05-28 16:33:20 +0800460 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800461 }
462
463 if(imsi == NULL)
464 {
465 LOGE("imsi is NULL.");
xy.heb41615b2025-05-28 16:33:20 +0800466 return GSW_HAL_ARG_INVALID;
b.liu68a94c92025-05-24 12:53:41 +0800467 }
468
469 if(len < GSW_SIM_IMSI_LENGTH)
470 {
471 LOGE("imsi len is too short,len = %d\n", len);
xy.heb41615b2025-05-28 16:33:20 +0800472 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800473 }
474
475 ret = mbtk_imsi_get(sim_info_handle, (void *)imsi);
476 if(ret != MBTK_ERR_OK)
477 {
478 LOGE("[gsw_sim] mbtk_imsi_get fail [err = %d].", ret);
xy.heb41615b2025-05-28 16:33:20 +0800479 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800480 }
481
482 return GSW_HAL_SUCCESS;
483}
484
485/**
486 * @brief get sim msisdn function
487 * @param [in] len msisdn length,max is 20
488 * @param [out] msisdn msisdn length,max is 20
489 * @retval 0: success
490 * @retval other: fail
491 */
492int gsw_get_sim_msisdn(int len, char *msisdn)
493{
494 int ret = -1;
495
q.huang238b22a2025-06-10 14:36:59 +0800496 if(sim_init_flag == 0 || sim_info_handle == NULL)
b.liu68a94c92025-05-24 12:53:41 +0800497 {
498 printf("sim sdk has been deinit\n");
xy.heb41615b2025-05-28 16:33:20 +0800499 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800500 }
501
502 if(msisdn == NULL)
503 {
504 printf("msisdn is NULL.");
xy.heb41615b2025-05-28 16:33:20 +0800505 return GSW_HAL_ARG_INVALID;
b.liu68a94c92025-05-24 12:53:41 +0800506 }
507
508 if(len < GSW_SIM_MSISDN_LENGTH)
509 {
510 printf("msisdn len is too short,len = %d\n", len);
xy.heb41615b2025-05-28 16:33:20 +0800511 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800512 }
513
514 ret = mbtk_phone_number_get(sim_info_handle, (void *)msisdn);
515 if(ret != MBTK_ERR_OK)
516 {
517 LOGE("[gsw_sim] mbtk_phone_number_get fail [err = %d].", ret);
xy.heb41615b2025-05-28 16:33:20 +0800518 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800519 }
520
521 return GSW_HAL_SUCCESS;
522}
523
524/**
b.liu68a94c92025-05-24 12:53:41 +0800525 * @brief set sim power down
526 * @param
527 * @retval 0: success
528 * @retval other: fail
529 */
530int gsw_set_sim_power_down(void)
531{
532 int ret = -1;
q.huang238b22a2025-06-10 14:36:59 +0800533 if(sim_init_flag == 0 || sim_info_handle == NULL)
b.liu68a94c92025-05-24 12:53:41 +0800534 {
q.huang238b22a2025-06-10 14:36:59 +0800535 printf("sim sdk has been deinit\n");
xy.heb41615b2025-05-28 16:33:20 +0800536 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800537 }
538
yq.wangc81f7332025-06-10 14:10:55 +0800539 mbtk_modem_info_t info;
540 info.fun = MBTK_DEV_MODEM_DISABLE_SIM;
541 info.rst = 0;
542
543 ret = mbtk_set_modem_fun(sim_info_handle, &info);
544 if(ret)
b.liu68a94c92025-05-24 12:53:41 +0800545 {
yq.wangc81f7332025-06-10 14:10:55 +0800546 LOGE("mbtk_set_modem_fun() fail [err = %d].", ret);
xy.heb41615b2025-05-28 16:33:20 +0800547 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800548 }
yq.wangc81f7332025-06-10 14:10:55 +0800549
b.liu68a94c92025-05-24 12:53:41 +0800550 return GSW_HAL_SUCCESS;
551}
552
553
554
555/**
556 * @brief set sim power up
557 * @param
558 * @retval 0: success
559 * @retval other: fail
560 */
561int gsw_set_sim_power_up(void)
562{
563 int ret = -1;
q.huang238b22a2025-06-10 14:36:59 +0800564 if(sim_init_flag == 0 || sim_info_handle == NULL)
b.liu68a94c92025-05-24 12:53:41 +0800565 {
q.huang238b22a2025-06-10 14:36:59 +0800566 printf("sim sdk has been deinit\n");
xy.heb41615b2025-05-28 16:33:20 +0800567 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800568 }
569
yq.wangc81f7332025-06-10 14:10:55 +0800570 mbtk_modem_info_t info;
571 info.fun = MBTK_DEV_MODEM_FULL_FUN;
572 info.rst = 0;
573
574 ret = mbtk_set_modem_fun(sim_info_handle, &info);
575 if(ret)
b.liu68a94c92025-05-24 12:53:41 +0800576 {
yq.wangc81f7332025-06-10 14:10:55 +0800577 LOGE("mbtk_set_modem_fun() fail [err = %d].", ret);
xy.heb41615b2025-05-28 16:33:20 +0800578 return GSW_HAL_NORMAL_FAIL;
b.liu68a94c92025-05-24 12:53:41 +0800579 }
yq.wangc81f7332025-06-10 14:10:55 +0800580
b.liu68a94c92025-05-24 12:53:41 +0800581 return GSW_HAL_SUCCESS;
582}