[Feature][T3TSK-7][AT]Synchronize 800 AT instruction to read IMEI (AT+CGSN)
Change-Id: Ibe1b3d7717719a059038ff6ee4f64b6068e1d4bb
diff --git a/src/lynq/framework/lynq-atsvc/src/factory/lynq_factory.cpp b/src/lynq/framework/lynq-atsvc/src/factory/lynq_factory.cpp
index df2eee8..b6c4037 100755
--- a/src/lynq/framework/lynq-atsvc/src/factory/lynq_factory.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/factory/lynq_factory.cpp
@@ -1,4 +1,59 @@
+#include<sys/types.h>
+#include<sys/socket.h>
+#include<unistd.h>
+#include<netinet/in.h>
+#include<arpa/inet.h>
+#include<netdb.h>
+#include<signal.h>
+#include <log/log.h>
+#include <hardware_legacy/power.h>
+#include <vendor-ril/telephony/ril.h>
+#include <telephony/ril_cdma_sms.h>
+
+#include <telephony/record_stream.h>
+#include <utils/SystemClock.h>
+#include <binder/Parcel.h>
+#include <cutils/jstring.h>
+#include <sys/types.h>
+#include <limits.h>
+#include <pwd.h>
+
+#include <stdlib.h>
+#include <stdarg.h>
+
+#include <unistd.h>
+
+#include <errno.h>
+#include <ctype.h>
+#include <alloca.h>
+#include <sys/un.h>
+#include <assert.h>
+#include <netinet/in.h>
+#include <atomic>
+
+#include "utils/String8.h"
+#include "ss.h"
+
+#include "cc.h"
+#include "network.h"
+#include "stk.h"
+
+
+#include "atci/ATCI.h"
+#include "data/data.h"
+#include "data/data_gdbus.h"
+#include "ecall/eCall.h"
+#include "em/em.h"
+#include "sms/sms.h"
+#include "sms/cdma/sms_pdu_cdma.h"
+#include "stateManager/stateManager.h"
+
+
+#include "Radio_capability_switch_util.h"
+
#include <stdio.h>
+#include <sys/stat.h>
+#include <fcntl.h>
#include "common.h"
#include "utils.h"
#include "Phone_utils.h"
@@ -572,14 +627,68 @@
return err;
}
-static void lynq_gps_disable(void)
-{
- enable_nema = 0;
- lynq_factory_response_ttyGS3("+GPS DISABLE:OK\n");
- return;
+void lynq_sendRequestToMd(int request, int id) {
+ RequestInfo* info = creatRILInfoAndInit(request, INIT, (RIL_SOCKET_ID) ((id)));
+ info->lynqEvent = 1;
+ switch(request){
+ case RIL_REQUEST_DEVICE_IDENTITY:
+ {
+ getDeviceIdentity(1, NULL, (RIL_SOCKET_ID) ((id)), info);
+ break;
+ }
+ case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE:
+ {
+ getPreferredNetworkType(1, NULL, (RIL_SOCKET_ID) ((id)), info);
+ break;
+ }
+ case RIL_REQUEST_GET_SIM_STATUS:
+ {
+ getIccCardStatus(1, NULL, (RIL_SOCKET_ID) (id), info);
+ break;
+ }
+ case RIL_REQUEST_DATA_REGISTRATION_STATE:
+ {
+ getDataRegistrationState(1, NULL, (RIL_SOCKET_ID) (id), info);
+ break;
+ }
+ case RIL_REQUEST_VOICE_REGISTRATION_STATE:
+ {
+ getVoiceRegistrationState(1, NULL, (RIL_SOCKET_ID) (id), info);
+ break;
+ }
+ case RIL_REQUEST_VOICE_RADIO_TECH:
+ {
+ getVoiceRadioTechnology(1, NULL, (RIL_SOCKET_ID) (id), info);
+ break;
+ }
+ case RIL_REQUEST_OEM_HOOK_RAW:
+ {
+ char* tmp[2] = {"RIL_REQUEST_OEM_HOOK_RAW", "AT+ECAL"};
+ sendATCMD(2, tmp, (RIL_SOCKET_ID) (id), info);
+ break;
+ }
+ case RIL_REQUEST_GET_RADIO_CAPABILITY:
+ {
+ getRadioCapability(1, NULL, (RIL_SOCKET_ID) ((id)), info);
+ break;
+ }
+ default:
+ RLOGE("don't support %d in init", id);
+ if(info) {
+ free(info);
+ }
+ }
}
int lynq_get_factory_data(int num,char *argv[MAX_ARGS]){
+ if(!strcmp(argv[1],"AT+CGSN"))
+ {
+ for(int i = 0; i < 2; i++)
+ {
+ lynq_sendRequestToMd(RIL_REQUEST_DEVICE_IDENTITY,i);
+ }
+ //lynq_get_imei(num, argv);
+ }
if(num < 4)
return -1;
if(!strcmp(argv[3], "wifi")){
@@ -594,9 +703,6 @@
else if(!strcmp(argv[3], "gps_enable")){
lynq_gps_enable();
}
- else if(!strcmp(argv[3], "gps_disable")){
- lynq_gps_disable();
- }
else if(!strcmp(argv[3], "gps_close")){
lynq_gps_close();
}
diff --git a/src/lynq/framework/lynq-atsvc/src/lynq_at_transfer_table.h b/src/lynq/framework/lynq-atsvc/src/lynq_at_transfer_table.h
index 25edb74..84f1731 100755
--- a/src/lynq/framework/lynq-atsvc/src/lynq_at_transfer_table.h
+++ b/src/lynq/framework/lynq-atsvc/src/lynq_at_transfer_table.h
@@ -21,6 +21,7 @@
{LYNQ_REQUEST_FACTORY,"LYNQFACTORY",7},
{LYNQ_REQUEST_LINFO,"LINFO",7},
{LYNQ_REQUEST_FOTA,"LYNQFOTA",7},
+{LYNQ_REQUEST_FACTORY,"CGSN",7},
{LYNQ_REQUEST_TEMP,"LYNQMTSM",1},
{LYNQ_REQUEST_TIME,"LYNQTIME",1},
diff --git a/src/lynq/framework/lynq-atsvc/src/ril.cpp b/src/lynq/framework/lynq-atsvc/src/ril.cpp
index b21bff6..83ad632 100755
--- a/src/lynq/framework/lynq-atsvc/src/ril.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/ril.cpp
@@ -169,6 +169,7 @@
// Enable RILC log
#define RILC_LOG 1
+int imei_cnt = 0;
#if RILC_LOG
static char printBuf[PRINTBUF_SIZE];
static char tempPrintBuf[PRINTBUF_SIZE];
@@ -3864,6 +3865,23 @@
return;
}
+/**
+ * @brief To handle comma-separated strings, take the character before the first comma eg:123456,78 ->123456
+ *
+ * @param buf Type:[IN]
+ */
+static void parse_imei(char buf[])
+{
+ if(NULL == buf)
+ {
+ return;
+ }
+ const char s[2] = ",";
+ char *token;
+ token = strtok(buf, s);
+ return;
+}
+
extern "C" void
RIL_onRequestComplete(RIL_Token t, RIL_Errno e, void *response, size_t responselen) {
RequestInfo *pRI;
@@ -4119,7 +4137,65 @@
}
printf("n = %d\n",n);
}
+ break;
}
+ /*lei add for AT+CGSN 2022/8/4*/
+ case RIL_REQUEST_DEVICE_IDENTITY:
+ {
+ int resp_type;
+ int request;
+ int slot_id;
+ int error1;
+ int num;
+ char imei[32] = {0};
+ if(pRI->lynqEvent==1)
+ {
+ //printf("lei test %s\n" ,printBuf);
+ p.setDataPosition(0);
+ if(p.dataAvail() > 0)
+ {
+ p.readInt32(&resp_type);
+ p.readInt32(&request);
+ p.readInt32(&slot_id);
+ p.readInt32(&error1);
+ if(!error1)
+ {
+ p.readInt32(&num);
+ char * test = strdupReadString(p);
+ parse_imei(test);
+ if(imei_cnt % 2 == 0)
+ {
+ sprintf(imei,"%s%s%s", "+CGSN: ", test, "\n");
+ int n = write(ttyGS3_fd,imei,strlen(imei));
+ if(n<0)
+ {
+ perror("lynq resp write:");
+ }
+ }
+ else
+ {
+ sprintf(imei,"%s%s%s", "+CGSN: ", test, "\n");
+ int n = write(ttyGS3_fd,imei,strlen(imei));
+ if(n<0)
+ {
+ perror("lynq resp write:");
+ }
+ char eBuf[64] = {0};
+ sprintf(eBuf,"OK\n");
+ n = write(ttyGS3_fd,eBuf,strlen(eBuf));
+ if(n<0)
+ {
+ perror("lynq resp write:");
+ }
+ }
+ free(test);
+ imei_cnt++;
+ }
+ }
+ }
+ break;
+ }
+ /*lei add for AT+CGSN 2022/8/4*/
default:
break;
}