blob: 519d21a0df3933bea9abbc36a7f0deb1c9d227cd [file] [log] [blame]
b.liu4e243dc2023-11-27 11:20:00 +08001#include "lynq_qser_sms.h"
2#include "mbtk_type.h"
r.xiaodac82562023-12-07 18:22:32 -08003#include "mbtk_pdu_sms.h"
4#include "mbtk_info_api.h"
5#include "lynq_sms.h"
r.xiaoba8483c2024-04-14 18:53:10 -07006#include "mbtk_log.h"
b.liu5fa9e772023-11-23 18:00:55 +08007
r.xiaodac82562023-12-07 18:22:32 -08008
9#include <stdio.h>
10#include <stdlib.h>
11
12
13#define TELEPHONE_NUM_MAX 16
14#define MSM_NUMBER_MAX 1024+1
15#define RES_NUM_MIN 128
16
17
18#define DSC_to_msg(DSC) (DSC == 0 ? "Bit7" : (DSC == 1 ? "Bit8" : "UCS2"))
19
20static mbtk_info_handle_t* sms_info_handle = NULL;
21static char sms_center_address[128] = {0};
22
r.xiaoefee0062023-12-29 19:35:43 -080023typedef struct
24{
25 QSER_SMS_RxMsgHandlerFunc_t handlerPtr;
26 void* contextPtr;
27} lynq_sms_cb_func;
28
29static lynq_sms_cb_func lynq_sms_func_cb_handle;
30
31sms_client_handle_type g_sms_val = -1;
32
r.xiaodac82562023-12-07 18:22:32 -080033
34void lynq_sms_state_change_cb(const void* data, int data_len)
35{
36 LOGV("sms_state_change_cb()----------start\n");
37 uint8 *ptr = (uint8*)data;
r.xiaoefee0062023-12-29 19:35:43 -080038 //printf("3sms_state_change_cb() : %s\n", ptr);
39
40 if (!strncmp("+CMT:", ptr, 5))//丢弃无用消息
41 return ;
r.xiaodac82562023-12-07 18:22:32 -080042
43 struct SMS_Struct s = PDUDecoding(ptr);
r.xiaoefee0062023-12-29 19:35:43 -080044 /*
r.xiaodac82562023-12-07 18:22:32 -080045 printf("服务中心地址: %s\n", s.SCA);
46 printf("发送方地址: %s\n", s.OA);
47 printf("服务中心时间戳: %s\n", s.SCTS);
48 printf("消息内容: %s\n", s.UD);
49 printf("数据编码方案: %s\n", DSC_to_msg(s.DCS));
r.xiaoefee0062023-12-29 19:35:43 -080050 */
51 QSER_SMS_Msg_t* tmp_data = NULL;
52
53 tmp_data = (QSER_SMS_Msg_t*)malloc(sizeof(QSER_SMS_Msg_t));
54 memset(tmp_data,0x00, sizeof(QSER_SMS_Msg_t));
55
56 tmp_data->format = s.DCS;
57 //printf("t数据编码方案: %d\n", tmp_data->format);
58 memcpy(tmp_data->src_addr, s.OA, strlen(s.OA));
59 //printf("t发送方地址: %s\n", tmp_data->src_addr);
60 memcpy(tmp_data->timestamp, s.SCTS, strlen(s.SCTS));
61 //printf("t服务中心时间戳: %s\n", tmp_data->timestamp);
62 tmp_data->sms_data_len = strlen(s.UD);
63 //printf("t消息内容长度: %d\n", tmp_data->sms_data_len);
64 memcpy(tmp_data->sms_data, s.UD, strlen(s.UD));
65 //printf("t消息内容: %s\n", tmp_data->sms_data);
66
67 lynq_sms_func_cb_handle.handlerPtr(tmp_data, NULL);
68
69 free(tmp_data);
70
r.xiaodac82562023-12-07 18:22:32 -080071}
72
73
74int qser_sms_client_init(sms_client_handle_type *ph_sms)//out
b.liu5fa9e772023-11-23 18:00:55 +080075{
r.xiaoefee0062023-12-29 19:35:43 -080076 //UNUSED(ph_sms);
b.liu5fa9e772023-11-23 18:00:55 +080077
r.xiaodac82562023-12-07 18:22:32 -080078 if(sms_info_handle == NULL)
79 {
80 sms_info_handle = mbtk_info_handle_get();
81 if(sms_info_handle)
82 {
r.xiaoeb9dba42024-02-07 02:16:13 -080083 LOGI("creat sms_info_handle is success");
r.xiaoefee0062023-12-29 19:35:43 -080084 *ph_sms = sms_info_handle->client_fd;
85 g_sms_val = sms_info_handle->client_fd;
r.xiaodac82562023-12-07 18:22:32 -080086 }
87 else
88 {
r.xiaoeb9dba42024-02-07 02:16:13 -080089 LOGE("creat sms_info_handle is fail");
r.xiaoefee0062023-12-29 19:35:43 -080090 return -1;
r.xiaodac82562023-12-07 18:22:32 -080091 }
92 }
93
r.xiaoefee0062023-12-29 19:35:43 -080094 return 0;
b.liu5fa9e772023-11-23 18:00:55 +080095}
96
r.xiaodac82562023-12-07 18:22:32 -080097int qser_sms_client_deinit(sms_client_handle_type h_sms)//in
b.liu5fa9e772023-11-23 18:00:55 +080098{
r.xiaoefee0062023-12-29 19:35:43 -080099 //UNUSED(h_sms);
100 if (h_sms != g_sms_val || g_sms_val == -1)
101 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800102 LOGE("handle NULL\n");
r.xiaoefee0062023-12-29 19:35:43 -0800103 return -1;
104 }
105
r.xiaodac82562023-12-07 18:22:32 -0800106 if(sms_info_handle)
107 {
r.xiaoefee0062023-12-29 19:35:43 -0800108 mbtk_info_handle_free(&sms_info_handle);
r.xiaoeb9dba42024-02-07 02:16:13 -0800109 LOGI("deinit sms_info_handle is succuess");
r.xiaodac82562023-12-07 18:22:32 -0800110 }
111 else
112 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800113 LOGE("deinit sms_info_handle is fail");
r.xiaoefee0062023-12-29 19:35:43 -0800114 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800115 }
116
r.xiaoefee0062023-12-29 19:35:43 -0800117 return 0;
b.liu5fa9e772023-11-23 18:00:55 +0800118}
119
r.xiaodac82562023-12-07 18:22:32 -0800120int qser_sms_send_sms(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info)//in in 发送短信的内容、目的号码
b.liu5fa9e772023-11-23 18:00:55 +0800121{
r.xiaoefee0062023-12-29 19:35:43 -0800122 //UNUSED(h_sms);
r.xiaodac82562023-12-07 18:22:32 -0800123 //UNUSED(pt_sms_info);
r.xiaoefee0062023-12-29 19:35:43 -0800124 if (h_sms != g_sms_val || g_sms_val == -1)
125 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800126 LOGE("handle NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800127 return -1;
128 }
129
r.xiaoefee0062023-12-29 19:35:43 -0800130 if (pt_sms_info == NULL)
131 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800132 LOGE("QSER_sms_info_t NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800133 return -1;
134 }
b.liu5fa9e772023-11-23 18:00:55 +0800135
r.xiaodac82562023-12-07 18:22:32 -0800136 if(sms_info_handle == NULL)
137 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800138 LOGE("qser_sms_send_sms sms_info_handle NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800139 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800140 }
141
r.xiaoefee0062023-12-29 19:35:43 -0800142 uint8_t *phone_num = NULL, *data = NULL;
143
r.xiaodac82562023-12-07 18:22:32 -0800144 char cmgs[MSM_NUMBER_MAX] = {0};
145 char resp[RES_NUM_MIN] = {0};
146 char pdu_data[512] = {0};
147 char phone_lenth[10] = {0};
r.xiaoe73f8702024-01-06 01:40:03 -0800148 char mem[10] = {0};
r.xiaodac82562023-12-07 18:22:32 -0800149 char *p = pdu_data;
150 int mode = 0;
151 int err = 0;
152 int i = 0;
153
154 data = pt_sms_info->sms_data;
155
156 phone_num = pt_sms_info->src_addr;
157
158 if (pt_sms_info->format == 0)//7
159 mode = 1;
160 else if (pt_sms_info->format == 1)//8
161 return SMS_ERR;
162 else if (pt_sms_info->format == 2)//USC2
163 mode = 0;
164 else
r.xiaoefee0062023-12-29 19:35:43 -0800165 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800166
r.xiaoe73f8702024-01-06 01:40:03 -0800167 //设置存储器
r.xiaod3256ae2024-02-28 23:20:55 -0800168/*
r.xiaoe73f8702024-01-06 01:40:03 -0800169 if (pt_sms_info->storage == 0)
170 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800171 strcpy(mem, "SM");
r.xiaoe73f8702024-01-06 01:40:03 -0800172 }
173 else if (pt_sms_info->storage == 1)
174 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800175 strcpy(mem, "ME");
r.xiaoe73f8702024-01-06 01:40:03 -0800176 }
177 else
178 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800179 LOGE("qser_sms_deletefromstorage storage is no Support");
r.xiaoec113d12024-01-12 02:13:28 -0800180 return -1;
r.xiaoe73f8702024-01-06 01:40:03 -0800181 }
182
183 memset(resp, 0, sizeof(resp));
184 err = mbtk_sms_cpms_set(sms_info_handle, mem, resp);
185 if(err) {
r.xiaoeb9dba42024-02-07 02:16:13 -0800186 LOGE("Error : %d", err);
r.xiaoe73f8702024-01-06 01:40:03 -0800187 } else {
r.xiaoeb9dba42024-02-07 02:16:13 -0800188 LOGI("cpms set success. resp:%s", resp);
r.xiaoe73f8702024-01-06 01:40:03 -0800189 }
r.xiaod3256ae2024-02-28 23:20:55 -0800190*/
r.xiaodac82562023-12-07 18:22:32 -0800191 if(data == NULL)
192 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800193 LOGE("qser_sms_send_sms data NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800194 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800195 }
196
197 if(phone_num == NULL)
198 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800199 LOGE("qser_sms_send_sms phone_num NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800200 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800201 }
202
r.xiaoefee0062023-12-29 19:35:43 -0800203 if(strlen(data) > 512 || strlen(data) == 0 || strlen(phone_num) == 0)
r.xiaodac82562023-12-07 18:22:32 -0800204 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800205 LOGE("strlen(telephony_num):%d", strlen(phone_num));
206 LOGE("strlen(msg):%d", strlen(data));
r.xiaoefee0062023-12-29 19:35:43 -0800207 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800208 }
209
r.xiaodac82562023-12-07 18:22:32 -0800210 if (mode == 0)// PDU
211 {
212#if 1
213 if (sms_center_address[0] == '\0')
214 {
215 memset(sms_center_address, 0, sizeof(sms_center_address));
216 memcpy(sms_center_address, "+8613800280500", strlen("+8613800280500"));
217 }
218
r.xiaoec113d12024-01-12 02:13:28 -0800219 //printf("phone_num:%s\n", phone_num);
220 //printf("sms_center_address:%s\n", sms_center_address);
221 //printf("data:%s\n", data);
r.xiaodac82562023-12-07 18:22:32 -0800222
223 char* pdu = NULL;
224 char* smsc = SCAEncoding(sms_center_address);
225 struct PDUS *pdus = PDUEncoding(sms_center_address,phone_num, data, NULL);
226
227 for (i = 0; i < pdus->count; i++)
228 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800229 LOGI("第 %d 条:", i + 1);
230 LOGI("%s\n", pdus->PDU[i]);
r.xiaodac82562023-12-07 18:22:32 -0800231 pdu = pdus->PDU[i];
232 }
233
234 sprintf(p, "%s",smsc);
r.xiaoeb9dba42024-02-07 02:16:13 -0800235 LOGI("pdu_data:%s", pdu_data);
r.xiaodac82562023-12-07 18:22:32 -0800236 sprintf(p+strlen(p), "%s", pdu);
r.xiaoeb9dba42024-02-07 02:16:13 -0800237 LOGI("pdu_data:%s",pdu_data);
r.xiaodac82562023-12-07 18:22:32 -0800238
239 //sprintf(cmgs,"%d,%s",strlen(pdu_data), pdu_data);
240 int t = strlen(pdu_data);
241 sprintf(cmgs,"%d,%s",(t-18)/2, pdu_data);
r.xiaoeb9dba42024-02-07 02:16:13 -0800242 LOGI("cmgs:%s", cmgs);
r.xiaodac82562023-12-07 18:22:32 -0800243#else
244 char *tmp_t = "0891683108200805F011000D91688189914026F3000800044F60597D";
245 sprintf(cmgs,"%d,%s",19,tmp_t);
246 printf("cmgs:%s\n", cmgs);
247#endif
248
249 memset(resp, 0, sizeof(resp));
250
251 err = mbtk_sms_cmgf_set(sms_info_handle, mode);
252 if(err)
253 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800254 LOGE("cmgf set error : %d", err);
r.xiaodac82562023-12-07 18:22:32 -0800255 }
256 else
257 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800258 LOGI("cmgf set success");
r.xiaodac82562023-12-07 18:22:32 -0800259 }
260
261 err = mbtk_sms_cmgs_set(sms_info_handle, cmgs, resp);
262 if(err)
263 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800264 LOGE("Error : %d", err);
r.xiaoefee0062023-12-29 19:35:43 -0800265 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800266 }
267 else
268 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800269 LOGI("cmgs set success . resp:%s", resp);
r.xiaodac82562023-12-07 18:22:32 -0800270 }
271 }
272 else if (mode == 1) // text
273 {
274 err = mbtk_sms_cmgf_set(sms_info_handle, mode);
275 if(err)
276 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800277 LOGE("cmgf set error : %d", err);
r.xiaodac82562023-12-07 18:22:32 -0800278 }
279 else
280 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800281 LOGI("cmgf set success");
r.xiaodac82562023-12-07 18:22:32 -0800282 }
283
284 sprintf(cmgs,"%s,%s", phone_num, data);
r.xiaoeb9dba42024-02-07 02:16:13 -0800285 LOGI("cmgs:%s", cmgs);
r.xiaodac82562023-12-07 18:22:32 -0800286
287 memset(resp, 0, sizeof(resp));
288
289 err = mbtk_sms_cmgs_set(sms_info_handle, cmgs, resp);
290 if(err)
291 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800292 LOGE("Error : %d", err);
r.xiaoefee0062023-12-29 19:35:43 -0800293 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800294 }
295 else
296 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800297 LOGI("cmgs set success . resp:%s", resp);
r.xiaodac82562023-12-07 18:22:32 -0800298 }
299 }
300 else
301 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800302 LOGE("Error : mode");
r.xiaoefee0062023-12-29 19:35:43 -0800303 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800304 }
r.xiaoefee0062023-12-29 19:35:43 -0800305
306 return 0;
b.liu5fa9e772023-11-23 18:00:55 +0800307}
308
r.xiaodac82562023-12-07 18:22:32 -0800309//注册接收新短信
310int qser_sms_addrxmsghandler(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr)//in sms电话状态回调函数 in 主要是获取 上报 的内容
b.liu5fa9e772023-11-23 18:00:55 +0800311{
r.xiaoefee0062023-12-29 19:35:43 -0800312 //UNUSED(handlerPtr);
313 //UNUSED(contextPtr);
b.liu5fa9e772023-11-23 18:00:55 +0800314
r.xiaodac82562023-12-07 18:22:32 -0800315 if(sms_info_handle == NULL)
316 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800317 LOGE("qser_sms_addrxmsghandler sms_info_handle NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800318 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800319 }
320
321 int err = mbtk_sms_cnmi_set(sms_info_handle);
322 if(err)
323 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800324 LOGE("set cnmi fail");
r.xiaoefee0062023-12-29 19:35:43 -0800325 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800326 }
327
r.xiaoefee0062023-12-29 19:35:43 -0800328 lynq_sms_func_cb_handle.handlerPtr = handlerPtr;
329 lynq_sms_func_cb_handle.contextPtr = contextPtr;
330
r.xiaodac82562023-12-07 18:22:32 -0800331 mbtk_sms_state_change_cb_reg(sms_info_handle, lynq_sms_state_change_cb);
332
r.xiaoefee0062023-12-29 19:35:43 -0800333 return 0;
b.liu5fa9e772023-11-23 18:00:55 +0800334}
335
r.xiaodac82562023-12-07 18:22:32 -0800336//删除短信
337int qser_sms_deletefromstorage(sms_client_handle_type h_sms, QSER_sms_storage_info_t *pt_sms_storage)//in in 删除短信的信息
b.liu5fa9e772023-11-23 18:00:55 +0800338{
r.xiaoefee0062023-12-29 19:35:43 -0800339 //UNUSED(h_sms);
r.xiaodac82562023-12-07 18:22:32 -0800340 //UNUSED(pt_sms_storage);
341 char cmgd[128] = {0};
342 int err = 0;
343 int id_x = -1;
r.xiaoe73f8702024-01-06 01:40:03 -0800344 int t_storage = 0;
345 char mem[10] = {0};
346 char resp[RES_NUM_MIN] = {0};
b.liu5fa9e772023-11-23 18:00:55 +0800347
r.xiaoefee0062023-12-29 19:35:43 -0800348 if (h_sms != g_sms_val || g_sms_val == -1)
r.xiaodac82562023-12-07 18:22:32 -0800349 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800350 LOGE("handle NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800351 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800352 }
353
354 if(pt_sms_storage == NULL)
355 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800356 LOGE("qser_sms_deletefromstorage pt_sms_storage NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800357 return -1;
358 }
359
360 if(sms_info_handle == NULL)
361 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800362 LOGE("qser_sms_deletefromstorage sms_info_handle NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800363 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800364 }
r.xiaod3256ae2024-02-28 23:20:55 -0800365/*
r.xiaoe73f8702024-01-06 01:40:03 -0800366 t_storage = pt_sms_storage->storage; //设置存储器
367
368 if (t_storage == 0)
369 {
370 strncpy(mem, "SM", 2);
371 }
372 else if (t_storage == 1)
373 {
374 strncpy(mem, "ME", 2);
375 }
376 else
377 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800378 LOGE("qser_sms_deletefromstorage storage is no Support");
r.xiaoec113d12024-01-12 02:13:28 -0800379 return -1;
r.xiaoe73f8702024-01-06 01:40:03 -0800380 }
381
382 memset(resp, 0, sizeof(resp));
383 err = mbtk_sms_cpms_set(sms_info_handle, mem, resp);
384 if(err) {
r.xiaoeb9dba42024-02-07 02:16:13 -0800385 LOGE("Error : %d", err);
r.xiaoe73f8702024-01-06 01:40:03 -0800386 } else {
r.xiaoeb9dba42024-02-07 02:16:13 -0800387 LOGI("cpms set success. resp:%s", resp);
r.xiaoe73f8702024-01-06 01:40:03 -0800388 }
r.xiaod3256ae2024-02-28 23:20:55 -0800389*/
r.xiaoe73f8702024-01-06 01:40:03 -0800390
r.xiaodac82562023-12-07 18:22:32 -0800391 id_x = pt_sms_storage->storage_idx;//获取idx的值
392
393 if(id_x == -1) //delete all
394 {
395 memcpy(cmgd, ",4", strlen(",4"));
396 }
397 else
398 {
399 sprintf(cmgd,"%d",id_x);
400 }
401
r.xiaoeb9dba42024-02-07 02:16:13 -0800402 LOGI("cmgd:%s", cmgd);
r.xiaodac82562023-12-07 18:22:32 -0800403
404 err = mbtk_sms_cmgd_set(sms_info_handle, cmgd);
405 if(err)
406 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800407 LOGE("qser_sms_deletefromstorage Error : %d", err);
r.xiaoefee0062023-12-29 19:35:43 -0800408 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800409 }
410 else
411 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800412 LOGI("qser_sms_deletefromstorage set success");
r.xiaodac82562023-12-07 18:22:32 -0800413 }
414
r.xiaoefee0062023-12-29 19:35:43 -0800415 return 0;
b.liu5fa9e772023-11-23 18:00:55 +0800416}
417
r.xiaodac82562023-12-07 18:22:32 -0800418//获取短信中心号码
419int qser_sms_getsmscenteraddress( sms_client_handle_type h_sms,QSER_sms_service_center_cfg_t *set_sca_cfg)//in out
b.liu5fa9e772023-11-23 18:00:55 +0800420{
r.xiaoefee0062023-12-29 19:35:43 -0800421 //UNUSED(h_sms);
r.xiaodac82562023-12-07 18:22:32 -0800422 //UNUSED(set_sca_cfg);
423 char sms_center_addree[254] = {0};
424 int len_t;
425 char *p1, *p2 ,*substr;
b.liu5fa9e772023-11-23 18:00:55 +0800426
r.xiaoefee0062023-12-29 19:35:43 -0800427 if (h_sms != g_sms_val || g_sms_val == -1)
428 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800429 LOGE("handle NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800430 return -1;
431 }
432
r.xiaoefee0062023-12-29 19:35:43 -0800433 if (set_sca_cfg == NULL)
434 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800435 LOGE("QSER_sms_service_center_cfg_t NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800436 return -1;
437 }
438
r.xiaodac82562023-12-07 18:22:32 -0800439 if(sms_info_handle == NULL)
440 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800441 LOGE("qser_sms_getsmscenteraddress sms_info_handle NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800442 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800443 }
444
445 int err = mbtk_sms_csca_get(sms_info_handle, sms_center_addree);
446 if(sms_center_addree[0] == '\0')
447 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800448 LOGE("qser_sms_getsmscenteraddress Error : %d", err);
r.xiaoefee0062023-12-29 19:35:43 -0800449 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800450 }
451 else
452 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800453 p1 = strchr(sms_center_addree, '\"');
454 p2 = strrchr(sms_center_addree, '\"');
455 if (p1 && p2 && p2 > p1)
r.xiaodac82562023-12-07 18:22:32 -0800456 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800457 len_t = p2 - p1 - 1;
458 char substr_t[len_t + 1];
459 strncpy(substr_t, p1 + 1, len_t);
460 substr_t[len_t] = '\0';
461
r.xiaodac82562023-12-07 18:22:32 -0800462 substr = substr_t;
463
464 memcpy(set_sca_cfg->service_center_addr, substr, strlen(substr));
465 memcpy(sms_center_address, substr, strlen(substr));
466
r.xiaoeb9dba42024-02-07 02:16:13 -0800467 LOGI("qser_sms_getsmscenteraddress success");
r.xiaodac82562023-12-07 18:22:32 -0800468 }
469 else
470 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800471 LOGE("String inside double quotes not found");
r.xiaoefee0062023-12-29 19:35:43 -0800472 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800473 }
474 }
475
r.xiaoefee0062023-12-29 19:35:43 -0800476 return 0;
b.liu5fa9e772023-11-23 18:00:55 +0800477}
478
r.xiaodac82562023-12-07 18:22:32 -0800479//设置短信中心号码
480int qser_sms_setsmscenteraddress( sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg)//in in
b.liu5fa9e772023-11-23 18:00:55 +0800481{
r.xiaoefee0062023-12-29 19:35:43 -0800482 //UNUSED(h_sms);
r.xiaodac82562023-12-07 18:22:32 -0800483 //UNUSED(get_sca_cfg);
484 char *destNum = NULL;
r.xiaoefee0062023-12-29 19:35:43 -0800485
486 if (h_sms != g_sms_val || g_sms_val == -1)
487 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800488 LOGE("handle NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800489 return -1;
490 }
491
r.xiaodac82562023-12-07 18:22:32 -0800492 if(sms_info_handle == NULL)
493 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800494 LOGE("qser_sms_setsmscenteraddress sms_info_handle NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800495 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800496 }
497
498 if(get_sca_cfg == NULL)
499 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800500 LOGE("qser_sms_setsmscenteraddress get_sca_cfg NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800501 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800502 }
503
504 destNum = get_sca_cfg->service_center_addr;
505
r.xiaoec113d12024-01-12 02:13:28 -0800506 //printf("1destNum:%s\n", destNum);
r.xiaodac82562023-12-07 18:22:32 -0800507 memset(sms_center_address, 0, sizeof(sms_center_address));
508 memcpy(sms_center_address, destNum, strlen(destNum));
509
510 if (destNum == NULL)
511 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800512 LOGE("qser_sms_setsmscenteraddress destNum NULL");
r.xiaoefee0062023-12-29 19:35:43 -0800513 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800514 }
515
516 int err = mbtk_sms_csca_set(sms_info_handle, destNum);
517 if(err)
518 {
r.xiaoeb9dba42024-02-07 02:16:13 -0800519 LOGE("Error : %d", err);
r.xiaoefee0062023-12-29 19:35:43 -0800520 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800521 }
522 else
523 {
524 // memset(sms_center_address, 0, sizeof(sms_center_address));
525 // memcpy(sms_center_address, destNum, strlen(destNum));
r.xiaoec113d12024-01-12 02:13:28 -0800526 //printf("destNum:%s\n", destNum);
r.xiaoeb9dba42024-02-07 02:16:13 -0800527 LOGI("qser_sms_setsmscenteraddress success");
528 }
529
530 return 0;
531}
532
533
534//显示删除列表
535int qser_sms_deletefromstoragelist( sms_client_handle_type h_sms, char* del_list)//in out
536{
537 //UNUSED(h_sms);
538 //UNUSED(get_sca_cfg);
539
540 if (h_sms != g_sms_val || g_sms_val == -1)
541 {
542 LOGE("handle NULL");
543 return -1;
544 }
545
546 if(sms_info_handle == NULL)
547 {
548 LOGE("qser_sms_deletefromstoragelist sms_info_handle NULL");
549 return -1;
550 }
551
552 int err = mbtk_sms_cmgd_get(sms_info_handle, del_list);
553 if(err > 0 && err != 300)//MBTK_INFO_ERR_SUCCESS
554 {
555 LOGE("Error : %d", err);
556 return -1;
r.xiaodac82562023-12-07 18:22:32 -0800557 }
558
r.xiaoefee0062023-12-29 19:35:43 -0800559 return 0;
b.liu5fa9e772023-11-23 18:00:55 +0800560}
561