[Feature][task-view-998]merge P56U10 version, ZXW code

Only Configure: No
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: No
Doc Update: No

Change-Id: I466f2ab935c5ede0be1803c75518b2cc4f939c15
diff --git a/ap/app/zte_comm/sms/src/sms_main.c b/ap/app/zte_comm/sms/src/sms_main.c
index cc3588e..26ebd18 100755
--- a/ap/app/zte_comm/sms/src/sms_main.c
+++ b/ap/app/zte_comm/sms/src/sms_main.c
@@ -1,394 +1,1176 @@
-
+/**************************************************************************

+*

+*                  Copyright (c) 2013 ZTE Corporation.

+*

+***************************************************************************

+* Ä£ ¿é Ãû : sms

+* ÎÄ ¼þ Ãû : sms_main.c

+* Ïà¹ØÎļþ :

+* ʵÏÖ¹¦ÄÜ : SMSÏûÏ¢Á÷³Ì¿ØÖÆ´¦Àí

+* ×÷    Õß : ÕÅ·Ò

+* °æ    ±¾ : V1.0

+* Íê³ÉÈÕÆÚ : 2017.2.9

+* ÆäËü˵Ã÷ :

+**************************************************************************/

+

+/**************************************************************************

+* #includeÇø

+**************************************************************************/

 #include <errno.h>

 #include <sys/msg.h>

 #include <semaphore.h>

 #include <limits.h>

 #include <pthread.h>

+

 #include "sms_code.h"

