Add mbtk/liblynq_lib_v2/ mbtk/libql_lib_v2/

Change-Id: Idbb802cd805b34603ccf65bff9818725a6955e51
diff --git a/mbtk/libql_lib_v2/src/ql_sms.c b/mbtk/libql_lib_v2/src/ql_sms.c
new file mode 100755
index 0000000..cbad623
--- /dev/null
+++ b/mbtk/libql_lib_v2/src/ql_sms.c
@@ -0,0 +1,493 @@
+//#include "lynq/lynq_sms_api.h"

+#include "mbtk_info_api.h"

+#include "mbtk_pdu_sms.h"

+#include "ql/ql_sms.h"

+

+

+#include <stdio.h>

+#include <stdlib.h>

+

+

+#define TELEPHONE_NUM_MAX 16

+#define MSM_NUMBER_MAX 1024+1

+#define RES_NUM_MIN 128

+

+#define DSC_to_msg(DSC) (DSC == 0 ? "Bit7" : (DSC == 1 ? "Bit8" : "UCS2"))

+

+static mbtk_info_handle_t* info_handle = NULL;

+static char center_address[15] = {0};

+

+

+// 编码后短信

+

+#if 0

+struct PDUS {

+    unsigned int count;

+    char **PDU;

+};

+#endif

+

+void lynq_sms_state_change_cb(const void* data, int data_len)

+{

+	LOGV("sms_state_change_cb()----------start\n");

+	uint8 *ptr = (uint8*)data;

+		printf("3sms_state_change_cb() : %s\n", ptr);

+

+	struct SMS_Struct s = PDUDecoding(ptr);

+	printf("服务中心地址: %s\n", s.SCA);

+	printf("发送方地址: %s\n", s.OA);

+	printf("服务中心时间戳: %s\n", s.SCTS);

+	printf("消息内容: %s\n", s.UD);

+	printf("数据编码方案: %s\n", DSC_to_msg(s.DCS));

+}

+

+

+QL_SMS_ERROR_CODE ql_sms_init()

+{

+    if(info_handle == NULL)

+    {

+        info_handle = mbtk_info_handle_get();

+        if(info_handle)

+        {

+			printf("creat info_handle is success\n");

+        }

+		else{

+			printf("creat info_handle is fail\n");

+			return QL_SMS_GENERIC_FAILURE;

+		}

+    }

+

+    return QL_SMS_SUCCESS;

+}

+

+

+QL_SMS_ERROR_CODE ql_sms_release()

+{

+    int ret = QL_SMS_SUCCESS;

+    if(info_handle)

+    {

+        ret = mbtk_info_handle_free(&info_handle);

+    }

+    else

+    {

+        ret = QL_SMS_GENERIC_FAILURE;

+    }

+

+    return ret;

+}

+

+

+/*

+*AT+CMGS="10086", CMGS TEST 				  // Send a SMS

+> CMGS TEST

++CMGS: 17

+OK

+*/

+/*

+int charset: send sms mode

+	 0:pdu, 1:text

+

+*/

+//当state 设置为 0(pdu)模式时,telephony_num应该设置为pud 数据大小的长度;msg:为pud 数据

+

+QL_SMS_ERROR_CODE ql_sms_send_pdu_msg(uint8_t *phone_num,uint8_t *data,int sms_type)

