[Feature][DATA][T8TSK-211]support the handle value of setup_data_call set to a valid value after timeout 2

Change-Id: I035bd34033785b3fc6e28cf6b9231b470ebf54d1
(cherry picked from commit 8dd6fc61cbf404e58fcc60966758664162f62f76)
diff --git a/framework/lynq-ril-service/src/data/data_gdbus.cpp b/framework/lynq-ril-service/src/data/data_gdbus.cpp
index 3424c22..e73020b 100755
--- a/framework/lynq-ril-service/src/data/data_gdbus.cpp
+++ b/framework/lynq-ril-service/src/data/data_gdbus.cpp
@@ -268,6 +268,41 @@
     {
         apnHasCreated = FALSE;
         RLOGD("[cid < 0] apn_count:%d\n",apn_count);
+        if(urc_response->pdnState==PDN_DISCONNECTED)//if user disable data call,the pdn state wiil change to disconnected.
+        {
+            for(int i = 0;i < LYNQ_APN_CHANNEL_MAX;i++)
+            {
+                #if DEBUG
+                printf("line %d [PDN_DISCONNECTED]apn_table[%d],apntype:%s,apnstatus:%d,,,urc_response->apnName:%s\n",__LINE__, i,apn_table[i].apntype,apn_table[i].apnstatus,urc_response->apnType);
+                #endif
+                RLOGD("[PDN_DISCONNECTED]apn_table[%d],apntype:%s,apnstatus:%d,,,urc_response->apnName:%s\n",i,apn_table[i].apntype,apn_table[i].apnstatus,urc_response->apnType);
+                if((strcmp(apn_table[i].apntype,urc_response->apnType)==0)&&(apn_table[i].apnstatus==0))
+                {
+                    bzero(apn_table[i].apn,LYNQ_APN_LEN_MAX);
+                    bzero(apn_table[i].apntype,LYNQ_APNTPYE_LEN_MAX);
+                    apn_table[i].used = 0;
+                    apn_table[i].netId = 0;
+                    apn_table[i].pdpstate = PDN_DISCONNECTED;
+                    apn_count--;
+                    p.writeInt32 (1);
+                    p.writeInt32 (LYNQ_URC_DATA_CALL_STATUS_IND);
+                    p.writeInt32 (0);//temporary plan
+                    p.writeInt32(PDN_DISCONNECTED);
+                    writeStringToParcel(p,urc_response->apnName);
+                    writeStringToParcel(p,urc_response->apnType);
+                    writeStringToParcel(p,urc_response->ifname);
+                    android::LYNQ_RIL_urcBroadcast(p,LYNQ_URC_DATA_CALL_STATUS_IND);
+                    RLOGD("removed apn:%s,apntype:%s",apn_table[i].apn,apn_table[i].apntype);
+                    break;
+                }
+            }
+            for(int i = 0;i < LYNQ_APN_CHANNEL_MAX;i++)
+            {
+                RLOGD("for apn_table[%d].apn:%s,apntype:%s,used:%d,apnstatus:%d\n",i,apn_table[i].apn,
+                apn_table[i].apntype,apn_table[i].used,apn_table[i].apnstatus);
+            }
+            return 0;
+        }
         if(apn_count>0)
         {
             int i = 0;