-typedef VOID(*pAtWeb_SmsMsgProc)(UINT8*pDatabuf);typedef struct{UINT32 msg_id;
-VOID(*func_ptr)(UINT8*pDatabuf);BOOL need_block;}T_zSmsHandleTable;VOID 
-atWeb_SendSms(UINT8*pDatabuf);VOID atWeb_DelSmsByIndex(UINT8*pDatabuf);VOID 
-atWeb_DelSmsByType(UINT8*pDatabuf);VOID atWeb_ReadSms(UINT8*pDatabuf);VOID 
-atWeb_SaveSms(UINT8*pDatabuf);VOID atWeb_SetSms(UINT8*pDatabuf);VOID 
-atWeb_OutdateSmsCheck(UINT8*pDatabuf);int zSms_SendZmgrReq(int index);extern 
-UINT8 g_zUfiSms_MemFullFlag[ZTE_WMS_MEMORY_MAX];extern T_zSms_SendSmsReq 
-g_zUfiSms_FinalCmgsBuf;extern int g_zUfiSms_CurConcatSegNo;extern 
-T_zUfiSms_DbStoreData g_zUfiSms_DbStoreData[ZTE_WMS_CONCAT_SMS_COUNT_MAX];extern
- int g_zUfiSms_SendFailedCount;extern int g_zUfiSms_ConcatTotalNum;extern UINT8 
-g_zUfiSms_IsConcatSendSuc;int iSmsIndex=(0x491+3896-0x13c9);int g_zSms_MsqId=-
-(0x24+7436-0x1d2f);int g_zSms_LocalMsqId=-(0x222+3114-0xe4b);sem_t g_sms_sem_id;
-T_zSms_optRsp g_smsOptRsp={(0xaf9+2542-0x14e7)};static const T_zSmsHandleTable 
-SmsHandleWebTab[]={{MSG_CMD_SEND_SMS,atWeb_SendSms,TRUE},{
-MSG_CMD_DEL_SMS_BY_INDEX,atWeb_DelSmsByIndex,TRUE},{MSG_CMD_SMS_MODIFY_TAG,
-atWeb_ReadSms,TRUE},{MSG_CMD_DRAFTS_SAVE,atWeb_SaveSms,FALSE},{
-MSG_CMD_SMS_LOCATION_SET,atWeb_SetSms,TRUE},{MSG_CMD_SMS_OUTDATE_CHECK,
-atWeb_OutdateSmsCheck,TRUE},{(0xc1c+3312-0x190c),NULL,FALSE}};VOID atWeb_SendSms
-(UINT8*pDatabuf){T_zGoaheadMsgBuf*ptMessage=NULL;T_zUfiSms_StatusInfo tStatus={
-(0x38c+4353-0x148d)};assert(pDatabuf!=NULL);ptMessage=(T_zGoaheadMsgBuf*)
-pDatabuf;zUfiSms_InitCmdStatus(&tStatus,WMS_SMS_CMD_MSG_SEND);(void)
-zUfiSms_SendRawSms((T_zUfiSms_SendReq*)ptMessage->msg_data);}VOID 
-atWeb_DelSmsByIndex(UINT8*pDatabuf){T_zUfiSms_DelReq tDelReq={
-(0x1467+3798-0x233d)};T_zUfiSms_CmdStatus result=WMS_CMD_PROCESSING;
-T_zUfiSms_StatusInfo tStatus={(0x5d2+3619-0x13f5)};assert(pDatabuf!=NULL);printf
-("[SMS] atWeb_DelSmsByIndex recv msg\n");memcpy(&tDelReq,pDatabuf,sizeof(
-T_zUfiSms_DelReq));zUfiSms_InitCmdStatus(&tStatus,WMS_SMS_CMD_MSG_DELETE);result
-=zUfiSms_DeleteSms(&tDelReq);tStatus.cmd_status=result;(void)
-zUfiSms_SetCmdStatus(&tStatus);zUfiMmi_SendSmsStatus();}VOID atWeb_DelSmsByType(
-UINT8*pDatabuf){
-#if (0x344+368-0x4b4)

-WEB_DEL_SMS_BY_TYPE*req=NULL;req=(WEB_DEL_SMS_BY_TYPE*)pDatabuf;assert(req!=NULL
-);if(req->eLocation!=ZSMS_LOCATION_SIM){ZTE_LOG(LOG_ERR,
-"\x7a\x53\x6d\x73\x5f\x50\x72\x65\x70\x44\x65\x6c\x42\x79\x54\x79\x70\x65\x20\x70\x61\x72\x61\x20\x4e\x55\x4c\x4c\x2e" "\n"
-);return;}zSms_ChangeMainState(ZSMS_STATE_DELING);ZTE_LOG(LOG_DEBUG,
-"\x7a\x53\x6d\x73\x5f\x50\x72\x65\x70\x44\x65\x6c\x42\x79\x54\x79\x70\x65\x20\x70\x73\x74\x52\x65\x71\x2d\x3e\x65\x42\x6f\x78\x4e\x61\x6d\x65\x3d\x25\x64" "\n"
-,req->eBoxName);SMS_DeleteRecordFromXML(SMS_LOCATION_SIM,(0x1a7+5576-0x176f),req
-->eBoxName);if(req->eBoxName==SMS_INBOX){sms_LoadSmsFromSim();}
+/**************************************************************************

+* ³£Á¿¶¨ÒåÇø

+**************************************************************************/

+//#define MODULE_ID_SMS_LOCAL 0x2001

+/**************************************************************************

+* Êý¾Ý½á¹¹¶¨ÒåÇø

+**************************************************************************/

+typedef VOID (*pAtWeb_SmsMsgProc)(UINT8 *pDatabuf); 

+

+typedef struct

+{

+	UINT32 msg_id;

+	VOID (*func_ptr)(UINT8 *pDatabuf);

+	BOOL need_block;//ÊÇ·ñÐèÒª×èÈû£¬Èç¹û×èÈû£¬ÐèÒª½«ÏûϢתµ½ÄÚ²¿Ï̴߳¦Àí

+}T_zSmsHandleTable;

+

+

+/**************************************************************************

+* staticº¯ÊýÉùÃ÷Çø

+**************************************************************************/

+

+VOID atWeb_SendSms(UINT8 *pDatabuf);

+VOID atWeb_DelSmsByIndex(UINT8 *pDatabuf);

+VOID atWeb_DelSmsByType(UINT8 *pDatabuf);

+VOID atWeb_ReadSms(UINT8 *pDatabuf);

+VOID atWeb_SaveSms(UINT8 *pDatabuf);

+VOID atWeb_SetSms(UINT8 *pDatabuf);

+VOID atWeb_OutdateSmsCheck(UINT8 *pDatabuf);

+

+int zSms_SendZmgrReq(int index);

+

+/**************************************************************************

+* È«¾Ö±äÁ¿¶¨ÒåÇø

+**************************************************************************/

+extern UINT8 g_zUfiSms_MemFullFlag[ZTE_WMS_MEMORY_MAX];

+extern T_zSms_SendSmsReq g_zUfiSms_FinalCmgsBuf;

+extern int g_zUfiSms_CurConcatSegNo;

+extern T_zUfiSms_DbStoreData g_zUfiSms_DbStoreData[ZTE_WMS_CONCAT_SMS_COUNT_MAX];

+extern int g_zUfiSms_SendFailedCount;

+extern int g_zUfiSms_ConcatTotalNum;

+extern UINT8 g_zUfiSms_IsConcatSendSuc;

+

+//ÔÚcmgrÇëÇóÖмǼindex£¬ÓÃÓÚÓ¦´ðÏûÏ¢ÖеĴ洢

+int iSmsIndex = 0;

+int  g_zSms_MsqId  = -1;

+int  g_zSms_LocalMsqId  = -1;

+sem_t   g_sms_sem_id;

+T_zSms_optRsp g_smsOptRsp = {0};

+

+	

+static const T_zSmsHandleTable  SmsHandleWebTab[]  =

+{

+	{MSG_CMD_SEND_SMS, atWeb_SendSms, TRUE},          

+    {MSG_CMD_DEL_SMS_BY_INDEX, atWeb_DelSmsByIndex, TRUE},   

+    //{MSG_CMD_DEL_SMS_BY_TYPE, atWeb_DelSmsByType},     

+    {MSG_CMD_SMS_MODIFY_TAG, atWeb_ReadSms, TRUE},     

+    {MSG_CMD_DRAFTS_SAVE, atWeb_SaveSms, FALSE}, //corem         

+    {MSG_CMD_SMS_LOCATION_SET, atWeb_SetSms, TRUE},

+    {MSG_CMD_SMS_OUTDATE_CHECK, atWeb_OutdateSmsCheck, TRUE},

+    {0, NULL, FALSE}

+};

+

+

+/**************************************************************************

+* º¯ÊýʵÏÖÇø

+**************************************************************************/

+

+// pDatabufΪpstMsg->aucDataBuf

+VOID atWeb_SendSms(UINT8 *pDatabuf)

+{

+    T_zGoaheadMsgBuf *ptMessage = NULL;

+    T_zUfiSms_StatusInfo tStatus = {0};

+    assert(pDatabuf != NULL);

+    

+    ptMessage = (T_zGoaheadMsgBuf *)pDatabuf;  

+    

+    zUfiSms_InitCmdStatus(&tStatus,WMS_SMS_CMD_MSG_SEND);

+

+	

+	//pthread_mutex_lock(&smsdb_mutex);

+    (void)zUfiSms_SendRawSms((T_zUfiSms_SendReq *)ptMessage->msg_data);

+	//pthread_mutex_unlock(&smsdb_mutex);

+}

+

+VOID atWeb_DelSmsByIndex(UINT8 *pDatabuf)

+{

+    T_zUfiSms_DelReq tDelReq = {0};

+    T_zUfiSms_CmdStatus result = WMS_CMD_PROCESSING;

+    T_zUfiSms_StatusInfo tStatus = {0};

+    assert(pDatabuf != NULL);

+

+    printf("[SMS] atWeb_DelSmsByIndex recv msg\n");

+    memcpy(&tDelReq, pDatabuf,sizeof(T_zUfiSms_DelReq));

+    

+    zUfiSms_InitCmdStatus(&tStatus,WMS_SMS_CMD_MSG_DELETE);

+    result = zUfiSms_DeleteSms(&tDelReq);

+

+    tStatus.cmd_status = result;

+    (void)zUfiSms_SetCmdStatus(&tStatus);

+	zUfiMmi_SendSmsStatus();

+}

+

+VOID atWeb_DelSmsByType(UINT8 *pDatabuf)

+{

+    #if 0

+    WEB_DEL_SMS_BY_TYPE *req = NULL;

+    req = (WEB_DEL_SMS_BY_TYPE *)pDatabuf;

+    assert(req != NULL); 

+    if(req->eLocation != ZSMS_LOCATION_SIM)

+    {

+        ZTE_LOG(LOG_ERR, "zSms_PrepDelByType para NULL.\n");

+        return;

+    }

+    zSms_ChangeMainState(ZSMS_STATE_DELING);

+    ZTE_LOG(LOG_DEBUG, "zSms_PrepDelByType pstReq->eBoxName=%d\n",req->eBoxName);

+    SMS_DeleteRecordFromXML(SMS_LOCATION_SIM, 0, req->eBoxName);

+    if (req->eBoxName == SMS_INBOX)

+    {

+    sms_LoadSmsFromSim();

+    }

+    #endif

+}

+//¶ÌÐÅ״̬ÓÉδ¶Á±äΪÒѶÁ

+VOID atWeb_ReadSms(UINT8 *pDatabuf)

+{

+    T_zGoaheadMsgBuf * ptMessage = NULL;

+    T_zUfiSms_CmdStatus result = WMS_CMD_PROCESSING;

+    T_zUfiSms_StatusInfo tStatus = {0};

+    assert(pDatabuf != NULL);

+

+    ptMessage = (T_zGoaheadMsgBuf *)pDatabuf; 

+    

+    zUfiSms_InitCmdStatus(&tStatus,WMS_SMS_CMD_MSG_MODIFY_TAG);

+    result = zUfiSms_ModifySmsTag((T_zUfiSms_ModifyFlag *)ptMessage->msg_data);

+

+    tStatus.cmd_status = result;

+    (void)zUfiSms_SetCmdStatus(&tStatus);

+}

+

+VOID atWeb_SaveSms(UINT8 *pDatabuf)

+{

+    T_zGoaheadMsgBuf * ptMessage = NULL;

+    T_zUfiSms_CmdStatus result = WMS_CMD_PROCESSING;

+    T_zUfiSms_StatusInfo tStatus = {0};

+    assert(pDatabuf != NULL);

+

+    ptMessage = (T_zGoaheadMsgBuf *)pDatabuf; 

+    

+    zUfiSms_InitCmdStatus(&tStatus,WMS_SMS_CMD_MSG_WRITE);

+    result = zUfiSms_WriteRawSms((T_zUfiSms_SaveReq *)ptMessage->msg_data);

+

+    if(g_zUfiSms_MemFullFlag[ZTE_WMS_MEMORY_NV])

+    {

+        tStatus.err_code = ZTE_SMS_CMS_MEM_FULL;

+        printf("[SMS] atWeb_SaveSms mem full\n");

+    }

+    tStatus.cmd_status = result;

+    (void)zUfiSms_SetCmdStatus(&tStatus);

+

+    //zSms_ChangeMainState(ZSMS_STATE_SAVING);

+    zUfiSms_ChangeMainState(SMS_STATE_SAVING);  

+    sc_cfg_set(NV_SMS_SAVE_RESULT, "ok");

+    

+}

+

+VOID atWeb_SetSms(UINT8 *pDatabuf)

+{

+	T_zGoaheadMsgBuf * ptMessage = NULL;

+    T_zUfiSms_CmdStatus result = WMS_CMD_PROCESSING;

+    T_zUfiSms_StatusInfo tStatus = {0};      

+

+	printf( "INTO atWeb_SetSms.\n");

+	

+    assert(pDatabuf != NULL);

+

+    ptMessage = (T_zGoaheadMsgBuf *)pDatabuf;

+	

+    zUfiSms_InitCmdStatus(&tStatus,WMS_SMS_CMD_CFG_SET_PARAMETERS);

+	result = zUfiSms_SetSmsPara((T_zUfiSms_ParaInfo *)ptMessage->msg_data);

+

+	tStatus.cmd_status = result;

+	(void)zUfiSms_SetCmdStatus(&tStatus);	

+}

+

+VOID atWeb_OutdateSmsCheck(UINT8 *pDatabuf)

+{

+    T_zUfiSms_DelReq tSmsDel = {0};

+

+    zUfiSms_CheckDbOutdateSms(ZTE_WMS_DB_NV_TABLE, &tSmsDel);

+    printf("----out coun nvt: %d----\n",tSmsDel.all_or_count);

+    //for(i=0;i<tSmsDel.all_or_count;i++)printf("----out id: %d----\n",tSmsDel.id[i]);

+	

+    if(tSmsDel.all_or_count > 0)

+    {

+        atWeb_DelSmsByIndex(&tSmsDel);

+    }

+	

+    memset(&tSmsDel, 0, sizeof(T_zUfiSms_DelReq));

+    zUfiSms_CheckDbOutdateSms(ZTE_WMS_DB_SIM_TABLE, &tSmsDel);

+    printf("----out count sim: %d----\n",tSmsDel.all_or_count);

+    //for(i=0;i<tSmsDel.all_or_count;i++)printf("----out id: %d----\n",tSmsDel.id[i]);

+	

+    if(tSmsDel.all_or_count > 0)

+    {

+        atWeb_DelSmsByIndex(&tSmsDel);

+    }

+}

+

+VOID zSms_HandleWebMsg(MSG_BUF *ptMsgBuf)

+{

+	UINT32 i = 0;

+	assert(ptMsgBuf != NULL);

+

+	printf("sms recv msg from webserver:%d\n", ptMsgBuf->usMsgCmd);

+    while(0 != SmsHandleWebTab[i].msg_id)

+    {

+        if(ptMsgBuf->usMsgCmd == SmsHandleWebTab[i].msg_id)

+        {

+        	if(SmsHandleWebTab[i].need_block && ptMsgBuf->src_id != MODULE_ID_SMS)

+        	{

+				ipc_send_message(MODULE_ID_SMS, MODULE_ID_SMS_LOCAL, ptMsgBuf->usMsgCmd, ptMsgBuf->usDataLen, (unsigned char *)ptMsgBuf->aucDataBuf, 0);

+			}        	

+            else if(NULL != SmsHandleWebTab[i].func_ptr)

+            {

+                SmsHandleWebTab[i].func_ptr(ptMsgBuf->aucDataBuf);                

+            }

+            break;

+        }

+        i++;

+    }	

+}

+

+

+//

+SINT32 zSms_SendMsg(USHORT Msg_cmd,USHORT us_DataLen,UCHAR *pData)

+{

+	printf( "sms send msg cmd:%d\n", Msg_cmd);

+    ipc_send_message(MODULE_ID_SMS, MODULE_ID_AT_CTL, Msg_cmd, us_DataLen, (unsigned char *)pData,0);

+   

+    return 0;    

+}

+

+

+/*¶ÔÓ¦atSms_SendCmgsReq*/

+SINT32 zSms_SendCmgsReq(VOID)

+{

+ 	T_zSms_SendSmsReq  sendSmsInfo = {0};

+ 

+ 	memset(&sendSmsInfo, 0x00, sizeof(T_zSms_SendSmsReq));

+ 	sendSmsInfo.length = g_zUfiSms_FinalCmgsBuf.length;

+

+	if(strlen(g_zUfiSms_FinalCmgsBuf.pdu)< ZSMS_PDU_SIZE-1)

+    {

+        memcpy(sendSmsInfo.pdu, g_zUfiSms_FinalCmgsBuf.pdu, strlen(g_zUfiSms_FinalCmgsBuf.pdu));

+    }

+    else

+    {

+        printf("[SMS] atSms_SendCmgsReq pdu too long:%s\n",g_zUfiSms_FinalCmgsBuf.pdu);

+        memcpy(sendSmsInfo.pdu, g_zUfiSms_FinalCmgsBuf.pdu, ZSMS_PDU_SIZE-2);

+    }

+ 	// Ìí¼Ó½áβ·û

+	*(sendSmsInfo.pdu + strlen(g_zUfiSms_FinalCmgsBuf.pdu)) = ZSMS_CTRL_Z_CHAR;

+#if 1//corem for debug

+	printf("[SMS] atSms_SendCmgsReq send data\n");

+    printf("\n[SMS]%s\n",sendSmsInfo.pdu);

 #endif

-}VOID atWeb_ReadSms(UINT8*pDatabuf){T_zGoaheadMsgBuf*ptMessage=NULL;
-T_zUfiSms_CmdStatus result=WMS_CMD_PROCESSING;T_zUfiSms_StatusInfo tStatus={
-(0x20b+4601-0x1404)};assert(pDatabuf!=NULL);ptMessage=(T_zGoaheadMsgBuf*)
-pDatabuf;zUfiSms_InitCmdStatus(&tStatus,WMS_SMS_CMD_MSG_MODIFY_TAG);result=
-zUfiSms_ModifySmsTag((T_zUfiSms_ModifyFlag*)ptMessage->msg_data);tStatus.
-cmd_status=result;(void)zUfiSms_SetCmdStatus(&tStatus);}VOID atWeb_SaveSms(UINT8
-*pDatabuf){T_zGoaheadMsgBuf*ptMessage=NULL;T_zUfiSms_CmdStatus result=
-WMS_CMD_PROCESSING;T_zUfiSms_StatusInfo tStatus={(0x98f+1762-0x1071)};assert(
-pDatabuf!=NULL);ptMessage=(T_zGoaheadMsgBuf*)pDatabuf;zUfiSms_InitCmdStatus(&
-tStatus,WMS_SMS_CMD_MSG_WRITE);result=zUfiSms_WriteRawSms((T_zUfiSms_SaveReq*)
-ptMessage->msg_data);if(g_zUfiSms_MemFullFlag[ZTE_WMS_MEMORY_NV]){tStatus.
-err_code=ZTE_SMS_CMS_MEM_FULL;printf(
-"\x5b\x53\x4d\x53\x5d\x20\x61\x74\x57\x65\x62\x5f\x53\x61\x76\x65\x53\x6d\x73\x20\x6d\x65\x6d\x20\x66\x75\x6c\x6c" "\n"
-);}tStatus.cmd_status=result;(void)zUfiSms_SetCmdStatus(&tStatus);
-zUfiSms_ChangeMainState(SMS_STATE_SAVING);sc_cfg_set(NV_SMS_SAVE_RESULT,
-"\x6f\x6b");}VOID atWeb_SetSms(UINT8*pDatabuf){T_zGoaheadMsgBuf*ptMessage=NULL;
-T_zUfiSms_CmdStatus result=WMS_CMD_PROCESSING;T_zUfiSms_StatusInfo tStatus={
-(0x16eb+1028-0x1aef)};printf(
-"\x49\x4e\x54\x4f\x20\x61\x74\x57\x65\x62\x5f\x53\x65\x74\x53\x6d\x73\x2e" "\n")
-;assert(pDatabuf!=NULL);ptMessage=(T_zGoaheadMsgBuf*)pDatabuf;
-zUfiSms_InitCmdStatus(&tStatus,WMS_SMS_CMD_CFG_SET_PARAMETERS);result=
-zUfiSms_SetSmsPara((T_zUfiSms_ParaInfo*)ptMessage->msg_data);tStatus.cmd_status=
-result;(void)zUfiSms_SetCmdStatus(&tStatus);}VOID atWeb_OutdateSmsCheck(UINT8*
-pDatabuf){T_zUfiSms_DelReq tSmsDel={(0x7f0+7623-0x25b7)};
-zUfiSms_CheckDbOutdateSms(ZTE_WMS_DB_NV_TABLE,&tSmsDel);printf(
-"\x2d\x2d\x2d\x2d\x6f\x75\x74\x20\x63\x6f\x75\x6e\x20\x6e\x76\x74\x3a\x20\x25\x64\x2d\x2d\x2d\x2d" "\n"
-,tSmsDel.all_or_count);if(tSmsDel.all_or_count>(0x12b+6943-0x1c4a)){
-atWeb_DelSmsByIndex(&tSmsDel);}memset(&tSmsDel,(0x709+941-0xab6),sizeof(
-T_zUfiSms_DelReq));zUfiSms_CheckDbOutdateSms(ZTE_WMS_DB_SIM_TABLE,&tSmsDel);
-printf(
-"\x2d\x2d\x2d\x2d\x6f\x75\x74\x20\x63\x6f\x75\x6e\x74\x20\x73\x69\x6d\x3a\x20\x25\x64\x2d\x2d\x2d\x2d" "\n"
-,tSmsDel.all_or_count);if(tSmsDel.all_or_count>(0x4c+4306-0x111e)){
-atWeb_DelSmsByIndex(&tSmsDel);}}VOID zSms_HandleWebMsg(MSG_BUF*ptMsgBuf){UINT32 
-i=(0x162d+3387-0x2368);assert(ptMsgBuf!=NULL);printf(
-"\x73\x6d\x73\x20\x72\x65\x63\x76\x20\x6d\x73\x67\x20\x66\x72\x6f\x6d\x20\x77\x65\x62\x73\x65\x72\x76\x65\x72\x3a\x25\x64" "\n"
-,ptMsgBuf->usMsgCmd);while((0x1f32+747-0x221d)!=SmsHandleWebTab[i].msg_id){if(
-ptMsgBuf->usMsgCmd==SmsHandleWebTab[i].msg_id){if(SmsHandleWebTab[i].need_block
-&&ptMsgBuf->src_id!=MODULE_ID_SMS){ipc_send_message(MODULE_ID_SMS,
-MODULE_ID_SMS_LOCAL,ptMsgBuf->usMsgCmd,ptMsgBuf->usDataLen,(unsigned char*)
-ptMsgBuf->aucDataBuf,(0x1a87+1294-0x1f95));}else if(NULL!=SmsHandleWebTab[i].
-func_ptr){SmsHandleWebTab[i].func_ptr(ptMsgBuf->aucDataBuf);}break;}i++;}}SINT32
- zSms_SendMsg(USHORT Msg_cmd,USHORT us_DataLen,UCHAR*pData){printf(
-"\x73\x6d\x73\x20\x73\x65\x6e\x64\x20\x6d\x73\x67\x20\x63\x6d\x64\x3a\x25\x64" "\n"
-,Msg_cmd);ipc_send_message(MODULE_ID_SMS,MODULE_ID_AT_CTL,Msg_cmd,us_DataLen,(
-unsigned char*)pData,(0x1303+5102-0x26f1));return(0x1d49+1315-0x226c);}SINT32 
-zSms_SendCmgsReq(VOID){T_zSms_SendSmsReq sendSmsInfo={(0xd73+3579-0x1b6e)};
-memset(&sendSmsInfo,(0x4e6+7181-0x20f3),sizeof(T_zSms_SendSmsReq));sendSmsInfo.
-length=g_zUfiSms_FinalCmgsBuf.length;if(strlen(g_zUfiSms_FinalCmgsBuf.pdu)<
-ZSMS_PDU_SIZE-(0x12cb+5109-0x26bf)){memcpy(sendSmsInfo.pdu,
-g_zUfiSms_FinalCmgsBuf.pdu,strlen(g_zUfiSms_FinalCmgsBuf.pdu));}else{printf(
-"\x5b\x53\x4d\x53\x5d\x20\x61\x74\x53\x6d\x73\x5f\x53\x65\x6e\x64\x43\x6d\x67\x73\x52\x65\x71\x20\x70\x64\x75\x20\x74\x6f\x6f\x20\x6c\x6f\x6e\x67\x3a\x25\x73" "\n"
-,g_zUfiSms_FinalCmgsBuf.pdu);memcpy(sendSmsInfo.pdu,g_zUfiSms_FinalCmgsBuf.pdu,
-ZSMS_PDU_SIZE-(0x263+6187-0x1a8c));}*(sendSmsInfo.pdu+strlen(
-g_zUfiSms_FinalCmgsBuf.pdu))=ZSMS_CTRL_Z_CHAR;
-#if (0x13a4+3823-0x2292)
-printf(
-"\x5b\x53\x4d\x53\x5d\x20\x61\x74\x53\x6d\x73\x5f\x53\x65\x6e\x64\x43\x6d\x67\x73\x52\x65\x71\x20\x73\x65\x6e\x64\x20\x64\x61\x74\x61" "\n"
-);printf("\n" "\x5b\x53\x4d\x53\x5d\x25\x73" "\n",sendSmsInfo.pdu);
-#endif

-zSms_SendMsg(MSG_CMD_SENDSMS_REQ,sizeof(T_zSms_SendSmsReq),&sendSmsInfo);
-sem_wait(&g_sms_sem_id);if(g_smsOptRsp.result==(0x58f+8057-0x2507)){return 
-ZSMS_RESULT_OK;}else{return ZSMS_RESULT_ERROR;}}VOID zSms_RecvCmgsOk(VOID){
-printf(
-"\x73\x6d\x73\x20\x73\x65\x6e\x64\x65\x64\x20\x73\x75\x63\x63\x65\x73\x73\x2e\x20" "\n"
-);g_zUfiSms_CurConcatSegNo++;if(g_zUfiSms_CurConcatSegNo>
-ZTE_WMS_CONCAT_SMS_COUNT_MAX){return;}g_zUfiSms_DbStoreData[
-g_zUfiSms_CurConcatSegNo-(0x199d+794-0x1cb6)].tag=WMS_TAG_TYPE_MO_SENT_V01;
-zUfiSms_CmgsRespProc();}VOID zSms_RecvCmgsErr(VOID){printf(
-"\x73\x6d\x73\x20\x73\x65\x6e\x64\x65\x64\x20\x66\x61\x69\x6c\x2e\x20" "\n");
-g_zUfiSms_CurConcatSegNo++;if(g_zUfiSms_CurConcatSegNo>
-ZTE_WMS_CONCAT_SMS_COUNT_MAX){return;}g_zUfiSms_SendFailedCount++;printf(
-"\x73\x65\x6e\x64\x20\x73\x6d\x73\x20\x66\x61\x69\x6c\x65\x64\x2c\x73\x6f\x20\x77\x72\x69\x74\x65\x20\x73\x6d\x73\x20\x74\x6f\x20\x64\x72\x61\x66\x74\x62\x6f\x78\x2e" "\n"
-);g_zUfiSms_DbStoreData[g_zUfiSms_CurConcatSegNo-(0xb23+6995-0x2675)].tag=
-WMS_TAG_TYPE_MO_NOT_SENT_V01;if(g_zUfiSms_ConcatTotalNum>(0xda1+4409-0x1ed9)){
-g_zUfiSms_IsConcatSendSuc=FALSE;}zUfiSms_CmgsRespProc();}SINT32 zSms_SendCmgdReq
-(UINT8 index){T_zSms_DelSmsReq delSmsReq={(0x150d+548-0x1731)};delSmsReq.index=
-index;zSms_SendMsg(MSG_CMD_DELSMS_REQ,sizeof(T_zSms_DelSmsReq),&delSmsReq);
-sem_wait(&g_sms_sem_id);if(g_smsOptRsp.result==(0xb8d+6650-0x2586)){return 
-ZSMS_RESULT_OK;}else{return ZSMS_RESULT_ERROR;}}VOID zSms_RecvCmgdOk(VOID){CHAR 
-strUsed[(0x1f6+4782-0x149a)]={(0x7c7+1653-0xe3c)};int used=(0x1d52+1382-0x22b8);
-int tmp_i=(0x41c+8940-0x2708);sc_cfg_set(NV_SMS_DEL_RESULT,"\x6f\x6b");printf(
-"\x5b\x53\x4d\x53\x5d\x20\x73\x65\x74\x20\x73\x69\x6d\x5f\x64\x65\x6c\x5f\x72\x65\x73\x75\x6c\x74\x20\x74\x6f\x20\x4f\x4b\x2e\x20" "\n"
-);sc_cfg_get(ZTE_WMS_NVCONFIG_SIM_CARD_USED,strUsed,sizeof(strUsed));tmp_i=atoi(
-strUsed);if(tmp_i<(0xd2+2286-0x9c0)||tmp_i>INT_MAX-(0x58f+4477-0x170b)){at_print
-(LOG_ERR,
-"\x5b\x53\x4d\x53\x5d\x57\x4d\x53\x5f\x4e\x56\x43\x4f\x4e\x46\x49\x47\x5f\x53\x49\x4d\x5f\x43\x41\x52\x44\x5f\x55\x53\x45\x44\x20\x74\x6d\x70\x5f\x69\x20\x65\x72\x72\x3a\x25\x64" "\n"
-,tmp_i);tmp_i=(0x1e87+2085-0x26ac);}used=tmp_i-(0x1509+833-0x1849);if(used<
-(0x815+3685-0x167a)){used=(0x76a+2959-0x12f9);}memset(&strUsed,
-(0x28c+9143-0x2643),(0x131c+4422-0x2458));snprintf(strUsed,sizeof(strUsed),
-"\x25\x64",used);sc_cfg_set(ZTE_WMS_NVCONFIG_SIM_CARD_USED,strUsed);}VOID 
-zSms_RecvCmgdErr(VOID){sc_cfg_set(NV_SMS_DEL_RESULT,"\x66\x61\x69\x6c");printf(
-"\x5b\x53\x4d\x53\x5d\x20\x73\x65\x74\x20\x73\x69\x6d\x5f\x64\x65\x6c\x5f\x72\x65\x73\x75\x6c\x74\x20\x74\x6f\x20\x66\x61\x69\x6c\x2e\x20" "\n"
-);}VOID zSms_RecvCmgdFinish(VOID){char StrValue[(0x1645+741-0x1920)]={
-(0x120+8615-0x22c7)};CHAR strTotal[(0x362+1659-0x9d3)]={(0x6c6+2727-0x116d)};
-CHAR strUsed[(0x147a+1195-0x191b)]={(0xc7+4977-0x1438)};int total=
-(0x11c8+5139-0x25db);int used=(0x310+4312-0x13e8);int remain=(0x332+1387-0x89d);
-sc_cfg_get(ZTE_WMS_NVCONFIG_SIM_CARD_USED,strUsed,sizeof(strUsed));used=atoi(
-strUsed);if(used<(0xb24+881-0xe95)||used>INT_MAX-(0x7a8+958-0xb65)){at_print(
-LOG_ERR,
-"\x5b\x53\x4d\x53\x5d\x57\x4d\x53\x5f\x4e\x56\x43\x4f\x4e\x46\x49\x47\x5f\x53\x49\x4d\x5f\x43\x41\x52\x44\x5f\x55\x53\x45\x44\x20\x65\x72\x72\x3a\x25\x64" "\n"
-,used);used=(0x18d4+2299-0x21cf);}sc_cfg_get(ZTE_WMS_NVCONFIG_SIM_CARD_TOTAL,
-strTotal,sizeof(strTotal));total=atoi(strTotal);if(total<(0xd04+5453-0x2251)||
-total>INT_MAX-(0x41d+6249-0x1c85)){at_print(LOG_ERR,
-"\x5b\x53\x4d\x53\x5d\x57\x4d\x53\x5f\x4e\x56\x43\x4f\x4e\x46\x49\x47\x5f\x53\x49\x4d\x5f\x43\x41\x52\x44\x5f\x54\x4f\x54\x41\x4c\x20\x65\x72\x72\x3a\x25\x64" "\n"
-,total);total=(0x848+4425-0x1991);}remain=total-used;if(remain<
-(0x11cf+4952-0x2527)){remain=(0x765+669-0xa02);}memset(&StrValue,
-(0x2307+585-0x2550),(0x1bf7+666-0x1e87));snprintf(StrValue,sizeof(StrValue),
-"\x25\x64",remain);sc_cfg_set(ZTE_WMS_NVCONFIG_SIM_CARD_REMAIN,StrValue);printf(
-"\x5b\x53\x4d\x53\x5d\x20\x7a\x55\x66\x69\x53\x6d\x73\x5f\x44\x65\x6c\x65\x74\x65\x53\x69\x6d\x53\x6d\x73\x20\x75\x73\x65\x64\x3d\x25\x64\x2c\x72\x65\x6d\x61\x69\x6e\x3d\x25\x64\x2c\x74\x6f\x74\x61\x6c\x3d\x25\x64" "\n"
-,used,remain,total);zUfiSms_ChangeMainState(SMS_STATE_DELED);sc_cfg_set(
-NV_SMS_DB_CHANGE,"\x31");}int zSms_SendZmenaReq(SINT32 avail){T_zSms_StroageReq 
-storageReq={(0xddb+1645-0x1448)};storageReq.type=avail;zSms_SendMsg(
-MSG_CMD_STORAGE_CAP_REQ,sizeof(T_zSms_StroageReq),&storageReq);sem_wait(&
-g_sms_sem_id);if(g_smsOptRsp.result==(0xe8c+3887-0x1dba)){return ZSMS_RESULT_OK;
-}else{return ZSMS_RESULT_ERROR;}}int zSms_SendCmgrReq(UINT8 index){
-T_zSms_ModifyTagReq modTagReq={(0x1290+3141-0x1ed5)};modTagReq.index=index;
-zSms_SendMsg(MSG_CMD_MODIFY_TAG_REQ,sizeof(T_zSms_ModifyTagReq),&modTagReq);
-sem_wait(&g_sms_sem_id);if(g_smsOptRsp.result==(0x6c5+6712-0x20fc)){return 
-ZSMS_RESULT_OK;}else{return ZSMS_RESULT_ERROR;}}int zSms_SetCscaReq(PSTR sca){
-T_zSms_SetScaReq setscareq;strncpy(setscareq.sca,sca,sizeof(setscareq.sca)-
-(0x323+2292-0xc16));zSms_SendMsg(MSG_CMD_SCA_SET_REQ,sizeof(T_zSms_SetScaReq),&
-setscareq);sem_wait(&g_sms_sem_id);if(g_smsOptRsp.result==(0xd3d+5876-0x2430)){
-return ZSMS_RESULT_OK;}else{return ZSMS_RESULT_ERROR;}}int zSms_SendCnmiReq(PSTR
- pAtCmdPara){T_zSms_NotifySetReq notifySetReq={(0x2145+404-0x22d9)};if(
-(0x13fd+1059-0x1820)==strcmp(pAtCmdPara,"\x73\x69\x6d")){notifySetReq.mt=
-(0x23a2+328-0x24e9);}else{notifySetReq.mt=(0x17d6+3494-0x257a);}zSms_SendMsg(
-MSG_CMD_NOTIFY_SET_REQ,sizeof(T_zSms_NotifySetReq),&notifySetReq);sem_wait(&
-g_sms_sem_id);if(g_smsOptRsp.result==(0x1b5+8977-0x24c5)){return ZSMS_RESULT_OK;
-}else{return ZSMS_RESULT_ERROR;}}VOID zSms_RecvCmtInd(UINT8*pDatabuf){CHAR 
-needSMS[(0x908+1777-0xfc7)]={(0x10f0+4378-0x220a)};sc_cfg_get(
-NV_NEED_SUPPORT_SMS,needSMS,sizeof(needSMS));if((0x8fb+3132-0x1537)==strcmp(
-needSMS,"\x6e\x6f")){printf(
-"\x5b\x53\x4d\x53\x5d\x61\x74\x53\x6d\x73\x5f\x52\x65\x63\x76\x43\x6d\x74\x52\x73\x70\x20\x6e\x65\x65\x64\x53\x4d\x53\x3d\x6e\x6f\x21"
-);return;}T_zSms_SmsInd tCmtRsp={(0x358+8885-0x260d)};memcpy(&tCmtRsp,(
-T_zSms_SmsInd*)pDatabuf,sizeof(T_zSms_SmsInd));zUfiSms_CmtRespProc(&tCmtRsp);
-zUfiMmi_SendSmsStatus();sc_cfg_set(NV_SMS_RECV_RESULT,"\x6f\x6b");}VOID 
-zSms_RecvCmtiInd(UINT8*pDatabuf){char sms_Main_state[(0x2dc+7721-0x20e7)]={
-(0xe84+5410-0x23a6)};T_zSms_SmsIndexInd*smsIdxInd=(T_zSms_SmsIndexInd*)pDatabuf;
-CHAR needSMS[(0xd7a+4550-0x1f0e)]={(0xa76+7146-0x2660)};sc_cfg_get(
-NV_NEED_SUPPORT_SMS,needSMS,sizeof(needSMS));if((0x867+2088-0x108f)==strcmp(
-needSMS,"\x6e\x6f")){printf(
-"\x5b\x53\x4d\x53\x5d\x61\x74\x53\x6d\x73\x5f\x52\x65\x63\x76\x43\x6d\x74\x52\x73\x70\x20\x6e\x65\x65\x64\x53\x4d\x53\x3d\x6e\x6f\x21"
-);return;}sc_cfg_get(NV_SMS_STATE,sms_Main_state,sizeof(sms_Main_state));if(
-strcmp(sms_Main_state,"\x73\x6d\x73\x5f\x64\x65\x6c\x69\x6e\x67")==
-(0x18b7+1300-0x1dcb)){printf(
-"\x5b\x53\x4d\x53\x5d\x20\x61\x74\x53\x6d\x73\x5f\x52\x65\x63\x76\x43\x6d\x74\x69\x52\x73\x70\x3a\x20\x73\x6d\x73\x5f\x64\x65\x6c\x69\x6e\x67" "\n"
-);return;}if((0xe4c+637-0x10c9)==strncmp("\x53\x4d",smsIdxInd->storetype,
-(0xe8b+2252-0x1755))){zUfiSms_SetSmsLocation(SMS_LOCATION_SIM);
-zUfiSms_ChangeMainState(SMS_STATE_RECVING);zSms_SendZmgrReq(smsIdxInd->index);}
-else{printf(
-"\x5b\x53\x4d\x53\x5d\x20\x61\x74\x53\x6d\x73\x5f\x52\x65\x63\x76\x43\x6d\x74\x69\x52\x73\x70\x20\x3a\x73\x74\x6f\x72\x65\x20\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x6e\x6f\x74\x20\x53\x4d\x2e" "\n"
-);}sc_cfg_set(NV_SMS_RECV_RESULT,"");}VOID zSms_RecvCdsInd(UINT8*pDatabuf){CHAR 
-needSMS[(0x9bf+2246-0x1253)]={(0x2285+389-0x240a)};sc_cfg_get(
-NV_NEED_SUPPORT_SMS,needSMS,sizeof(needSMS));if((0x19f0+2873-0x2529)==strcmp(
-needSMS,"\x6e\x6f")){printf(
-"\x5b\x53\x4d\x53\x5d\x61\x74\x53\x6d\x73\x5f\x52\x65\x63\x76\x43\x6d\x74\x52\x73\x70\x20\x6e\x65\x65\x64\x53\x4d\x53\x3d\x6e\x6f\x21"
-);return;}T_zSms_SmsInd tCmtRsp={(0x80b+2814-0x1309)};memcpy(&tCmtRsp,(
-T_zSms_SmsInd*)pDatabuf,sizeof(T_zSms_SmsInd));zUfiSms_CdsRespProc(&tCmtRsp);
-zUfiMmi_SendSmsStatus();sc_cfg_set(NV_SMS_RECV_RESULT,"\x6f\x6b");}VOID 
-zSms_RecvCdsiInd(UINT8*pDatabuf){char sms_Main_state[(0x1c9d+521-0x1e88)]={
-(0xbba+2772-0x168e)};T_zSms_SmsIndexInd*smsIdxInd=(T_zSms_SmsIndexInd*)pDatabuf;
-CHAR needSMS[(0xab+3971-0xffc)]={(0x5ca+286-0x6e8)};sc_cfg_get(
-NV_NEED_SUPPORT_SMS,needSMS,sizeof(needSMS));if((0xdf4+4121-0x1e0d)==strcmp(
-needSMS,"\x6e\x6f")){printf(
-"\x5b\x53\x4d\x53\x5d\x61\x74\x53\x6d\x73\x5f\x52\x65\x63\x76\x43\x6d\x74\x52\x73\x70\x20\x6e\x65\x65\x64\x53\x4d\x53\x3d\x6e\x6f\x21"
-);return;}sc_cfg_get(NV_SMS_STATE,sms_Main_state,sizeof(sms_Main_state));if(
-strcmp(sms_Main_state,"\x73\x6d\x73\x5f\x64\x65\x6c\x69\x6e\x67")==
-(0x983+3381-0x16b8)){printf(
-"\x5b\x53\x4d\x53\x5d\x20\x61\x74\x53\x6d\x73\x5f\x52\x65\x63\x76\x43\x64\x73\x69\x52\x73\x70\x3a\x20\x73\x6d\x73\x5f\x64\x65\x6c\x69\x6e\x67" "\n"
-);return;}if((0x1d39+1720-0x23f1)==strncmp("\x53\x4d",smsIdxInd->storetype,
-(0x1cf+301-0x2fa))){zUfiSms_SetSmsLocation(SMS_LOCATION_SIM);
-zUfiSms_ChangeMainState(SMS_STATE_RECVING);zSms_SendZmgrReq(smsIdxInd->index);}
-else{printf(
-"\x5b\x53\x4d\x53\x5d\x20\x61\x74\x53\x6d\x73\x5f\x52\x65\x63\x76\x43\x64\x73\x69\x52\x73\x70\x20\x3a\x73\x74\x6f\x72\x65\x20\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x6e\x6f\x74\x20\x53\x4d\x2e" "\n"
-);}sc_cfg_set(NV_SMS_RECV_RESULT,"");}int zSms_SendCnmaReq(int ack_mode){
-T_zSms_SmsAckReq ackReq={(0x1094+1044-0x14a8)};CHAR ackPduStr[
-(0x1a11+1201-0x1e90)]={(0x162b+3850-0x2535)};ackReq.ackmode=ack_mode;if(ack_mode
-==(0x9fa+5551-0x1fa7)){zUfiSms_EncodePdu_DeliverReport(ackPduStr,
-(0x143f+3491-0x210f));memcpy(ackReq.pdu,ackPduStr,strlen(ackPduStr));
-#if (0x63f+934-0x9e5)

-if(strlen(ackPduStr)<ZSMS_PDU_SIZE-(0x8d4+2780-0x13af)){memcpy(ackReq.pdu,
-ackPduStr,strlen(ackPduStr));}else{at_print(LOG_DEBUG
-"\x5b\x53\x4d\x53\x5d\x20\x61\x74\x53\x6d\x73\x5f\x53\x65\x6e\x64\x43\x6e\x6d\x61\x52\x65\x71\x20\x70\x64\x75\x20\x74\x6f\x6f\x20\x6c\x6f\x6e\x67\x3a\x25\x73" "\n"
-,ackPduStr);memcpy(ackReq.pdu,ackPduStr,ZSMS_PDU_SIZE-(0x1102+4875-0x240b));}
+

+	zSms_SendMsg(MSG_CMD_SENDSMS_REQ, sizeof(T_zSms_SendSmsReq), &sendSmsInfo);

+

+	sem_wait(&g_sms_sem_id);

+

+	if(g_smsOptRsp.result == 1)

+	{

+		return ZSMS_RESULT_OK;

+	}

+	else

+	{

+		return ZSMS_RESULT_ERROR;

+	}

+}

+

+VOID zSms_RecvCmgsOk(VOID)

+{

+    printf("sms sended success. \n");	

+    g_zUfiSms_CurConcatSegNo++;

+    

+    if(g_zUfiSms_CurConcatSegNo > ZTE_WMS_CONCAT_SMS_COUNT_MAX)

+    {

+        return;

+    }

+    

+    //·¢Ëͳɹ¦Ò»½Ú

+    g_zUfiSms_DbStoreData[g_zUfiSms_CurConcatSegNo-1].tag = WMS_TAG_TYPE_MO_SENT_V01;

+    

+	zUfiSms_CmgsRespProc();

+}

+

+VOID zSms_RecvCmgsErr(VOID)

+{   

+    printf("sms sended fail. \n");

+    g_zUfiSms_CurConcatSegNo++;

+    if(g_zUfiSms_CurConcatSegNo > ZTE_WMS_CONCAT_SMS_COUNT_MAX)

+    {

+        return;

+    }

+    

+    //ʧ°ÜÊýÁ¿£¬×îÖÕдÈëÊý¾Ý¿â

+    g_zUfiSms_SendFailedCount++;

+    

+    printf("send sms failed,so write sms to draftbox.\n");

+    g_zUfiSms_DbStoreData[g_zUfiSms_CurConcatSegNo-1].tag = WMS_TAG_TYPE_MO_NOT_SENT_V01;

+    if(g_zUfiSms_ConcatTotalNum > 1)

+    {

+        // ³¤¶ÌÐÅ·¢ËÍʧ°Ü£¬ÖÃΪfalse

+        g_zUfiSms_IsConcatSendSuc = FALSE;

+    }

+    

+	zUfiSms_CmgsRespProc();

+}

+

+/*¶ÔÓ¦atSms_SendCmgdReq*/

+SINT32 zSms_SendCmgdReq(UINT8 index)

+{

+	T_zSms_DelSmsReq  delSmsReq = {0};

+

+	delSmsReq.index = index;

+	

+	zSms_SendMsg(MSG_CMD_DELSMS_REQ, sizeof(T_zSms_DelSmsReq), &delSmsReq);

+

+	sem_wait(&g_sms_sem_id);

+

+	if(g_smsOptRsp.result == 1)

+	{

+		return ZSMS_RESULT_OK;

+	}

+	else

+	{

+		return ZSMS_RESULT_ERROR;

+	}

+}

+

+VOID zSms_RecvCmgdOk(VOID)

+{

+    CHAR  strUsed[10]    = {0};

+    int used = 0;

+	int tmp_i = 0;

+    

+    sc_cfg_set(NV_SMS_DEL_RESULT, "ok");

+    printf("[SMS] set sim_del_result to OK. \n");

+    

+    sc_cfg_get(ZTE_WMS_NVCONFIG_SIM_CARD_USED,strUsed,sizeof(strUsed));

+

+	tmp_i = atoi(strUsed); //kw 3

+	if(tmp_i < 0 || tmp_i > INT_MAX-1) {

+		at_print(LOG_ERR,"[SMS]WMS_NVCONFIG_SIM_CARD_USED tmp_i err:%d\n", tmp_i);

+		tmp_i = 0;

+	}

+

+	used = tmp_i - 1;

+    if(used < 0)

+    {

+        used = 0;

+    }

+    memset(&strUsed, 0, 10);

+    snprintf(strUsed,sizeof(strUsed),"%d", used);

+    sc_cfg_set(ZTE_WMS_NVCONFIG_SIM_CARD_USED, strUsed);

+}

+

+VOID zSms_RecvCmgdErr(VOID)

+{

+    

+    sc_cfg_set(NV_SMS_DEL_RESULT, "fail");

+    printf("[SMS] set sim_del_result to fail. \n");

+}

+

+VOID zSms_RecvCmgdFinish(VOID)

+{

+    char StrValue[10] = {0};

+    CHAR  strTotal[10]    = {0};

+    CHAR  strUsed[10]    = {0};

+    int total = 0;

+    int used = 0;

+    int remain = 0;

+    

+    sc_cfg_get(ZTE_WMS_NVCONFIG_SIM_CARD_USED,strUsed,sizeof(strUsed));

+    used = atoi(strUsed);

+	if(used < 0 || used > INT_MAX-1) { //kw 3

+		at_print(LOG_ERR,"[SMS]WMS_NVCONFIG_SIM_CARD_USED err:%d\n", used);

+		used = 0;

+	}

+    sc_cfg_get(ZTE_WMS_NVCONFIG_SIM_CARD_TOTAL,strTotal,sizeof(strTotal));

+    total = atoi(strTotal);

+	if(total < 0 || total > INT_MAX-1) { //kw 3

+		at_print(LOG_ERR,"[SMS]WMS_NVCONFIG_SIM_CARD_TOTAL err:%d\n", total);

+		total = 0;

+	}

+	

+    remain = total - used;

+    if(remain < 0)

+    {

+        remain = 0;

+    }

+    

+    memset(&StrValue, 0, 10);

+    snprintf(StrValue,sizeof(StrValue),"%d", remain);

+    sc_cfg_set(ZTE_WMS_NVCONFIG_SIM_CARD_REMAIN,StrValue);

+    printf("[SMS] zUfiSms_DeleteSimSms used=%d,remain=%d,total=%d\n",used,remain,total);

+    zUfiSms_ChangeMainState(SMS_STATE_DELED);

+    sc_cfg_set(NV_SMS_DB_CHANGE,"1");

+}

+

+/*¶ÔÓ¦atSms_SendZmenaReq*/

+int zSms_SendZmenaReq(SINT32 avail)

+{

+	T_zSms_StroageReq  storageReq = {0};

+

+	storageReq.type = avail;

+	

+	zSms_SendMsg(MSG_CMD_STORAGE_CAP_REQ, sizeof(T_zSms_StroageReq), &storageReq);

+

+	sem_wait(&g_sms_sem_id);

+

+	if(g_smsOptRsp.result == 1)

+	{

+		return ZSMS_RESULT_OK;

+	}

+	else

+	{

+		return ZSMS_RESULT_ERROR;

+	}

+}

+

+//SMS²»¹ØÐÄcmgrµÄÏìÓ¦

+/*¶ÔÓ¦atSms_SendCmgrReq*/

+int zSms_SendCmgrReq(UINT8 index)

+{

+	T_zSms_ModifyTagReq  modTagReq = {0};

+

+	modTagReq.index = index;

+	

+	zSms_SendMsg(MSG_CMD_MODIFY_TAG_REQ, sizeof(T_zSms_ModifyTagReq), &modTagReq);

+

+	sem_wait(&g_sms_sem_id);

+

+	if(g_smsOptRsp.result == 1)

+	{

+		return ZSMS_RESULT_OK;

+	}

+	else

+	{

+		return ZSMS_RESULT_ERROR;

+	}

+}

+

+/*¶ÔÓ¦ atBase_SendAtCscaSetReq*/

+int zSms_SetCscaReq(PSTR sca)

+{

+	T_zSms_SetScaReq  setscareq;

+	

+	strncpy(setscareq.sca, sca, sizeof(setscareq.sca)-1);

+	

+	zSms_SendMsg(MSG_CMD_SCA_SET_REQ, sizeof(T_zSms_SetScaReq), &setscareq);

+

+	sem_wait(&g_sms_sem_id);

+

+	if(g_smsOptRsp.result == 1)

+	{

+		return ZSMS_RESULT_OK;

+	}

+	else

+	{

+		return ZSMS_RESULT_ERROR;

+	}

+}

+

+/*¶ÔÓ¦atBase_SendAtCnmiReq*/

+int zSms_SendCnmiReq(PSTR pAtCmdPara)

+{ 

+	T_zSms_NotifySetReq  notifySetReq = {0};

+

+	if(0 == strcmp(pAtCmdPara, "sim"))

+	{

+		notifySetReq.mt = 1;

+	}

+	else

+	{

+		notifySetReq.mt = 2;

+	}

+		

+	zSms_SendMsg(MSG_CMD_NOTIFY_SET_REQ, sizeof(T_zSms_NotifySetReq), &notifySetReq);

+

+	sem_wait(&g_sms_sem_id);

+

+	if(g_smsOptRsp.result == 1)

+	{

+		return ZSMS_RESULT_OK;

+	}

+	else

+	{

+		return ZSMS_RESULT_ERROR;

+	}

+}

+

+/*¶ÔÓ¦atSms_RecvCmtRsp*/

+VOID zSms_RecvCmtInd(UINT8 *pDatabuf)

+{

+    //ÅжÏÊÇ·ñÖ§³ÖSMS

+    //added by wenqin 2016-5-18

+    CHAR needSMS[50] = {0};

+

+	sc_cfg_get(NV_NEED_SUPPORT_SMS,needSMS,sizeof(needSMS));

+    if(0 == strcmp(needSMS, "no"))

+    {

+        printf("[SMS]atSms_RecvCmtRsp needSMS=no!");

+        return;

+    }

+    

+    T_zSms_SmsInd tCmtRsp = {0};

+

+	memcpy(&tCmtRsp, (T_zSms_SmsInd*)pDatabuf, sizeof(T_zSms_SmsInd));

+

+	//pthread_mutex_lock(&smsdb_mutex);

+	zUfiSms_CmtRespProc(&tCmtRsp);

+	zUfiMmi_SendSmsStatus();

+	//pthread_mutex_unlock(&smsdb_mutex);

+	sc_cfg_set(NV_SMS_RECV_RESULT, "ok");

+    

+}

+

+/*¶ÔÓ¦atSms_RecvCmtiRsp */

+VOID zSms_RecvCmtiInd(UINT8 *pDatabuf)

+{

+    char sms_Main_state[30] = {0};

+	T_zSms_SmsIndexInd  *smsIdxInd = (T_zSms_SmsIndexInd*)pDatabuf;

+

+	//ÅжÏÊÇ·ñÖ§³ÖSMS

+    //added by wenqin 2016-5-18

+    CHAR needSMS[50] = {0};

+    sc_cfg_get(NV_NEED_SUPPORT_SMS,needSMS,sizeof(needSMS));

+    if(0 == strcmp(needSMS, "no"))

+    {

+        printf("[SMS]atSms_RecvCmtRsp needSMS=no!");

+        return;

+    }

+

+	//ɾ³ý¹ý³ÌÖв»½ÓÊÜжÌÐÅ

+    sc_cfg_get(NV_SMS_STATE,sms_Main_state,sizeof(sms_Main_state));

+    if(strcmp(sms_Main_state,"sms_deling")==0)

+    {

+    	printf("[SMS] atSms_RecvCmtiRsp: sms_deling\n");

+        return;

+    }

+

+	if(0 == strncmp("SM", smsIdxInd->storetype, 2))	

+	{

+		zUfiSms_SetSmsLocation(SMS_LOCATION_SIM);       

+        zUfiSms_ChangeMainState(SMS_STATE_RECVING);

+		//send ZMGR

+		zSms_SendZmgrReq(smsIdxInd->index);

+	}

+	else //Ä£¿éÔÚÖØÆôºó¾­³£³öÏÖ¶ÌÐŴ洢λÖÃΪSRµÄÇé¿ö

+    {

+        printf("[SMS] atSms_RecvCmtiRsp :store location not SM.\n");

+    }

+    sc_cfg_set(NV_SMS_RECV_RESULT, "");	

+}

+

+/*¶ÔÓ¦atSms_RecvCdsRsp*/

+VOID zSms_RecvCdsInd(UINT8 *pDatabuf)

+{

+    //ÅжÏÊÇ·ñÖ§³ÖSMS

+    //added by wenqin 2016-5-18

+    CHAR needSMS[50] = {0};

+    sc_cfg_get(NV_NEED_SUPPORT_SMS,needSMS,sizeof(needSMS));

+    if(0 == strcmp(needSMS, "no"))

+    {

+        printf("[SMS]atSms_RecvCmtRsp needSMS=no!");

+        return;

+    }

+

+    T_zSms_SmsInd tCmtRsp = {0};

+

+	memcpy(&tCmtRsp, (T_zSms_SmsInd*)pDatabuf, sizeof(T_zSms_SmsInd));

+

+	//pthread_mutex_lock(&smsdb_mutex);

+    zUfiSms_CdsRespProc(&tCmtRsp);

+    zUfiMmi_SendSmsStatus();

+    //pthread_mutex_unlock(&smsdb_mutex);

+    sc_cfg_set(NV_SMS_RECV_RESULT, "ok");    

+}

+

+

+/*¶ÔÓ¦atSms_RecvCdsiRsp*/

+VOID zSms_RecvCdsiInd(UINT8 *pDatabuf)

+{

+    char sms_Main_state[30] = {0};

+	T_zSms_SmsIndexInd  *smsIdxInd = (T_zSms_SmsIndexInd*)pDatabuf;

+

+	//ÅжÏÊÇ·ñÖ§³ÖSMS

+    //added by wenqin 2016-5-18

+    CHAR needSMS[50] = {0};

+    sc_cfg_get(NV_NEED_SUPPORT_SMS,needSMS,sizeof(needSMS));

+    if(0 == strcmp(needSMS, "no"))

+    {

+        printf("[SMS]atSms_RecvCmtRsp needSMS=no!");

+        return;

+    }

+

+	//ɾ³ý¹ý³ÌÖв»½ÓÊÜжÌÐÅ

+    sc_cfg_get(NV_SMS_STATE,sms_Main_state,sizeof(sms_Main_state));

+    if(strcmp(sms_Main_state,"sms_deling")==0)

+    {

+        printf("[SMS] atSms_RecvCdsiRsp: sms_deling\n");

+        return;

+    }

+

+	if(0 == strncmp("SM", smsIdxInd->storetype, 2))	

+	{

+		zUfiSms_SetSmsLocation(SMS_LOCATION_SIM);       

+        zUfiSms_ChangeMainState(SMS_STATE_RECVING);

+		//send ZMGR

+		zSms_SendZmgrReq(smsIdxInd->index);

+	}

+	else //Ä£¿éÔÚÖØÆôºó¾­³£³öÏÖ¶ÌÐŴ洢λÖÃΪSRµÄÇé¿ö

+    {

+        printf("[SMS] atSms_RecvCdsiRsp :store location not SM.\n");

+    }

+    sc_cfg_set(NV_SMS_RECV_RESULT, "");    

+}

+

+

+/*¶ÔÓ¦atSms_SendCnmaReq*/

+int zSms_SendCnmaReq(int ack_mode)

+{

+	T_zSms_SmsAckReq ackReq = {0};    

+    CHAR ackPduStr[50] = {0};

+

+	ackReq.ackmode = ack_mode;

+

+	if(ack_mode == 2)

+	{

+		zUfiSms_EncodePdu_DeliverReport(ackPduStr, 0xD3); 

+		memcpy(ackReq.pdu, ackPduStr, strlen(ackPduStr));

+#if 0

+		if(strlen(ackPduStr)< ZSMS_PDU_SIZE-1)

+        {

+            memcpy(ackReq.pdu, ackPduStr, strlen(ackPduStr));

+        }

+        else

+        {

+            at_print(LOG_DEBUG"[SMS] atSms_SendCnmaReq pdu too long:%s\n",ackPduStr);

+            memcpy(ackReq.pdu, ackPduStr, ZSMS_PDU_SIZE-2);

+        }

 #endif     

-*(ackReq.pdu+strlen(ackPduStr))=ZSMS_CTRL_Z_CHAR;printf(
-"\x5b\x53\x4d\x53\x5d\x20\x61\x74\x53\x6d\x73\x5f\x53\x65\x6e\x64\x43\x6e\x6d\x61\x52\x65\x71\x2e\x20\x70\x64\x75\x3d\x20\x25\x73" "\n"
-,ackReq.pdu);ackReq.length=strlen(ackPduStr)/(0xae5+3505-0x1894);}zSms_SendMsg(
-MSG_CMD_SMSACK_REQ,sizeof(T_zSms_SmsAckReq),&ackReq);sem_wait(&g_sms_sem_id);if(
-g_smsOptRsp.result==(0x525+2491-0xedf)){return ZSMS_RESULT_OK;}else{return 
-ZSMS_RESULT_ERROR;}}int zSms_SendZmgrReq(int index){T_zSms_ReadSmsReq readSmsReq
-={(0x142d+4208-0x249d)};iSmsIndex=index;printf(
-"\x5b\x53\x4d\x53\x5d\x20\x61\x74\x53\x6d\x73\x5f\x53\x65\x6e\x64\x5a\x6d\x67\x72\x52\x65\x71\x20\x47\x65\x74\x20\x69\x6e\x64\x65\x78\x3a\x25\x64\x2e" "\n"
-,iSmsIndex);readSmsReq.index=index;zSms_SendMsg(MSG_CMD_READSMS_REQ,sizeof(
-T_zSms_ReadSmsReq),&readSmsReq);return(0x13c+5559-0x16f3);}VOID zSms_RecvZmgrRsp
-(UINT8*pDatabuf){T_zSms_SmsInd tCmgrRsp={(0x13af+2920-0x1f17)};memcpy(&tCmgrRsp,
-(T_zSms_SmsInd*)pDatabuf,sizeof(T_zSms_SmsInd));tCmgrRsp.index=iSmsIndex;
-zUfiSms_ZmgrRespProc(&tCmgrRsp);zUfiMmi_SendSmsStatus();}VOID zSms_RecvZmgrOk(
-UINT8*pDatabuf){T_zSms_optRsp smsOptRsp={(0x1d65+454-0x1f2b)};memcpy(&smsOptRsp,
-(T_zSms_optRsp*)pDatabuf,sizeof(T_zSms_optRsp));if(smsOptRsp.result==
-(0xb9c+875-0xf06)){sc_cfg_set(NV_SMS_RECV_RESULT,"\x6f\x6b");}else{printf(
-"\x5b\x53\x4d\x53\x5d\x20\x61\x74\x53\x6d\x73\x5f\x52\x65\x63\x76\x5a\x6d\x67\x72\x45\x72\x72\x20\x20\x53\x4d\x53\x20\x7a\x6d\x67\x72\x20\x69\x73\x20\x66\x61\x69\x6c" "\n"
-);sc_cfg_set(NV_SMS_RECV_RESULT,"\x66\x61\x69\x6c");zUfiSms_ChangeMainState(
-SMS_STATE_RECVED);}}VOID zSms_RecvZpbicInd(UINT8*pDatabuf){T_zAt_ZpbicRes*ptPara
-=ZUFI_NULL;if(pDatabuf==NULL){return;}ptPara=(T_zAt_ZpbicRes*)(pDatabuf);if((
-(0x7c3+7342-0x2470)==ptPara->result)&&((0x96a+5767-0x1ff1)==ptPara->opertype)){
-CHAR needSms[(0x11a4+4522-0x231c)]={(0x1dd+7039-0x1d5c)};sc_cfg_get(
-NV_NEED_SUPPORT_SMS,needSms,sizeof(needSms));if((0x553+860-0x8af)!=strcmp(
-needSms,"\x6e\x6f")){zSvr_Zpbic_Sms_Init();}}}VOID zSms_RecvCpmsInd(UINT8*
-pDatabuf){T_zSms_CpmsInd*cpmsInd=(T_zSms_CpmsInd*)pDatabuf;CHAR strBuf[
-(0x34f+7123-0x1f18)]={(0xdba+6094-0x2588)};int remainSpace=(0x70f+6278-0x1f95);
-snprintf(strBuf,sizeof(strBuf),"\x25\x64",cpmsInd->total);sc_cfg_set(
-ZTE_WMS_NVCONFIG_SIM_CARD_TOTAL,strBuf);sc_cfg_set(
-ZTE_WMS_NVCONFIG_SIM_CAPABILITY,strBuf);memset(&strBuf,(0x1a1+1197-0x64e),
-(0x5cc+6259-0x1e35));snprintf(strBuf,sizeof(strBuf),"\x25\x64",cpmsInd->used);
-sc_cfg_set(ZTE_WMS_NVCONFIG_SIM_CARD_USED,strBuf);remainSpace=cpmsInd->total-
-cpmsInd->used;memset(&strBuf,(0xaef+5647-0x20fe),(0x659+776-0x957));snprintf(
-strBuf,sizeof(strBuf),"\x25\x64",remainSpace);sc_cfg_set(
-ZTE_WMS_NVCONFIG_SIM_CARD_REMAIN,strBuf);sc_cfg_set(NV_SMS_STORE,"\x6f\x6b");}
-#define AT_CMD_MAX (0xfab+1648-0x15db)

-#define ZAT_TAB_REPLACE                     ((unsigned char )(\
-(0x1c9c+2460-0x253c)))    

