[Feature][ZXW-4][SIM/SMS]Add liblynq-qser-sms and liblynq-qser-sim

Change-Id: Iefdc64be326725e7913314bba23d554e9a7a10fe
diff --git a/src/lynq/lib/liblynq-qser-sms/lynq_qser_sms.cpp b/src/lynq/lib/liblynq-qser-sms/lynq_qser_sms.cpp
new file mode 100644
index 0000000..5ff13a7
--- /dev/null
+++ b/src/lynq/lib/liblynq-qser-sms/lynq_qser_sms.cpp
@@ -0,0 +1,195 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <errno.h>
+#include <unistd.h>
+#include <liblog/lynq_deflog.h>
+#include <sys/types.h>
+#include <pthread.h>
+#include <libsms/lynq_sms.h>
+#include "lynq_qser_sms.h"
+#define USER_LOG_TAG "LYNQ_QSER_SMS"
+
+QSER_SMS_RxMsgHandlerFunc_t tmp = NULL;
+
+sms_client_handle_type h_sms = 0;
+
+enum{
+    SMS_OK = 0,
+    SMS_FAIL,
+    SMS_PARAM_ERR
+};
+
+void *new_sms_thread_recv(void *p)
+{
+    int handle = -1;
+    int status = -1;
+    int charset = -1;
+    char smsc[1024];
+    int smscLen = -1;
+    int smslen = -1;
+    char message[1024];
+    char teleNum[1024];
+    int numLen = -1;
+    int current = -1;
+    int total = -1;
+    QSER_sms_info_t QSER_sms_info;
+    while (1)
+    {
+        if(!lynq_wait_receive_new_sms(&handle))
+        {
+            if(!lynq_read_sms(handle,&status,&charset,smsc,&smscLen,&smslen,message,teleNum,&numLen,&current,&total))
+            {
+                QSER_sms_info.storage_index = handle;
+                QSER_sms_info.format = (QSER_SMS_T)charset;
+                memcpy(QSER_sms_info.sms_data, message, smslen);
+                QSER_sms_info.sms_data[smslen] = '\0';
+                QSER_sms_info.sms_data_len = smslen;
+                if(total > 1)
+                {
+                    QSER_sms_info.user_data_head_valid = 1;
+                }
+                else
+                {
+                    QSER_sms_info.user_data_head_valid = 0;
+                }
+                tmp(&QSER_sms_info, &h_sms);
+            }
+            else
+            {
+                LYDBGLOG("lynq_read_sms error\n");
+            }
+        }
+        else
+        {
+            LYDBGLOG("lynq_wait_receive_new_sms error\n");
+            break;
+        }
+    }
+    return NULL;
+}
+
+int qser_sms_client_init(sms_client_handle_type  *ph_sms)
+{
+    if(NULL == ph_sms)
+    {
+        LYERRLOG("input error\n");
+        return SMS_PARAM_ERR;
+    }
+    *ph_sms = (sms_client_handle_type)getpid();
+    h_sms = *ph_sms;
+    return lynq_sms_init(*ph_sms);
+}
+
+int qser_sms_client_deinit(sms_client_handle_type h_sms)
+{
+    if(h_sms == 0)
+    {
+        LYERRLOG("not init\n");
+        return SMS_PARAM_ERR;
+    }
+    return lynq_sms_deinit();
+}
+
+int qser_sms_send_sms(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info)
+{
+    if(NULL == pt_sms_info)
+    {
+        LYERRLOG("input error\n");
+        return SMS_PARAM_ERR;
+    }
+    if(h_sms == 0)
+    {
+        LYERRLOG("not init\n");
+        return SMS_PARAM_ERR;
+    }
+    return lynq_send_sms(pt_sms_info->src_addr, pt_sms_info->type, pt_sms_info->sms_data, pt_sms_info->sms_data_len);
+}
+
+int qser_sms_addrxmsghandler(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr)
+{
+    if(NULL == handlerPtr)
+    {
+        return SMS_PARAM_ERR;
+    }
+    if(NULL == contextPtr)
+    {
+        return SMS_PARAM_ERR;
+    }
+    tmp = handlerPtr;
+    pthread_t lynq_new_sms_tid = -1;
+    int rt = pthread_create(&lynq_new_sms_tid, NULL, new_sms_thread_recv, NULL);
+    if(rt < 0)
+    {
+        LYDBGLOG("qser_sms_addrxmsghandler pthread_create error!!!\n");
+        return -1;
+    }
+    return SMS_OK;
+}
+
+int qser_sms_deletefromstorage(sms_client_handle_type  h_sms, QSER_sms_storage_info_t  *pt_sms_storage)
+{
+    if(NULL == pt_sms_storage)
+    {
+        LYERRLOG("input error\n");
+        return SMS_PARAM_ERR;
+    }
+    if(h_sms == 0)
+    {
+        LYERRLOG("not init\n");
+        return SMS_PARAM_ERR;
+    }
+    return lynq_delete_sms(pt_sms_storage->storage_idx);
+}
+
+int 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)
+{
+    if(NULL == raw_messagdata)
+    {
+        LYERRLOG("input error\n");
+        return SMS_PARAM_ERR;
+    }
+    if(NULL == rawresp)
+    {
+        LYERRLOG("input error\n");
+        return SMS_PARAM_ERR;
+    }
+    if(h_sms == 0)
+    {
+        LYERRLOG("not init\n");
+        return SMS_PARAM_ERR;
+    }
+    LYERRLOG("not support\n");
+    return 0;
+}
+
+int qser_sms_getsmscenteraddress( sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *set_sca_cfg)
+{
+    if(NULL == set_sca_cfg)
+    {
+        LYERRLOG("input error\n");
+        return SMS_PARAM_ERR;
+    }
+    if(h_sms == 0)
+    {
+        LYERRLOG("not init\n");
+        return SMS_PARAM_ERR;
+    }
+    return lynq_get_smsc_address(set_sca_cfg->service_center_addr);
+}
+
+int qser_sms_setsmscenteraddress( sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg)
+{
+    if(NULL == get_sca_cfg)
+    {
+        LYERRLOG("input error\n");
+        return SMS_PARAM_ERR;
+    }
+    if(h_sms == 0)
+    {
+        LYERRLOG("not init\n");
+        return SMS_PARAM_ERR;
+    }
+    return lynq_set_smsc_address(get_sca_cfg->service_center_addr);
+}