blob: 5ff13a7d4a4a714b6a060ad7651e49e806ac2357 [file] [log] [blame]
you.chen79d8f932023-12-26 17:03:44 +08001#include <stdio.h>
2#include <stdlib.h>
3#include <string.h>
4#include <stdint.h>
5#include <errno.h>
6#include <unistd.h>
7#include <liblog/lynq_deflog.h>
8#include <sys/types.h>
9#include <pthread.h>
10#include <libsms/lynq_sms.h>
11#include "lynq_qser_sms.h"
12#define USER_LOG_TAG "LYNQ_QSER_SMS"
13
14QSER_SMS_RxMsgHandlerFunc_t tmp = NULL;
15
16sms_client_handle_type h_sms = 0;
17
18enum{
19 SMS_OK = 0,
20 SMS_FAIL,
21 SMS_PARAM_ERR
22};
23
24void *new_sms_thread_recv(void *p)
25{
26 int handle = -1;
27 int status = -1;
28 int charset = -1;
29 char smsc[1024];
30 int smscLen = -1;
31 int smslen = -1;
32 char message[1024];
33 char teleNum[1024];
34 int numLen = -1;
35 int current = -1;
36 int total = -1;
37 QSER_sms_info_t QSER_sms_info;
38 while (1)
39 {
40 if(!lynq_wait_receive_new_sms(&handle))
41 {
42 if(!lynq_read_sms(handle,&status,&charset,smsc,&smscLen,&smslen,message,teleNum,&numLen,&current,&total))
43 {
44 QSER_sms_info.storage_index = handle;
45 QSER_sms_info.format = (QSER_SMS_T)charset;
46 memcpy(QSER_sms_info.sms_data, message, smslen);
47 QSER_sms_info.sms_data[smslen] = '\0';
48 QSER_sms_info.sms_data_len = smslen;
49 if(total > 1)
50 {
51 QSER_sms_info.user_data_head_valid = 1;
52 }
53 else
54 {
55 QSER_sms_info.user_data_head_valid = 0;
56 }
57 tmp(&QSER_sms_info, &h_sms);
58 }
59 else
60 {
61 LYDBGLOG("lynq_read_sms error\n");
62 }
63 }
64 else
65 {
66 LYDBGLOG("lynq_wait_receive_new_sms error\n");
67 break;
68 }
69 }
70 return NULL;
71}
72
73int qser_sms_client_init(sms_client_handle_type *ph_sms)
74{
75 if(NULL == ph_sms)
76 {
77 LYERRLOG("input error\n");
78 return SMS_PARAM_ERR;
79 }
80 *ph_sms = (sms_client_handle_type)getpid();
81 h_sms = *ph_sms;
82 return lynq_sms_init(*ph_sms);
83}
84
85int qser_sms_client_deinit(sms_client_handle_type h_sms)
86{
87 if(h_sms == 0)
88 {
89 LYERRLOG("not init\n");
90 return SMS_PARAM_ERR;
91 }
92 return lynq_sms_deinit();
93}
94
95int qser_sms_send_sms(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info)
96{
97 if(NULL == pt_sms_info)
98 {
99 LYERRLOG("input error\n");
100 return SMS_PARAM_ERR;
101 }
102 if(h_sms == 0)
103 {
104 LYERRLOG("not init\n");
105 return SMS_PARAM_ERR;
106 }
107 return lynq_send_sms(pt_sms_info->src_addr, pt_sms_info->type, pt_sms_info->sms_data, pt_sms_info->sms_data_len);
108}
109
110int qser_sms_addrxmsghandler(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr)
111{
112 if(NULL == handlerPtr)
113 {
114 return SMS_PARAM_ERR;
115 }
116 if(NULL == contextPtr)
117 {
118 return SMS_PARAM_ERR;
119 }
120 tmp = handlerPtr;
121 pthread_t lynq_new_sms_tid = -1;
122 int rt = pthread_create(&lynq_new_sms_tid, NULL, new_sms_thread_recv, NULL);
123 if(rt < 0)
124 {
125 LYDBGLOG("qser_sms_addrxmsghandler pthread_create error!!!\n");
126 return -1;
127 }
128 return SMS_OK;
129}
130
131int qser_sms_deletefromstorage(sms_client_handle_type h_sms, QSER_sms_storage_info_t *pt_sms_storage)
132{
133 if(NULL == pt_sms_storage)
134 {
135 LYERRLOG("input error\n");
136 return SMS_PARAM_ERR;
137 }
138 if(h_sms == 0)
139 {
140 LYERRLOG("not init\n");
141 return SMS_PARAM_ERR;
142 }
143 return lynq_delete_sms(pt_sms_storage->storage_idx);
144}
145
146int qser_sms_send_smspdu(sms_client_handle_type h_sms, QSER_wms_send_raw_message_data_t *raw_messagdata, QSER_wms_raw_send_resp_t *rawresp)
147{
148 if(NULL == raw_messagdata)
149 {
150 LYERRLOG("input error\n");
151 return SMS_PARAM_ERR;
152 }
153 if(NULL == rawresp)
154 {
155 LYERRLOG("input error\n");
156 return SMS_PARAM_ERR;
157 }
158 if(h_sms == 0)
159 {
160 LYERRLOG("not init\n");
161 return SMS_PARAM_ERR;
162 }
163 LYERRLOG("not support\n");
164 return 0;
165}
166
167int qser_sms_getsmscenteraddress( sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *set_sca_cfg)
168{
169 if(NULL == set_sca_cfg)
170 {
171 LYERRLOG("input error\n");
172 return SMS_PARAM_ERR;
173 }
174 if(h_sms == 0)
175 {
176 LYERRLOG("not init\n");
177 return SMS_PARAM_ERR;
178 }
179 return lynq_get_smsc_address(set_sca_cfg->service_center_addr);
180}
181
182int qser_sms_setsmscenteraddress( sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg)
183{
184 if(NULL == get_sca_cfg)
185 {
186 LYERRLOG("input error\n");
187 return SMS_PARAM_ERR;
188 }
189 if(h_sms == 0)
190 {
191 LYERRLOG("not init\n");
192 return SMS_PARAM_ERR;
193 }
194 return lynq_set_smsc_address(get_sca_cfg->service_center_addr);
195}