-#define ZAT_NULL_FILL                       ((unsigned char )((0x122+2248-0x8ed)\
-))    

-#define ZAT_SPACE_REPLACE                   ((unsigned char )(\
-(0x1731+2168-0x1eab)))    

-#define ZAT_LF_REPLACE                      ((unsigned char )(\
-(0x62a+4773-0x17d4)))    

-#define ZAT_CR_REPLACE                      ((unsigned char )(\
-(0x553+8614-0x25ff)))    

-static void atBase_PreProcRes(char*pParaLine,int paraSize){signed long flg=
-(0xe43+5379-0x2346);unsigned long i=(0x622+4342-0x1718);unsigned long length=
-(0x1157+3151-0x1da6);char*pSource=pParaLine;char*pDest=NULL;char*pStrDestMalloc=
-(char*)malloc(AT_CMD_MAX);if(NULL==pStrDestMalloc){return;}memset(pStrDestMalloc
-,(0x892+6111-0x2071),AT_CMD_MAX);assert(pParaLine!=NULL);pDest=pStrDestMalloc;
-length=strlen(pParaLine);if((length==(0xb37+871-0xe9e))||(length>=AT_CMD_MAX)){
-free(pStrDestMalloc);return;}for(i=(0x9d5+7250-0x2627);(i<length)&&(pDest-
-pStrDestMalloc<AT_CMD_MAX);i++){if(((char)(0x110b+2214-0x198f))==*pSource){flg=(
-(0x16dd+1489-0x1cae)==flg)?(0x287+3229-0xf23):(0x1392+528-0x15a2);if(
-((char)(0xdd3+3510-0x1b67))==*(pSource+(0x1225+942-0x15d2))){*pDest++=(char)
-ZAT_NULL_FILL;}}else if((((char)(0x851+1619-0xe78))==*pSource)&&(
-(0x1758+1232-0x1c28)==flg)){*pDest++=((char)(0xe7b+379-0xfd6));if(
-((char)(0x12ad+5113-0x267a))==*(pSource+(0xdd1+2970-0x196a))){*pDest++=
-((char)(0x3e2+3098-0xfc3));}else if('\0'==*(pSource+(0x1a69+519-0x1c6f))){*pDest
-++=(char)ZAT_NULL_FILL;}}else{if((((char)(0x1b94+2916-0x26d8))==*pSource)&&(
-(0x5c6+1446-0xb6b)==flg)){*pDest++=(char)ZAT_SPACE_REPLACE;}else if(('\t'==*
-pSource)&&((0x55a+8478-0x2677)==flg)){*pDest++=(char)ZAT_TAB_REPLACE;}else if((
-'\n'==*pSource)&&((0x245+4523-0x13ef)==flg)){*pDest++=(char)ZAT_LF_REPLACE;}else
- if(('\r'==*pSource)&&((0x75b+3123-0x138d)==flg)){*pDest++=(char)ZAT_CR_REPLACE;
-}else{*pDest++=*pSource;}}pSource++;}memset(pParaLine,(0x383+404-0x517),paraSize
-);strncpy(pParaLine,pStrDestMalloc,paraSize-(0x4f1+6200-0x1d28));free(
-pStrDestMalloc);}VOID zSms_RecvCscaInd(UINT8*pDatabuf){T_zSms_CscaInd cscaInd={
-(0x385+1585-0x9b6)};
-#if (0xb62+5910-0x2277)
-printf(
-"\x5b\x53\x4d\x53\x63\x6f\x72\x65\x6d\x5d\x7a\x53\x6d\x73\x5f\x52\x65\x63\x76\x43\x73\x63\x61\x49\x6e\x64\x20\x64\x61\x74\x61\x62\x75\x66\x3a\x25\x73" "\n"
-,pDatabuf);
-#endif

-atBase_PreProcRes(pDatabuf,strlen(pDatabuf));sscanf(pDatabuf,
-"\x25\x32\x31\x73\x20\x25\x32\x31\x73",cscaInd.sca,cscaInd.tosca);
-#if (0x121+6723-0x1b63)
-printf(
-"\x5b\x53\x4d\x53\x63\x6f\x72\x65\x6d\x5d\x7a\x53\x6d\x73\x5f\x52\x65\x63\x76\x43\x73\x63\x61\x49\x6e\x64\x20\x73\x63\x61\x3a\x25\x73\x2c\x20\x74\x6f\x73\x63\x61\x25\x73" "\n"
-,cscaInd.sca,cscaInd.tosca);
-#endif

-sc_cfg_set(NV_SMS_CENTER_NUM,cscaInd.sca);zUfiSms_SetScaPara(cscaInd.sca);}VOID 
-zSms_RecvZmglInd(UINT8*pDatabuf){zUfiSms_CmglRespProc((T_zSms_SmsInd*)pDatabuf);
-}int zSms_SendSmsInitReq(VOID){zSms_SendMsg(MSG_CMD_SMSINIT_REQ,
-(0x1748+156-0x17e4),NULL);return(0x626+1706-0xcd0);}VOID zSms_initAtOk(VOID){
-T_zUfiSms_StatusInfo tStatus={(0x10b+411-0x2a6)};sc_cfg_set(NV_SMS_STORE,
-"\x6f\x6b");sc_cfg_set(NV_SMS_LOAD_RESULT,"\x6f\x6b");tStatus.cmd_status=
-WMS_CMD_SUCCESS;tStatus.cmd=WMS_SMS_CMD_INIT;(void)zUfiSms_SetCmdStatus(&tStatus
-);zUfiSms_ChangeMainState(SMS_STATE_LOADED);}VOID zSms_initAtErr(VOID){
-T_zUfiSms_StatusInfo tStatus={(0x584+6585-0x1f3d)};sc_cfg_set(NV_SMS_LOAD_RESULT
-,"\x66\x61\x69\x6c");zUfiSms_ChangeMainState(SMS_STATE_LOADED);tStatus.
-cmd_status=WMS_CMD_FAILED;tStatus.cmd=WMS_SMS_CMD_INIT;(void)
-zUfiSms_SetCmdStatus(&tStatus);}VOID zSms_RecvSmsInitRst(UINT8*pDatabuf){memcpy(
-&g_smsOptRsp,pDatabuf,sizeof(T_zSms_optRsp));if(g_smsOptRsp.result==
-(0x1bc5+748-0x1eb0)){zSms_initAtOk();}else{zSms_initAtErr();}}UINT8 
-zSms_SmsMsgCreat(VOID){g_zSms_MsqId=msgget(MODULE_ID_SMS,IPC_CREAT|
-(0xc74+1274-0xfee));if(g_zSms_MsqId==-(0xc6b+3916-0x1bb6)){return ZUFI_FAIL;}
-g_zSms_LocalMsqId=msgget(MODULE_ID_SMS_LOCAL,IPC_CREAT|(0x7fc+5701-0x1cc1));if(
-g_zSms_LocalMsqId==-(0x1c9b+65-0x1cdb)){return ZUFI_FAIL;}sem_init(&g_sms_sem_id
-,(0x1922+1102-0x1d70),(0x1af6+2504-0x24be));return ZUFI_SUCC;}void 
-zSms_HandleAtctlLocalMsg(MSG_BUF*ptMsgBuf){assert(ptMsgBuf!=NULL);printf(
-"\x73\x6d\x73\x20\x6c\x6f\x63\x61\x6c\x20\x72\x65\x63\x76\x20\x6d\x73\x67\x20\x63\x6d\x64\x3a\x25\x64" "\n"
-,ptMsgBuf->usMsgCmd);switch(ptMsgBuf->usMsgCmd){case MSG_CMD_ZPBIC_IND:
-zSms_RecvZpbicInd(ptMsgBuf->aucDataBuf);break;case MSG_CMD_ZMGL_IND:
-zSms_RecvZmglInd(ptMsgBuf->aucDataBuf);break;case MSG_CMD_NEWSMS_STATUS_IND:
-zSms_RecvCdsInd(ptMsgBuf->aucDataBuf);break;case MSG_CMD_NEWSMS_IND:
-zSms_RecvCmtInd(ptMsgBuf->aucDataBuf);default:break;}}VOID zSms_HandleAtctlMsg(
-MSG_BUF*ptMsgBuf){assert(ptMsgBuf!=NULL);printf(
-"\x73\x6d\x73\x20\x72\x65\x63\x76\x20\x6d\x73\x67\x20\x63\x6d\x64\x3a\x25\x64" "\n"
-,ptMsgBuf->usMsgCmd);switch(ptMsgBuf->usMsgCmd){case MSG_CMD_SENDSMS_RSP:case 
-MSG_CMD_DELSMS_RSP:case MSG_CMD_STORAGE_CAP_RSP:case MSG_CMD_MODIFY_TAG_RSP:case
- MSG_CMD_NOTIFY_SET_RSP:case MSG_CMD_SCA_SET_RSP:case MSG_CMD_SMSACK_RSP:{memcpy
-(&g_smsOptRsp,ptMsgBuf->aucDataBuf,sizeof(T_zSms_optRsp));sem_post(&g_sms_sem_id
-);}break;case MSG_CMD_CPMS_IND:zSms_RecvCpmsInd(ptMsgBuf->aucDataBuf);break;case
- MSG_CMD_CSCA_IND:zSms_RecvCscaInd(ptMsgBuf->aucDataBuf);break;case 
-MSG_CMD_ZMGR_IND:zSms_RecvZmgrRsp(ptMsgBuf->aucDataBuf);break;case 
-MSG_CMD_READSMS_RSP:zSms_RecvZmgrOk(ptMsgBuf->aucDataBuf);break;case 
-MSG_CMD_SMSINIT_RSP:zSms_RecvSmsInitRst(ptMsgBuf->aucDataBuf);break;case 
-MSG_CMD_NEWSMS_INDEX_IND:zSms_RecvCmtiInd(ptMsgBuf->aucDataBuf);break;case 
-MSG_CMD_NEWSMS_STATUS_INDEX_IND:zSms_RecvCdsiInd(ptMsgBuf->aucDataBuf);break;
-case MSG_CMD_NEWSMS_IND:case MSG_CMD_ZPBIC_IND:case MSG_CMD_ZMGL_IND:case 
-MSG_CMD_NEWSMS_STATUS_IND:ipc_send_message(MODULE_ID_SMS,MODULE_ID_SMS_LOCAL,
-ptMsgBuf->usMsgCmd,ptMsgBuf->usDataLen,(unsigned char*)ptMsgBuf->aucDataBuf,
-(0x25a+7929-0x2153));break;default:break;}}VOID zSms_HandleResetToFactory(){CHAR
- clearSms[(0x1871+2544-0x222f)]={(0x759+1666-0xddb)};sc_cfg_get(
-NV_CLEAR_SMS_WHEN_RESTORE,clearSms,sizeof(clearSms));printf(
-"\x61\x74\x57\x65\x62\x5f\x52\x65\x73\x74\x6f\x72\x65\x46\x61\x63\x74\x6f\x72\x79\x53\x65\x74\x74\x69\x6e\x67\x20\x65\x6e\x74\x65\x72\x65\x64\x21\x20" "\n"
-);printf(
-"\x63\x6c\x65\x61\x72\x5f\x73\x6d\x73\x5f\x77\x68\x65\x6e\x5f\x72\x65\x73\x74\x6f\x72\x65\x3d\x25\x73\x20" "\n"
-,clearSms);if(strcmp(clearSms,"\x79\x65\x73")==(0x327+5545-0x18d0)){printf(
-"\x7a\x55\x66\x69\x53\x6d\x73\x5f\x44\x72\x6f\x70\x41\x6c\x6c\x54\x61\x62\x6c\x65\x20\x65\x6e\x74\x65\x72\x65\x64\x21\x20" "\n"
-);zUfiSms_DropAllTable();}else{printf(
-"\x7a\x55\x66\x69\x53\x6d\x73\x5f\x44\x72\x6f\x70\x41\x6c\x6c\x54\x61\x62\x6c\x65\x45\x78\x63\x65\x70\x74\x53\x6d\x73\x20\x65\x6e\x74\x65\x72\x65\x64\x21\x20" "\n"
-);zUfiSms_DropAllTableExceptSms();}ipc_send_message(MODULE_ID_SMS,
-MODULE_ID_MAIN_CTRL,MSG_CMD_RESET_RSP,(0x1461+3029-0x2036),NULL,
-(0x163+6829-0x1c10));}void zSms_HandleMainCtrlMsg(MSG_BUF*ptMsgBuf){assert(
-ptMsgBuf!=NULL);printf(
-"\x73\x6d\x73\x20\x72\x65\x63\x76\x20\x6d\x61\x69\x6e\x20\x63\x74\x72\x6c\x20\x6d\x73\x67\x20\x63\x6d\x64\x3a\x25\x64" "\n"
-,ptMsgBuf->usMsgCmd);switch(ptMsgBuf->usMsgCmd){case MSG_CMD_RESET_NOTIFY:
-zSms_HandleResetToFactory(ptMsgBuf->aucDataBuf);break;default:break;}}void 
-sms_msg_thread_proc(void*arg){int iRet=(0xb60+1700-0x1204);MSG_BUF stMsg={
-(0x3d4+8753-0x2605)};int msgSize=sizeof(MSG_BUF)-sizeof(long);int queueId=*((int
-*)arg);prctl(PR_SET_NAME,"\x73\x6d\x73\x5f\x6c\x6f\x63\x61\x6c",
-(0x12c9+582-0x150f),(0x91b+1988-0x10df),(0xf74+4524-0x2120));while(
-(0xb22+3411-0x1874)){iRet=(0x59b+2292-0xe8f);memset(&stMsg,(0x529+2870-0x105f),
-sizeof(MSG_BUF));iRet=msgrcv(queueId,&stMsg,msgSize,(0xe87+2449-0x1818),
-(0x19f0+3295-0x26cf));if(iRet>=(0x22a1+326-0x23e7)){switch(stMsg.src_id){case 
-MODULE_ID_WEB_CGI:{zSms_HandleWebMsg(&stMsg);break;}case MODULE_ID_AT_CTL:{
-zSms_HandleAtctlMsg(&stMsg);break;}case MODULE_ID_SMS:{zSms_HandleWebMsg(&stMsg)
-;zSms_HandleAtctlLocalMsg(&stMsg);break;}case MODULE_ID_MAIN_CTRL:{
-zSms_HandleMainCtrlMsg(&stMsg);break;}default:{break;}}}else{at_print(AT_DEBUG,
-"\x65\x72\x72\x6e\x6f\x20\x3d\x20\x25\x64\x2c\x20\x65\x72\x72\x6d\x73\x67\x20\x3d\x20\x25\x73" "\n"
-,errno,strerror(errno));}}}int sms_main(int argc,char*argv[]){pthread_t 
-recv_thread_tid=(0x546+178-0x5f8);MSG_BUF msgBuf={(0x85a+5342-0x1d38)};CHAR 
-needSMS[(0x16ea+2122-0x1f02)]={(0xea3+1178-0x133d)};prctl(PR_SET_NAME,
-"\x73\x6d\x73\x5f\x6d\x61\x69\x6e",(0x14fd+359-0x1664),(0xcb6+5473-0x2217),
-(0x322+7676-0x211e));loglevel_init();sc_cfg_get(NV_NEED_SUPPORT_SMS,needSMS,
-sizeof(needSMS));if((0x453+7708-0x226f)!=strcmp(needSMS,"\x6e\x6f")){
-zUfiSms_InitDb();zUfiSms_CfgSmsNvInit();zUfiMmi_SendSmsStatus();zSms_SmsMsgCreat
-();}else{return-(0x189f+1040-0x1cae);}printf(
-"\x73\x6d\x73\x20\x61\x70\x70\x20\x69\x6e\x69\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64\x2c\x20\x77\x69\x6c\x6c\x20\x74\x6f\x20\x72\x65\x63\x65\x69\x76\x65\x20\x6d\x73\x67\x2c\x20\x6d\x73\x67\x69\x64\x3a\x25\x64" "\n"
-,g_zSms_MsqId);if(pthread_create(&recv_thread_tid,NULL,sms_msg_thread_proc,(void
-*)(&g_zSms_LocalMsqId))==-(0x4f5+7384-0x21cc)){assert((0x270+7721-0x2099));}
-sms_msg_thread_proc(&g_zSms_MsqId);return(0x8bc+7114-0x2486);}
+        // Ìí¼Ó½áβ·û