+{

+    if(info_handle == NULL || phone_num == NULL || data == NULL)

+    {

+        return -1;

+    }

+

+    char cmgs[MSM_NUMBER_MAX] = {0};

+    char resp[RES_NUM_MIN] = {0};

+    char pdu_data[512] = {0};

+    char phone_lenth[10] = {0};

+    char *p = pdu_data;

+    int mode = 0;

+    int err = 0;

+    int i = 0;

+    

+    if(strlen(data) > 512 || strlen(data) == 0 || strlen(phone_num) == 0)

+    {

+        printf("strlen(telephony_num):%d\n", strlen(phone_num));

+        printf("strlen(msg):%d\n", strlen(data));

+        return -1;

+    }

+

+    memset(center_address, 0, sizeof(center_address));

+    memcpy(center_address, "+8613800280500", strlen("+8613800280500"));

+

+    printf("phone_num:%s\n", phone_num);

+    printf("center_address:%s\n", center_address);

+    printf("data:%s\n", data);

+

+

+    mode = 0;   // PDU

+

+    char* pdu = NULL;

+        char* smsc = SCAEncoding(center_address);

+    struct PDUS *pdus = PDUEncoding(center_address,phone_num, data, NULL);

+

+    for (i = 0; i < pdus->count; i++) {

+         printf("第 %d 条:\n", i + 1);

+         printf("%s\n", pdus->PDU[i]);

+        pdu = pdus->PDU[i];

+    }

+

+    sprintf(p, "%s",smsc);

+    printf("pdu_data:%s\n", pdu_data);

+    sprintf(p+strlen(p), "%s", pdu);

+    printf("pdu_data:%s\n",pdu_data);

+

+

+    err = mbtk_sms_cmgf_set(info_handle, mode);

+    if(err) {

+       printf("cmgf set error : %d\n", err);

+    } else {

+       printf("cmgf set success\n");

+    }

+

+    sprintf(cmgs,"%d,%s",strlen(pdu_data), pdu_data);

+    printf("cmgs:%s\n", cmgs);

+

+    memset(resp, 0, sizeof(resp));

+

+    err = mbtk_sms_cmgs_set(info_handle, cmgs, resp);

+    if(err) {

+        printf("Error : %d\n", err);

+        return -1;

+    } else {

+        printf("cmgs set success . resp:%s\n", resp);

+    }

+

+    return 0;

+

+}

+QL_SMS_ERROR_CODE ql_sms_send_text_msg(uint8_t *phone_num,uint8_t *data,int sms_type)

+{

+    if(info_handle == NULL || phone_num == NULL || data == NULL)

+    {

+        return -1;

+    }

+

+    char cmgs[MSM_NUMBER_MAX] = {0};

+    char resp[RES_NUM_MIN] = {0};

+    int mode = 0;

+    int err = 0;

+    if(strlen(data) > 512 || strlen(data) == 0 || strlen(phone_num) == 0)

+    {

+        printf("strlen(telephony_num):%d\n", strlen(phone_num));

+        printf("strlen(msg):%d\n", strlen(data));

+        return -1;

+    }

+

+    mode = 1;   // text

+

+    err = mbtk_sms_cmgf_set(info_handle, mode);

+    if(err) {

+       printf("cmgf set error : %d\n", err);

+    } else {

+       printf("cmgf set success\n");

+    }

+

+    sprintf(cmgs,"%s,%s",phone_num, data);

+    printf("cmgs:%s\n", cmgs);

+

+/*  char *ptr = strstr(cmd, "cmgs,");      //CMGS="10086",hf

+    if(ptr != NULL)

+    {

+        ptr = strstr(cmd, ",");

+        ptr++;

+        memset(cmgs, 0, sizeof(cmgs));

+        memcpy(cmgs, ptr, strlen(ptr));

+        printf("1cmgs:%s, strlen(cmgs):%d\n", cmgs, strlen(cmgs));

+    }

+*/

+

+    memset(resp, 0, sizeof(resp));

+

+    err = mbtk_sms_cmgs_set(info_handle, cmgs, resp);

+    if(err) {

+        printf("Error : %d\n", err);

+        return -1;

+    } else {

+        printf("cmgs set success . resp:%s\n", resp);

+    }

+

+    return 0;

+

+}

+

+

+QL_SMS_ERROR_CODE ql_sms_add_event_handler(QL_SMS_StatusIndMsgHandlerFunc_t handlerPtr, void* contextPtr)

