blob: 143ffac14024e518818238e774f6dabbd97d51e0 [file] [log] [blame]
r.xiaodac82562023-12-07 18:22:32 -08001/**
2 * \file dtmf_test.c
3 * \brief A Documented file.
4 *
5 * Detailed description
6 * \Author: jinLuo
7 * \Version: 1.0.0
8 * \Date: 2022-12-1
9 */
10
11/******************************************************************************\
12 * Include files
13\******************************************************************************/
14#include <pthread.h>
15#include <time.h>
16#include <sys/ioctl.h>
17#include <fcntl.h>
18#include <unistd.h>
19#include <sys/types.h>
20#include <sys/stat.h>
21#include <fcntl.h>
22#include <string.h>
23#include <stdio.h>
24#include <signal.h>
25#include <unistd.h>
26#include <fcntl.h>
27#include <errno.h>
28#include <string.h>
29#include <stdlib.h>
30#include <poll.h>
31#include <stdlib.h>
32
33#include <sys/ioctl.h>
34#include <sys/types.h>
35#include <sys/stat.h>
36#include "lynq_qser_sms.h"
37
38
r.xiaoefee0062023-12-29 19:35:43 -080039#if 0
40#include <stdlib.h>
41#include <stdio.h>
42#include <string.h>
43#include <sys/types.h>
44#include <pthread.h>
45#include <unistd.h>
46#include <dlfcn.h>
47#include <stdint.h>
48#include <ctype.h>
49
50//#include"lynq-qser-sms-demo.h"
51
52
53#define SMS_BUF 64
54#define MSG_BUF 100
55
56int flag_init = 0;
57
58typedef uint32_t sim_client_handle_type;
59sms_client_handle_type ph_sms = 2022;
60sms_client_handle_type h_sms = 2022;
61
62
63int (*qser_sms_client_init)(sms_client_handle_type *ph_sms);
64int (*qser_sms_client_deinit)(sms_client_handle_type h_sms);
65int (*qser_sms_send_sms)(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info);
66int (*qser_sms_addrxmsghandler)(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr);
67int (*qser_sms_deletefromstorage)(sms_client_handle_type h_sms, QSER_sms_storage_info_t *pt_sms_storage);
68int (*qser_sms_getsmscenteraddress)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *set_sca_cfg);
69int (*qser_sms_setsmscenteraddress)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg);
70
71void qser_sms_handler(QSER_SMS_MsgRef msgRef, void* contextPtr) {
72 printf("[%s-%d] sms handler, msgRef->sms_data = %s\n", __FUNCTION__, __LINE__, msgRef->sms_data);
73}
74
75bool isNumeric(char *phnum) {
76 int length = strlen(phnum);
77
78 if (length == 0) {
79 return false;
80 }
81
82 if (phnum[0] != '+' && (phnum[0] < '0' || phnum[0] > '9')) {
83 return false;
84 }
85
86 if (phnum[0] == '+' && length < 3) {
87 return false;
88 }
89
90 for (int i = 1; i < length; i++) {
91 if (phnum[i] < '0' || phnum[i] > '9') {
92 return false;
93 }
94 }
95
96 return true;
97}
98
99//以下示例默认为所有API 执行都成功的情况下,依次执行后续API
100int main(int argc, char *argv[])
101{
102 int ret = 0;
103 //char phnum[SMS_BUF]={0};
104
105 //const char *lynq_libpath_sms = "/lib/liblynq-qser-sms.so";
106 const char *lynq_libpath_sms = "/lib/liblynq_lib.so";
107 void *dlHandle_sms = dlopen(lynq_libpath_sms, RTLD_NOW);
108
109 if (dlHandle_sms == NULL)
110 {
111 printf("dlopen dlHandle_sms failed: %s\n", dlerror());
112 exit(EXIT_FAILURE);
113 }
114
115 if(argc != 2 || !isNumeric(argv[1]))
116 {
117 printf("[%s][%d] please input correct phnum\n",__FUNCTION__,__LINE__);
118 exit(1);
119 }
120
121 qser_sms_client_init = (int(*)(sms_client_handle_type *ph_sms))dlsym(dlHandle_sms,"qser_sms_client_init");
122 if(NULL != qser_sms_client_init)
123 {
124 ret = qser_sms_client_init(&ph_sms);
125 if(ret == 0)
126 {
127 printf("Run qser_sms_client_init\n");
128 }else{
129 printf("qser_sim_client_init error\n");
130 }
131 }else{
132 printf("qser_sim_client_init dlsym error\n");
133 }
134
135 sleep(2);
136
137 qser_sms_addrxmsghandler = (int(*)(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr))dlsym(dlHandle_sms,"qser_sms_addrxmsghandler");
138
139 if(NULL != qser_sms_addrxmsghandler)
140 {
141 ret = qser_sms_addrxmsghandler(qser_sms_handler, NULL);
142 if(ret == 0)
143 {
144 printf("qser_sms_addrxmsghandler success");
145 }else{
146 printf("qser_sms_addrxmsghandler error, ret = %d\n", ret);
147 }
148 }else{
149 printf("qser_sms_addrxmsghandler dlsym error\n");
150 }
151
152 QSER_sms_service_center_cfg_t get_sca_cfg;
153 qser_sms_getsmscenteraddress = (int (*)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg))dlsym(dlHandle_sms,"qser_sms_getsmscenteraddress");
154 if(NULL != qser_sms_getsmscenteraddress)
155 {
156 ret = qser_sms_getsmscenteraddress(h_sms, &get_sca_cfg);
157 if(ret == 0)
158 {
159 printf("get smsc success,service_center_addr = %s\n",get_sca_cfg.service_center_addr);
160 }else{
161 printf("get smsc error, ret = %d\n", ret);
162 }
163 }else{
164 printf("qser_sms_getsmscenteraddress dlsym error\n");
165 }
166 sleep(1);
167 QSER_sms_service_center_cfg_t set_sca_cfg;
168 strncpy(set_sca_cfg.service_center_addr, "+8613800280500", 14);//smsc +8613800280500成都号码 +8613800230500黑龙江
169 qser_sms_setsmscenteraddress = (int (*)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *set_sca_cfg))dlsym(dlHandle_sms,"qser_sms_setsmscenteraddress");
170 if(NULL != qser_sms_setsmscenteraddress)
171 {
172 ret = qser_sms_setsmscenteraddress(h_sms, &set_sca_cfg);
173 if(ret == 0)
174 {
175 printf("set smsc success");
176 }else{
177 printf("set smsc error, ret = %d\n", ret);
178 }
179 }else{
180 printf("qser_sms_setsmscenteraddress dlsym error\n");
181 }
182
183 //再次查询是否设置成功
184 sleep(1);
185 qser_sms_getsmscenteraddress = (int (*)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg))dlsym(dlHandle_sms,"qser_sms_getsmscenteraddress");
186 if(NULL != qser_sms_getsmscenteraddress)
187 {
188 ret = qser_sms_getsmscenteraddress(h_sms, &get_sca_cfg);
189 if(ret == 0)
190 {
191 printf("get smsc success,service_center_addr = %s\n",get_sca_cfg.service_center_addr);
192 }else{
193 printf("get smsc error, ret = %d\n", ret);
194 }
195 }else{
196 printf("qser_sms_getsmscenteraddress dlsym error\n");
197 }
198
199
200 //test 7bit
201 //char telephony_num[SMS_BUF] = {};
202 char msg[MSG_BUF] = {};
203 QSER_sms_info_t pt_sms_info;
204 //sprintf(telephony_num,"18981904623");//请用户务必替换此号码,随意向运营商发短消息极有可能被封号。
205 sprintf(msg,"hello");
206 strncpy(pt_sms_info.src_addr, argv[1], SMS_BUF);
207 strncpy(pt_sms_info.sms_data, msg, MSG_BUF);
208 pt_sms_info.format = QSER_SMS_7BIT;
209 // printf("[%s,%d] src_addr=%s, telephony_num = %s\n",__FUNCTION__,__LINE__, pt_sms_info.src_addr, telephony_num);
210 printf("[%s,%d] sms_data=%s, msg = %s\n",__FUNCTION__,__LINE__, pt_sms_info.sms_data, msg);
211
212 sleep(120);
213
214 //test ucs2
215 //char telephony_num[SMS_BUF] = {};
216 char msg[MSG_BUF] = {};
217 QSER_sms_info_t pt_sms_info;
218 //sprintf(telephony_num,"18981904623");//请用户务必替换此号码,随意向运营商发短消息极有可能被封号。
219 sprintf(msg,"你好吗");
220 strncpy(pt_sms_info.src_addr, argv[1], SMS_BUF);
221 strncpy(pt_sms_info.sms_data, msg, MSG_BUF);
222 pt_sms_info.format = QSER_SMS_UCS2;
223 // printf("[%s,%d] src_addr=%s, telephony_num = %s\n",__FUNCTION__,__LINE__, pt_sms_info.src_addr, telephony_num);
224 printf("[%s,%d] sms_data=%s, msg = %s\n",__FUNCTION__,__LINE__, pt_sms_info.sms_data, msg);
225
226 qser_sms_send_sms = (int (*)(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info))dlsym(dlHandle_sms,"qser_sms_send_sms");
227 if(NULL != qser_sms_send_sms)
228 {
229 ret = qser_sms_send_sms(h_sms, &pt_sms_info);
230 if(ret == 0)
231 {
232 printf("send sms success");
233 }else{
234 printf("send sms error, ret = %d\n", ret);
235 }
236 }else{
237 printf("qser_sms_send_sms dlsym error\n");
238 }
239
240 sleep(120);//在此期间向模组发送短消息,即可触发“接受新短消息事件”。
241 qser_sms_client_deinit = (int (*)(sms_client_handle_type h_sms))dlsym(dlHandle_sms,"qser_sms_client_deinit");
242 if(NULL != qser_sms_client_deinit)
243 {
244 ret = qser_sms_client_deinit(h_sms);
245 if(ret == 0)
246 {
247 printf("sms deinit success");
248 }else{
249 printf("sms deinit error, ret = %d\n", ret);
250 }
251 }else{
252 printf("qser_sms_client_deinit dlsym error\n");
253 }
254
255}
256
257#else
258
259void qser_sms_handler(QSER_SMS_MsgRef msgRef, void* contextPtr) {
260 printf("[%s-%d] sms handler, msgRef->sms_data = %s\n", __FUNCTION__, __LINE__, msgRef->sms_data);
261}
262
263
r.xiaodac82562023-12-07 18:22:32 -0800264int main(int argc, char *argv[])
265{
266 char operator[10];
267 char serNum[50] = {0};
268 char phonenumter[20] ={0};
269 int opt;
270 int ret, uToken;
r.xiaoefee0062023-12-29 19:35:43 -0800271 sms_client_handle_type handle = -1;
r.xiaodac82562023-12-07 18:22:32 -0800272 QSER_sms_info_t test_sms_info;
273 QSER_sms_service_center_cfg_t test_sca_cfg;
274 QSER_sms_storage_info_t test_sms_storage;
275
276 while(1)
277 {
278 printf("=========audio main=========\n"
279 "\t0 exit\n"
280 "\t1 sms init\n"
281 "\t2 send text sms\n"
282 "\t3 wait receive new sms\n"
283 "\t4 send PDU sms\n"
284 "\t5 //list sms\n"
285 "\t6 delete sms\n"
286 "\t7 query service number\n"
287 "\t8 set service number\n"
288 "\t9 deinit sms\n"
289 "operator: >> ");
290 fgets(operator, sizeof(operator), stdin);
291 fflush(stdin);
292 opt = atoi(operator);
293 switch (opt)
294 {
295 case 0:
296 printf("main exit\n");
297 return 0;
298 case 1:
r.xiaoefee0062023-12-29 19:35:43 -0800299 {
300 ret = qser_sms_client_init(&handle);
301 if(ret == 0)
302 {
303 printf("Run qser_sms_client_init\n");
304 }else{
305 printf("qser_sim_client_init error\n");
306 }
307 sleep(2);
308 //printf("test>>: handle = %d\n",handle);
309 break;
310 }
r.xiaodac82562023-12-07 18:22:32 -0800311 case 2:
312 {
313 memset(&test_sms_info, 0x00, sizeof(QSER_sms_info_t));
314 char *tmp = "all man hello world";
315 char *num = "+8618981904623";//目的手机卡
316 int len = strlen(tmp);
317 int num_len = strlen(num);
318 test_sms_info.format = 0;
r.xiaoefee0062023-12-29 19:35:43 -0800319 //test_sms_info.sms_data_len = len;
320 memcpy(test_sms_info.sms_data, tmp, len);
r.xiaodac82562023-12-07 18:22:32 -0800321 memcpy(test_sms_info.src_addr, num, num_len);
r.xiaoefee0062023-12-29 19:35:43 -0800322 qser_sms_send_sms(handle, &test_sms_info);
r.xiaodac82562023-12-07 18:22:32 -0800323 break;
324 }
325 case 3:
r.xiaoefee0062023-12-29 19:35:43 -0800326 qser_sms_addrxmsghandler(qser_sms_handler, NULL);
r.xiaodac82562023-12-07 18:22:32 -0800327 break;
328 case 4:
329 {
330 memset(&test_sms_info, 0x00, sizeof(QSER_sms_info_t));
331 char *tmp = "你好";
332 char *num = "+8618981904623";//目的手机卡
333 int len = strlen(tmp);
334 int num_len = strlen(num);
335 test_sms_info.format = 2;
r.xiaoefee0062023-12-29 19:35:43 -0800336 //test_sms_info.sms_data_len = len;
337 memcpy(test_sms_info.sms_data, tmp, len);
r.xiaodac82562023-12-07 18:22:32 -0800338 memcpy(test_sms_info.src_addr, num, num_len);
339
r.xiaoefee0062023-12-29 19:35:43 -0800340 qser_sms_send_sms(handle, &test_sms_info);
r.xiaodac82562023-12-07 18:22:32 -0800341 break;
342 }
343 // printf("please input volume (0~100): \n");
344 // fgets(operator, sizeof(operator), stdin);
345 // fflush(stdin);
346 // opt = atoi(operator);
347 // lynq_delete_sms(opt);
348 break;
349 case 5:
350 printf("please input index (0~50): \n");
351 fgets(operator, sizeof(operator), stdin);
352 fflush(stdin);
353 opt = atoi(operator);
354 // lynq_list_sms(1, opt, "ALL" );
355 break;
356 case 6:
357 {
358 memset(&test_sms_storage, 0x00, sizeof(QSER_sms_storage_info_t));
359 test_sms_storage.storage_idx = 1;
r.xiaoefee0062023-12-29 19:35:43 -0800360 qser_sms_deletefromstorage(handle, &test_sms_storage);
r.xiaodac82562023-12-07 18:22:32 -0800361 break;
362 }
363 case 7:
364 {
365 memset(&test_sca_cfg, 0x00, sizeof(QSER_sms_service_center_cfg_t));
r.xiaoefee0062023-12-29 19:35:43 -0800366 ret = qser_sms_getsmscenteraddress(handle,&test_sca_cfg);
r.xiaodac82562023-12-07 18:22:32 -0800367 if(!ret)
368 printf("get_smsc:%s\n", test_sca_cfg.service_center_addr);
369 break;
370 }
371 case 8:
372 // printf("please input service num: \n");
373 // fgets(phonenumter, sizeof(phonenumter), stdin);
374 // fflush(stdin);
375 // memcpy(phonenumter, "+8613800280500", "+8613800280500");
376
377 // ret= ql_sms_set_sms_center_address(phonenumter);
378 {
379 memset(&test_sca_cfg, 0x00, sizeof(QSER_sms_service_center_cfg_t));
380 char *num = "+8613800280500";//成都移动中心号码不用更改
381 int len = strlen(num);
382 memcpy(test_sca_cfg.service_center_addr, num, len);
383
r.xiaoefee0062023-12-29 19:35:43 -0800384 ret= qser_sms_setsmscenteraddress(handle, &test_sca_cfg);
r.xiaodac82562023-12-07 18:22:32 -0800385 break;
386 }
387 case 9:
r.xiaoefee0062023-12-29 19:35:43 -0800388 qser_sms_client_deinit(handle);
r.xiaodac82562023-12-07 18:22:32 -0800389 break;
390 default:
391 break;
392 }
393 }
394
395 return 0;
396}
r.xiaoefee0062023-12-29 19:35:43 -0800397
398#endif
399
400
401