+        *(ackReq.pdu + strlen(ackPduStr)) = ZSMS_CTRL_Z_CHAR;

+        printf("[SMS] atSms_SendCnmaReq. pdu= %s\n", ackReq.pdu);

+

+		ackReq.length = strlen(ackPduStr)/2;

+	}  

+	

+  	zSms_SendMsg(MSG_CMD_SMSACK_REQ, sizeof(T_zSms_SmsAckReq), &ackReq);

+

+    sem_wait(&g_sms_sem_id);

+

+	if(g_smsOptRsp.result == 1)

+	{

+		return ZSMS_RESULT_OK;

+	}

+	else

+	{

+		return ZSMS_RESULT_ERROR;

+	}

+}

+

+

+/*¶ÔÓ¦atSms_SendZmgrReq*/

+int zSms_SendZmgrReq(int index)

+{

+   	T_zSms_ReadSmsReq readSmsReq = {0};

+

+	iSmsIndex = index;

+	printf("[SMS] atSms_SendZmgrReq Get index:%d.\n",iSmsIndex);	

+

+	readSmsReq.index = index;

+	zSms_SendMsg(MSG_CMD_READSMS_REQ, sizeof(T_zSms_ReadSmsReq), &readSmsReq);

+

+    //´Ë´¦²»ÄÜ×èÈûµÈ´ý

+    return 0;

+}

