[Feature]add MT2731_MP2_MR2_SVN388 baseline version

Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/src/lynq/lib/liblynq-tele-ril/lynq-riltel/lynq_data.cpp b/src/lynq/lib/liblynq-tele-ril/lynq-riltel/lynq_data.cpp
new file mode 100644
index 0000000..66043ec
--- /dev/null
+++ b/src/lynq/lib/liblynq-tele-ril/lynq-riltel/lynq_data.cpp
@@ -0,0 +1,254 @@
+#include "common.h"
+#include "lynq_common.h"
+#include "lynq_data.h"
+#include "lynq_network.h"
+#include "stateManager/stateManager.h"
+#include <string.h>
+#include <stdlib.h>
+#undef LOG_TAG
+#define LOG_TAG "LYNQ_DATA"
+#define DATA_CALL_LIST_MAX 10
+//ww add @2020.7.23 for add Data api
+
+void copyDataCallList(LYNQ_Data_Call_Response_v11 *newMsg,const RIL_Data_Call_Response_v11 oldMsg);
+
+RIL_Data_Call_Response_v11 *
+checkParcelDataCallInfo(dataCallMsg* msg,int32_t token,int time)
+{
+    int time_sim =time;
+    int num;
+    lynqQueue *node = NULL;
+    lynqQueue *temp =NULL;
+    RIL_Data_Call_Response_v11 *list = NULL;
+    while(time_sim--)
+    {
+         millli_sleep_with_restart(10);
+         temp=LynqQueueHead;
+         if(temp==NULL)
+         {
+             LYDBGLOG("Queue head is NULL, maybe malloc fail!");
+             continue;
+         }
+         node = searchTokeninQueue(token, temp);
+         if(node ==NULL)
+         {
+            return NULL;
+         }
+         if(node->t_Errno!=RIL_E_SUCCESS)
+         {
+             LYDBGLOG("get data call list fail, the error code is %d",node->t_Errno);
+             msg->e=node->t_Errno;
+             return NULL;
+         }
+         else
+         {
+            node->parcel.setDataPosition(0);
+            if (node->parcel.dataAvail() > 0) 
+            {
+
+                node->parcel.readInt32(&num);
+                list = (RIL_Data_Call_Response_v11 *) calloc(1, sizeof(RIL_Data_Call_Response_v11) * num);
+                for(int i =0;i<num;i++)
+                {
+                    node->parcel.readInt32(&list[i].status);
+                    node->parcel.readInt32(&list[i].suggestedRetryTime);
+                    node->parcel.readInt32(&list[i].cid);
+                    node->parcel.readInt32(&list[i].active);
+                    list[i].type = lynqStrdupReadString(node->parcel);
+                    list[i].ifname = lynqStrdupReadString(node->parcel);
+                    list[i].addresses = lynqStrdupReadString(node->parcel);
+                    list[i].dnses = lynqStrdupReadString(node->parcel);
+                    list[i].gateways = lynqStrdupReadString(node->parcel);
+                    list[i].pcscf = lynqStrdupReadString(node->parcel);
+                    node->parcel.readInt32(&list[i].mtu);
+
+                }
+                msg->e=node->t_Errno;
+                msg->status = 0;
+                msg->num = num;
+                return list;
+             }
+             else
+             {
+               continue;
+             }
+         }
+    }
+    //printf("time_sim is %d\n",time_sim);
+    return NULL;
+}
+//enable_data.sh 
+int lynq_data_enable_data(int* PdnState) 
+{
+    char* mdata_apn[MAX_STRING_LEN];
+    int param_num=8;
+    int res=-1;
+    int32_t token=0;
+    int32_t tokenTemp=0;
+    RIL_Data_Call_Response_v11 *list = NULL;
+    dataCallMsg msg;
+    msg.e=-1;
+    msg.num=-1;
+    msg.status=-1;
+    //lynq_query_network_selection_mode();
+    token = lynqNoneParame("RIL_REQUEST_SETUP_DATA_CALL");
+    millli_sleep_with_restart(150);
+    tokenTemp = lynqNoneParame("RIL_REQUEST_DATA_CALL_LIST");
+    list = checkParcelDataCallInfo(&msg,tokenTemp,100);
+    if(list==NULL)
+    {
+        *PdnState = -1;
+    }
+    else
+    {
+        *PdnState = 0;
+        for (int i = 0; i < msg.num; i++) 
+        {
+            free(list[i].type);
+            free(list[i].ifname);
+            free(list[i].addresses);
+            free(list[i].dnses);
+            free(list[i].gateways);
+            free(list[i].pcscf);
+        }
+        free(list);
+    }
+    lynqDeQueue(tokenTemp);
+    return token;
+}
+
+//disable_data.sh
+int lynq_data_dectivate_data_call(int *PdnState)
+{
+    //printf("ww--lynq_data_dectivate_data_call--111\r\n");
+    int32_t token=0;
+    int32_t tokenTemp=0;
+    RIL_Data_Call_Response_v11 *list = NULL;
+    dataCallMsg msg;
+    token = lynqNoneParame("RIL_REQUEST_DEACTIVATE_DATA_CALL");
+    //millli_sleep_with_restart(100);
+    tokenTemp = lynqNoneParame("RIL_REQUEST_DATA_CALL_LIST");
+    list = checkParcelDataCallInfo(&msg,tokenTemp,100);
+    if(list==NULL)
+    {
+        *PdnState = 0;
+    }
+    else
+    {
+        *PdnState = -1;
+        for (int i = 0; i < msg.num; i++) 
+        {
+            free(list[i].type);
+            free(list[i].ifname);
+            free(list[i].addresses);
+            free(list[i].dnses);
+            free(list[i].gateways);
+            free(list[i].pcscf);
+        }
+        free(list);
+    }
+    lynqDeQueue(tokenTemp);
+    return token;
+}
+//the max of data call list number is 10;
+int lynq_get_data_call_list(LYNQ_Data_Call_Response_v11 **dataCallList,const int listNum,int *realNum)
+{
+    if(listNum>DATA_CALL_LIST_MAX)
+    {
+        LYDBGLOG("the list number is more than 10");
+        return -1;
+    }
+    int32_t token=0;
+    RIL_Data_Call_Response_v11 *list = NULL;
+    dataCallMsg msg;
+    token = lynqNoneParame("RIL_REQUEST_DATA_CALL_LIST");
+    list = checkParcelDataCallInfo(&msg,token,100);
+    if(list==NULL)
+    {
+        //dataCallList=NULL;
+        return token;
+    }
+    if(listNum<msg.num)
+    {
+        msg.num=listNum;
+        LYDBGLOG("listNum<msg.num!");
+    }
+    *realNum=msg.num;
+    //dataCallList = (RIL_Data_Call_Response_v11 *) calloc(1, sizeof(RIL_Data_Call_Response_v11) * msg.num);
+    for(int i=0;i<msg.num;i++)
+    {
+        copyDataCallList(dataCallList[i], list[i]);
+    }
+    for (int i = 0; i < msg.num; i++) 
+    {
+        free(list[i].type);
+        free(list[i].ifname);
+        free(list[i].addresses);
+        free(list[i].dnses);
+        free(list[i].gateways);
+        free(list[i].pcscf);
+    }
+    free(list);
+    lynqDeQueue(token);
+    /*
+    for(int i=0;i<msg.num;i++)
+    {
+        printf("test status is %d\n",dataCallList[i]->status);
+        printf("test suggested is %d\n",dataCallList[i]->suggestedRetryTime);
+        printf("test cid is %d\n",dataCallList[i]->cid);
+        printf("test active is %d\n",dataCallList[i]->active);
+        printf("test mtu is %d\n",dataCallList[i]->mtu);
+        printf("test string is %s\n",dataCallList[i]->type);
+        printf("test string is %s\n",dataCallList[i]->ifname);
+        printf("test string is %s\n",dataCallList[i]->addresses);
+        printf("test string is %s\n",dataCallList[i]->dnses);
+        printf("test string is %s\n",dataCallList[i]->gateways);
+        printf("test string is %s\n",dataCallList[i]->pcscf);
+    }
+    */
+    /*
+    for(int i=0;i<msg.num;i++)
+    {
+        printf("test status is %d\n",dataCallList[i].status);
+        printf("test suggested is %d\n",dataCallList[i].suggestedRetryTime);
+        printf("test cid is %d\n",dataCallList[i].cid);
+        printf("test active is %d\n",dataCallList[i].active);
+        printf("test mtu is %d\n",dataCallList[i].mtu);
+        printf("test string is %s\n",dataCallList[i].type);
+        printf("test string is %s\n",dataCallList[i].ifname);
+        printf("test string is %s\n",dataCallList[i].addresses);
+        printf("test string is %s\n",dataCallList[i].dnses);
+        printf("test string is %s\n",dataCallList[i].gateways);
+        printf("test string is %s\n",dataCallList[i].pcscf);
+    }
+    */
+    return token;
+
+}
+void copyDataCallList(LYNQ_Data_Call_Response_v11 *newMsg,const RIL_Data_Call_Response_v11 oldMsg)
+{
+    newMsg->status = oldMsg.status;
+    LYDBGLOG("test dataCallList status is %d,list status is %d\n",newMsg->status,oldMsg.status);
+    newMsg->suggestedRetryTime = oldMsg.suggestedRetryTime;
+    LYDBGLOG("test %d\n",oldMsg.suggestedRetryTime);
+    newMsg->cid = oldMsg.cid;
+    LYDBGLOG("test %d\n",oldMsg.cid);
+    newMsg->active = oldMsg.active;
+    LYDBGLOG("test %d\n",oldMsg.active);
+    newMsg->mtu = oldMsg.mtu;
+    LYDBGLOG("test %d\n",oldMsg.mtu);
+    memcpy(newMsg->type,oldMsg.type,strlen(oldMsg.type)+1);
+    LYDBGLOG("test string is %s\n",oldMsg.type);
+    memcpy(newMsg->ifname,oldMsg.ifname,strlen(oldMsg.ifname)+1);
+    LYDBGLOG("test string is %s\n",oldMsg.ifname);
+    memcpy(newMsg->addresses,oldMsg.addresses,strlen(oldMsg.addresses)+1);
+    LYDBGLOG("test string is %s\n",oldMsg.addresses);
+    memcpy(newMsg->dnses,oldMsg.dnses,strlen(oldMsg.dnses)+1);
+    LYDBGLOG("test string is %s\n",oldMsg.dnses);
+    memcpy(newMsg->gateways,oldMsg.gateways,strlen(oldMsg.gateways)+1);
+    LYDBGLOG("test string is %s\n",oldMsg.gateways);
+    memcpy(newMsg->pcscf,oldMsg.pcscf,strlen(oldMsg.pcscf)+1);
+    LYDBGLOG("test string is %s\n",oldMsg.pcscf);
+
+}
+