Merge "[Bugfix][API-782][rtp] add 1 set audio parameter for rtp" into MR3.0-merge
diff --git a/src/lynq/framework/lynq-ril-service/src/data/data.cpp b/src/lynq/framework/lynq-ril-service/src/data/data.cpp
index 8d81825..0f8d6ce 100755
--- a/src/lynq/framework/lynq-ril-service/src/data/data.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/data/data.cpp
@@ -783,13 +783,13 @@
if(argc > 2)
{
/*Warren add for t800 ril service 2021/12/25 start*/
- char* apnType = argv[1];
+ char* apnType = argv[2];
int result=0;
RLOGD("[setupDataCall] apn_count1:%d\n",apn_count);
for(int i = 0;i< LYNQ_APN_CHANNEL_MAX;i++)//代表已经有argv[1]类型的APN 已经被建立,
{
- RLOGD("apnType:%s,argv[1]:%s\n",apn_table[i].apntype,argv[1]);
- if(strcmp(apn_table[i].apntype,argv[1])==0)
+ RLOGD("apnType:%s,argv[2]:%s\n",apn_table[i].apntype,argv[2]);
+ if(strcmp(apn_table[i].apntype,argv[2])==0)
{
/*此处直接返回response,给client成功的结果码,并返回iface*/
Parcel urc_p;
@@ -801,7 +801,7 @@
urc_p.writeInt32(1);
urc_p.writeInt32(LYNQ_URC_DATA_CALL_STATUS_IND);
urc_p.writeInt32(socket_id);
- urc_p.writeInt32(apn_table[i].apnstatus);
+ urc_p.writeInt32(apn_table[i].pdpstate);
writeStringToParcel(urc_p, apn_table[i].apn);
writeStringToParcel(urc_p, apn_table[i].apntype);
writeStringToParcel(urc_p, apn_table[i].ifaceName);
@@ -839,7 +839,7 @@
urc_p.writeInt32(1);
urc_p.writeInt32(LYNQ_URC_DATA_CALL_STATUS_IND);
urc_p.writeInt32(socket_id);
- urc_p.writeInt32(apn_table[i].apnstatus);
+ urc_p.writeInt32(apn_table[i].pdpstate);
writeStringToParcel(urc_p, apn_table[i].apn);
writeStringToParcel(urc_p, apn_table[i].apntype);
writeStringToParcel(urc_p, apn_table[i].ifaceName);
diff --git a/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp b/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp
index dafea1a..9d3e4d2 100755
--- a/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp
@@ -130,7 +130,9 @@
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);
#ifdef LED_SUPPORT
@@ -273,6 +275,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;
diff --git a/src/lynq/lib/liblynq-data/lynq_data.cpp b/src/lynq/lib/liblynq-data/lynq_data.cpp
index 4bf04f0..96882e4 100755
--- a/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -57,6 +57,8 @@
int lynq_client_sockfd = 0;
int Global_uToken = 0;
+struct sockaddr_in lynq_data_socket_server_addr;
+int lynq_data_socket_server_addr_len;
int lynq_data_call_change_id = -1;
pthread_t lynq_data_tid =-1;
@@ -98,6 +100,8 @@
char ifaceName[LYNQ_IFACE_NAME_MAX_LEN];
int hasUsed;
int hasTimeout;
+ int status;
+ char statusApnType[LYNQ_APN_TYPE_MAX_LEN];
}lynq_apn_t;
lynq_apn_t lynq_apn_table[LYNQ_APN_CHANNEL_MAX] = {};
lynq_data_call_response_v11_t lynq_data_call_lists[LYNQ_APN_CHANNEL_MAX] = {};
@@ -109,7 +113,8 @@
int len = 0;
for(ret;ret<LYNQ_APN_CHANNEL_MAX;ret++)
{
- len = strlen(lynq_apn_table[ret].apnType)<strlen(apnType) ? strlen(lynq_apn_table[ret].apnType):strlen(apnType);
+ len = strlen(apnType);
+ LYINFLOG("apn_table[%d].apnType:%s,input apntype:%s,len:%d",ret,lynq_apn_table[ret].apnType,apnType,len);
if(strncmp(lynq_apn_table[ret].apnType,apnType,len)==0)
{
return ret;
@@ -118,6 +123,22 @@
return -1;
}
+int getDeactApnID(char apnType[])
+{
+ int ret = 0;
+ int len = 0;
+ for(ret;ret<LYNQ_APN_CHANNEL_MAX;ret++)
+ {
+ len = strlen(apnType);
+ LYINFLOG("apn_table[%d].apnType:%s,input apntype:%s,len:%d",ret,lynq_apn_table[ret].apnType,apnType,len);
+ if(strncmp(lynq_apn_table[ret].statusApnType,apnType,len)==0)
+ {
+ return ret;
+ }
+ }
+ return -1;
+}
+
void updateApnTable(lynq_apn_t *apn_table,char apn[],char apntype[],char ifaceName[])
{
LYDBGLOG("[updateApnTable] apn:%s,apntype:%s,ifaceName:%s",apn,apntype,ifaceName);
@@ -136,7 +157,7 @@
void cleanOnceApnTable(int apnId)
{
- LYDBGLOG("apn id:%d",apnId);
+ LYDBGLOG("%s:apn id:%d",__FUNCTION__,apnId);
if((apnId < 0) || (apnId > LYNQ_APN_CHANNEL_MAX-1))
{
LYERRLOG("apn id is invalid!!!");
@@ -144,18 +165,44 @@
}
lynq_apn_table[apnId].hasTimeout = 0;
lynq_apn_table[apnId].hasUsed = 0;
+ memcpy(lynq_apn_table[apnId].statusApnType,lynq_apn_table[apnId].apnType,strlen(lynq_apn_table[apnId].apnType));
bzero(lynq_apn_table[apnId].apn,LYNQ_APN_MAX_LEN);
bzero(lynq_apn_table[apnId].apnType,LYNQ_APN_TYPE_MAX_LEN);
bzero(lynq_apn_table[apnId].ifaceName,LYNQ_IFACE_NAME_MAX_LEN);
+ lynq_apn_table[apnId].status = 32;
return;
}
+void cleanDeactApn(int apnId)
+{
+ LYDBGLOG("%s:apn id:%d",__FUNCTION__,apnId);
+ if((apnId < 0) || (apnId > LYNQ_APN_CHANNEL_MAX-1))
+ {
+ LYERRLOG("apn id is invalid!!!");
+ return;
+ }
+ lynq_apn_table[apnId].status = 0;
+ bzero(lynq_apn_table[apnId].statusApnType,LYNQ_APN_TYPE_MAX_LEN);
+}
+
+void updateDeactApn(int apnId,int pdnState)
+{
+ LYDBGLOG("%s:apn id:%d",__FUNCTION__,apnId);
+ if((apnId < 0) || (apnId > LYNQ_APN_CHANNEL_MAX-1))
+ {
+ LYERRLOG("apn id is invalid!!!");
+ return;
+ }
+ lynq_apn_table[apnId].status = pdnState;
+}
+
+
int getUnusedElement()
{
- if (lynq_apn_table == NULL)
- {
- LYERRLOG("get UnusedElemnt apn_table is null");
- return -1;
- }
+ if (lynq_apn_table == NULL)
+ {
+ LYERRLOG("get UnusedElemnt apn_table is null");
+ return -1;
+ }
for(int i=0;i < LYNQ_APN_CHANNEL_MAX; i++)
{
if(lynq_apn_table[i].hasUsed!=1)
@@ -170,8 +217,11 @@
{
int ret = 0;
ret = getUnusedElement();
- memcpy(lynq_apn_table[ret].apnType,apnType,strlen(apnType)+1);
- lynq_apn_table[ret].hasUsed = 1;
+ if(ret >= 0)
+ {
+ memcpy(lynq_apn_table[ret].apnType,apnType,strlen(apnType)+1);
+ lynq_apn_table[ret].hasUsed = 1;
+ }
return ret;
}
@@ -260,10 +310,11 @@
char recvline[LYNQ_REC_BUF];
bzero(recvline,LYNQ_REC_BUF);
/* receive data from server */
- len = read(sockfd, recvline, LYNQ_REC_BUF);
+ len = recvfrom(sockfd,recvline,LYNQ_REC_BUF,0,(struct sockaddr *)&lynq_data_socket_server_addr,(socklen_t *)&lynq_data_socket_server_addr_len);
+ //len = read(sockfd, recvline, LYNQ_REC_BUF);
if(len == -1)
{
- LYERRLOG("read error");
+ LYERRLOG("get_response fail,errno:%d",errno);
return -1;
}
if (recvline != NULL) {
@@ -314,12 +365,12 @@
/*Warren add for T800 platform 2021/11/19 start*/
int lynq_socket_client_start()
{
- struct sockaddr_in lynq_data_socket_server_addr;
/* init lynq_socket_server_addr */
bzero(&lynq_data_socket_server_addr, sizeof(lynq_data_socket_server_addr));
lynq_data_socket_server_addr.sin_family = AF_INET;
lynq_data_socket_server_addr.sin_port = htons(LYNQ_SERVICE_PORT);
lynq_data_socket_server_addr.sin_addr.s_addr = inet_addr(LYNQ_ADDRESS);
+ lynq_data_socket_server_addr_len = sizeof(lynq_data_socket_server_addr);
/*
if(inet_pton(AF_INET,"127.0.0.1", &lynq_socket_server_addr.sin_addr) <= 0)
{
@@ -335,7 +386,7 @@
if (setsockopt(lynq_client_sockfd, SOL_SOCKET, SO_RCVTIMEO, &timeOut, sizeof(timeOut)) < 0)
{
- LYERRLOG("time out setting failed");
+ LYERRLOG("time out setting failed");
}
if(connect(lynq_client_sockfd, (struct sockaddr *)&lynq_data_socket_server_addr, sizeof(lynq_data_socket_server_addr)) == -1)
{
@@ -362,20 +413,25 @@
int printf_apn_table()
{
int ret = 0;
- if (lynq_apn_table == NULL)
- {
- LYERRLOG("apn table is null");
- return -1;
- }
+ if (lynq_apn_table == NULL)
+ {
+ LYERRLOG("apn table is null");
+ return -1;
+ }
for(ret;ret<LYNQ_APN_CHANNEL_MAX;ret++)
{
- LYINFLOG("[Typethree test info]apn=%s ;apntype=%s ;ifname=%s ;hasTimeout = %d ; hasUsed = %d", \
+ LYINFLOG("[%s][%d] apn=%s ;apntype=%s ;ifname=%s ;hasTimeout = %d ; hasUsed = %d,status = %d,statusDeactApn = %s",__FUNCTION__,ret, \
lynq_apn_table[ret].apn,lynq_apn_table[ret].apnType,lynq_apn_table[ret].ifaceName, \
- lynq_apn_table[ret].hasTimeout,lynq_apn_table[ret].hasUsed);
+ lynq_apn_table[ret].hasTimeout,lynq_apn_table[ret].hasUsed,lynq_apn_table[ret].status,lynq_apn_table[ret].statusApnType);
}
return 0;
}
+void printf_apn_table_debug(const char *fun,int line)
+{
+ LYINFLOG("[%s][%d]apn_table msg",fun,line);
+ printf_apn_table();
+}
void urc_msg_process(Parcel *p)
{
@@ -384,6 +440,7 @@
int urcid;
int slot_id;
int check_count = 0;
+ static int apnId=-1;
int pdnState = 0;
char apn[LYNQ_APN_MAX_LEN];
@@ -407,27 +464,30 @@
{
urc_msg = strdupReadString_p(p);
int len = strlen(urc_msg);
- if(len < LYNQ_APN_MAX_LEN-1)
+ if((len < LYNQ_APN_MAX_LEN-1) && (len > 0))
{
memcpy(apn,urc_msg,len+1);
}
+ free(urc_msg);
urc_msg = strdupReadString_p(p);
len = strlen(urc_msg);
- if(len < LYNQ_APN_TYPE_MAX_LEN-1)
+ if((len < LYNQ_APN_TYPE_MAX_LEN-1) && (len > 0))
{
memcpy(apnType,urc_msg,len+1);
}
+ free(urc_msg);
urc_msg = strdupReadString_p(p);
len = strlen(urc_msg);
- if(len < LYNQ_IFACE_NAME_MAX_LEN-1)
+ if((len < LYNQ_IFACE_NAME_MAX_LEN-1) && (len > 0))
{
memcpy(ifaceName,urc_msg,strlen(urc_msg)+1);
}
+ free(urc_msg);
//sendSignalDataCallStateChange();
- int apnId = getLynqApnID(apnType);
- LYINFLOG("URC apnType:%s,ifaceName:%s,apn:%s pdnState:%d",apnType,ifaceName,apn,pdnState);
+ apnId = getLynqApnID(apnType);
if(apnId >= 0)
{
+ LYINFLOG("URC apnType:%s,ifaceName:%s,apn:%s pdnState:%d,handle:%d",apnType,ifaceName,apn,pdnState,apnId);
if(lynq_apn_table[apnId].hasTimeout==1)
{
/*whether timeout?,real or not,*/
@@ -446,14 +506,22 @@
break;
}
updateApnTable(&lynq_apn_table[apnId],apn,apnType,ifaceName);
+ printf_apn_table_debug(__FUNCTION__,__LINE__);
}
/*To be completed*/
else
{
- data_invaild_error = 1;
- printf_apn_table();
- LYERRLOG("invalid apnId:%d",apnId);
- break;
+ data_invaild_error = 1;
+ printf_apn_table_debug(__FUNCTION__,__LINE__);
+ apnId = getDeactApnID(apnType);
+ if(apnId < 0)
+ {
+ LYERRLOG("[%d]invalid apnId:%d",__LINE__,apnId);
+ break;
+ }
+ LYINFLOG("URC apnType:%s,ifaceName:%s,apn:%s pdnState:%d,handle:%d",apnType,ifaceName,apn,pdnState,apnId);
+ updateDeactApn(apnId,pdnState);
+ printf_apn_table_debug(__FUNCTION__,__LINE__);
}
pthread_mutex_lock(&s_lynq_urc_vector_mutex);
s_data_urc_wait_list.push_back(apnId);
@@ -478,25 +546,48 @@
lynq_data_call = 0;
data_timelimit = 0;
}
+ printf_apn_table_debug(__FUNCTION__,__LINE__);
}
else
{
urc_msg = strdupReadString_p(p);
+ free(urc_msg);
+ urc_msg = strdupReadString_p(p);
len = strlen(urc_msg);
if(len < LYNQ_APN_TYPE_MAX_LEN-1)
{
memcpy(apnType,urc_msg,len+1);
}
+ free(urc_msg);
LYDBGLOG("[data thread_urc_recv] apntype:%s",apnType);
- int apnId = getLynqApnID(apnType);
+ apnId = getLynqApnID(apnType);
if(apnId >= 0)
{
+ LYINFLOG("URC apnType:%s,ifaceName:%s,apn:%s pdnState:%d,handle:%d",apnType,ifaceName,apn,pdnState,apnId);
+ lynq_data_call_change_id = apnId;
+ //bzero(lynq_apn_table[apnId].apnType,LYNQ_APN_TYPE_MAX_LEN);//async clean
+ pthread_mutex_lock(&s_lynq_urc_vector_mutex);
+ s_data_urc_wait_list.push_back(apnId);
+ pthread_mutex_unlock(&s_lynq_urc_vector_mutex);
+ sendSignalPdnChange();
+ }
+ else
+ {
+ apnId = getDeactApnID(apnType);
+ if(apnId < 0)
+ {
+ LYERRLOG("[%d]invalid apnId:%d",__LINE__,apnId);
+ break;
+ }
+ LYINFLOG("URC apnType:%s,ifaceName:%s,apn:%s pdnState:%d,handle:%d",apnType,ifaceName,apn,pdnState,apnId);
+ cleanDeactApn(apnId);
lynq_data_call_change_id = apnId;
bzero(lynq_apn_table[apnId].apnType,LYNQ_APN_TYPE_MAX_LEN);//async clean
pthread_mutex_lock(&s_lynq_urc_vector_mutex);
s_data_urc_wait_list.push_back(apnId);
pthread_mutex_unlock(&s_lynq_urc_vector_mutex);
sendSignalPdnChange();
+ printf_apn_table_debug(__FUNCTION__,__LINE__);
}
LYDBGLOG("data call state:%d",lynq_data_call);
if(lynq_data_call==1)
@@ -516,6 +607,7 @@
lynq_data_call = 0;
data_timelimit = 0;
}
+ printf_apn_table_debug(__FUNCTION__,__LINE__);
}
break;
case LYNQ_URC_MODIFY_APNDB:
@@ -530,6 +622,7 @@
strcpy(g_lynq_apn_result, urc_msg);
sendSignalApnChange();
}
+ free(urc_msg);
break;
case LYNQ_URC_RESET_APNDB:
{
@@ -544,6 +637,7 @@
strcpy(g_lynq_apn_result, urc_msg);
sendSignalApnChange();
}
+ free(urc_msg);
}
default:
break;
@@ -656,15 +750,17 @@
if (lynq_data_call_id < 0)
{
LYERRLOG("update apn table fail error id = %d",lynq_data_call_id);
- return -1;
+ return LYNQ_E_NULL_ANONALY+1;
}
+ *handle = lynq_data_call_id;//T8TSK-211 (2023/5/16) why? If it times out, the client application will also try to reconnect.
+ //Reconnection needs to be deactivated first, and deactivation needs to know which apn to activate.
lynq_data_call = 1;
pthread_mutex_lock(&g_lynq_data_sendto_mutex);
if(send_request(lynq_client_sockfd,&client)==-1)
{
LYERRLOG("send request fail");
perror("[LYNQ_DATA] send request fail:");
- return -1;
+ return LYNQ_E_NULL_ANONALY+2;
}
get_response(lynq_client_sockfd,p);
pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
@@ -678,16 +774,17 @@
error = LYNQ_E_TIME_OUT;
LYERRLOG("timeout:wait data Call state fail!!!");
lynq_apn_table[lynq_data_call_id].hasTimeout = 1;
- if (data_invaild_error == 1)
- {
- data_invaild_error = 0;
- LYERRLOG("urc apn info error!!!");
- return 8085;
- }
+ if (data_invaild_error == 1)
+ {
+ data_invaild_error = 0;
+ LYERRLOG("urc apn info error!!!");
+ return 8085;
+ }
+ printf_apn_table_debug(__FUNCTION__,__LINE__);
return error;
}
- *handle = lynq_data_call_id;
}
+ printf_apn_table_debug(__FUNCTION__,__LINE__);
#endif //GSW_RIL_CFG
return error;
}
@@ -716,17 +813,18 @@
lynq_data_call_id = *handle;
client.uToken = Global_uToken;
client.request = 41;//RIL_REQUEST_DEACTIVATE_DATA_CALL
- if(strcmp(lynq_apn_table[lynq_data_call_id].apnType,"default")==0)
- {
- client.paramLen = 0;
- bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
- }
- else
+ client.paramLen = 0;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ #ifdef GSW_RIL_CFG
+ client.paramLen = 1;
+ sprintf(client.param,"%s",lynq_apn_table[lynq_data_call_id].apnType);
+ #else
+ if(strcmp(lynq_apn_table[lynq_data_call_id].apnType,"default")!=0)
{
client.paramLen = 1;
- bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
sprintf(client.param,"%s",lynq_apn_table[lynq_data_call_id].apnType);
}
+ #endif //GSW_RIL_CFG
LYINFLOG("uToken=%d,request=%d,paralen=%d,param=%s",client.uToken,client.request,client.paramLen,client.param);
pthread_mutex_lock(&g_lynq_data_sendto_mutex);
if(send_request(lynq_client_sockfd,&client)==-1)
@@ -740,6 +838,7 @@
JumpHeader(p,&resp_type,&request,&slot_id,&error);
LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
cleanOnceApnTable(lynq_data_call_id);
+ printf_apn_table_debug(__FUNCTION__,__LINE__);
return error;
}
int lynq_setup_data_call_sp(int *handle,char *apn,char *apnType,char *user,char *password,char *authType,char *normalProtocol,char *roamingProtocol)
@@ -763,7 +862,7 @@
if(handle==NULL||apn==NULL||apnType==NULL)
{
LYERRLOG("handle ,apn or apntype is null!!!");
- return -1;
+ return LYNQ_E_NULL_ANONALY;
}
#endif //GSW_RIL_CFG
if(user==NULL)
@@ -827,15 +926,16 @@
if (lynq_data_call_id < 0)
{
LYERRLOG("update apn table fail error id = %d",lynq_data_call_id);
- return -1;
+ return LYNQ_E_NULL_ANONALY+1;
}
+ *handle = lynq_data_call_id;//T8TSK-211 (2023/5/16)
lynq_data_call = 1;
pthread_mutex_lock(&g_lynq_data_sendto_mutex);
if(send_request(lynq_client_sockfd,&client)==-1)
{
LYERRLOG("send request fail");
perror("[LYNQ_DATA] send request fail:");
- return -1;
+ return LYNQ_E_NULL_ANONALY+2;
}
get_response(lynq_client_sockfd,p);
pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
@@ -843,22 +943,23 @@
LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
if(error==0)
{
- data_timelimit = 1;
+ data_timelimit = 1;
if(waitDataCallstateChange(60000)==ETIMEDOUT)//60s
{
error = LYNQ_E_TIME_OUT;
LYERRLOG("timeout:wait data Call state fail!!!");
lynq_apn_table[lynq_data_call_id].hasTimeout = 1;
- if (data_invaild_error == 1)
- {
- data_invaild_error = 0;
- LYERRLOG("urc apn info error!!!");
- return 8085;
- }
+ if (data_invaild_error == 1)
+ {
+ data_invaild_error = 0;
+ LYERRLOG("urc apn info error!!!");
+ return 8085;
+ }
+ printf_apn_table_debug(__FUNCTION__,__LINE__);
return error;
}
- *handle = lynq_data_call_id;
}
+ printf_apn_table_debug(__FUNCTION__,__LINE__);
return error;
}
/*
@@ -910,6 +1011,7 @@
LYERRLOG("dataCallList is null!!!");
return -1;
}
+ Global_uToken++;
client.uToken = Global_uToken;
client.request = 57;//RIL_REQUEST_DATA_CALL_LIST
client.paramLen = 0;
@@ -936,7 +1038,7 @@
{
return -1;
}
- LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
+ LYINFLOG("resp_type=%d,uToken=%d,request=%d,slot_id=%d,error_code=%d",resp_type,token,request,slot_id,error);
p.readInt32(&version);
if(version==11)
{
@@ -949,17 +1051,47 @@
p.readInt32(&dataCallList[i].cid);
p.readInt32(&dataCallList[i].active);
temp_char = strdupReadString(p);
- memcpy(dataCallList[i].type,temp_char,strlen(temp_char)+1);
+ LYINFLOG("[%s][%d]%s",__FUNCTION__,__LINE__,temp_char);
+ if(temp_char)
+ {
+ memcpy(dataCallList[i].type,temp_char,strlen(temp_char)+1);
+ free(temp_char);
+ }
temp_char = strdupReadString(p);
- memcpy(dataCallList[i].ifname,temp_char,strlen(temp_char)+1);
+ LYINFLOG("[%s][%d]%s",__FUNCTION__,__LINE__,temp_char);
+ if(temp_char)
+ {
+ memcpy(dataCallList[i].ifname,temp_char,strlen(temp_char)+1);
+ free(temp_char);
+ }
temp_char = strdupReadString(p);
- memcpy(dataCallList[i].addresses,temp_char,strlen(temp_char)+1);
+ LYINFLOG("[%s][%d]%s",__FUNCTION__,__LINE__,temp_char);
+ if(temp_char)
+ {
+ memcpy(dataCallList[i].addresses,temp_char,strlen(temp_char)+1);
+ free(temp_char);
+ }
temp_char = strdupReadString(p);
- memcpy(dataCallList[i].dnses,temp_char,strlen(temp_char)+1);
+ LYINFLOG("[%s][%d]%s",__FUNCTION__,__LINE__,temp_char);
+ if(temp_char)
+ {
+ memcpy(dataCallList[i].dnses,temp_char,strlen(temp_char)+1);
+ free(temp_char);
+ }
temp_char = strdupReadString(p);
- memcpy(dataCallList[i].gateways,temp_char,strlen(temp_char)+1);
+ LYINFLOG("[%s][%d]%s",__FUNCTION__,__LINE__,temp_char);
+ if(temp_char)
+ {
+ memcpy(dataCallList[i].gateways,temp_char,strlen(temp_char)+1);
+ free(temp_char);
+ }
temp_char = strdupReadString(p);
- memcpy(dataCallList[i].pcscf,temp_char,strlen(temp_char)+1);
+ LYINFLOG("[%s][%d]%s",__FUNCTION__,__LINE__,temp_char);
+ if(temp_char)
+ {
+ memcpy(dataCallList[i].pcscf,temp_char,strlen(temp_char)+1);
+ free(temp_char);
+ }
p.readInt32(&dataCallList[i].mtu);
}
}
@@ -1033,7 +1165,7 @@
s_data_urc_wait_list.erase(iter);
pthread_mutex_unlock(&s_lynq_urc_vector_mutex);
- LYINFLOG("lynq data call id:%d",*handle);
+ LYINFLOG("lynq_wait_data_call_state_change handle:%d",*handle);
return 0;
}
/*Warren add for T800 platform 2021/11/19 end*/
diff --git a/src/lynq/lib/liblynq-data/lynq_data_urc.cpp b/src/lynq/lib/liblynq-data/lynq_data_urc.cpp
index 9f211eb..f5d127a 100755
--- a/src/lynq/lib/liblynq-data/lynq_data_urc.cpp
+++ b/src/lynq/lib/liblynq-data/lynq_data_urc.cpp
@@ -77,7 +77,7 @@
{
bzero(urc_data,LYNQ_REC_BUF);
res = recvfrom(lynq_urc_sockfd,urc_data,sizeof(urc_data),0,(struct sockaddr *)&urc_local_addr,(socklen_t*)&lynq_len_urc_addr_serv);
-
+ LYINFLOG("[%s][%d] res:%d",__FUNCTION__,__LINE__,res);
if(res<sizeof(int32_t)*2)
{
LYERRLOG("thread_urc_recv step2 fail: res is %d",res);
@@ -170,6 +170,7 @@
struct sockaddr_in urc_local_addr;
pthread_attr_t attr;
lynq_urc_sockfd = socket(AF_INET,SOCK_DGRAM,0);
+ lynq_len_urc_addr_serv = sizeof(urc_local_addr);
if(lynq_urc_sockfd < 0)
{
LYERRLOG("create socket for udp fail");