+

+/*¶ÔÓ¦atSms_RecvZmgrRsp */

+VOID zSms_RecvZmgrRsp(UINT8 *pDatabuf)

+{

+    T_zSms_SmsInd tCmgrRsp = {0};

+

+	memcpy(&tCmgrRsp, (T_zSms_SmsInd*)pDatabuf, sizeof(T_zSms_SmsInd));

+

+	tCmgrRsp.index = iSmsIndex;

+

+	zUfiSms_ZmgrRespProc(&tCmgrRsp);

+	zUfiMmi_SendSmsStatus();

+	

+}

+

+VOID zSms_RecvZmgrOk(UINT8 *pDatabuf)

+{

+	T_zSms_optRsp smsOptRsp = {0};

+

+	memcpy(&smsOptRsp, (T_zSms_optRsp*)pDatabuf, sizeof(T_zSms_optRsp));

+	if(smsOptRsp.result == 1)

+	{

+		sc_cfg_set(NV_SMS_RECV_RESULT, "ok");

+	}

+	else

+	{

+		printf("[SMS] atSms_RecvZmgrErr  SMS zmgr is fail\n");    

+       

+        sc_cfg_set(NV_SMS_RECV_RESULT, "fail");

+        zUfiSms_ChangeMainState(SMS_STATE_RECVED);

+    

+	}

+}

