blob: 50c7acd905d3c98217779bd6b5271785e6513224 [file] [log] [blame]
b.liu87afc4c2024-08-14 17:33:45 +08001#include <stdio.h>
2#include <stdlib.h>
3#include <unistd.h>
4#include <errno.h>
5#include <sys/socket.h>
6#include <sys/un.h>
7#include <netinet/in.h>
8#include <pthread.h>
9#include <sys/epoll.h>
10#include <fcntl.h>
11#include <signal.h>
12
13#include "mbtk_type.h"
14#include "mbtk_ril.h"
15#include "atchannel.h"
16#include "at_tok.h"
17#include "mbtk_utils.h"
18#include "ril_info.h"
19
b.liu7ca612c2025-04-25 09:23:36 +080020void ril_rsp_pack_send(mbtk_sim_type_enum sim_id, ATPortType_enum port, int fd, int ril_id, int msg_index, const void* data, int data_len);
21ATPortId_enum portType_2_portId(mbtk_sim_type_enum sim_id, ATPortType_enum port);
b.liu87afc4c2024-08-14 17:33:45 +080022
23/*
24AT+CMGF?
25+CMGF: 0
26
27OK
28
29*/
b.liu7ca612c2025-04-25 09:23:36 +080030static int req_cmgf_get(mbtk_sim_type_enum sim_id, ATPortType_enum port, int *state, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +080031{
32 ATResponse *response = NULL;
b.liu62240ee2024-11-07 17:52:45 +080033// char *tmp_ptr = NULL;
b.liu7ca612c2025-04-25 09:23:36 +080034 int err = at_send_command_singleline(portType_2_portId(sim_id, port), "AT+CMGF?", "", &response);
b.liu87afc4c2024-08-14 17:33:45 +080035
36 if (err < 0 || response->success == 0 || !response->p_intermediates){
37 *cme_err = at_get_cme_error(response);
38 goto exit;
39 }
40
41 char *line = response->p_intermediates->line;
42 printf("req_cmgf_get() ---line:%s\n", line);
43 char* ptr = strstr(line, "+CMGF: ");
44 printf("req_cmgf_get() ---ptr:%s\n",ptr);
45 if(ptr)
46 {
47 *state = atoi(ptr + strlen("+CMGF: "));
48 }
49 else
50 {
51 err = -1;
52 }
53exit:
54 at_response_free(response);
55 return err;
56}
57
58/*
59AT+CMGF=0"
60or
61AT+CMGF=1"
62
63OK
64*/
b.liu7ca612c2025-04-25 09:23:36 +080065static int req_cmgf_set(mbtk_sim_type_enum sim_id, ATPortType_enum port, int state, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +080066{
b.liu62240ee2024-11-07 17:52:45 +080067 LOGD("req_cmgf_set()-------------start");
68 LOGD("state:%d",state);
b.liu87afc4c2024-08-14 17:33:45 +080069 ATResponse *response = NULL;
70 char cmd[30] = {0};
71 if(state)
72 {
73 strcpy(cmd, "AT+CMGF=1");
74 }
75 else
76 {
77 strcpy(cmd, "AT+CMGF=0");
78 }
79
b.liu62240ee2024-11-07 17:52:45 +080080 LOGD("req_cmgf_set()----cmd:%s", cmd);
b.liu7ca612c2025-04-25 09:23:36 +080081 int err = at_send_command(portType_2_portId(sim_id, port), cmd, &response);
b.liu87afc4c2024-08-14 17:33:45 +080082
83 if (err < 0 || response->success == 0) {
84 *cme_err = at_get_cme_error(response);
85 goto exit;
86 }
87
88 err = 0;
89exit:
90 at_response_free(response);
91 return err;
92}
93
94/*set AT+CNMI=1,2*/
b.liu7ca612c2025-04-25 09:23:36 +080095static int req_cnmi_set(mbtk_sim_type_enum sim_id, ATPortType_enum port, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +080096{
97 printf("req_cnmi_set()-------------start3\n");
98 ATResponse *response = NULL;
99 char cmd[30] = {0};
100
101 strcpy(cmd, "AT+CNMI=1,2");
102
103 printf("req_cnmi_set()----cmd:%s\n", cmd);
b.liu7ca612c2025-04-25 09:23:36 +0800104 int err = at_send_command(portType_2_portId(sim_id, port), cmd, &response);
b.liu87afc4c2024-08-14 17:33:45 +0800105
106 if (err < 0 || response->success == 0) {
107 printf("err:%d, response->success:%d \n", err, response->success);
108 *cme_err = at_get_cme_error(response);
109 goto exit;
110 }
111
112 err = 0;
113exit:
114 at_response_free(response);
115 printf("exit,err:%d\n", err);
116 return err;
117}
118
119/*
120AT+CPMS?
121
122+CPMS: "SM",15,50,"SM",15,50,"SM",15,50
123
124OK
125
126*/
b.liu7ca612c2025-04-25 09:23:36 +0800127static int req_cpms_get(mbtk_sim_type_enum sim_id, ATPortType_enum port, char *reg, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +0800128{
129 printf("req_cpms_get------------start(3)\n");
130 ATResponse *response = NULL;
b.liu62240ee2024-11-07 17:52:45 +0800131// char *tmp_ptr = NULL;
b.liu7ca612c2025-04-25 09:23:36 +0800132 int err = at_send_command_singleline(portType_2_portId(sim_id, port), "AT+CPMS?", "", &response);
b.liu87afc4c2024-08-14 17:33:45 +0800133
134 if (err < 0 || response->success == 0 || !response->p_intermediates){
135 *cme_err = at_get_cme_error(response);
136 goto exit;
137 }
138
139 ATLine* lines_ptr = response->p_intermediates;
140 char *line = NULL;
141 int len = 0;
142 while(lines_ptr)
143 {
144 line = lines_ptr->line;
145 if(line ==NULL)
146 {
147 printf("line is null----------------------\n");
148 }
149
150 printf("-----------line:%s, strlen:%d, len:%d----------\n", line, strlen(line), len);
151 memcpy(reg+len, line, strlen(line));
152 len += strlen(line);
153 lines_ptr = lines_ptr->p_next;
154 }
155
156 printf("cpms_get()------reg:%s\n", reg);
157
158exit:
159 at_response_free(response);
160 return err;
161}
162
163
164
165/*
166AT+CPMS=<mem1>[,<mem2>[,<mem3>]]
167AT+CPMS="ME","ME","ME"
168
169+CPMS: 14,50,14,50,14,50
170
171OK
172
173*/
b.liu7ca612c2025-04-25 09:23:36 +0800174static int req_cpms_set(mbtk_sim_type_enum sim_id, ATPortType_enum port, const char *mem, char *reg, int len, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +0800175{
176 printf("req_cpms_set(2)----------------start\n");
177 printf("mem:%s\n", mem);
178 ATResponse *response = NULL;
179 char cmd[30] = {0};
180 int err = 0;
181 char data[20] = {0};
182
183 if(mem != NULL)
184 {
185 memcpy(data, mem, len);
186 sprintf(cmd, "AT+CPMS=%s", data);
187 }
188 else{
189 printf("mem is null\n");
190 }
191
192 printf("cmd:%s,data:%s---------\n", cmd,data);
193
194 if(strlen(cmd) > 8)
195 {
b.liu7ca612c2025-04-25 09:23:36 +0800196 err = at_send_command_multiline(portType_2_portId(sim_id, port), cmd, "+CPMS:", &response);
b.liu87afc4c2024-08-14 17:33:45 +0800197 if (err < 0 || response->success == 0){
198 *cme_err = at_get_cme_error(response);
199 goto exit;
200 }
201
202 char *line = response->p_intermediates->line;
203 printf("line:%s, len:%d\n", line, strlen(line));
204
205 memcpy(reg, line, strlen(line));
206
207 printf("cpms_reg:%s\n", reg);
208 }
209 err = 0;
210exit:
211 printf("goto exit do");
212 at_response_free(response);
213 return err;
214}
215
216/*
217if PDU mode (+CMGF=0):
218 AT+CMGS=<length><CR>
219PDU is given<ctrl-Z/ESC>
220if text mode (+CMGF=1):
221 AT+CMGS=<da>[,<toda>]<CR>
222text is entered<ctrl-Z/ESC>
223
224 AT+CMGS=15775690697,hello world
225
226
227*/
r.xiaoed208552024-11-26 23:11:40 -0800228#define MBTK_AT_MAX_SMS_NUM 4
229#define MBTK_AT_SMS_MAX_LEN 160*MBTK_AT_MAX_SMS_NUM
b.liu7ca612c2025-04-25 09:23:36 +0800230static int req_cmgs_set(mbtk_sim_type_enum sim_id, ATPortType_enum port, char *cmgs, char *reg, int len, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +0800231{
b.liu62240ee2024-11-07 17:52:45 +0800232 LOGD("req_cmgs_set()----------------start");
233 LOGD("cmgs:%s", cmgs);
b.liu87afc4c2024-08-14 17:33:45 +0800234 ATResponse *response = NULL;
235 char cmd[30] = {0};
r.xiaoed208552024-11-26 23:11:40 -0800236 char data[MBTK_AT_SMS_MAX_LEN] = {0};
b.liu87afc4c2024-08-14 17:33:45 +0800237 char pnum[20] = {0};
238 char *ptr = cmgs;
239 int err = 0;
b.liu62240ee2024-11-07 17:52:45 +0800240// int data_len = 0;
b.liu87afc4c2024-08-14 17:33:45 +0800241
242 char *src = strstr(cmgs, ",");
243 if(src != NULL)
244 {
b.liu87afc4c2024-08-14 17:33:45 +0800245 memcpy(pnum, ptr, src - ptr);
b.liu87afc4c2024-08-14 17:33:45 +0800246 src++;
247 int data_len = 0;
248 data_len = len - (src - ptr);
249 memcpy(data, src, data_len);
b.liu87afc4c2024-08-14 17:33:45 +0800250 }
b.liu62240ee2024-11-07 17:52:45 +0800251 else
252 {
253 LOGD("cmgs param is error");
254 return -1;
255 }
256 LOGD("num:%s", pnum);
257 LOGD("data:%s", data);
b.liu87afc4c2024-08-14 17:33:45 +0800258
259 sprintf(cmd, "AT+CMGS=%s", pnum);
b.liu62240ee2024-11-07 17:52:45 +0800260 LOGD("cmd:%s", cmd);
b.liu87afc4c2024-08-14 17:33:45 +0800261
262 if(strlen(cmd) > 0)
263 {
b.liu7ca612c2025-04-25 09:23:36 +0800264 int err = at_send_command_sms(portType_2_portId(sim_id, port), cmd, data, "+CMGS: ", &response);
b.liu62240ee2024-11-07 17:52:45 +0800265 LOGD("err:%d, response:%d", err, response->success);
b.liu87afc4c2024-08-14 17:33:45 +0800266
267 if (err < 0 || response->success == 0) {
268 *cme_err = at_get_cme_error(response);
269 goto exit;
270 }
271 char *line;
272 line = response->p_intermediates->line;
273 memcpy(reg, line, strlen(line));
b.liu62240ee2024-11-07 17:52:45 +0800274 LOGD("line:%s", line);
b.liu87afc4c2024-08-14 17:33:45 +0800275
276 }
277 err = 0;
278exit:
279 at_response_free(response);
280 return err;
281}
282
b.liu7ca612c2025-04-25 09:23:36 +0800283static int req_cmgw_set(mbtk_sim_type_enum sim_id, ATPortType_enum port, char *cmgw,int len, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +0800284{
285 printf("req_cmgw_set()----------------start\n");
286 printf("cmgw:%s\n", cmgw);
287 ATResponse *response = NULL;
288 char cmd[30] = {0};
289 char data[218] = {0};
290 char pnum[13] = {0};
291 char *ptr = cmgw;
292 int err = 0;
293
294 char *src = strstr(cmgw, ",");
295 if(src != NULL)
296 {
297 memcpy(pnum, ptr, src - ptr);
298 src++;
299 int data_len = 0;
300 data_len = len - (src - ptr);
301 memcpy(data, src, data_len);
302 }
303
304 sprintf(cmd, "AT+CMGW=%s", pnum);
305 printf("cmd:%s,data:%s---------\n", cmd,data);
306
307 if(strlen(cmd) > 0)
308 {
b.liu7ca612c2025-04-25 09:23:36 +0800309 int err = at_send_command_sms(portType_2_portId(sim_id, port), cmd, data, "+CMGW: ", &response);
b.liu87afc4c2024-08-14 17:33:45 +0800310 printf("err:%d, response:%d\n", err, response->success);
311
312 if (err < 0 || response->success == 0) {
313 *cme_err = at_get_cme_error(response);
314 goto exit;
315 }
316 char *line;
317 line = response->p_intermediates->line;
318 printf("line:%s\n", line);
319 }
320 err = 0;
321exit:
322 at_response_free(response);
323 return err;
324}
325
326/*
327AT+CMGD=25
328OK
329
330+MMSG: 1, 0
331*/
b.liu7ca612c2025-04-25 09:23:36 +0800332static int req_cmgd_set(mbtk_sim_type_enum sim_id, ATPortType_enum port, char *cmgd, int len, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +0800333{
334 printf("0req_cmgd_set()--------------start\n");
335 printf("cmgd:%s\n", cmgd);
336 ATResponse *response = NULL;
b.liu62240ee2024-11-07 17:52:45 +0800337 char cmd[500] = {0};
b.liu87afc4c2024-08-14 17:33:45 +0800338 char data[218] = {0};
b.liu62240ee2024-11-07 17:52:45 +0800339// char pnum[13] = {0};
340// char *ptr = cmgd;
b.liu87afc4c2024-08-14 17:33:45 +0800341 int err = 0;
342
343 memcpy(data, cmgd, len );
344 sprintf(cmd, "AT+CMGD=%s", data);
345 printf("cmd:%s,data:%s---------\n", cmd,data);
346
347 if(strlen(cmd) > 0)
348 {
b.liu7ca612c2025-04-25 09:23:36 +0800349 int err = at_send_command(portType_2_portId(sim_id, port), cmd, &response);
b.liu87afc4c2024-08-14 17:33:45 +0800350 if (err < 0 || response->success == 0) {
351 *cme_err = at_get_cme_error(response);
352 goto exit;
353 }
354
355// Format problem caused the crash
356// char *line;
357// line = response->p_intermediates->line;
358// printf("line:%s\n", line);
359 }
360 err = 0;
361exit:
362 at_response_free(response);
363 return err;
364}
365
366/*
367AT+CMGD=?
368
369+CMGD: (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37),(0-4)
370
371OK
372
373*/
b.liu7ca612c2025-04-25 09:23:36 +0800374static int req_cmgd_get(mbtk_sim_type_enum sim_id, ATPortType_enum port, char *reg, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +0800375{
376 ATResponse *response = NULL;
b.liu62240ee2024-11-07 17:52:45 +0800377// char *tmp_ptr = NULL;
b.liu7ca612c2025-04-25 09:23:36 +0800378 int err = at_send_command_singleline(portType_2_portId(sim_id, port), "AT+CMGD=?", "+CMGD:", &response);
b.liu87afc4c2024-08-14 17:33:45 +0800379
380 if (err < 0 || response->success == 0 || !response->p_intermediates){
381 *cme_err = at_get_cme_error(response);
382 goto exit;
383 }
384
385 char *line = response->p_intermediates->line;
386
387 const char* start = strchr(line, '(');
388 const char* end = strchr(line, ')');
389
390 if (start && end && end > start)
391 {
392 int len_t = end - start - 1;
393 char substr_t[len_t + 1];
394
395 strncpy(substr_t, start + 1, len_t);
396 substr_t[len_t] = '\0';
397 strncpy(reg, substr_t, len_t);
398 }
399 else
400 {
401 strcpy(reg, "");
402 }
403
404exit:
405 at_response_free(response);
406 return err;
407}
408
409
410/*
411AT+CMGL="ALL"
412
413+CMGL: 1,"REC READ","10658678",,"22.11.14 10:41:44 GMT+8"
414
41556DB5DDD62
416
417+CMGL: 2,"STO UNSENT","18927467953"
418hello world
419
420*/
421
b.liu7ca612c2025-04-25 09:23:36 +0800422static int req_cmgl_set(mbtk_sim_type_enum sim_id, ATPortType_enum port, const char *cmgl, char *reg, int len, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +0800423{
424 printf("req_cmgl_set(2)-----------------start\n");
425 printf("cmgl:%s\n", cmgl);
426 ATResponse *response = NULL;
427 char cmd[30] = {0};
428 char data[218] = {0};
429 char index_data[256] = {0};
430 int s_index = 0, g_index = 0;
431 bool index_flag = false;
432 char *ptr_index = index_data;
b.liu62240ee2024-11-07 17:52:45 +0800433// char phone[50];
b.liu87afc4c2024-08-14 17:33:45 +0800434 char number[5] = {0};
435 int err = 0;
436
437 memcpy(data, cmgl, len);
438
439 char *ptr1 = data;
440 char *ptr2 = strstr(data, ",");
441 if(ptr2 != NULL)
442 {
443 memcpy(number,ptr1, ptr2-ptr1 );
444 s_index = atoi(number);
445 if(s_index == 0)
446 {
447 index_flag = TRUE;
448 memcpy(ptr_index, "+CMGL:", strlen("+CMGL:"));
449 }
450 memset(number, 0, sizeof(number));
451 ptr2++;
452 }else{
453 printf("cmgl set data is error\n eg:index,data\n");
454 return -1;
455 }
456
457 sprintf(cmd, "AT+CMGL=%s", ptr2);
458 printf("cmd:%s\n", cmd);
459
460 ptr1 = NULL;
461 ptr2 = NULL;
462
463 if(strlen(cmd) > 0)
464 {
b.liu7ca612c2025-04-25 09:23:36 +0800465 err = at_send_command_multiline(portType_2_portId(sim_id, port), cmd, "", &response);
b.liu87afc4c2024-08-14 17:33:45 +0800466 if (err < 0 || response->success == 0 || !response->p_intermediates){
467 *cme_err = at_get_cme_error(response);
468 printf("at_send_command_multiline() is err-----------------\n");
469 goto exit;
470 }
471
472 ATLine* lines_ptr = response->p_intermediates;
473 char *line = NULL;
474 int reg_len = 0;
475 bool flag = false;
476 while(lines_ptr)
477 {
478 line = lines_ptr->line;
479 if(line ==NULL)
480 {
481 printf("line is null----------------------\n");
482 }
483
484 printf("-----line:%s\n", line);
485 if(!flag)
486 {
487 ptr1 = strstr(line, "+CMGL: ");
488 if(ptr1 != NULL)
489 {
490 ptr1 += 7;
491 ptr2 = strstr(line, ",");
492 memcpy(number,ptr1, ptr2-ptr1 );
493 printf("number:%s, ptr1:%s, ptr2:%s\n", number, ptr1, ptr2);
494 g_index = atoi(number);
495 if(index_flag)
496 {
497 sprintf(ptr_index+strlen(ptr_index), "%d,", g_index);
498 }
499 }
500 //if( g_index == s_index)
501 if( g_index == s_index && !index_flag)
502 {
503 printf("g_index == s_index, g_index:%d,s_index:%d\n", g_index, s_index);
504 flag = true;
505 }
506 }
507 if(flag && reg_len <=1024)
508 {
509 memcpy(reg+reg_len, line, strlen(line));
510 printf("-----memcpy------reg:%s----------\n", reg);
511 printf("len:%d\n", reg_len);
512 reg_len += strlen(line);
513 }
514
515 lines_ptr = lines_ptr->p_next;
516 }
517 }
518
519 if(index_flag)
520 {
b.liu62240ee2024-11-07 17:52:45 +0800521 // memset(reg, 0, sizeof(reg));
522 memcpy(reg, ptr_index, strlen(ptr_index) + 1);
b.liu87afc4c2024-08-14 17:33:45 +0800523 }
524 err = 0;
525exit:
526 at_response_free(response);
527 printf("req_cmgl_set()-----------------end\n");
528 return err;
529}
530
531/*
532at+csca?
533+CSCA: "+8613800280500",145
534OK
535*/
b.liu7ca612c2025-04-25 09:23:36 +0800536static int req_csca_get(mbtk_sim_type_enum sim_id, ATPortType_enum port, char *req, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +0800537{
538 ATResponse *response = NULL;
b.liu62240ee2024-11-07 17:52:45 +0800539// char *tmp_ptr = NULL;
b.liu7ca612c2025-04-25 09:23:36 +0800540 int err = at_send_command_singleline(portType_2_portId(sim_id, port), "AT+CSCA?", "", &response);
b.liu87afc4c2024-08-14 17:33:45 +0800541
542 if (err < 0 || response->success == 0 || !response->p_intermediates){
543 *cme_err = at_get_cme_error(response);
544 goto exit;
545 }
546
547 char *line = response->p_intermediates->line;
548 printf("req_csca_get() ---line:%s\n", line);
549 char* ptr = strstr(line, "+CSCA: ");
550 printf("req_csca_get() ---ptr:%s\n",ptr);
551 if(ptr)
552 {
553 memcpy(req, line, strlen(line));
554 printf("err:%d, req:%s\n", err, req);
555 err = 0;
556 }
557 else
558 {
559 err = -1;
560 }
561
562exit:
563 at_response_free(response);
564 return err;
565}
566
b.liu7ca612c2025-04-25 09:23:36 +0800567static int req_csca_set(mbtk_sim_type_enum sim_id, ATPortType_enum port, char *csca, int len, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +0800568{
569 printf("req_csca_set()--------------start\n");
570 printf("csca:%s\n", csca);
571 ATResponse *response = NULL;
b.liu62240ee2024-11-07 17:52:45 +0800572 char cmd[500] = {0};
b.liu87afc4c2024-08-14 17:33:45 +0800573 char data[218] = {0};
b.liu62240ee2024-11-07 17:52:45 +0800574// char pnum[13] = {0};
575// char *ptr = csca;
b.liu87afc4c2024-08-14 17:33:45 +0800576 int err = 0;
577
578 memcpy(data, csca, len);
579 sprintf(cmd, "AT+CSCA=%s", data);
580 printf("cmd:%s,data:%s---------\n", cmd,data);
581
582 if(strlen(cmd) > 0)
583 {
b.liu7ca612c2025-04-25 09:23:36 +0800584 int err = at_send_command(portType_2_portId(sim_id, port), cmd, &response);
b.liu87afc4c2024-08-14 17:33:45 +0800585 if (err < 0 || response->success == 0) {
586 *cme_err = at_get_cme_error(response);
587 goto exit;
588 }
589
590 // char *line;
591 // line = response->p_intermediates->line;
592 // printf("line:%s\n", line);
593 }
594 err = 0;
595exit:
596 at_response_free(response);
597 return err;
598}
599
b.liu7ca612c2025-04-25 09:23:36 +0800600static int req_csmp_set(mbtk_sim_type_enum sim_id, ATPortType_enum port, char *csmp, int len, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +0800601{
602 printf("req_csmp_set()-------------------start\n");
603 printf("csmp:%s\n", csmp);
604 ATResponse *response = NULL;
b.liu62240ee2024-11-07 17:52:45 +0800605 char cmd[500] = {0};
b.liu87afc4c2024-08-14 17:33:45 +0800606 char data[218] = {0};
b.liu62240ee2024-11-07 17:52:45 +0800607// char pnum[13] = {0};
608// char *ptr = csmp;
b.liu87afc4c2024-08-14 17:33:45 +0800609 int err = 0;
610
611 memcpy(data, csmp, len);
612 sprintf(cmd, "AT+CSMP=%s", data);
613 printf("cmd:%s,data:%s---------\n", cmd,data);
614
615 if(strlen(cmd) > 0)
616 {
b.liu7ca612c2025-04-25 09:23:36 +0800617 int err = at_send_command(portType_2_portId(sim_id, port), cmd, &response);
b.liu87afc4c2024-08-14 17:33:45 +0800618 if (err < 0 || response->success == 0) {
619 *cme_err = at_get_cme_error(response);
620 goto exit;
621 }
622
623 char *line;
624 line = response->p_intermediates->line;
625 printf("line:%s\n", line);
626 }
627 err = 0;
628exit:
629 at_response_free(response);
630 return err;
631}
632
b.liu7ca612c2025-04-25 09:23:36 +0800633static int req_cscb_set(mbtk_sim_type_enum sim_id, ATPortType_enum port, char *cscb,int len, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +0800634{
635 printf("req_cscb_set()----------------start\n");
636 printf("cscb:%s\n", cscb);
637 ATResponse *response = NULL;
638 char cmd[30] = {0};
639 char data[218] = {0};
b.liu62240ee2024-11-07 17:52:45 +0800640// char pnum[13] = {0};
641// char *ptr = cscb;
b.liu87afc4c2024-08-14 17:33:45 +0800642 int err = 0;
643
644 memcpy(data, cscb, len);
645 sprintf(cmd, "AT+CSCB=%s", cscb);
646 printf("cmd:%s,data:%s---------\n", cmd,data);
647
648 if(strlen(cmd) > 0)
649 {
b.liu7ca612c2025-04-25 09:23:36 +0800650 int err = at_send_command(portType_2_portId(sim_id, port), cmd, &response);
b.liu87afc4c2024-08-14 17:33:45 +0800651 if (err < 0 || response->success == 0) {
652 *cme_err = at_get_cme_error(response);
653 goto exit;
654 }
655
656 char *line;
657 line = response->p_intermediates->line;
658 printf("line:%s\n", line);
659 }
660 err = 0;
661exit:
662 at_response_free(response);
663 return err;
664}
665
666/*
667AT+CMSS=13
668+CMSS: 81
669OK
670*/
b.liu7ca612c2025-04-25 09:23:36 +0800671static int req_cmss_set(mbtk_sim_type_enum sim_id, ATPortType_enum port, const char *cmss, char *reg, int len, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +0800672{
673 printf("req_cmss_set()----------------start\n");
674 printf("cmss:%s\n", cmss);
675 ATResponse *response = NULL;
676 char cmd[30] = {0};
677 char data[20] = {0};
678 int err = 0;
679
680 if(cmss != NULL)
681 {
682 memcpy(data, cmss, len);
683 sprintf(cmd, "AT+CMSS=%s", data);
684 // sprintf(cmd, "AT+CMSS=%d", 8);
685 }
686 else{
687 printf("mem is null\n");
688 }
689
690 printf("cmss. cmd:%s\n", cmd);
691
692 if(strlen(cmd) > 8)
693 {
b.liu7ca612c2025-04-25 09:23:36 +0800694 err = at_send_command_multiline(portType_2_portId(sim_id, port), cmd, "+CMSS:", &response);
b.liu87afc4c2024-08-14 17:33:45 +0800695 if (err < 0 || response->success == 0){
696 *cme_err = at_get_cme_error(response);
697 goto exit;
698 }
699
700 char *line = response->p_intermediates->line;
701 printf("line:%s\n", line);
702
703 char *tmp_str = NULL;
704 err = at_tok_nextstr(&line, &tmp_str); // phone_number
705 if (err < 0)
706 {
707 goto exit;
708 }
709 memcpy(reg, tmp_str, strlen(tmp_str));
710 printf("cmss_reg:%s\n", reg);
711 /*
712 int err = at_send_command(cmd, &response);
713
714 if (err < 0 || response->success == 0) {
715 *cme_err = at_get_cme_error(response);
716 goto exit;
717 }
718
719 char *line;
720 line = response->p_intermediates->line;
721 printf("line:%s\n", line);
722 */
723 }
724 err = 0;
725exit:
726 at_response_free(response);
727 return err;
728}
729
730
731/*
732AT+CMGR=1
733+CMGR: "REC READ","10658678",,"22.11.14 10:41:44 GMT+8"
734
73556DB5DDD624B673A62A5FF039003003400310034003500340035003F0073003D0037003800680061006C00450066
736
737OK
738*/
b.liu7ca612c2025-04-25 09:23:36 +0800739static int req_cmgr_set(mbtk_sim_type_enum sim_id, ATPortType_enum port, int index, char *reg, int *cme_err)
b.liu87afc4c2024-08-14 17:33:45 +0800740{
741 printf("0req_cmgr_set()-------------------start\n");
742 printf("index:%d\n", index);
743 ATResponse *response = NULL;
744 char cmd[30] = {0};
745 int err = 0;
746 sprintf(cmd, "AT+CMGR=%d", index);
747
748 printf("req_cmgr_set()----cmd:%s\n", cmd);
749
750 if(strlen(cmd) > 0)
751 {
b.liu7ca612c2025-04-25 09:23:36 +0800752 err = at_send_command_multiline(portType_2_portId(sim_id, port), cmd, "", &response);
b.liu87afc4c2024-08-14 17:33:45 +0800753 if (err < 0 || response->success == 0 || !response->p_intermediates){
754 *cme_err = at_get_cme_error(response);
755 printf("at_send_command_multiline() is err-----------------\n");
756 goto exit;
757 }
758
759 ATLine* lines_ptr = response->p_intermediates;
760 char *line = NULL;
761 int reg_len = 0;
762 while(lines_ptr)
763 {
764 line = lines_ptr->line;
765 if(line ==NULL)
766 {
767 printf("line is null----------------------\n");
768 }
769
770 if(reg_len > 0)
771 {
772 memcpy(reg+reg_len, "\r\n", strlen("\r\n"));
773 reg_len += strlen("\r\n");
774 }
775 memcpy(reg+reg_len, line, strlen(line));
776 printf("-----memcpy------reg:%s----------\n", reg);
777 printf("len:%d\n", reg_len);
778 reg_len += strlen(line);
779 lines_ptr = lines_ptr->p_next;
780 }
781 }
782
783 err = 0;
784exit:
785 at_response_free(response);
786 return err;
787}
788
789
790//void net_list_free(void *data);
791// Return MBTK_INFO_ERR_SUCCESS,will call pack_error_send() to send RSP.
792// Otherwise, do not call pack_error_send().
793mbtk_ril_err_enum sms_pack_req_process(sock_cli_info_t* cli_info, ril_msg_pack_info_t* pack)
794{
795 mbtk_ril_err_enum err = MBTK_RIL_ERR_SUCCESS;
796 int cme_err = MBTK_RIL_ERR_CME_NON;
797 switch(pack->msg_id)
798 {
799 case RIL_MSG_ID_SMS_CMGF:
800 {
801 if(pack->data_len == 0 || pack->data == NULL) // Get VoLTE state.
802 {
803 int state;
b.liu7ca612c2025-04-25 09:23:36 +0800804 if(req_cmgf_get(cli_info->sim_id, cli_info->port, &state, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +0800805 {
806 if(cme_err != MBTK_RIL_ERR_CME_NON) {
807 err = MBTK_RIL_ERR_CME + cme_err;
808 } else {
809 err = MBTK_RIL_ERR_UNKNOWN;
810 }
811 LOG("Get SMS CMGF fail.");
812 }
813 else
814 {
b.liu7ca612c2025-04-25 09:23:36 +0800815 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, &state, sizeof(uint8));
b.liu87afc4c2024-08-14 17:33:45 +0800816 }
817 }
818 else // Set VoLTE state.
819 {
820 uint8 mode = *(pack->data);
821 if(pack->data_len != sizeof(uint8) || (mode != 0 && mode != 1))
822 {
823 err = MBTK_RIL_ERR_REQ_PARAMETER;
824 LOG("Set SMS CMGF parameter error.");
825 break;
826 }
827
b.liu7ca612c2025-04-25 09:23:36 +0800828 if(req_cmgf_set(cli_info->sim_id, cli_info->port, mode, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +0800829 {
830 if(cme_err != MBTK_RIL_ERR_CME_NON) {
831 err = MBTK_RIL_ERR_CME + cme_err;
832 } else {
833 err = MBTK_RIL_ERR_UNKNOWN;
834 }
835 LOG("Set SMS CMGF fail.");
836 }
837 else
838 {
b.liu7ca612c2025-04-25 09:23:36 +0800839 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, NULL, 0);
b.liu87afc4c2024-08-14 17:33:45 +0800840 }
841 }
842 break;
843 }
844 case RIL_MSG_ID_SMS_CNMI:
845 {
846 if(pack->data_len == 0 || pack->data == NULL) // SET at+cnmi=1,2.
847 {
b.liu62240ee2024-11-07 17:52:45 +0800848// int state;
b.liu7ca612c2025-04-25 09:23:36 +0800849 if(req_cnmi_set(cli_info->sim_id, cli_info->port, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +0800850 {
851 if(cme_err != MBTK_RIL_ERR_CME_NON) {
852 err = MBTK_RIL_ERR_CME + cme_err;
853 } else {
854 err = MBTK_RIL_ERR_UNKNOWN;
855 }
856 LOG("set sms cnmi fail.");
857 }
858 else
859 {
b.liu7ca612c2025-04-25 09:23:36 +0800860 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, NULL, 0);
b.liu87afc4c2024-08-14 17:33:45 +0800861 }
862 }
863 break;
864 }
865 case RIL_MSG_ID_SMS_CPMS:
866 {
867 if(pack->data_len == 0 || pack->data == NULL) // Get VoLTE state.
868 {
869 char reg[100] = {0};
b.liu7ca612c2025-04-25 09:23:36 +0800870 if(req_cpms_get(cli_info->sim_id, cli_info->port, reg, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +0800871 {
872 if(cme_err != MBTK_RIL_ERR_CME_NON) {
873 err = MBTK_RIL_ERR_CME + cme_err;
874 } else {
875 err = MBTK_RIL_ERR_UNKNOWN;
876 }
877 LOG("Get SMS CMGF fail.");
878 }
879 else
880 {
b.liu7ca612c2025-04-25 09:23:36 +0800881 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, reg, strlen(reg));
b.liu87afc4c2024-08-14 17:33:45 +0800882 }
883 }
884 else // Set VoLTE state.
885 {
886 char *mem = (char*)(pack->data);
887 int len = pack->data_len;
888 char reg[100] = {0};
889 LOGD("mem:%s, len:%d", pack->data, pack->data_len);
890
b.liu7ca612c2025-04-25 09:23:36 +0800891 if(req_cpms_set(cli_info->sim_id, cli_info->port, mem, reg, len, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +0800892 {
893 if(cme_err != MBTK_RIL_ERR_CME_NON) {
894 err = MBTK_RIL_ERR_CME + cme_err;
895 } else {
896 err = MBTK_RIL_ERR_UNKNOWN;
897 }
898 LOG("Set SMS CMGF fail.");
899 }
900 else
901 {
902 LOGD("cpms_set success, reg:%s", reg);
b.liu7ca612c2025-04-25 09:23:36 +0800903 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, reg, strlen(reg));
b.liu87afc4c2024-08-14 17:33:45 +0800904 }
905 }
906 break;
907 }
908 case RIL_MSG_ID_SMS_CMGS:
909 {
910 if(pack->data_len == 0 || pack->data == NULL) // Get VoLTE state.
911 {
912 err = MBTK_RIL_ERR_UNSUPPORTED;
913 }
914 else // Set VoLTE state.
915 {
916 char *cmgs = (char*)pack->data;
917 int len = pack->data_len;
918 char reg[50] ={0};
919 LOGD("mbtk_sms,cmgs:%s,len:%d", cmgs, len);
920
b.liu7ca612c2025-04-25 09:23:36 +0800921 if(req_cmgs_set(cli_info->sim_id, cli_info->port, cmgs,reg,len, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +0800922 {
923 if(cme_err != MBTK_RIL_ERR_CME_NON) {
924 err = MBTK_RIL_ERR_CME + cme_err;
925 } else {
926 err = MBTK_RIL_ERR_UNKNOWN;
927 }
928 LOG("Set SMS CMGF fail.");
929 }
930 else
931 {
b.liu7ca612c2025-04-25 09:23:36 +0800932 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, reg, strlen(reg));
b.liu87afc4c2024-08-14 17:33:45 +0800933 }
934 }
935 break;
936 }
937 case RIL_MSG_ID_SMS_CMSS:
938 {
939 if(pack->data_len == 0 || pack->data == NULL) // Get VoLTE state.
940 {
941 err = MBTK_RIL_ERR_UNSUPPORTED;
942 }
943 else // Set VoLTE state.
944 {
945 char *cmss = (char*)pack->data;
946 int len = pack->data_len;
947 char reg[128] = {0};
948 LOGD("mbtk_sms,cmgs:%s, len:%d", cmss, len);
949
b.liu7ca612c2025-04-25 09:23:36 +0800950 if(req_cmss_set(cli_info->sim_id, cli_info->port, cmss,reg, len, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +0800951 {
952 if(cme_err != MBTK_RIL_ERR_CME_NON) {
953 err = MBTK_RIL_ERR_CME + cme_err;
954 } else {
955 err = MBTK_RIL_ERR_UNKNOWN;
956 }
957 LOG("Set SMS CMGF fail.");
958 }
959 else
960 {
961 LOGD("req_cmss_set success, reg:%s", reg);
b.liu7ca612c2025-04-25 09:23:36 +0800962 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, NULL, 0);
b.liu87afc4c2024-08-14 17:33:45 +0800963 }
964 }
965 break;
966 }
967 case RIL_MSG_ID_SMS_CMGR:
968 {
969 if(pack->data_len == 0 || pack->data == NULL) // Get VoLTE state.
970 {
971 err = MBTK_RIL_ERR_UNSUPPORTED;
972 }
973 else // Set VoLTE state.
974 {
975 uint8 index = *(pack->data);
976 char reg[1024] = {0};
977 if(pack->data_len != sizeof(uint8) )
978 {
979 err = MBTK_RIL_ERR_REQ_PARAMETER;
980 LOG("Set SMS CMGF parameter error.");
981 break;
982 }
983
b.liu7ca612c2025-04-25 09:23:36 +0800984 if(req_cmgr_set(cli_info->sim_id, cli_info->port, index, reg, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +0800985 {
986 if(cme_err != MBTK_RIL_ERR_CME_NON) {
987 err = MBTK_RIL_ERR_CME + cme_err;
988 } else {
989 err = MBTK_RIL_ERR_UNKNOWN;
990 }
991 LOG("Set SMS CMGF fail.");
992 }
993 else
994 {
b.liu7ca612c2025-04-25 09:23:36 +0800995 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, reg, strlen(reg));
b.liu87afc4c2024-08-14 17:33:45 +0800996 }
997 }
998 break;
999 }
1000 case RIL_MSG_ID_SMS_CMGW:
1001 {
1002 if(pack->data_len == 0 || pack->data == NULL) // +CMGW=<oa/da>[,<tooa/toda>[,<stat>]]<CR>
1003 {
1004 err = MBTK_RIL_ERR_UNSUPPORTED;
1005 }
1006 else // Set cmgw data.
1007 {
1008 char *cmgw = (char*)pack->data;
1009 int len = pack->data_len;
1010 LOGD("mbtk_sms,cmgw:%s,len:%d", cmgw, len);
1011
b.liu7ca612c2025-04-25 09:23:36 +08001012 if(req_cmgw_set(cli_info->sim_id, cli_info->port, cmgw, len, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +08001013 {
1014 if(cme_err != MBTK_RIL_ERR_CME_NON) {
1015 err = MBTK_RIL_ERR_CME + cme_err;
1016 } else {
1017 err = MBTK_RIL_ERR_UNKNOWN;
1018 }
1019 LOG("Set SMS CMGF fail.");
1020 }
1021 else
1022 {
b.liu7ca612c2025-04-25 09:23:36 +08001023 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, NULL, 0);
b.liu87afc4c2024-08-14 17:33:45 +08001024 }
1025 }
1026 break;
1027 }
1028 case RIL_MSG_ID_SMS_CMGD:
1029 {
1030 if(pack->data_len == 0 || pack->data == NULL) // Get VoLTE state.
1031 {
1032 char reg[1024] = {0};
b.liu7ca612c2025-04-25 09:23:36 +08001033 if(req_cmgd_get(cli_info->sim_id, cli_info->port, reg, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +08001034 {
1035 if(cme_err != MBTK_RIL_ERR_CME_NON) {
1036 err = MBTK_RIL_ERR_CME + cme_err;
1037 } else {
1038 err = MBTK_RIL_ERR_UNKNOWN;
1039 }
1040 LOG("Get SMS CMGD fail.");
1041 }
1042 else
1043 {
b.liu7ca612c2025-04-25 09:23:36 +08001044 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, reg, strlen(reg));
b.liu87afc4c2024-08-14 17:33:45 +08001045 }
1046 }
1047 else // Set VoLTE state.
1048 {
1049 char *cmgd = (char*)pack->data;
1050 int len = pack->data_len;
1051 LOGD("mbtk_sms,cmgs:%s,len:%d", cmgd, len);
1052
b.liu7ca612c2025-04-25 09:23:36 +08001053 if(req_cmgd_set(cli_info->sim_id, cli_info->port, cmgd,len, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +08001054 {
1055 if(cme_err != MBTK_RIL_ERR_CME_NON) {
1056 err = MBTK_RIL_ERR_CME + cme_err;
1057 } else {
1058 err = MBTK_RIL_ERR_UNKNOWN;
1059 }
1060 LOG("Set SMS CMGF fail.");
1061 }
1062 else
1063 {
b.liu7ca612c2025-04-25 09:23:36 +08001064 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, NULL, 0);
b.liu87afc4c2024-08-14 17:33:45 +08001065 }
1066
1067 }
1068 break;
1069 }
1070 case RIL_MSG_ID_SMS_CMGL:
1071 {
1072 if(pack->data_len == 0 || pack->data == NULL) // Get VoLTE state.
1073 {
1074 err = MBTK_RIL_ERR_UNSUPPORTED;
1075 }
1076 else // Set VoLTE state.
1077 {
1078 char *cmgl = (char*)pack->data;
1079 int len = pack->data_len;
1080 char reg[5*1024] = {0};
1081 char reg1[1024+1] = {0};
1082
b.liu7ca612c2025-04-25 09:23:36 +08001083 if(req_cmgl_set(cli_info->sim_id, cli_info->port, cmgl, reg, len, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +08001084 {
1085 if(cme_err != MBTK_RIL_ERR_CME_NON) {
1086 err = MBTK_RIL_ERR_CME + cme_err;
1087 } else {
1088 err = MBTK_RIL_ERR_UNKNOWN;
1089 }
1090 LOG("Set SMS CMGF fail.");
1091 }
1092 else
1093 {
1094 memcpy(reg1, reg, 1024);
b.liu7ca612c2025-04-25 09:23:36 +08001095 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, reg1, strlen(reg1));
b.liu87afc4c2024-08-14 17:33:45 +08001096 }
1097 }
1098 break;
1099 }
1100 case RIL_MSG_ID_SMS_CSCA:
1101 {
1102 if(pack->data_len == 0 || pack->data == NULL) // Get VoLTE state.
1103 {
1104 char csca[50]={0};
b.liu7ca612c2025-04-25 09:23:36 +08001105 if(req_csca_get(cli_info->sim_id, cli_info->port, csca, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +08001106 {
1107 if(cme_err != MBTK_RIL_ERR_CME_NON) {
1108 err = MBTK_RIL_ERR_CME + cme_err;
1109 } else {
1110 err = MBTK_RIL_ERR_UNKNOWN;
1111 }
1112 LOG("Get SMS CSCA fail.");
1113 }
1114 else
1115 {
b.liu7ca612c2025-04-25 09:23:36 +08001116 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, csca, strlen(csca));
b.liu87afc4c2024-08-14 17:33:45 +08001117 }
1118 err = MBTK_RIL_ERR_UNSUPPORTED;
1119 }
1120 else // Set VoLTE state.
1121 {
1122 char *csca = (char*)pack->data;
1123 int len = pack->data_len;
1124
b.liu7ca612c2025-04-25 09:23:36 +08001125 if(req_csca_set(cli_info->sim_id, cli_info->port, csca, len, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +08001126 {
1127 if(cme_err != MBTK_RIL_ERR_CME_NON) {
1128 err = MBTK_RIL_ERR_CME + cme_err;
1129 } else {
1130 err = MBTK_RIL_ERR_UNKNOWN;
1131 }
1132 LOG("Set SMS CMGF fail.");
1133 }
1134 else
1135 {
b.liu7ca612c2025-04-25 09:23:36 +08001136 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, NULL, 0);
b.liu87afc4c2024-08-14 17:33:45 +08001137 }
1138 }
1139 break;
1140 }
1141 case RIL_MSG_ID_SMS_CSMP:
1142 {
1143 if(pack->data_len == 0 || pack->data == NULL) // Get VoLTE state.
1144 {
1145 err = MBTK_RIL_ERR_UNSUPPORTED;
1146 }
1147 else // Set VoLTE state.
1148 {
1149 char *csmp = (char*)pack->data;
1150 int len = pack->data_len;
1151
b.liu7ca612c2025-04-25 09:23:36 +08001152 if(req_csmp_set(cli_info->sim_id, cli_info->port, csmp,len, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +08001153 {
1154 if(cme_err != MBTK_RIL_ERR_CME_NON) {
1155 err = MBTK_RIL_ERR_CME + cme_err;
1156 } else {
1157 err = MBTK_RIL_ERR_UNKNOWN;
1158 }
1159 LOG("Set SMS CMGF fail.");
1160 }
1161 else
1162 {
b.liu7ca612c2025-04-25 09:23:36 +08001163 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, NULL, 0);
b.liu87afc4c2024-08-14 17:33:45 +08001164 }
1165 }
1166 break;
1167 }
1168 case RIL_MSG_ID_SMS_CSCB:
1169 {
1170 if(pack->data_len == 0 || pack->data == NULL) // Get VoLTE state.
1171 {
1172 err = MBTK_RIL_ERR_UNSUPPORTED;
1173 }
1174 else // Set VoLTE state.
1175 {
1176 char *cscb = (char*)pack->data;
1177 int len = pack->data_len;
1178
b.liu7ca612c2025-04-25 09:23:36 +08001179 if(req_cscb_set(cli_info->sim_id, cli_info->port, cscb,len, &cme_err) || cme_err != MBTK_RIL_ERR_CME_NON)
b.liu87afc4c2024-08-14 17:33:45 +08001180 {
1181 if(cme_err != MBTK_RIL_ERR_CME_NON) {
1182 err = MBTK_RIL_ERR_CME + cme_err;
1183 } else {
1184 err = MBTK_RIL_ERR_UNKNOWN;
1185 }
1186 LOG("Set SMS CMGF fail.");
1187 }
1188 else
1189 {
b.liu7ca612c2025-04-25 09:23:36 +08001190 ril_rsp_pack_send(cli_info->sim_id, cli_info->port, cli_info->fd, pack->msg_id, pack->msg_index, NULL, 0);
b.liu87afc4c2024-08-14 17:33:45 +08001191 }
1192 }
1193 break;
1194 }
1195 default:
1196 {
1197 err = MBTK_RIL_ERR_REQ_UNKNOWN;
1198 LOG("Unknown request : %s", id2str(pack->msg_id));
1199 break;
1200 }
1201 }
1202
1203 return err;
1204}
1205
1206
1207
1208
1209