[bugfix]api-100 api-117 api-118

Change-Id: I196f90a5722c83821761415a130750bbc0d9614b
diff --git a/framework/lynq-ril-service/src/data/data_gdbus.cpp b/framework/lynq-ril-service/src/data/data_gdbus.cpp
index cd62eb1..4b12ffd 100755
--- a/framework/lynq-ril-service/src/data/data_gdbus.cpp
+++ b/framework/lynq-ril-service/src/data/data_gdbus.cpp
@@ -61,6 +61,33 @@
 GDBusProxy *proxy = NULL;
 MTK_Data_Call_Response_v1 req_response;
 MTK_Data_Call_Response_v1 urc_response;
+
+/*Warren add for t103 szzt atsvc 2022/1/5 start*/
+int lynqUpdateApnStatus(char *apn,char *apntype,int pdnState,char *ifname)
+{
+    char BUF[32] = {};
+    int len = -1;
+    if(pdnState==PDN_CONNECTED)
+    {
+        sprintf(BUF,"+LAPNST:%s,%s,%d,%s\n",apn,apntype,pdnState,ifname);
+        printf("eBuf:%s\n",BUF);
+        len = write(ttyGS3_fd,BUF,strlen(BUF));
+    }
+    else
+    {
+        sprintf(BUF,"+LAPNST:%s,%s,%d\n",apn,apntype,pdnState);
+        printf("eBuf:%s\n",BUF);
+        len = write(ttyGS3_fd,BUF,strlen(BUF));
+    }
+    if(len < 0)
+    {
+        perror("lynq resp write:");
+        return -1;
+    }
+    return 0;
+}
+/*Warren add for t103 szzt atsvc 2022/1/5 end*/
+
 /*Warren add for t800 ril service 2021/12/25 start*/
 int lynq_data_management(MTK_Data_Call_Response_v1 *urc_response)
 {
@@ -91,6 +118,11 @@
                     apn_table[i].used=0;
                     apn_table[i].netId=0;
                     apn_count--;
+                    int n = write(ttyGS3_fd,"OK\n",3);
+                    if(n<0)
+                    {
+                        perror("lynq resp write:");
+                    }
                     p.writeInt32 (1);
                     p.writeInt32 (LYNQ_URC_DATA_CALL_STATUS_IND);
                     p.writeInt32 (0);//temporary plan
@@ -126,6 +158,7 @@
                 apn_table[apn_count].used=1;
                 apn_table[apn_count].netId=urc_response->netId;
                 apn_count++;
+                lynqUpdateApnStatus(urc_response->apnName,urc_response->apnType,urc_response->pdnState,urc_response->ifname);
                 p.writeInt32(1);
                 p.writeInt32(LYNQ_URC_DATA_CALL_STATUS_IND);
                 p.writeInt32(0);//temporary plan
@@ -148,6 +181,7 @@
                         if(apn_table[i].netId!=urc_response->netId)
                         {
                             apn_table[i].netId=urc_response->netId;
+                            lynqUpdateApnStatus(urc_response->apnName,urc_response->apnType,urc_response->pdnState,urc_response->ifname);
                             memcpy(iface_t,apn_table[i].ifaceName,strlen(apn_table[i].ifaceName)+1);
                             memcpy(apnType_t,apn_table[i].apntype,strlen(apn_table[i].apntype)+1);
                             memcpy(apn_t,apn_table[i].apn,strlen(apn_table[i].apn)+1);
@@ -197,6 +231,7 @@
                         apn_table[lable].used=1;
                         apn_table[lable].netId=urc_response->netId;
                         apn_count++;
+                        lynqUpdateApnStatus(urc_response->apnName,urc_response->apnType,urc_response->pdnState,urc_response->ifname);
                         p.writeInt32(1);
                         p.writeInt32(LYNQ_URC_DATA_CALL_STATUS_IND);
                         p.writeInt32(0);//temporary plan
@@ -235,6 +270,7 @@
             {
                 //sprintf(Buf,"+LAPNST:%s,%s,%d\n",apn_table[i].apn,apn_table[i].apntype,urc_response->pdnState);
                 //printf("Buf:%s\n",Buf);
+                lynqUpdateApnStatus(apn_table[i].apn,apn_table[i].apntype,urc_response->pdnState,NULL);
                 memcpy(iface_t,apn_table[i].ifaceName,strlen(apn_table[i].ifaceName)+1);
                 memcpy(apnType_t,apn_table[i].apntype,strlen(apn_table[i].apntype)+1);
                 memcpy(apn_t,apn_table[i].apn,strlen(apn_table[i].apn)+1);
@@ -426,6 +462,7 @@
     return 1;
 }
 
+
 void proxy_signals_on_signal (GDBusProxy  *proxy,
                               const gchar *sender_name,
                               const gchar *signal_name,
diff --git a/framework/lynq-ril-service/src/lynq_common.cpp b/framework/lynq-ril-service/src/lynq_common.cpp
index 30f8b7b..f1b92ae 100755
--- a/framework/lynq-ril-service/src/lynq_common.cpp
+++ b/framework/lynq-ril-service/src/lynq_common.cpp
@@ -185,18 +185,25 @@
         lynqSetArgv(&(argv[2]),&Point,"0");
         token = strtok(str, "=");
         //argv[0] = token;
-        argv[0] = strstr(token, "+")+1;
-        while (token != NULL)
+        if(strstr(token, "+"))
         {
-            string = token;
-            token = strtok(NULL, "=");
+            argv[0] = strstr(token, "+")+1;
+            while (token != NULL)
+            {
+                string = token;
+                token = strtok(NULL, "=");
+            }
+            parameter = strtok(string, ",");
+            int i = 3;
+            while (parameter != NULL)
+            {
+                argv[i++] = parameter;
+                parameter = strtok(NULL, ",");
+            }
         }
-        parameter = strtok(string, ",");
-        int i = 3;
-        while (parameter != NULL)
+        else
         {
-            argv[i++] = parameter;
-            parameter = strtok(NULL, ",");
+            argv[0] = token;
         }
     }
     else if(strstr(cmd,"?"))
@@ -275,11 +282,6 @@
                 argv[3] = test+3;
                 return 4;
             }
-            else if(!strncmp(cmd, "ATSO", 4)){
-                lynqSetArgv(&(argv[0]),&Point,"ATSO");               
-                argv[3] = test+4;
-                return 4;
-            }
             else if(!strncmp(cmd, "ATS3", 4)){
                 lynqSetArgv(&(argv[0]),&Point,"ATS3");              
                 argv[3] = test+4;
@@ -493,6 +495,7 @@
     new_argv[0] = (char *)rilReq;
     new_argv[1] = argv[3];
     android::lynqSendToRil(2,new_argv,uToken);
+    syncRespToUsb(0);
     return 0;
 }
 
diff --git a/framework/lynq-ril-service/src/ril.cpp b/framework/lynq-ril-service/src/ril.cpp
index 9a8ca4a..b66757c 100755
--- a/framework/lynq-ril-service/src/ril.cpp
+++ b/framework/lynq-ril-service/src/ril.cpp
@@ -5812,7 +5812,7 @@
                 RLOGD("REQUEST: %s ParamterNum:%d", requestToString(request), argc);
                 RequestInfo *pRI  = creatRILInfoAndInit(request, UDP, (RIL_SOCKET_ID)(id));
                 pRI->uToken = client_tmp->uToken;
-                pRI->lynqEvent = 1;
+                pRI->lynqEvent = 2;
                 pRI->uClient_addr.sin_family = lynqClient_addr.sin_family;
                 pRI->uClient_addr.sin_addr.s_addr = lynqClient_addr.sin_addr.s_addr;
                 pRI->uClient_addr.sin_port = lynqClient_addr.sin_port;
@@ -5850,7 +5850,7 @@
     uint8_t dataLength[4];
     int verify = 0x55aa;
     RequestInfo *pRI = (RequestInfo *)t;
-    if(pRI->lynqEvent!=1)
+    if(pRI->lynqEvent!=2)
     {
         RLOGD("this is internal event!!!");
         return -1;
@@ -5877,7 +5877,7 @@
     int verify = 0x55aa;
     int dataSize = p.dataSize();
     const uint8_t* data = p.data();
-    if(pRI->lynqEvent!=1)
+    if(pRI->lynqEvent!=2)
     {
         RLOGD("this is internal event!!!");
         return -1;