+

+VOID zSms_RecvZpbicInd(UINT8 *pDatabuf)

+{

+	T_zAt_ZpbicRes *ptPara = ZUFI_NULL;	

+    if(pDatabuf == NULL)

+    {

+        return;

+    }

+    ptPara = (T_zAt_ZpbicRes*)(pDatabuf);

+	

+	if((1 == ptPara->result) && (0 == ptPara->opertype))

+    {

+        //ÅжÏNV,added by wenqin 2016-5-18

+        CHAR needSms[50]={0};

+        sc_cfg_get(NV_NEED_SUPPORT_SMS,needSms,sizeof(needSms));

+        if(0 != strcmp(needSms,"no"))

+        {

+            zSvr_Zpbic_Sms_Init();

+        }        

+    }

+}

+

+

+

+VOID zSms_RecvCpmsInd(UINT8 *pDatabuf)

+{

+	T_zSms_CpmsInd *cpmsInd = (T_zSms_CpmsInd*)pDatabuf;

+ 	CHAR  strBuf[10]    = {0};

+    int   remainSpace = 0;

+

+    snprintf(strBuf,sizeof(strBuf),"%d", cpmsInd->total);

+    sc_cfg_set(ZTE_WMS_NVCONFIG_SIM_CARD_TOTAL,strBuf);

+    sc_cfg_set(ZTE_WMS_NVCONFIG_SIM_CAPABILITY,strBuf);

+

+    memset(&strBuf, 0, 10);

+    snprintf(strBuf,sizeof(strBuf),"%d", cpmsInd->used);

+    sc_cfg_set(ZTE_WMS_NVCONFIG_SIM_CARD_USED,strBuf);

+	

+    remainSpace = cpmsInd->total - cpmsInd->used;

+    memset(&strBuf, 0, 10);

+    snprintf(strBuf,sizeof(strBuf),"%d", remainSpace);

+    sc_cfg_set(ZTE_WMS_NVCONFIG_SIM_CARD_REMAIN,strBuf);

+

+    sc_cfg_set(NV_SMS_STORE,"ok");

+

+}