+{

+    if(info_handle == NULL)

+    {

+        return QL_SMS_GENERIC_FAILURE;

+    }

+

+	int ret = mbtk_sms_cnmi_set(info_handle);

+	if(ret)

+	{

+		printf("set cnmi fail\n");

+		return QL_SMS_GENERIC_FAILURE;

+	}

+

+	mbtk_sms_state_change_cb_reg(info_handle, lynq_sms_state_change_cb);

+	return QL_SMS_SUCCESS;

+}

+

+

+/*

+	AT+CMGD=<index>[,<delflag>]

+

+	Deletes message based on index

+	node:

+		index is -1, delete all message

+		delflag set 4

+*/

+

+QL_SMS_ERROR_CODE ql_sms_delete_msg(size_t index)

+{

+    char cmgd[128] = {0};

+    int err = 0;

+

+    if(index == -1)		//delete all

+    {

+    	memcpy(cmgd, ",4", strlen(",4"));

+    }

+    else

+    {

+    	sprintf(cmgd,"%d",index);

+    }

+

+    printf("cmgd:%s\n", cmgd);

+

+    err = mbtk_sms_cmgd_set(info_handle, cmgd);

+    if(err) {

+    	printf("lynq_delete_sms Error : %d\n", err);

+    	return -1;

+    } else {

+    	printf("lynq_delete_sms set success\n");

+    }

+

+    return 0;

+

+}

+

+

+QL_SMS_ERROR_CODE ql_search_sms_text_message(int index, recvmessage* payload)

+{

+    if(info_handle == NULL)

+    {

+        return -1;

+    }

+

+    char cmgs[MSM_NUMBER_MAX] = {0};

+    int mode = 1;   // text

+    int err = 0;

+    char *data = "ALL";

+

+    err = mbtk_sms_cmgf_set(info_handle, mode);

+    if(err) {

+       printf("cmgf set error : %d\n", err);

+    } else {

+       printf("cmgf set success\n");

+    }

+

+

+    char cmgl[128] = {0};

+    char resp[1024+1] ={0};

+    sprintf(cmgl,"%d,%s", index, data);

+/*

+    char *ptr = strstr(cmd, "cmgl,");  //  AT+CMGL[=<stat>]

+    if(ptr != NULL)

+    {

+        ptr = strstr(cmd, ",");

+        ptr++;

+        memset(cmgl, 0, sizeof(cmgl));

+        memcpy(cmgl, ptr, strlen(ptr));

+        printf("0cmgl:%s\n", cmgl);

+    }

+*/

+    memset(resp, 0, sizeof(resp));

+    err = mbtk_sms_cmgl_set(info_handle, cmgl, resp);

+    if(err) {

+        printf("lynq_list_sms Error : %d\n", err);

+        return -1;

+    } else {

+        printf("cmgl set success, reg:%s\n",resp);

+    }

+

+    return 0;

+

+}

+QL_SMS_ERROR_CODE ql_search_sms_pdu_message(int index, recvmessage* payload)

+{

+    if(info_handle == NULL)

+    {

+        return -1;

+    }

+

+    char cmgs[MSM_NUMBER_MAX] = {0};

+    int mode = 0;   // pud

+    int err = 0;

+    char *data = "ALL";

+

+

+    err = mbtk_sms_cmgf_set(info_handle, mode);

+    if(err) {

+       printf("cmgf set error : %d\n", err);

+    } else {

+       printf("cmgf set success\n");

+    }

+

+

+    char cmgl[128] = {0};

+    char resp[1024+1] ={0};

+    sprintf(cmgl,"%d,%s", index, data);

+/*

+    char *ptr = strstr(cmd, "cmgl,");  //  AT+CMGL[=<stat>]

+    if(ptr != NULL)

+    {

+        ptr = strstr(cmd, ",");

+        ptr++;

+        memset(cmgl, 0, sizeof(cmgl));

+        memcpy(cmgl, ptr, strlen(ptr));

+        printf("0cmgl:%s\n", cmgl);

+    }

+*/

+    memset(resp, 0, sizeof(resp));

+    err = mbtk_sms_cmgl_set(info_handle, cmgl, resp);

+    if(err) {

+        printf("lynq_list_sms Error : %d\n", err);

+        return -1;

+    } else {

+        printf("cmgl set success, reg:%s\n",resp);

+    }

+

+    return 0;

+

+}

