[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit

Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/ap/lib/libatext/ext_ccapp_fnc.c b/ap/lib/libatext/ext_ccapp_fnc.c
new file mode 100755
index 0000000..6e351cf
--- /dev/null
+++ b/ap/lib/libatext/ext_ccapp_fnc.c
@@ -0,0 +1,312 @@
+/*********************************************************************************

+ *  °æ±¾ËùÓÐ (C)

+ *

+ *  ¹¦ÄÜ         :  CcAppÏà¹ØAT´¦Àí

+ *  ×÷Õß		 :  

+ *  °æ±¾		 :  V1.0

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

+ *  ÆäËü˵Ã÷     :

+ *  ²ÎÊý         :

+ *  ÊäÈë         :

+ *  Êä³ö         :

+ *  ¸ü¸Ä¼Ç¼     :

+ *  ʱ¼ä           ×÷Õß              ÄÚÈÝ

+ *-----------------------------------------------------------------------

+ *

+ *

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

+#ifndef CONFIG_MIN_8M_VERSION

+#include "at_context.h"

+#include "cfg_nv_def.h"

+#include "at_com.h"

+

+#define ZAT_INVALID_LEN    -1

+#define MSG_RETRY_NUM    4

+#define MSG_RETRY_INTERVAL    50

+

+char*  atCcapp_SendAtdReq(void *param)

+{

+    MSG_BUF *msgbuf = (MSG_BUF *)param;

+    T_zCcapp_CallMoReq *callReq = (T_zCcapp_CallMoReq *)msgbuf->aucDataBuf;

+    char *pAtcmdStr  = NULL;

+

+    pAtcmdStr = malloc(ZDIAL_NUM_MAX+4);

+	assert(pAtcmdStr);

+    memset(pAtcmdStr, 0x00, ZDIAL_NUM_MAX+4);

+    snprintf(pAtcmdStr, ZDIAL_NUM_MAX+4,"ATD%s;\r\n", callReq->number);

+

+    return pAtcmdStr;

+}

+char*  atCcapp_SendAtaReq(void *param)

+{

+    char *pAtcmdStr  = NULL;

+

+    pAtcmdStr = malloc(10);

+	assert(pAtcmdStr);

+    memset(pAtcmdStr, 0x00, 10);

+    snprintf(pAtcmdStr, 10,"ATA\r\n");

+

+    return pAtcmdStr;

+}

+char*  atCcapp_SendChupReq(void *param)

+{

+    char *pAtcmdStr  = NULL;

+

+    pAtcmdStr = malloc(30);

+	assert(pAtcmdStr);

+    memset(pAtcmdStr, 0x00, 30);

+    snprintf(pAtcmdStr, 30,"AT+CHUP\r\n");

+

+    return pAtcmdStr;

+}

+char*  atCcapp_SendVtsReq(void *param)

+{

+    MSG_BUF *msgbuf = (MSG_BUF *)param;

+    char *pAtcmdStr  = NULL;

+    T_zCcapp_VtsReq *vtsReq = (T_zCcapp_VtsReq *)msgbuf->aucDataBuf;

+

+    pAtcmdStr = malloc(30);

+	assert(pAtcmdStr);

+    memset(pAtcmdStr, 0x00, 30);

+    snprintf(pAtcmdStr, 30,"AT+VTS=%c,30\r\n",vtsReq->dtmfchar);

+

+    return pAtcmdStr;

+}

+char*  atCcapp_SendImsplusReq(void *param)

+{

+    MSG_BUF *msgbuf = (MSG_BUF *)param;

+    char *pAtcmdStr  = NULL;

+    T_zCcapp_ImsplusReq *imsplusReq = (T_zCcapp_ImsplusReq *)msgbuf->aucDataBuf;

+

+    pAtcmdStr = malloc(30);

+	assert(pAtcmdStr);

+    memset(pAtcmdStr, 0x00, 30);

+    if (imsplusReq->setfg == 1)

+    {

+        snprintf(pAtcmdStr, 30,"AT+ZIMSPLUS=%d\r\n",imsplusReq->act);

+    }

+    else

+    {

+        snprintf(pAtcmdStr, 30,"AT+ZIMSPLUS=%d,4\r\n",imsplusReq->act);

+    }

+

+return pAtcmdStr;

+}

+char*  atCcapp_SendClckReq(void *param)

+{

+    MSG_BUF *msgbuf = (MSG_BUF *)param;

+    char *pAtcmdStr  = NULL;

+    T_zCcapp_ClckReq *clckReq = (T_zCcapp_ClckReq *)msgbuf->aucDataBuf;

+

+

+    pAtcmdStr = malloc(50);

+	assert(pAtcmdStr);

+    memset(pAtcmdStr, 0x00, 50);

+    if (clckReq->type == 0)

+    snprintf(pAtcmdStr, 50,"AT+CLCK=\"AO\",%d,\"%s\"\r\n",clckReq->act,clckReq->pw);

+    else if (clckReq->type == 1)

+    snprintf(pAtcmdStr, 50,"AT+CLCK=\"OI\",%d,\"%s\"\r\n",clckReq->act,clckReq->pw);

+

+    return pAtcmdStr;

+}

+char*  atCcapp_SendCcfcReq(void *param)

+{

+    MSG_BUF *msgbuf = (MSG_BUF *)param;

+    char *pAtcmdStr  = NULL;

+    T_zCcapp_CcfcReq *ccfcReq = (T_zCcapp_CcfcReq *)msgbuf->aucDataBuf;

+

+    pAtcmdStr = malloc(30);

+	assert(pAtcmdStr);

+    memset(pAtcmdStr, 0x00, 30);

+    if (ccfcReq->act ==1)

+    snprintf(pAtcmdStr, 30,"AT+CCFC=%d,%d,\"%s\"\r\n",ccfcReq->type, ccfcReq->act, ccfcReq->dn);

+    else if (ccfcReq->act ==0)

+    snprintf(pAtcmdStr, 30,"AT+CCFC=%d,%d\r\n",ccfcReq->type, ccfcReq->act);

+

+    return pAtcmdStr;

+}

+char*  atCcapp_SendChldReq(void *param)

+{

+    MSG_BUF *msgbuf = (MSG_BUF *)param;

+    char *pAtcmdStr  = NULL;

+    T_zCcapp_ChldReq *chldReq = (T_zCcapp_ChldReq *)msgbuf->aucDataBuf;

+

+    pAtcmdStr = malloc(30);

+	assert(pAtcmdStr);

+    memset(pAtcmdStr, 0x00, 30);

+    snprintf(pAtcmdStr, 30,"AT+CHLD=%d\r\n",chldReq->type);

+

+    return pAtcmdStr;

+}

+VOID zCc_NumProc(CHAR *pParaLine)

+{

+    SINT32  flg = 0;

+    UINT32  i = 0;

+    UINT32  length = 0;

+    CHAR *pSource = pParaLine;

+    CHAR *pDest = NULL;

+    CHAR abStrDest[ZDIAL_NUM_MAX+50] = {0};

+

+    pDest = abStrDest;

+    length = strlen(pParaLine);

+

+    for (i = 0; i < length ; i++)

+    {

+        if ('"' == *pSource)

+        {

+            flg = (0 == flg)?1:0;                    

+            if (0 == flg)

+            {

+                break;

+            }

+            pSource++;

+        }

+        else

+        {

+            *pDest++ = *pSource++;

+        }

+    }

+

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

+    strcpy(pParaLine, abStrDest);

+}

+int atCcapp_RecvDsciInd( char *at_paras ,int is_query_report)

+{   

+    T_zCcApp_DsciInd *dsciInd = NULL;

+    char abNum[ZDIAL_NUM_MAX+50]= {0};

+	unsigned int type;

+

+    dsciInd = malloc(sizeof(T_zCcApp_DsciInd));

+    if(dsciInd==NULL){softap_assert(""); return AT_END;}

+    memset(dsciInd, 0, sizeof(T_zCcApp_DsciInd));

+    //zCc_PreProcRes(at_paras);

+    at_print(AT_DEBUG,"[CCAPP] dsci ind! pResLine->resParas:%s.\n", at_paras);

+    sscanf(at_paras, "%u, %u, %u, %u, %u, %97s", &dsciInd->cid, &dsciInd->dir, &dsciInd->state,&type, &dsciInd->inMpty, abNum);

+    zCc_NumProc(abNum);

+    memcpy(dsciInd->num, abNum, sizeof(dsciInd->num)-1);//cov ¿ÉÄÜÓÐÎÊÌâ

+    

+    at_print(AT_DEBUG,"[CCAPP] DSCI %d %d %d\n", dsciInd->cid, dsciInd->dir, dsciInd->state);

+

+    ipc_send_message(MODULE_ID_AT_CTL, MODULE_ID_CALL_CTRL, MSG_CMD_DSCI_IND, sizeof(T_zCcApp_DsciInd), (unsigned char *)dsciInd,0);

+    at_print(AT_DEBUG,"[CCAPP]send DSCI %d\n ",MSG_CMD_DSCI_IND );

+    free(dsciInd);

+    return AT_CONTINUE;

+}

+

+int atCcapp_RecvZvoicechnlInd(char *at_paras ,int is_query_report)

+{   

+    T_zCcApp_VoiceChnl *voicechnl = NULL;

+

+    voicechnl = malloc(sizeof(T_zCcApp_VoiceChnl));

+    if(voicechnl==NULL){softap_assert(""); return AT_END;}

+    memset(voicechnl, 0, sizeof(T_zCcApp_VoiceChnl));

+

+    at_print(AT_DEBUG,"[CCAPP] voicechnl ind! pResLine->resParas:%s.\n", at_paras);

+    sscanf(at_paras, "%u, %u, %u, %u", &voicechnl->op, &voicechnl->act, &voicechnl->codetype,  &voicechnl->amrpath);  

+    at_print(AT_DEBUG,"[CCAPP] voicechnl->op= %d voicechnl->act= %d voicechnl->codetype= %d voicechnl->amrpath= %d\n", voicechnl->op, voicechnl->act, voicechnl->codetype, voicechnl->amrpath);

+

+    ipc_send_message(MODULE_ID_AT_CTL, MODULE_ID_CALL_CTRL, MSG_CMD_ZVOICECHNL, sizeof(T_zCcApp_VoiceChnl), (unsigned char *)voicechnl,0);

+    at_print(AT_DEBUG,"[CCAPP]send VOICECHNL %d\n ",MSG_CMD_ZVOICECHNL );

+    free(voicechnl);

+    return AT_CONTINUE;

+}

+

+

+

+int atCcapp_RecvImsplusInd(char *at_paras ,int is_query_report)

+{   

+    T_zCcApp_ImsplusInd *imsplusInd = NULL;

+

+    imsplusInd = malloc(sizeof(T_zCcApp_ImsplusInd));

+    if(imsplusInd==NULL){softap_assert("");return AT_END;}

+    memset(imsplusInd, 0, sizeof(T_zCcApp_ImsplusInd));

+

+    //zCc_PreProcRes(at_paras);

+    at_print(AT_DEBUG,"[CCAPP] imsplus ind! pResLine->resParas:%s.\n", at_paras);

+    sscanf(at_paras, "%u, %u", &imsplusInd->act, &imsplusInd->rate);  

+    at_print(AT_DEBUG,"[CCAPP] imsplusInd->act= %d imsplusInd->rate= %d\n", imsplusInd->act, imsplusInd->rate);

+

+    ipc_send_message(MODULE_ID_AT_CTL, MODULE_ID_CALL_CTRL, MSG_CMD_ZIMSPLUS_IND, sizeof(T_zCcApp_ImsplusInd), (unsigned char *)imsplusInd,0);

+    at_print(AT_DEBUG,"[CCAPP]send IMSPLUS %d\n ",MSG_CMD_ZIMSPLUS_IND );

+    free(imsplusInd);

+    return AT_CONTINUE;

+}

+

+int atCcapp_RecvZcpiInd(char *at_paras ,int is_query_report)

+{   

+    T_zCcApp_ZcpiInd *zcpiInd = NULL;

+

+    zcpiInd = malloc(sizeof(T_zCcApp_ZcpiInd));

+    if(zcpiInd==NULL){softap_assert("");return AT_END;}

+    memset(zcpiInd, 0, sizeof(T_zCcApp_ZcpiInd));

+

+    //zCc_PreProcRes(at_paras);

+    at_print(AT_DEBUG,"[CCAPP] zcpi ind! pResLine->resParas:%s.\n", at_paras);

+    sscanf(at_paras, "%u, %u, %u",&zcpiInd->cid,&zcpiInd->state,&zcpiInd->progdsp);

+

+    ipc_send_message(MODULE_ID_AT_CTL, MODULE_ID_CALL_CTRL, MSG_CMD_ZCPI, sizeof(T_zCcApp_ZcpiInd), (unsigned char *)zcpiInd,0);

+    free(zcpiInd);

+    return AT_CONTINUE;

+}

+int atCcapp_RecvOk(char *at_str,struct at_context *context,void **next_req,int *next_len)

+{    

+    T_zCcapp_optRsp* optRsp = NULL;

+

+    optRsp = (T_zCcapp_optRsp *)malloc(sizeof(T_zCcapp_optRsp));

+    if(optRsp == NULL){softap_assert("");return AT_END;}

+    memset(optRsp, 0 , sizeof(T_zCcapp_optRsp));

+    optRsp->result = 0;

+    *next_req = optRsp;

+    *next_len = sizeof(T_zCcapp_optRsp);

+    at_print(AT_DEBUG,"CCAPP atCcapp_RecvOk receive ok\n");

+    return AT_END;

+}

+

+int atCcapp_RecvErr(char *at_str,struct at_context *context,void **next_req,int *next_len)

+{  

+   T_zCcapp_optRsp* optRsp = NULL;

+

+    optRsp = (T_zCcapp_optRsp *)malloc(sizeof(T_zCcapp_optRsp));

+    if(optRsp == NULL){softap_assert("");return AT_END;}

+    memset(optRsp, 0 , sizeof(T_zCcapp_optRsp));

+    optRsp->result = -1;

+    *next_req = optRsp;

+    *next_len = sizeof(T_zCcapp_optRsp);

+    at_print(AT_DEBUG,"CCAPP atCcapp_RecvOk receive err\n");

+    return AT_END;

+}

+

+void ext_ccapp_regist(void)

+{

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

+	*×¢²áccAPPµÄops

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

+	register_psclt_func(MSG_CMD_ATD_DIAL_REQ,        MSG_CMD_ATD_DIAL_RSP,        	atCcapp_SendAtdReq);

+	register_psclt_func(MSG_CMD_ATA_REQ,  MSG_CMD_ATA_RSP,      atCcapp_SendAtaReq);

+	register_psclt_func(MSG_CMD_CHUP_REQ,      MSG_CMD_CHUP_RSP,        	atCcapp_SendChupReq);

+	register_psclt_func(MSG_CMD_VTS_REQ, 		MSG_CMD_VTS_RSP, 		    atCcapp_SendVtsReq);

+	register_psclt_func(MSG_CMD_ZIMSPLUS_REQ, 		MSG_CMD_ZIMSPLUS_RSP, 		    atCcapp_SendImsplusReq);

+	register_psclt_func(MSG_CMD_CHLD_REQ, 		MSG_CMD_CHLD_RSP, 		    atCcapp_SendChldReq);

+	register_psclt_func(MSG_CMD_CCFC_REQ, 		MSG_CMD_CCFC_RSP, 		    atCcapp_SendCcfcReq);

+	register_psclt_func(MSG_CMD_CLCK_REQ, 		MSG_CMD_CLCK_RSP, 		    atCcapp_SendClckReq);

+ 

+	/**********************×¢²áat_ctlÄÚ²¿µÄÇëÇóÀàµÄops********************************/

+	register_clt_func("ATD", 	atCcapp_RecvOk, 		atCcapp_RecvErr);

+	register_clt_func("ATA", 	atCcapp_RecvOk, 		atCcapp_RecvErr);

+	register_clt_func("CHUP", 	atCcapp_RecvOk, 		atCcapp_RecvErr);

+	register_clt_func("VTS=", 	atCcapp_RecvOk, 		atCcapp_RecvErr);

+	register_clt_func("ZIMSPLUS=", 	atCcapp_RecvOk, 		atCcapp_RecvErr);

+	register_clt_func("CHLD=", 	atCcapp_RecvOk, 		atCcapp_RecvErr);

+	register_clt_func("CCFC=", 	atCcapp_RecvOk, 		atCcapp_RecvErr);

+	//register_clt_func("CLCK=", 	atCcapp_RecvOk, 		atCcapp_RecvErr);

+

+

+	/**********************×¢²áPSÏà¹ØµÄÖ÷¶¯Éϱ¨ºÍ²éѯÖмä½á¹ûÉϱ¨µÄ»Øµ÷**************************/

+	/*ÒÔÏÂÊÇÇëÇóÃüÁîµÄÖмä½á¹û*/

+	register_inform_func("DSCI",atCcapp_RecvDsciInd);

+	register_inform_func("ZCPI",atCcapp_RecvZcpiInd);

+	register_inform_func("ZIMSPLUS",atCcapp_RecvImsplusInd);

+    register_inform_func("ZVOICECHNL",atCcapp_RecvZvoicechnlInd);

+}

+

+#endif