+

+/**************************************************************************

+* º¯ÊýÃû³Æ: VOID atBase_PreProcRes(char *)

+* ¹¦ÄÜÃèÊö: Ô¤´¦Àí²ÎÊýÐк¯Êý¡£ÎªÁË·½±ã½âÎö²ÎÊýÐУ¬ÔÚ½âÎö֮ǰ£¬ÏÈÔ¤´¦Àí¸Ã²Î

+*           ÊýÐУ¬¶ÔÓÚ·Ö¸î²ÎÊýµÄ¶ººÅ£¬ÓÿոñÌæ»»£¬¶ÔÓÚ×Ö·û´®ÐͲÎÊýÖеĿոñ

+*           ÓÿոñÌæ»»·ûÌæ»»£¬¶ÔÓÚ±êʶ×Ö·û´®µÄË«ÒýºÅÓèÒÔɾ³ý£¬¶ÔÓÚ¿ÕµÄ×Ö·û

+* ²ÎÊý˵Ã÷: (IN) pParaLine     : ´ýÔ¤´¦ÀíµÄ×Ö·û´®²ÎÊýÐУ»

+*           (OUT)pParaLine     : Ô¤´¦ÀíºóµÄ×Ö·û´®²ÎÊýÐУ»

+* ·µ »Ø Öµ:

+* ÆäËü˵Ã÷:ÒÆÖ²

+**************************************************************************/

+#define AT_CMD_MAX 64

+

+#define ZAT_TAB_REPLACE                     ((unsigned char )(0xFC))    /* ÖÆ±í·ûÌæ»»·û     */

+#define ZAT_NULL_FILL                       ((unsigned char )(0xFD))    /* ¿Õ´®Õ¼Î»·û       */

+#define ZAT_SPACE_REPLACE                   ((unsigned char )(0xFE))    /* ¿Õ¸ñÌæ»»·û       */

+#define ZAT_LF_REPLACE                      ((unsigned char )(0xFB))    /* LFÌæ»»·û         */

+#define ZAT_CR_REPLACE                      ((unsigned char )(0xFA))    /* CRÌæ»»·û */

+static void atBase_PreProcRes(char *pParaLine, int paraSize)//×Ö·û´®¸ñʽ»¯Ê¹Ó㬺óÐøÐèÒªÓÅ»¯£¬¼òµ¥»¯

+{

+    signed long  flg                                     = 0;

+    unsigned long  i                                       = 0;

+    unsigned long  length                                  = 0;

+    char    *pSource                                = pParaLine;

+    char    *pDest                                  = NULL;

+    

+    char    *pStrDestMalloc = (char *)malloc(AT_CMD_MAX);

+    if(NULL == pStrDestMalloc)

+    {

+        return;

+    }

+    memset(pStrDestMalloc, 0, AT_CMD_MAX); 

+    

+    assert(pParaLine != NULL);

+    pDest = pStrDestMalloc;

+    length = strlen(pParaLine);

+    if ((length == 0) || (length >= AT_CMD_MAX))

+    {

+        free(pStrDestMalloc);

+        return;

+    }

+    for (i = 0; (i < length )&& (pDest - pStrDestMalloc < AT_CMD_MAX); i++)

+    {

+        if ('"' == *pSource)

+        {

+            flg = (0 == flg)?1:0;                           /* Ë«ÒýºÅ ɾ³ý  */

+            if ('"' == *(pSource + 1))                      /* ÐǺźóÃæ½ô¸úÐǺţ¬²åÈë¿Õ´®Õ¼Î»·û */

+            {

+                *pDest++ = (char)ZAT_NULL_FILL;

+            }

+        }

+        else if ((',' == *pSource) && (0 == flg))

+        {

+            *pDest++ = ' ';                                 /* Ë«ÒýºÅÍâÃæµÄ¶ººÅ£¬Ìæ»»³É¿Õ¸ñ */

+            if(',' == *(pSource + 1))                       /* ¶ººÅºóÃæ½ô¸ú¶ººÅ£¬»òÕßÒÔ¶ººÅ½á⣬²åÈë¿Õ´®Õ¼Î»·û */

+            {

+                *pDest++ = '9';                             //±£Áô²ÎÊýÓÃ9ÔÝʱ´úÌæ

+            }

+            else if('\0' == *(pSource + 1))                 /* ¶ººÅºóÃæ½ô¸ú¶ººÅ£¬»òÕßÒÔ¶ººÅ½á⣬²åÈë¿Õ´®Õ¼Î»·û */

+            {

+                *pDest++ = (char)ZAT_NULL_FILL;

+            }

+        }

+        else

+        {

+            //*pDest++ = ((' ' == *pSource) && (1 == flg))?(char)ZAT_SPACE_REPLACE:((('\t' == *pSource) && (1 == flg))?(char)ZAT_TAB_REPLACE:((('\n' == *pSource) && (1 == flg))?(char)ZAT_LF_REPLACE:((('\r' == *pSource) && (1 == flg))?(char)ZAT_CR_REPLACE:(*pSource))));

+            if((' ' == *pSource) && (1 == flg))

+			{

+				*pDest++ = (char)ZAT_SPACE_REPLACE;

+			}

+			else if(('\t' == *pSource) && (1 == flg))

+			{

+				*pDest++ = (char)ZAT_TAB_REPLACE;

+			}

+			else if(('\n' == *pSource) && (1 == flg))

+			{

+				*pDest++ = (char)ZAT_LF_REPLACE;

+			}

+			else if(('\r' == *pSource) && (1 == flg))

+			{

+				*pDest++ = (char)ZAT_CR_REPLACE;

+			}

+			else

+			{

+				*pDest++ = *pSource;

+			}

+        }

+        pSource++;

+    }

+    memset(pParaLine, 0, paraSize);                           /* ½«Ô¤´¦ÀíºóµÄÄÚÈÝ¿½±´»Ø²ÎÊýÐÐÖÐ */

+    strncpy(pParaLine, pStrDestMalloc,paraSize-1);

+    free(pStrDestMalloc);

+}

