[Bugfix][API-677][AT]at+lcsus=0 or 1 no response
[Feature][T8TSK-112][AT]at+elapnact can query pdp state
Change-Id: I3a45532e97a034c950b933281c57908570293d7e
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 151e2ef..03b43dd 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
@@ -56,12 +56,14 @@
#define TELEPHONY_SERVICE "mtk.telephony" /*well-known bus name */
#define TELEPHONY_DATA_INTERFACE "mtk.telephony.Data" /*interface name*/
#define TELEPHONY_DATA_PATH "/mtk/telephony/data" /*object name*/
+#define DEBUG 0
GMainLoop *loop = NULL;
GDBusProxy *proxy = NULL;
MTK_Data_Call_Response_v1 req_response;
MTK_Data_Call_Response_v1 urc_response;
+
/*Typethree add for t800 ril service 2022/04/14 start*/
int lynq_data_modify_apn(gchar *reason,int lynq_request_id)
@@ -83,29 +85,20 @@
/*Typethree add for t800 ril service 2022/04/14 end*/
/*Warren add for t103 szzt atsvc 2022/1/5 start*/
+/*lei modify on 2022/11/16*/
int lynqUpdateApnStatus(char *apn,char *apntype,int pdnState,char *ifname, char *addresses)//jb.qi add for IP address on20221025
{
- char BUF[256] = {};
- int len = -1;
if(pdnState==PDN_CONNECTED)
{
- sprintf(BUF,"+LAPNST:%s,%s,%d,%s,%s\n",apn,apntype,pdnState,ifname,addresses);//jb.qi add for IP address on20221025
- printf("eBuf:%s\n",BUF);
- len = write(ttyGS3_fd,BUF,strlen(BUF));
+ lynq_output_info("+LAPNST:%s,%s,%d,%s,%s\n",apn,apntype,pdnState,ifname,addresses);
}
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;
+ lynq_output_info("+LAPNST:%s,%s,%d\n",apn,apntype,pdnState);
}
return 0;
}
+/*lei modify on 2022/11/16*/
/*Warren add for t103 szzt atsvc 2022/1/5 end*/
/*Warren add for t800 ril service 2021/12/25 start*/
@@ -120,8 +113,6 @@
return -1;
}
bool apnHasCreated = FALSE;
- char Buf[1024] = {0};
- bzero(Buf, 1024);
Parcel p;
if(urc_response->cId > 0)
{
@@ -129,20 +120,19 @@
{
for(int i = 0;i < LYNQ_APN_CHANNEL_MAX;i++)
{
- //printf("data test 002:count:%d\n",i);
+ #if DEBUG
+ lynq_output_info("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].used = 0;
+ apn_table[i].netId = 0;
+ apn_table[i].pdpstate = PDN_DISCONNECTED;
apn_count--;
- int n = write(ttyGS3_fd,"OK\n",3);
- if(n<0)
- {
- perror("lynq resp write:");
- }
+ lynq_output_info("\nOK\n");
p.writeInt32 (1);
p.writeInt32 (LYNQ_URC_DATA_CALL_STATUS_IND);
p.writeInt32 (0);//temporary plan
@@ -150,7 +140,6 @@
writeStringToParcel(p,urc_response->apnType);
android::LYNQ_RIL_urcBroadcast(p);
RLOGD("removed apn:%s,apntype:%s",apn_table[i].apn,apn_table[i].apntype);
- //printf("removed apn:%s,apntype:%s\n",apn_table[i].apn,apn_table[i].apntype);
break;
}
}
@@ -172,7 +161,11 @@
memcpy(apn_table[apn_count].apn,urc_response->apnName,strlen(urc_response->apnName)+1);
memcpy(apn_table[apn_count].apntype,urc_response->apnType,strlen(urc_response->apnType)+1);
memcpy(apn_table[apn_count].ifaceName,urc_response->ifname,strlen(urc_response->ifname)+1);
- //printf("apn_table[%d].apn:%s,,,,urc_response->apnName:%s\n",apn_count,apn_table[apn_count].apn,urc_response->apnName);
+ memcpy(apn_table[apn_count].address,urc_response->addresses,strlen(urc_response->addresses)+1);
+ apn_table[apn_count].pdpstate = urc_response->pdnState;
+ #if DEBUG
+ lynq_output_info("line %d apn_table[%d].apn:%s,apntype:%s,,,urc_response->apnName:%s,urc_response->apntype:%s\n",__LINE__,apn_count,apn_table[apn_count].apn,apn_table[apn_count].apntype,urc_response->apnName,urc_response->apnType);
+ #endif
RLOGD("apn_table[%d].apn:%s,apntype:%s,,,urc_response->apnName:%s,urc_response->apntype:%s\n",apn_count,apn_table[apn_count].apn,apn_table[apn_count].apntype,urc_response->apnName,urc_response->apnType);
apn_table[apn_count].apnstatus=1;
apn_table[apn_count].used=1;
@@ -190,17 +183,28 @@
}
else
{
- for(int i = 0;i < LYNQ_APN_CHANNEL_MAX;i++)
+ for(int i = 0;i < LYNQ_APN_CHANNEL_MAX;i++)//means apn state changed,need update
{
+ #if DEBUG
+ lynq_output_info("line %d for apn_table[%d].apn:%s,,,,urc_response->apnName:%s\n",__LINE__,i,apn_table[i].apn,urc_response->apnName);
+ #endif
RLOGD("for apn_table[%d].apn:%s,,,,urc_response->apnName:%s\n",i,apn_table[i].apn,urc_response->apnName);
if(strcmp(apn_table[i].apn,urc_response->apnName)==0)
{
+ #if DEBUG
+ lynq_output_info("line %d This apn has been created update???!!!\n",__LINE__);
+ #endif
RLOGD("This apn has been created!!!");
- printf("This apn has been created!!!\n");
apnHasCreated = TRUE;
if(apn_table[i].netId!=urc_response->netId)
{
- apn_table[i].netId=urc_response->netId;
+ #if DEBUG
+ lynq_output_info("update???\n");
+ #endif
+ apn_table[i].netId = urc_response->netId;
+ apn_table[i].pdpstate = urc_response->pdnState;
+ memcpy(apn_table[i].ifaceName,urc_response->ifname,strlen(urc_response->ifname)+1);
+ memcpy(apn_table[i].address,urc_response->addresses,strlen(urc_response->addresses)+1);
lynqUpdateApnStatus(urc_response->apnName,urc_response->apnType,urc_response->pdnState,urc_response->ifname,urc_response->addresses);//jb.qi add for IP address on20221025
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);
@@ -216,23 +220,15 @@
writeStringToParcel(p,apnType_t);
writeStringToParcel(p,iface_t);
android::LYNQ_RIL_urcBroadcast(p);
- //lynq_data_callback(apn_t,apnType_t,urc_response->pdnState,iface_t);
- //sprintf(Buf,"+LAPNST:%s,%s,%d,%s\n",apn_table[i].apn,apn_table[i].apntype,urc_response->pdnState,urc_response->ifname);
- //printf("eBuf:%s\n",Buf);
- //int n = write(ttyGS3_fd,Buf,strlen(Buf));
- //if(n<0)
- //{
- // perror("lynq resp write:");
- //}
}
break;
}
}
- if(!apnHasCreated)//new apn has created
+ if(!apnHasCreated)//Multiple APNs are established new apn has created
{
bool getLable = FALSE;
int lable = 0;
- for(lable;lable < LYNQ_APN_CHANNEL_MAX;lable++)
+ for(lable;lable < LYNQ_APN_CHANNEL_MAX;lable++)//to find not used array element subscript
{
if(apn_table[lable].used==0)
{
@@ -242,10 +238,15 @@
}
if(getLable)
{
+ #if DEBUG
+ lynq_output_info("line %d Multiple APNs are established\n", __LINE__);
+ #endif
RLOGD("[getLable]:label==%d\n",lable);
memcpy(apn_table[lable].apn,urc_response->apnName,strlen(urc_response->apnName)+1);
memcpy(apn_table[lable].apntype,urc_response->apnType,strlen(urc_response->apnType)+1);
memcpy(apn_table[lable].ifaceName,urc_response->ifname,strlen(urc_response->ifname)+1);
+ apn_table[lable].pdpstate = urc_response->pdnState;
+ memcpy(apn_table[lable].address,urc_response->addresses,strlen(urc_response->addresses)+1);
RLOGD("new apn_table[%d].apn:%s,apntype:%s,,,urc_response->apnName:%s,urc_response->apntype:%s\n",lable,apn_table[lable].apn,apn_table[lable].apntype,urc_response->apnName,urc_response->apnType);
apn_table[lable].apnstatus=1;
apn_table[lable].used=1;
@@ -269,7 +270,7 @@
}
}
}
- else
+ else //cid < 0 it means:when at+cfun=0 will into this or when connecting
{
apnHasCreated = FALSE;
RLOGD("[cid < 0] apn_count:%d\n",apn_count);
@@ -278,6 +279,9 @@
int i = 0;
for(i;i < LYNQ_APN_CHANNEL_MAX;i++)
{
+ #if DEBUG
+ lynq_output_info("line %d don't know\n", __LINE__);
+ #endif
RLOGD("[cid<0]apn_table[%d].apntype:%s,,,,urc_response->apntype:%s\n",i,apn_table[i].apntype,urc_response->apnType);
if(strcmp(apn_table[i].apntype,urc_response->apnType)==0)
{
@@ -288,8 +292,19 @@
}
if(apnHasCreated)
{
- //sprintf(Buf,"+LAPNST:%s,%s,%d\n",apn_table[i].apn,apn_table[i].apntype,urc_response->pdnState);
- //printf("Buf:%s\n",Buf);
+ #if DEBUG
+ lynq_output_info("line %d don't know\n", __LINE__);
+ #endif
+ apn_table[i].pdpstate = urc_response->pdnState;
+ char ptr[1] = "";
+ if(NULL == urc_response->ifname)
+ {
+ memcpy(apn_table[i].ifaceName, ptr,strlen(ptr)+1);
+ }
+ if(NULL == urc_response->addresses)
+ {
+ memcpy(apn_table[i].address, ptr, strlen(ptr)+1);
+ }
lynqUpdateApnStatus(apn_table[i].apn,apn_table[i].apntype,urc_response->pdnState,NULL,NULL);//jb.qi add for IP address on20221025
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);
@@ -302,11 +317,6 @@
writeStringToParcel(p,apnType_t);
writeStringToParcel(p,iface_t);
android::LYNQ_RIL_urcBroadcast(p);
- //int n = write(ttyGS3_fd,Buf,strlen(Buf));
- //if(n<0)
- //{
- // perror("lynq resp write:");
- //}
}
}
}
diff --git a/src/lynq/framework/lynq-ril-service/src/lynq_common.cpp b/src/lynq/framework/lynq-ril-service/src/lynq_common.cpp
index 191b725..7b54cc8 100755
--- a/src/lynq/framework/lynq-ril-service/src/lynq_common.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/lynq_common.cpp
@@ -19,6 +19,7 @@
#include <sys/time.h>
#include "Phone_utils.h"
#include "utils.h"
+#include "data_gdbus.h"
usb_cmd_t Usb_commands[] = {
#include "lynq_commands.h"
};
@@ -86,7 +87,6 @@
case LYNQ_REQUEST_APN:
case LYNQ_REQUEST_SWITCH_SIM:
{
- printf("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);
return LYNQ_GOTO_TELE_REQ;
}
case LYNQ_REQUEST_SEND_LOG_DATA:
@@ -445,45 +445,74 @@
}
return 0;
}
+
+static void lynq_display_pdnstate(void)
+{
+ lynq_output_info("\n");
+ for(int i = 0;i < apn_count; i ++)
+ {
+ lynq_output_info("+ELAPNACT:%s,%s,%d,%s,%s\n", apn_table[i].apn, apn_table[i].apntype ,apn_table[i].pdpstate, apn_table[i].ifaceName, apn_table[i].address);
+ }
+ lynq_output_info("OK\n");
+ return;
+}
+
int setupData_e(int argc,char*argv[],char *rilReq, int uToken)
{
int status = 0;
int ret = -1;
- if(argc < 5)
- {
- RLOGD("parameter error!!!");
- return 1;
- }
- bzero(lynq_at,LYNQ_AT_LEN_MAX);
- sprintf(lynq_at,"ELAPNACT");
char *new_argv[10] = {};
- status = atoi(argv[3]);
- if(status == 1 )
+ if(NULL == argv[2])
{
- ret = checkDataRegistration(uToken);
- if(ret != 0)
- {
- RLOGD("[setupData] radio is not available!!!");
- return -1;
- }
- new_argv[0] = (char *)rilReq;
- new_argv[1] = argv[4];//apn
- new_argv[2] = argv[5];//apntype
- new_argv[3] = argv[6];//user
- new_argv[4] = argv[7];//password
- new_argv[5] = argv[8];//authType
- new_argv[6] = argv[9];//normalprotocol
- new_argv[7] = argv[10];//roamingprotocol
- //memcpy(apn_table[apn_count].apn,argv[4],strlen(argv[4]));
- //apn_count++;
- android::lynqSendToRil(8,new_argv,uToken);
- syncRespToUsb(0);
+ lynq_output_info("\n+ELAPNACT: 10\n");
+ return -1;
}
- else if(status == 0)
+ int type = atoi(argv[2]);
+ if(type == 0)
{
- new_argv[0] = "RIL_REQUEST_DEACTIVATE_DATA_CALL";
- new_argv[1] = argv[4];//apntype
- android::lynqSendToRil(2,new_argv,uToken);
+ if(argc < 5)
+ {
+ RLOGD("parameter error!!!");
+ return 1;
+ }
+ status = atoi(argv[3]);
+ if(status == 1 )
+ {
+ ret = checkDataRegistration(uToken);
+ if(ret != 0)
+ {
+ RLOGD("[setupData] radio is not available!!!");
+ return -1;
+ }
+ new_argv[0] = (char *)rilReq;
+ new_argv[1] = argv[4];//apn
+ new_argv[2] = argv[5];//apntype
+ new_argv[3] = argv[6];//user
+ new_argv[4] = argv[7];//password
+ new_argv[5] = argv[8];//authType
+ new_argv[6] = argv[9];//normalprotocol
+ new_argv[7] = argv[10];//roamingprotocol
+ //memcpy(apn_table[apn_count].apn,argv[4],strlen(argv[4]));
+ //apn_count++;
+ android::lynqSendToRil(8,new_argv,uToken);
+ syncRespToUsb(0);
+ }
+ else if(status == 0)
+ {
+ new_argv[0] = "RIL_REQUEST_DEACTIVATE_DATA_CALL";
+ new_argv[1] = argv[4];//apntype
+ android::lynqSendToRil(2,new_argv,uToken);
+ syncRespToUsb(0);
+ }
+ }
+ else if (type == 1)
+ {
+ lynq_output_info("\n+ELAPNACT: (0-7)\n");
+ lynq_output_info("OK\n\n");
+ }
+ else if (type == 2)
+ {
+ lynq_display_pdnstate();
}
return 0;
}
diff --git a/src/lynq/framework/lynq-ril-service/src/lynq_common.h b/src/lynq/framework/lynq-ril-service/src/lynq_common.h
index 9fe53e2..483986a 100755
--- a/src/lynq/framework/lynq-ril-service/src/lynq_common.h
+++ b/src/lynq/framework/lynq-ril-service/src/lynq_common.h
@@ -38,7 +38,7 @@
#define LYNQ_APN_LEN_MAX 100
#define LYNQ_APNTPYE_LEN_MAX 50
-#define LYNQ_APN_CHANNEL_MAX 10
+#define LYNQ_APN_CHANNEL_MAX 7//max is 7
#define LYNQ_AT_LEN_MAX 20
#define LYNQ_EVENT_WAIT_TIME_MAX 25 //m
@@ -92,6 +92,8 @@
int netId;
int used;//0:not use,1:used.
int apnstatus;//1:has enable;0:need disable.
+ int pdpstate;//lei add for at+elapnact? refer to T800 AT COMMANDS:+lapnact
+ char address[LYNQ_APNTPYE_LEN_MAX];
}apn_table_t;
extern apn_table_t apn_table[LYNQ_APN_CHANNEL_MAX];
extern int apn_count;
diff --git a/src/lynq/framework/lynq-ril-service/src/sim.cpp b/src/lynq/framework/lynq-ril-service/src/sim.cpp
index a6032a2..d77ab19 100755
--- a/src/lynq/framework/lynq-ril-service/src/sim.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/sim.cpp
@@ -182,16 +182,19 @@
free(pRI);
RLOGD("the paremeters numbers isn't right , so return");
android::emResultNotify("Set failed.\n");
+ lynq_output_info("\nCME ERROR:2\n");
return -1;
}
if(Radio_capability_switch_util::is_sim_inserted(atoi(argv[1]))) {
set_default_sim_all(atoi(argv[1]));
android::emResultNotify("Set successful.\n");
+ lynq_output_info("\nOK\n");
free(pRI);
} else {
RLOGD("Set default all fail, SIM card absent");
android::emResultNotify("Set default all fail, SIM card absent.\n");
+ lynq_output_info("\nCME ERROR:11\n");
free(pRI);
}