hong.liu | d241707 | 2025-06-27 07:10:37 -0700 | [diff] [blame] | 1 | #include <stdbool.h>
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 2 | #include <unistd.h>
|
| 3 | #include <dlfcn.h>
|
| 4 | #include <time.h>
|
hong.liu | d241707 | 2025-06-27 07:10:37 -0700 | [diff] [blame] | 5 | #include "gsw_nw_interface.h"
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 6 | #include "gsw_log_interface.h"
|
| 7 |
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 8 |
|
| 9 | #define MBTK_BUFF_TEMP_SIZE_32 32
|
| 10 | #define MBTK_ERR_OK 0
|
| 11 | #define MBTK_ERR_FAIL -1
|
xf.li | 56b78fb | 2025-06-13 03:29:21 -0700 | [diff] [blame] | 12 | #define GSW_SIM_ICCID_LENGTH 15+1
|
| 13 | #define GSW_SIM_IMSI_LENGTH 15+1
|
| 14 | #define GSW_SIM_MSISDN_LENGTH 15+1
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 15 |
|
| 16 | //mbtk include
|
| 17 | typedef unsigned int uint32;
|
| 18 | typedef unsigned char uint8;
|
| 19 | typedef unsigned short uint16;
|
| 20 | typedef void (*mbtk_info_callback_func)(const void* data, int data_len);
|
| 21 | typedef struct
|
| 22 | {
|
| 23 | int client_fd;
|
| 24 | pthread_t read_thread_id;
|
| 25 | int exit_fd[2];
|
| 26 | bool is_waitting;
|
| 27 | pthread_cond_t cond;
|
| 28 | pthread_mutex_t mutex;
|
| 29 |
|
| 30 | pthread_mutex_t send_mutex;
|
| 31 |
|
| 32 | // Temp response data.
|
| 33 | uint16 info_err;
|
| 34 | uint16 data_len;
|
| 35 | void *data;
|
| 36 |
|
| 37 | //mbtk wyq for server_ready_status add start
|
| 38 | char server_ready_status;
|
| 39 | //mbtk wyq for server_ready_status add end
|
| 40 |
|
| 41 | mbtk_info_callback_func net_state_cb;
|
| 42 | mbtk_info_callback_func call_state_cb;
|
| 43 | mbtk_info_callback_func sms_state_cb;
|
| 44 | mbtk_info_callback_func radio_state_cb;
|
| 45 | mbtk_info_callback_func sim_state_cb;
|
| 46 | mbtk_info_callback_func pdp_state_cb;
|
| 47 | //add signal by xr
|
| 48 | mbtk_info_callback_func signal_state_cb;
|
| 49 | } mbtk_info_handle_t;
|
| 50 |
|
| 51 | typedef enum {
|
| 52 | MBTK_SIM_ABSENT = 0,
|
| 53 | MBTK_SIM_NOT_READY = 1,
|
| 54 | MBTK_SIM_READY = 2,
|
| 55 | MBTK_SIM_PIN = 3,
|
| 56 | MBTK_SIM_PUK = 4,
|
| 57 | MBTK_SIM_NETWORK_PERSONALIZATION = 5
|
| 58 | } mbtk_sim_state_enum;
|
| 59 |
|
| 60 | typedef enum
|
| 61 | {
|
| 62 | MBTK_DEV_MODEM_MIN_FUN, //Modem 最小功能
|
| 63 | MBTK_DEV_MODEM_FULL_FUN, //Modem 全功能
|
| 64 | MBTK_DEV_MODEM_DISABLE_RECEIVE_RF_CIRCUITS = 3, //Modem 禁用射频接收电路
|
| 65 | MBTK_DEV_MODEM_DISABLE_TRANSMIT_AND_RECEIVE_RF_CIRCUITS, //Modem禁用射频发射和接收电路
|
| 66 | MBTK_DEV_MODEM_DISABLE_SIM, //Modem 禁用(U)SIM 卡
|
| 67 | MBTK_DEV_MODEM_TURN_OFF_FULL_SECONDARY_RECEIVE, //Modem 完全禁用辅助接收
|
| 68 | }MBTK_DEV_MODEM_FUNCTION;
|
| 69 |
|
| 70 | typedef struct
|
| 71 | {
|
| 72 | MBTK_DEV_MODEM_FUNCTION fun;
|
| 73 | int rst;
|
| 74 | } mbtk_modem_info_t;
|
| 75 |
|
| 76 | //api
|
| 77 |
|
| 78 | static mbtk_info_handle_t* (*mbtk_info_handle_get)(void);
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 79 | #define lib_mbtk_path "/lib/libmbtk_lib.so"
|
| 80 |
|
| 81 | static int sim_init_flag = 0;
|
| 82 | mbtk_info_handle_t* sim_info_handle = NULL;
|
| 83 | static int (*mbtk_info_handle_free)(mbtk_info_handle_t** handle);
|
| 84 | int (*mbtk_sim_state_get)(mbtk_info_handle_t* handle, mbtk_sim_state_enum *sim_state);
|
| 85 | int (*mbtk_imsi_get)(mbtk_info_handle_t* handle, void *imsi);
|
| 86 | int (*mbtk_iccid_get)(mbtk_info_handle_t* handle, void *iccid);
|
| 87 | int (*mbtk_phone_number_get)(mbtk_info_handle_t* handle, void *phone_number);
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 88 | int (*mbtk_set_modem_fun)(mbtk_info_handle_t* handle, mbtk_modem_info_t *info);
|
| 89 | int (*mbtk_sim_power_set)(int power);
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 90 |
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 91 |
|
l.yang | 6a42e4d | 2025-05-28 01:04:20 -0700 | [diff] [blame] | 92 | #define GSW_SIM "[HAL][GSW_SIM]"
|
| 93 |
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 94 | static void *dlHandle_mbtk;
|
| 95 |
|
| 96 |
|
| 97 | static int gsw_sim_api_import()
|
| 98 | {
|
| 99 | dlHandle_mbtk = dlopen(lib_mbtk_path, RTLD_NOW);
|
| 100 | if (dlHandle_mbtk == NULL)
|
| 101 | {
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 102 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 103 | }
|
| 104 |
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 105 | mbtk_info_handle_get = (mbtk_info_handle_t* (*)(void))dlsym(dlHandle_mbtk, "mbtk_info_handle_get");
|
| 106 | if (mbtk_info_handle_get == NULL)
|
| 107 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 108 | LOGE(GSW_SIM,"mbtk_info_handle_get dlsym fail\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 109 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 110 | }
|
| 111 |
|
| 112 | mbtk_info_handle_free = (int (*)(mbtk_info_handle_t** handle))dlsym(dlHandle_mbtk, "mbtk_info_handle_free");
|
| 113 | if (mbtk_info_handle_free == NULL)
|
| 114 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 115 | LOGE(GSW_SIM,"mbtk_info_handle_free dlsym fail\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 116 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 117 | }
|
| 118 |
|
| 119 | mbtk_imsi_get = (int (*)(mbtk_info_handle_t* handle, void *imsi))dlsym(dlHandle_mbtk, "mbtk_imsi_get");
|
| 120 | if (mbtk_imsi_get == NULL)
|
| 121 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 122 | LOGE(GSW_SIM,"mbtk_imsi_get dlsym fail\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 123 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 124 | }
|
| 125 |
|
| 126 | mbtk_iccid_get = (int (*)(mbtk_info_handle_t* handle, void *iccid))dlsym(dlHandle_mbtk, "mbtk_iccid_get");
|
| 127 | if (mbtk_iccid_get == NULL)
|
| 128 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 129 | LOGE(GSW_SIM,"mbtk_iccid_get dlsym fail\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 130 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 131 | }
|
| 132 |
|
| 133 | mbtk_phone_number_get = (int (*)(mbtk_info_handle_t* handle, void *phone_number))dlsym(dlHandle_mbtk, "mbtk_phone_number_get");
|
| 134 | if (mbtk_phone_number_get == NULL)
|
| 135 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 136 | LOGE(GSW_SIM,"mbtk_phone_number_get dlsym fail\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 137 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 138 | }
|
| 139 |
|
q.huang | 238b22a | 2025-06-10 14:36:59 +0800 | [diff] [blame] | 140 |
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 141 | mbtk_sim_state_get = (int (*)(mbtk_info_handle_t* handle, mbtk_sim_state_enum *sim_state))dlsym(dlHandle_mbtk, "mbtk_sim_state_get");
|
| 142 | if (mbtk_sim_state_get == NULL)
|
| 143 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 144 | LOGE(GSW_SIM,"mbtk_sim_state_get dlsym fail\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 145 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 146 | }
|
| 147 |
|
| 148 | mbtk_set_modem_fun = (int (*)(mbtk_info_handle_t* handle, mbtk_modem_info_t *info))dlsym(dlHandle_mbtk, "mbtk_set_modem_fun");
|
| 149 | if (mbtk_set_modem_fun == NULL)
|
| 150 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 151 | LOGE(GSW_SIM,"mbtk_set_modem_fun dlsym fail\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 152 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 153 | }
|
| 154 |
|
| 155 | mbtk_sim_power_set = (int (*)(int power))dlsym(dlHandle_mbtk, "mbtk_sim_power_set");
|
| 156 | if (mbtk_sim_power_set == NULL)
|
| 157 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 158 | LOGE(GSW_SIM,"mbtk_sim_power_set dlsym fail\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 159 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 160 | }
|
| 161 |
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 162 | LOGD(GSW_SIM,"gsw_sim_api_import end\n");
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 163 | return GSW_HAL_SUCCESS;
|
| 164 | }
|
| 165 |
|
| 166 | /**
|
| 167 | * @brief sim sdk init
|
| 168 | * @param [in] token usr id define by who use
|
| 169 | * @retval 0: success
|
| 170 | * @retval other: fail
|
| 171 | */
|
| 172 | int gsw_sim_sdk_init(int32_t token)
|
| 173 | {
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 174 | int ret = GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 175 |
|
| 176 | if(sim_init_flag == 1 && sim_info_handle != NULL)
|
| 177 | {
|
| 178 | return GSW_HAL_SUCCESS;
|
| 179 | }
|
| 180 |
|
| 181 | ret = gsw_sim_api_import();
|
| 182 | if(ret != GSW_HAL_SUCCESS)
|
| 183 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 184 | LOGE(GSW_SIM,"gsw_sim_import fail\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 185 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 186 | }
|
| 187 |
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 188 | sim_info_handle = mbtk_info_handle_get();
|
| 189 | if(sim_info_handle == NULL)
|
| 190 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 191 | LOGE(GSW_SIM,"mbtk_info_handle_get fail\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 192 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 193 | }
|
| 194 |
|
| 195 | sim_init_flag = 1;
|
| 196 | return GSW_HAL_SUCCESS;
|
| 197 | }
|
| 198 |
|
| 199 |
|
| 200 | /**
|
| 201 | * @brief sim sdk deinit
|
| 202 | * @param
|
| 203 | * @retval 0: success
|
| 204 | * @retval other: fail
|
| 205 | */
|
| 206 | int gsw_sim_sdk_deinit(void)
|
| 207 | {
|
| 208 | int ret = -1;
|
| 209 |
|
q.huang | 238b22a | 2025-06-10 14:36:59 +0800 | [diff] [blame] | 210 | if(sim_init_flag == 0 || sim_info_handle == NULL)
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 211 | {
|
q.huang | 238b22a | 2025-06-10 14:36:59 +0800 | [diff] [blame] | 212 | printf("sim sdk has been deinit\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 213 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 214 | }
|
| 215 |
|
| 216 | ret = mbtk_info_handle_free(&sim_info_handle);
|
| 217 | if(ret != GSW_HAL_SUCCESS)
|
| 218 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 219 | LOGE(GSW_SIM,"mbtk_info_handle_free fail\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 220 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 221 | }
|
| 222 |
|
| 223 | sim_init_flag = 0;
|
| 224 | sim_info_handle = NULL;
|
| 225 | dlclose(dlHandle_mbtk);
|
| 226 |
|
| 227 | return GSW_HAL_SUCCESS;
|
| 228 |
|
| 229 | }
|
| 230 |
|
| 231 |
|
| 232 | /**
|
| 233 | * @brief get sim state
|
| 234 | * @param [out] sim_state sim status as sim_status_e_type
|
| 235 | * @retval 0: success
|
| 236 | * @retval other: fail
|
| 237 | */
|
| 238 | int gsw_get_sim_status(int *sim_state)
|
| 239 | {
|
q.huang | 238b22a | 2025-06-10 14:36:59 +0800 | [diff] [blame] | 240 | printf("gsw_get_sim_status enter\n");
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 241 | int ret = -1;
|
| 242 |
|
q.huang | 238b22a | 2025-06-10 14:36:59 +0800 | [diff] [blame] | 243 | if(sim_init_flag == 0 || sim_info_handle == NULL)
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 244 | {
|
q.huang | 238b22a | 2025-06-10 14:36:59 +0800 | [diff] [blame] | 245 | printf("sim sdk has been deinit\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 246 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 247 | }
|
| 248 |
|
| 249 | mbtk_sim_state_enum sim = MBTK_SIM_ABSENT;
|
| 250 |
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 251 | LOGD(GSW_SIM,"mbtk_get_sim_status start\n");
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 252 | ret = mbtk_sim_state_get(sim_info_handle, &sim);
|
| 253 | if(ret)
|
| 254 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 255 | LOGE(GSW_SIM,"[gsw_get_sim_status] mbtk_sim_state_get fail [err = %d].", ret);
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 256 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 257 | }
|
| 258 |
|
| 259 | else
|
| 260 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 261 | LOGD(GSW_SIM,"[gsw_get_sim_status] sim = %d\n", sim);
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 262 | switch (sim)
|
| 263 | {
|
| 264 | case MBTK_SIM_ABSENT:
|
| 265 | {
|
| 266 | *sim_state = SIM_STATUS_ABSENT;
|
| 267 | break;
|
| 268 | }
|
| 269 | case MBTK_SIM_NOT_READY:
|
| 270 | {
|
q.huang | ba7f39c | 2025-06-06 18:44:46 +0800 | [diff] [blame] | 271 | *sim_state = SIM_STATUS_ERROR;// not SIM_STATUS_PRESENT, changed for gsw requirement, hq at 250606
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 272 | break;
|
| 273 | }
|
| 274 |
|
| 275 | case MBTK_SIM_READY:
|
| 276 | {
|
q.huang | ba7f39c | 2025-06-06 18:44:46 +0800 | [diff] [blame] | 277 | *sim_state = SIM_STATUS_PRESENT;// not SIM_STATUS_READY, changed for gsw requirement, hq at 250606
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 278 | break;
|
| 279 | }
|
| 280 |
|
| 281 | case MBTK_SIM_PIN:
|
| 282 | {
|
| 283 | *sim_state = SIM_STATUS_PIN;
|
| 284 | break;
|
| 285 | }
|
| 286 |
|
| 287 | case MBTK_SIM_PUK:
|
| 288 | {
|
| 289 | break;
|
| 290 | }
|
| 291 |
|
| 292 | case MBTK_SIM_NETWORK_PERSONALIZATION:
|
| 293 | {
|
| 294 | break;
|
| 295 | }
|
| 296 |
|
| 297 | }
|
| 298 | }
|
| 299 |
|
| 300 | return GSW_HAL_SUCCESS;
|
| 301 | }
|
| 302 |
|
| 303 | /**
|
| 304 | * @brief get iccid function
|
| 305 | * @param [in] len iccid length,max is 20
|
| 306 | * @param [out] iccid return iccid from this func
|
| 307 | * @retval 0: success
|
| 308 | * @retval other: fail
|
| 309 | */
|
| 310 | int gsw_get_sim_iccid(int len, char *iccid)
|
| 311 | {
|
| 312 | int ret = -1;
|
| 313 |
|
q.huang | 238b22a | 2025-06-10 14:36:59 +0800 | [diff] [blame] | 314 | if(sim_init_flag == 0 || sim_info_handle == NULL)
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 315 | {
|
q.huang | 238b22a | 2025-06-10 14:36:59 +0800 | [diff] [blame] | 316 | printf("sim sdk has been deinit\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 317 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 318 | }
|
| 319 |
|
| 320 | if(iccid == NULL)
|
| 321 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 322 | LOGE(GSW_SIM,"iccid is NULL.");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 323 | return GSW_HAL_ARG_INVALID;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 324 | }
|
| 325 |
|
| 326 | if(len < GSW_SIM_ICCID_LENGTH)
|
| 327 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 328 | LOGE(GSW_SIM,"iccid len is too short,len = %d\n", len);
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 329 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 330 | }
|
| 331 |
|
| 332 | ret = mbtk_iccid_get(sim_info_handle, (void *)iccid);
|
| 333 | if(ret != MBTK_ERR_OK)
|
| 334 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 335 | LOGE(GSW_SIM,"[gsw_sim] mbtk_iccid_get fail [err = %d].", ret);
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 336 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 337 | }
|
| 338 |
|
| 339 | return GSW_HAL_SUCCESS;
|
| 340 | }
|
| 341 |
|
| 342 | /**
|
| 343 | * @brief get imsi function
|
| 344 | * @param [in] len imsi length,max is 20
|
| 345 | * @param [out] iccid return imsi from this func
|
| 346 | * @retval 0: success
|
| 347 | * @retval other: fail
|
| 348 | */
|
| 349 | int gsw_get_sim_imsi(int len, char *imsi)
|
| 350 | {
|
| 351 | int ret = -1;
|
| 352 |
|
q.huang | 238b22a | 2025-06-10 14:36:59 +0800 | [diff] [blame] | 353 | if(sim_init_flag == 0 || sim_info_handle == NULL)
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 354 | {
|
q.huang | 238b22a | 2025-06-10 14:36:59 +0800 | [diff] [blame] | 355 | printf("sim sdk has been deinit\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 356 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 357 | }
|
| 358 |
|
| 359 | if(imsi == NULL)
|
| 360 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 361 | LOGE(GSW_SIM,"imsi is NULL.");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 362 | return GSW_HAL_ARG_INVALID;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 363 | }
|
| 364 |
|
| 365 | if(len < GSW_SIM_IMSI_LENGTH)
|
| 366 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 367 | LOGE(GSW_SIM,"imsi len is too short,len = %d\n", len);
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 368 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 369 | }
|
| 370 |
|
| 371 | ret = mbtk_imsi_get(sim_info_handle, (void *)imsi);
|
| 372 | if(ret != MBTK_ERR_OK)
|
| 373 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 374 | LOGE(GSW_SIM,"[gsw_sim] mbtk_imsi_get fail [err = %d].", ret);
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 375 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 376 | }
|
| 377 |
|
| 378 | return GSW_HAL_SUCCESS;
|
| 379 | }
|
| 380 |
|
| 381 | /**
|
| 382 | * @brief get sim msisdn function
|
| 383 | * @param [in] len msisdn length,max is 20
|
| 384 | * @param [out] msisdn msisdn length,max is 20
|
| 385 | * @retval 0: success
|
| 386 | * @retval other: fail
|
| 387 | */
|
| 388 | int gsw_get_sim_msisdn(int len, char *msisdn)
|
| 389 | {
|
| 390 | int ret = -1;
|
| 391 |
|
q.huang | 238b22a | 2025-06-10 14:36:59 +0800 | [diff] [blame] | 392 | if(sim_init_flag == 0 || sim_info_handle == NULL)
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 393 | {
|
| 394 | printf("sim sdk has been deinit\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 395 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 396 | }
|
| 397 |
|
| 398 | if(msisdn == NULL)
|
| 399 | {
|
| 400 | printf("msisdn is NULL.");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 401 | return GSW_HAL_ARG_INVALID;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 402 | }
|
| 403 |
|
| 404 | if(len < GSW_SIM_MSISDN_LENGTH)
|
| 405 | {
|
| 406 | printf("msisdn len is too short,len = %d\n", len);
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 407 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 408 | }
|
| 409 |
|
| 410 | ret = mbtk_phone_number_get(sim_info_handle, (void *)msisdn);
|
| 411 | if(ret != MBTK_ERR_OK)
|
| 412 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 413 | LOGE(GSW_SIM,"[gsw_sim] mbtk_phone_number_get fail [err = %d].", ret);
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 414 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 415 | }
|
| 416 |
|
| 417 | return GSW_HAL_SUCCESS;
|
| 418 | }
|
| 419 |
|
| 420 | /**
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 421 | * @brief set sim power down
|
| 422 | * @param
|
| 423 | * @retval 0: success
|
| 424 | * @retval other: fail
|
| 425 | */
|
| 426 | int gsw_set_sim_power_down(void)
|
| 427 | {
|
| 428 | int ret = -1;
|
q.huang | 238b22a | 2025-06-10 14:36:59 +0800 | [diff] [blame] | 429 | if(sim_init_flag == 0 || sim_info_handle == NULL)
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 430 | {
|
q.huang | 238b22a | 2025-06-10 14:36:59 +0800 | [diff] [blame] | 431 | printf("sim sdk has been deinit\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 432 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 433 | }
|
| 434 |
|
yq.wang | c81f733 | 2025-06-10 14:10:55 +0800 | [diff] [blame] | 435 | mbtk_modem_info_t info;
|
| 436 | info.fun = MBTK_DEV_MODEM_DISABLE_SIM;
|
| 437 | info.rst = 0;
|
| 438 |
|
| 439 | ret = mbtk_set_modem_fun(sim_info_handle, &info);
|
| 440 | if(ret)
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 441 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 442 | LOGE(GSW_SIM,"mbtk_set_modem_fun() fail [err = %d].", ret);
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 443 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 444 | }
|
yq.wang | c81f733 | 2025-06-10 14:10:55 +0800 | [diff] [blame] | 445 |
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 446 | return GSW_HAL_SUCCESS;
|
| 447 | }
|
| 448 |
|
| 449 |
|
| 450 |
|
| 451 | /**
|
| 452 | * @brief set sim power up
|
| 453 | * @param
|
| 454 | * @retval 0: success
|
| 455 | * @retval other: fail
|
| 456 | */
|
| 457 | int gsw_set_sim_power_up(void)
|
| 458 | {
|
| 459 | int ret = -1;
|
q.huang | 238b22a | 2025-06-10 14:36:59 +0800 | [diff] [blame] | 460 | if(sim_init_flag == 0 || sim_info_handle == NULL)
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 461 | {
|
q.huang | 238b22a | 2025-06-10 14:36:59 +0800 | [diff] [blame] | 462 | printf("sim sdk has been deinit\n");
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 463 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 464 | }
|
| 465 |
|
yq.wang | c81f733 | 2025-06-10 14:10:55 +0800 | [diff] [blame] | 466 | mbtk_modem_info_t info;
|
| 467 | info.fun = MBTK_DEV_MODEM_FULL_FUN;
|
| 468 | info.rst = 0;
|
| 469 |
|
| 470 | ret = mbtk_set_modem_fun(sim_info_handle, &info);
|
| 471 | if(ret)
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 472 | {
|
q.huang | 6e4f473 | 2025-07-22 18:46:32 +0800 | [diff] [blame^] | 473 | LOGE(GSW_SIM,"mbtk_set_modem_fun() fail [err = %d].", ret);
|
xy.he | b41615b | 2025-05-28 16:33:20 +0800 | [diff] [blame] | 474 | return GSW_HAL_NORMAL_FAIL;
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 475 | }
|
yq.wang | c81f733 | 2025-06-10 14:10:55 +0800 | [diff] [blame] | 476 |
|
b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame] | 477 | return GSW_HAL_SUCCESS;
|
| 478 | }
|