[Feature][T8TSK-97][AT]at+leapnmod(modify apn info)
Change-Id: Icd40907bc3b21e6b27c5260de0badf45d1e0952f
diff --git a/framework/lynq-ril-service/src/common.cpp b/framework/lynq-ril-service/src/common.cpp
index 2f61845..bf45112 100755
--- a/framework/lynq-ril-service/src/common.cpp
+++ b/framework/lynq-ril-service/src/common.cpp
@@ -194,6 +194,26 @@
static int regCodeToRadioTechnology(int request, int code, int slot);
+void lynq_output_info(const char* format,...)
+{
+ if(ttyGS3_fd < 0)
+ {
+ return;
+ }
+ char buf[1024] = {0};
+ int n;
+ va_list args;
+ va_start(args, format);
+ vsnprintf(buf, sizeof(buf), format, args);
+ va_end(args);
+ n=write(ttyGS3_fd, buf, strlen(buf));
+ if(n < 0)
+ {
+ perror("lynq resp write:");
+ }
+ return;
+}
+
void update_call_state(void *response, size_t responselen, int slot) {
int num = responselen / sizeof(RIL_Call *);
if(num == 0) {
diff --git a/framework/lynq-ril-service/src/common.h b/framework/lynq-ril-service/src/common.h
index b7623c6..aa9d89c 100755
--- a/framework/lynq-ril-service/src/common.h
+++ b/framework/lynq-ril-service/src/common.h
@@ -163,6 +163,14 @@
int request;
} COMMAND;
+/**
+ * @brief lei add for output imformation on elt(at port)
+ *
+ * @param format
+ * @param ...
+ */
+void lynq_output_info(const char* format,...);
+
void updateCardStatusV6(RIL_CardStatus_v6 *card_status,int slot);
char* getAid(int slot);
diff --git a/framework/lynq-ril-service/src/data/data_gdbus.cpp b/framework/lynq-ril-service/src/data/data_gdbus.cpp
index 7d1f582..151e2ef 100755
--- a/framework/lynq-ril-service/src/data/data_gdbus.cpp
+++ b/framework/lynq-ril-service/src/data/data_gdbus.cpp
@@ -428,6 +428,9 @@
RLOGD("modifyApnDB_method_cb reason %s", ((reason == NULL)? "":reason));
printf("modify apn db success, return message: %s\n", ((reason == NULL)? "":reason));
//printf("modifyApnDB_method_cb reason %s\n", ((reason == NULL)? "":reason));
+ /*lei add for at+lmdapn*/
+ lynq_output_info("+LEAPNMOD:%s\n", ((reason == NULL)? "":reason));
+ /*lei add for at+lmdapn*/
g_variant_unref(result);
lynq_data_modify_apn(reason,LYNQ_URC_MODIFY_APNDB);
}
diff --git a/framework/lynq-ril-service/src/lynq_at_transfer_table.h b/framework/lynq-ril-service/src/lynq_at_transfer_table.h
index d616973..46b73fc 100755
--- a/framework/lynq-ril-service/src/lynq_at_transfer_table.h
+++ b/framework/lynq-ril-service/src/lynq_at_transfer_table.h
@@ -18,4 +18,5 @@
{LYNQ_REQUEST_INSIDE_VERSION,"CGIR",7},
{LYNQ_REQUEST_FACTORY,"CGSN",7},
{LYNQ_REQUEST_TEMP,"LYNQMTSM",1},
+{LYNQ_REQUEST_APN,"LEAPNMOD",7},
{-1,NULL,0},
\ No newline at end of file
diff --git a/framework/lynq-ril-service/src/lynq_commands.h b/framework/lynq-ril-service/src/lynq_commands.h
index 9481977..d1dfd31 100755
--- a/framework/lynq-ril-service/src/lynq_commands.h
+++ b/framework/lynq-ril-service/src/lynq_commands.h
@@ -18,4 +18,5 @@
/*lei modify :Low power consumption for factory test only*/
{LYNQ_PLAT_LGMDS,"LYNQ_PLAT_LGMDS","LGMDS",NULL,getMDstate},
{LYNQ_REQUEST_INSIDE_VERSION,"LYNQ_PLAT_LGMDS","CGIR",NULL,lynq_get_inside_version},
+{LYNQ_REQUEST_APN,"RIL_REQUEST_MODIFY_APN","LEAPNMOD",lynq_modify_apn_info,NULL},
{-1,NULL,NULL,NULL,NULL},
diff --git a/framework/lynq-ril-service/src/lynq_common.cpp b/framework/lynq-ril-service/src/lynq_common.cpp
index ca5bfe9..bd14e4f 100755
--- a/framework/lynq-ril-service/src/lynq_common.cpp
+++ b/framework/lynq-ril-service/src/lynq_common.cpp
@@ -83,8 +83,10 @@
case LYNQ_REQUEST_LAPNACT:
case LYNQ_REQUEST_ELAPNACT:
case LYNQ_REQUEST_SCREEN_STATE:
+ 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:
@@ -485,6 +487,184 @@
}
return 0;
}
+
+int insert_apn_char(char *agc, char *id,char *mcc, char *mnc, char *apn, char *apntype, char *user, char *password, char *normalprotocol, char *roamingprotocol, char *carrier)
+{
+ char strtmp[10][32];
+ if (!strcmp(id,"null"))
+ {
+ sprintf(strtmp[0], "id=;");
+ }
+ else
+ {
+ sprintf(strtmp[0], "id=%s;", id);
+ }
+ if (!strcmp(mcc,"null"))
+ {
+ sprintf(strtmp[1], "mcc=;");
+ }
+ else
+ {
+ sprintf(strtmp[1], "mcc=%s;", mcc);
+ }
+ if (!strcmp(mnc,"null"))
+ {
+ sprintf(strtmp[2], "mnc=;");
+ }
+ else
+ {
+ sprintf(strtmp[2], "mnc=%s;", mnc);
+ }
+ if (!strcmp(apn,"null"))
+ {
+ sprintf(strtmp[3], "apn=;");
+ }
+ else
+ {
+ sprintf(strtmp[3], "apn=%s;", apn);
+ }
+ if (!strcmp(apntype,"null"))
+ {
+ sprintf(strtmp[4], "apntype=;");
+ }
+ else
+ {
+ sprintf(strtmp[4], "type=%s;", apntype);
+ }
+ if (!strcmp(user,"null"))
+ {
+ sprintf(strtmp[5], "user=;");
+ }
+ else
+ {
+ sprintf(strtmp[5], "user=%s;", user);
+ }
+ if (!strcmp(password,"null"))
+ {
+ sprintf(strtmp[6], "password=;");
+ }
+ else
+ {
+ sprintf(strtmp[6], "password=%s;", password);
+ }
+ if (!strcmp(normalprotocol,"null"))
+ {
+ sprintf(strtmp[7], "protocol=;");
+ }
+ else
+ {
+ sprintf(strtmp[7], "normalprotocol=%s;", normalprotocol);
+ }
+ if (!strcmp(roamingprotocol,"null"))
+ {
+ sprintf(strtmp[8], "roamingprotocol=;");
+ }
+ else
+ {
+ sprintf(strtmp[8], "roamingprotocol=%s;", roamingprotocol);
+ }
+ if (!strcmp(carrier,"null"))
+ {
+ sprintf(strtmp[9], "carrier=;");
+ }
+ else
+ {
+ sprintf(strtmp[9], "carrier=%s;", carrier);
+ }
+ sprintf(agc, "%s%s%s%s%s%s%s%s%s%s",strtmp[0], strtmp[1], strtmp[2], strtmp[3], strtmp[4], strtmp[5], strtmp[6], strtmp[7], strtmp[8], strtmp[9]);
+ return 0;
+}
+
+int lynq_modify_apn_info(int argc,char*argv[],char *rilReq, int uToken)
+{
+ /*
+ argv[4];//id argv[5];//mcc argv[6];//mnc argv[7];//apn argv[8];//apntype argv[9];//user
+ argv[10];//password argv[11] normalprotocol argv[12] roamingprotocol
+ */
+ int operate = 0;
+ int ret = -1;
+ if(argc < 3)
+ {
+ RLOGD("parameter error!!!");
+ return 1;
+ }
+ if(argv[3] == NULL)
+ {
+ syncRespToUsb(100);
+ return -1;
+ }
+ char *new_argv[10] = {};
+ char apn_info[512];
+ operate = atoi(argv[3]);
+ new_argv[0] = (char *)rilReq;
+ if(operate == 0)//insert apn db
+ {
+ for(int i = 4; i < 14; i++)
+ {
+ printf("argv[%d] %s\n", i,argv[i]);
+ if(argv[i] == NULL)
+ {
+ syncRespToUsb(100);
+ return -1;
+ }
+ }
+ insert_apn_char(apn_info, argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13]);
+ new_argv[1] = "0";
+ new_argv[2] = apn_info;
+ android::lynqSendToRil(3,new_argv,uToken);
+ usleep(100*1000);
+ syncRespToUsb(0);
+ }
+ else if(operate == 1)//delete apn db
+ {
+ if(argv[4] == NULL)
+ {
+ syncRespToUsb(100);
+ return -1;
+ }
+ sprintf(apn_info, "id=%s", argv[4]);
+ new_argv[1] = "1";
+ new_argv[2] = apn_info;
+ android::lynqSendToRil(3,new_argv,uToken);
+ usleep(100*1000);
+ syncRespToUsb(0);
+ }
+ else if(operate == 2)//query apn db
+ {
+ if(argv[4] == NULL)
+ {
+ syncRespToUsb(100);
+ return -1;
+ }
+ sprintf(apn_info, "id=%s", argv[4]);
+ new_argv[1] = "2";
+ new_argv[2] = apn_info;
+ android::lynqSendToRil(3,new_argv,uToken);
+ usleep(100*1000);
+ syncRespToUsb(0);
+ }
+ else if(operate == 3)//modify apn db
+ {
+ for(int i = 4; i < 14; i++)
+ {
+ printf("argv[%d] %s\n", i,argv[i]);
+ if(argv[i] == NULL)
+ {
+ syncRespToUsb(100);
+ return -1;
+ }
+ }
+ insert_apn_char(apn_info, argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13]);
+ //sprintf(new_argv[1], "%d", operate);
+ new_argv[1] = "3";
+ new_argv[2] = apn_info;
+ android::lynqSendToRil(3,new_argv,uToken);
+ usleep(100*1000);
+ syncRespToUsb(0);
+ }
+ return 0;
+}
+
int switchSim(int argc,char*argv[],char *rilReq, int uToken)
{
int slot = 0;
diff --git a/framework/lynq-ril-service/src/lynq_common.h b/framework/lynq-ril-service/src/lynq_common.h
index b733d2e..7b2daae 100755
--- a/framework/lynq-ril-service/src/lynq_common.h
+++ b/framework/lynq-ril-service/src/lynq_common.h
@@ -65,6 +65,7 @@
#define LYNQ_REQUEST_INSIDE_VERSION (LYNQ_VERSION +20)
/*rita add*/
#define LYNQ_REQUEST_TEMP (LYNQ_VERSION +26)
+#define LYNQ_REQUEST_APN (LYNQ_VERSION +27)
#define LYNQ_USER_REQUEST_GNSS (LYNQ_VERSION +100)
#define LYNQ_USER_REQUEST_OTHRE (LYNQ_VERSION +101)
@@ -115,4 +116,7 @@
void lynqAtRespWatingEvent();
int syncRespToUsb(int error_code);
void lynqInfo(char*argv[]);
+int lynq_modify_apn_info(int argc,char*argv[],char *rilReq, int uToken);
+void sendSignalApnChange();
+int waitApnResult();
#endif