+

+

+/*

+function: lynq_list_sms

+stat:0:pud, 1:text

+index: 0, list index;

+	  > 0,

+

+*/

+QL_SMS_ERROR_CODE ql_sms_list_sms(int stat, int index, char *data)

+{

+    if(info_handle == NULL)

+    {

+        return -1;

+    }

+

+	char cmgs[MSM_NUMBER_MAX] = {0};

+	int mode = 0;

+	int err = 0;

+

+	if(stat)	// text

+	{

+		mode = 1;

+	}

+

+	err = mbtk_sms_cmgf_set(info_handle, mode);

+	if(err) {

+	   printf("cmgf set error : %d\n", err);

+	} else {

+	   printf("cmgf set success\n");

+	}

+

+

+	char cmgl[128] = {0};

+	char resp[1024+1] ={0};

+	sprintf(cmgl,"%d,%s", index, data);

+/*

+	char *ptr = strstr(cmd, "cmgl,");  //  AT+CMGL[=<stat>]

+	if(ptr != NULL)

+	{

+		ptr = strstr(cmd, ",");

+		ptr++;

+		memset(cmgl, 0, sizeof(cmgl));

+		memcpy(cmgl, ptr, strlen(ptr));

+		printf("0cmgl:%s\n", cmgl);

+	}

+*/

+	memset(resp, 0, sizeof(resp));

+	err = mbtk_sms_cmgl_set(info_handle, cmgl, resp);

+	if(err) {

+		printf("lynq_list_sms Error : %d\n", err);

+		return -1;

+	} else {

+	    printf("cmgl set success, reg:%s\n",resp);

+	}

+

+	return 0;

+}

+

+

+

+int ql_sms_query_sms_storage_status(void)

+{

+	char mem[128] = {0};

+	int err = mbtk_sms_cpms_get(info_handle, mem);

+    if(err) {

+        printf("cpms query is fail Error : %d\n", err);

+		return -1;

+    } else {

+        printf("cpms query is success : %s\n", mem);

+    }

+

+	return 0;

+}

+

+QL_SMS_ERROR_CODE ql_sms_get_sms_center_address(uint8_t *sms_center_addree)

+{

+	char csca[128] = {0};

+	if(info_handle == NULL || sms_center_addree == NULL)

+    {

+		return QL_SMS_GENERIC_FAILURE;

+	}

+

+	int err = mbtk_sms_csca_get(info_handle, sms_center_addree);

+	if(err) {

+		printf("lynq_get_smsc_address Error : %d\n", err);

+		return QL_GET_RESPONSE_ERROR;

+	} else {

+		printf("lynq_get_smsc_address success\n");

+	}

+

+	return 0;

+}

+

+

+QL_SMS_ERROR_CODE ql_sms_set_sms_center_address(unsigned char *destNum)

+{

+    printf("1destNum:%s\n", destNum);

+    memset(center_address, 0, sizeof(center_address));

+        memcpy(center_address, destNum, strlen(destNum));

+	if(info_handle == NULL || destNum == NULL)

+	{

+		return -1;

+	}

+

+	int err = mbtk_sms_csca_set(info_handle, destNum);

+	if(err) {

+		printf("Error : %d\n", err);

+		return err;

+	} else {

+    //    memset(center_address, 0, sizeof(center_address));

+    //    memcpy(center_address, destNum, strlen(destNum));

+        printf("destNum:%s\n", destNum);

+		printf("lynq_set_smsc_address success\n");

+	}

+	return 0;

+

+}

+

+

+

+

+