[Bugfix][API-385][GSW][DATA]Insert the APN in reverse order
Change-Id: I99b9c6c3a691d5ff629a80a55add8e9892f21c53
diff --git a/lib/liblynq-data/lynq_data.cpp b/lib/liblynq-data/lynq_data.cpp
index bd7ec21..bfa0c94 100755
--- a/lib/liblynq-data/lynq_data.cpp
+++ b/lib/liblynq-data/lynq_data.cpp
@@ -13,6 +13,7 @@
#include <pthread.h>
#include "liblog/lynq_deflog.h"
#include <sys/time.h>
+#include <include/lynq_uci.h>
#define LYNQ_SERVICE_PORT 8088
#define LYNQ_URC_SERVICE_PORT 8086
#define LYNQ_REC_BUF 8192
@@ -20,6 +21,12 @@
#define LYQN_SEDN_BUF 1024*8+sizeof(int)*3
#define USER_LOG_TAG "LYNQ_DATA"
+#define LYNQ_DATA_UCI_BUF 258
+#define LYNQ_DATA_UCI_APN_SECTION "lynq_apn_info"
+#define LYNQ_DATA_UCI_APN_KEY "insertId"
+
+
+
using ::android::Parcel;
typedef struct{
int uToken;
@@ -886,7 +893,34 @@
/*Typethree add for T800 platform 2022/04/21 start*/
int insert_apn_char(char *agc, char *mcc, char *mnc, char *apn, char *apntype, char *user, char *password, char *normalprotocol, char *roamingprotocol, char *carrier)
{
+ int ret = 0;
+ int fact_apn_id=0;
+ int tmp_id_num = 0;
+ char tmp_ID[16]="";
+ char apn_info_buf[LYNQ_DATA_UCI_BUF]="";
+ char apn_info_outbuf[LYNQ_DATA_UCI_BUF];
char strtmp[10][32];
+
+ sprintf(apn_info_buf,"%s.%s.%s",LYNQ_UCI_FILE,LYNQ_DATA_UCI_APN_SECTION,LYNQ_DATA_UCI_APN_KEY);
+ ret = lynq_uci_get(apn_info_buf,apn_info_outbuf);
+ if (ret != UCI_OK)
+ {
+ LYERRLOG("Description APN failed to allocate an ID :ret = -1");
+ return -1;
+ }
+ tmp_id_num = atoi(apn_info_outbuf);
+ fact_apn_id = -tmp_id_num;
+ tmp_id_num = tmp_id_num + 1;
+
+ apn_info_buf[LYNQ_DATA_UCI_BUF]="";
+ sprintf(apn_info_buf,"%s.%s.%s=%d",LYNQ_UCI_FILE,LYNQ_DATA_UCI_APN_SECTION,LYNQ_DATA_UCI_APN_KEY,tmp_id_num);
+
+ ret = lynq_uci_set(apn_info_buf);
+ if (ret != UCI_OK)
+ {
+ LYERRLOG("Description APN failed to allocate an ID :ret = -2");
+ return -1;
+ }
if (mcc == NULL)
{
sprintf(strtmp[1], "mcc=;");
@@ -959,7 +993,8 @@
{
sprintf(strtmp[9], "carrier=%s;", carrier);
}
- sprintf(agc, "%s%s%s%s%s%s%s%s%s", strtmp[1], strtmp[2], strtmp[3], strtmp[4], strtmp[5], strtmp[6], strtmp[7], strtmp[8], strtmp[9]);
+ sprintf(agc, "id=%d;%s%s%s%s%s%s%s%s%s",fact_apn_id, strtmp[1], strtmp[2], strtmp[3], strtmp[4], strtmp[5], strtmp[6], strtmp[7], strtmp[8], strtmp[9]);
+
return 0;
}
@@ -1157,11 +1192,16 @@
lynq_client_t client;
char argc[512];
char recvline[LYNQ_REC_BUF];
- int len = 0;
+ int res = 0;
Parcel p;
if (cmd == 0) // insert apn db
{
- insert_apn_char(argc, mcc, mnc, apn, apntype, user, password, normalprotocol, roamingprotocol, carrier);
+ res = insert_apn_char(argc, mcc, mnc, apn, apntype, user, password, normalprotocol, roamingprotocol, carrier);
+ if (res != UCI_OK)
+ {
+ LYERRLOG("Description APN failed to allocate an ID");
+ return -1;
+ }
client.uToken = Global_uToken;
client.request = 2000 + 193; // RIL_REQUEST_MODIFY_APN
client.paramLen = 2;