+

+//´æ´¢¶ÌÐÅÖÐÐÄ

+VOID zSms_RecvCscaInd(UINT8 *pDatabuf)

+{

+	T_zSms_CscaInd cscaInd = {0};

+

+	#if 1//corem for debug

+	printf("[SMScorem]zSms_RecvCscaInd databuf:%s\n",pDatabuf);

+	#endif

+	atBase_PreProcRes(pDatabuf, strlen(pDatabuf));

+	

+    sscanf(pDatabuf, "%21s %21s", cscaInd.sca, cscaInd.tosca);

+	#if 1//corem for debug

+	printf("[SMScorem]zSms_RecvCscaInd sca:%s, tosca%s\n", cscaInd.sca, cscaInd.tosca);

+	#endif

+	sc_cfg_set(NV_SMS_CENTER_NUM,cscaInd.sca); 

+	zUfiSms_SetScaPara(cscaInd.sca);

+}

+

+	

+VOID zSms_RecvZmglInd(UINT8 *pDatabuf)

+{

+	zUfiSms_CmglRespProc((T_zSms_SmsInd*)pDatabuf);

+}

+

+

+int zSms_SendSmsInitReq(VOID)

+{ 		

+	zSms_SendMsg(MSG_CMD_SMSINIT_REQ, 0, NULL);

+	return 0;

+}

+

+VOID zSms_initAtOk(VOID)

+{

+    T_zUfiSms_StatusInfo tStatus = {0};

+    //´Ë´¦»áµ¼ÖÂcmglÔÙ·¢Ò»´Î¼ÓÔØµ½ME´¦

+    //zUfiSms_ChangeMainState(SMS_STATE_LOADED);

+ 	sc_cfg_set(NV_SMS_STORE,"ok");

+	

+	sc_cfg_set(NV_SMS_LOAD_RESULT, "ok");

+    tStatus.cmd_status = WMS_CMD_SUCCESS;

+    tStatus.cmd = WMS_SMS_CMD_INIT;

+    (void)zUfiSms_SetCmdStatus(&tStatus);

+    zUfiSms_ChangeMainState(SMS_STATE_LOADED);

+}

+

+VOID zSms_initAtErr(VOID)

+{

+    T_zUfiSms_StatusInfo tStatus = {0};

+    

+    sc_cfg_set(NV_SMS_LOAD_RESULT, "fail");

+    zUfiSms_ChangeMainState(SMS_STATE_LOADED);

+    

+    tStatus.cmd_status = WMS_CMD_FAILED;

+    tStatus.cmd = WMS_SMS_CMD_INIT;

+    (void)zUfiSms_SetCmdStatus(&tStatus);    

+}

+

+VOID zSms_RecvSmsInitRst(UINT8 *pDatabuf)

+{

+	memcpy(&g_smsOptRsp, pDatabuf, sizeof(T_zSms_optRsp));

+

+	if(g_smsOptRsp.result == 1)

+	{

+		zSms_initAtOk();

+	}

+	else

+	{

+		zSms_initAtErr();

+	}

+}

+	

+

+

+

+UINT8 zSms_SmsMsgCreat(VOID)

+{

+	g_zSms_MsqId = msgget(MODULE_ID_SMS, IPC_CREAT | 0600);

+    if(g_zSms_MsqId == -1)

+    {

+        return ZUFI_FAIL;

+    }

+	g_zSms_LocalMsqId = msgget(MODULE_ID_SMS_LOCAL, IPC_CREAT | 0600);

+    if(g_zSms_LocalMsqId == -1)

+    {

+        return ZUFI_FAIL;

+    }

+	sem_init(&g_sms_sem_id, 0 ,0);

+

+	return ZUFI_SUCC;

+}

+

+void zSms_HandleAtctlLocalMsg(MSG_BUF *ptMsgBuf)

+{

+	assert(ptMsgBuf != NULL);

+	printf( "sms local recv msg cmd:%d\n", ptMsgBuf->usMsgCmd);

+	switch(ptMsgBuf->usMsgCmd)

+	{

+		case MSG_CMD_ZPBIC_IND:

+			zSms_RecvZpbicInd(ptMsgBuf->aucDataBuf);

+			break;

+		case MSG_CMD_ZMGL_IND:

+			zSms_RecvZmglInd(ptMsgBuf->aucDataBuf);

+			break;

+		case MSG_CMD_NEWSMS_STATUS_IND:

+			zSms_RecvCdsInd(ptMsgBuf->aucDataBuf);

+			break;

+		case MSG_CMD_NEWSMS_IND:

+			zSms_RecvCmtInd(ptMsgBuf->aucDataBuf);

+		default:

+			break;

+

+	}

+}

+

+VOID zSms_HandleAtctlMsg(MSG_BUF *ptMsgBuf)

+{

+    assert(ptMsgBuf != NULL);

+	printf( "sms recv msg cmd:%d\n", ptMsgBuf->usMsgCmd);

+	switch(ptMsgBuf->usMsgCmd)

+	{

+		case MSG_CMD_SENDSMS_RSP:

+		case MSG_CMD_DELSMS_RSP:	

+		case MSG_CMD_STORAGE_CAP_RSP:	

+		case MSG_CMD_MODIFY_TAG_RSP:

+		case MSG_CMD_NOTIFY_SET_RSP:

+		case MSG_CMD_SCA_SET_RSP:

+		case MSG_CMD_SMSACK_RSP:

+			{

+				memcpy(&g_smsOptRsp, ptMsgBuf->aucDataBuf, sizeof(T_zSms_optRsp));

+				sem_post(&g_sms_sem_id);

+			}

+			break;

+		case MSG_CMD_CPMS_IND:

+			zSms_RecvCpmsInd(ptMsgBuf->aucDataBuf);

+			break;

+		case MSG_CMD_CSCA_IND:

+			zSms_RecvCscaInd(ptMsgBuf->aucDataBuf);

+			break;

+		case MSG_CMD_ZMGR_IND://ZMGR¶ÁÒ»Ìõ¶ÌÐÅÖÐ;µÄÉϱ¨ÐÅÏ¢

+			zSms_RecvZmgrRsp(ptMsgBuf->aucDataBuf);

+			break;

+		case MSG_CMD_READSMS_RSP://ZMGR¶ÁÒ»Ìõ¶ÌÐŽáÊø£¬OK/ERROR

+		    zSms_RecvZmgrOk(ptMsgBuf->aucDataBuf);

+			break;

+		case MSG_CMD_SMSINIT_RSP:

+			zSms_RecvSmsInitRst(ptMsgBuf->aucDataBuf);

+			break;

+		case MSG_CMD_NEWSMS_INDEX_IND:

+			zSms_RecvCmtiInd(ptMsgBuf->aucDataBuf);

+			break;

+

+		case MSG_CMD_NEWSMS_STATUS_INDEX_IND:

+			zSms_RecvCdsiInd(ptMsgBuf->aucDataBuf);

+			break;

+		case MSG_CMD_NEWSMS_IND:

+		case MSG_CMD_ZPBIC_IND:

+		case MSG_CMD_ZMGL_IND:

+		case MSG_CMD_NEWSMS_STATUS_IND:

+			ipc_send_message(MODULE_ID_SMS, MODULE_ID_SMS_LOCAL, ptMsgBuf->usMsgCmd, ptMsgBuf->usDataLen, (unsigned char *)ptMsgBuf->aucDataBuf,0);

+			break;

+			

+		default:

+			break;

+

+	}

+}	

+

+VOID zSms_HandleResetToFactory()

+{

+    CHAR clearSms[50] = {0};

+	

+    sc_cfg_get(NV_CLEAR_SMS_WHEN_RESTORE,clearSms,sizeof(clearSms));

+

+	printf("atWeb_RestoreFactorySetting entered! \n");

+	printf("clear_sms_when_restore=%s \n", clearSms);	

+	if(strcmp(clearSms, "yes") == 0)

+    {

+        printf("zUfiSms_DropAllTable entered! \n");		

+		zUfiSms_DropAllTable();

+    }

+	else

+	{

+	    printf("zUfiSms_DropAllTableExceptSms entered! \n");		

+		zUfiSms_DropAllTableExceptSms();

+	}

+	ipc_send_message(MODULE_ID_SMS, MODULE_ID_MAIN_CTRL, MSG_CMD_RESET_RSP, 0, NULL,0);

+}

+

+void zSms_HandleMainCtrlMsg(MSG_BUF *ptMsgBuf)

+{

+	assert(ptMsgBuf != NULL);

+	printf( "sms recv main ctrl msg cmd:%d\n", ptMsgBuf->usMsgCmd);

+	switch(ptMsgBuf->usMsgCmd)

+	{

+		case MSG_CMD_RESET_NOTIFY:

+			zSms_HandleResetToFactory(ptMsgBuf->aucDataBuf);

+			break;

+		default:

+			break;

+

+	}

+}

+

+

+void sms_msg_thread_proc(void* arg)

+{

+	int iRet = 0;

+	MSG_BUF stMsg = {0};

+	int msgSize = sizeof(MSG_BUF) - sizeof(long);

+	int queueId = *((int*)arg);

+	prctl(PR_SET_NAME, "sms_local", 0, 0, 0);

+	while(1)

+	{

+		iRet = 0;

+		memset(&stMsg, 0x00, sizeof(MSG_BUF));

+		iRet = msgrcv(queueId, &stMsg, msgSize, 0, 0);

+		if (iRet >= 0)

+		{

+			switch (stMsg.src_id)

+	        {

+	            case MODULE_ID_WEB_CGI:

+	            {

+					zSms_HandleWebMsg(&stMsg);

+	                break;

+	            }

+	            case MODULE_ID_AT_CTL:

+	            {                

+					zSms_HandleAtctlMsg(&stMsg);

+	                break;

+	            }

+	            case MODULE_ID_SMS:

+				{

+					zSms_HandleWebMsg(&stMsg);				

+					zSms_HandleAtctlLocalMsg(&stMsg);

+					break;

+				}

+				case MODULE_ID_MAIN_CTRL:

+				{

+					zSms_HandleMainCtrlMsg(&stMsg);

+					break;

+				}

+	            default:

+	            {

+	                break;

+	            }

+	        }

+		}

+		else

+		{    

+			at_print(AT_DEBUG,"errno = %d, errmsg = %s\n", errno,strerror(errno));

+		}

+	} 

+}

+

+

+int sms_main(int argc, char* argv[])

+{

+	pthread_t recv_thread_tid = 0;

+    MSG_BUF   msgBuf      = {0};

+	CHAR needSMS[50] = {0};

+	prctl(PR_SET_NAME, "sms_main", 0, 0, 0);

+	//¸ù¾ÝNV³õʼ»¯´òÓ¡¼¶±ð£¬²¢×¢²á¶¯Ì¬µ÷Õû´òÓ¡¼¶±ðÐźÅÁ¿

+	loglevel_init();

+	

+	//ÅжÏNV,added by wenqin 2016-5-18

+    sc_cfg_get(NV_NEED_SUPPORT_SMS,needSMS,sizeof(needSMS));

+    if(0 != strcmp(needSMS, "no"))

+    {

+ 		zUfiSms_InitDb();

+        zUfiSms_CfgSmsNvInit();

+    	zUfiMmi_SendSmsStatus();

+		zSms_SmsMsgCreat();

+    }

+	else

+	{

+		return -1;

+	}

+    printf("sms app init finished, will to receive msg, msgid:%d\n", g_zSms_MsqId);	

+	//¸ÃÏß³ÌÓÃÓÚ´¦ÀíÄÚ²¿×èÈûµÄÏûÏ¢£¬¶ÔÓ¦ÏûÏ¢µÄsourceIdÊÇMODULE_ID_SMS

+    if(pthread_create(&recv_thread_tid, NULL, sms_msg_thread_proc, (void*)(&g_zSms_LocalMsqId)) == -1)

+    {

+		assert(0);

+    }

+	//Ö÷Ïß³ÌÓÃÓÚ´¦ÀíÍⲿ½ÓÊÕÏûÏ¢£¬¶ÔÓ¦ÏûÏ¢µÄsourceId·ÇMODULE_ID_SMS

+    sms_msg_thread_proc(&g_zSms_MsqId);

+	return 0;

+}

+