[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;