[Bugfix][API-413][Factory-test]None AT command to read IMEI2
[BUgfix][API-490][Factory-test]The VCOM fails to be opened.
Change-Id: I2a0faaaae42fe866285bd9e7dcbdddc6cf1ae2fa
diff --git a/framework/lynq-ril-service/src/factory/lynq_factory.cpp b/framework/lynq-ril-service/src/factory/lynq_factory.cpp
index b98a1b4..ac7cd11 100755
--- a/framework/lynq-ril-service/src/factory/lynq_factory.cpp
+++ b/framework/lynq-ril-service/src/factory/lynq_factory.cpp
@@ -1,3 +1,56 @@
+#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>
@@ -9,6 +62,7 @@
#include <string.h>
#include<pthread.h>
#include <cutils/properties.h>
+#include "lynq_at.h"
#ifdef __cplusplus
extern "C" {
#endif
@@ -22,6 +76,7 @@
char sgmii[32] = {0};
int gps_set = 2;
int g_set_output = 0;
+int ttyGS0_fd;
pthread_t lynq_gps_tid;
// static pthread_mutex_t s_gps_state_change_mutex = PTHREAD_MUTEX_INITIALIZER;
// static pthread_cond_t s_gps_change_cond = PTHREAD_COND_INITIALIZER;
@@ -65,9 +120,6 @@
#endif
void *thread_test(void *arg){
- /*open vcom port*/
- int ttyGS3_fd = open("/dev/ttyGS0",O_RDWR);
- /*open vcom port*/
char gnss_buf[128] = {0};
lynq_factory_response_ttyGS3("+GPS OPEN:OK\n");
sprintf(gnss_buf, "%s%d%s", "echo \"GNSS_MODE=", gps_set, "\">>/etc/gnss/mnl.prop");
@@ -93,7 +145,7 @@
/*output nema into vcom port*/
if(g_set_output == 1)
{
- write(ttyGS3_fd,lynq_factory_buf,strlen(lynq_factory_buf));
+ write(ttyGS0_fd,lynq_factory_buf,strlen(lynq_factory_buf));
}
/*output nema into vcom port*/
}
@@ -730,8 +782,37 @@
return 0;
}
+void lynq_switch_card(char *card)
+{
+ char *sim_argv[3] = {};
+ sim_argv[0] = "SET_DEFAULT_SIM_ALL";
+ sim_argv[1] = card;
+ sim_argv[2] = "sleep";
+ android::lynqSendToRil(2,sim_argv,8888);
+ sleep(1);
+ return;
+}
+
+static void lynq_get_imei(int argc, char *argv[MAX_ARGS])
+{
+ lynqSendAt(argc,argv,1010);
+ /*switch card 1*/
+ lynq_switch_card("1");
+ lynqSendAt(argc,argv,1010);
+ /*switch card 0*/
+ lynq_switch_card("0");
+ return;
+}
+
void lynq_nema_set(char *choice)
{
+ /*open vcom port*/
+ ttyGS0_fd = open("/dev/ttyGS0",O_RDWR);
+ if(ttyGS0_fd == -1)
+ {
+ lynq_factory_response_ttyGS3("\n+SET NEMA:ERROR\n");
+ }
+ /*open vcom port*/
if(choice == NULL)
{
lynq_factory_response_ttyGS3("INPUT ERROR\n");
@@ -741,7 +822,68 @@
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")){
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 c2edde9..1fddd39 100755
--- a/framework/lynq-ril-service/src/lynq_at_transfer_table.h
+++ b/framework/lynq-ril-service/src/lynq_at_transfer_table.h
@@ -16,4 +16,5 @@
{LYNQ_REQUEST_LINFO,"LINFO",7},
{LYNQ_REQUEST_FOTA,"LYNQFOTA",7},
{LYNQ_REQUEST_INSIDE_VERSION,"CGIR",7},
+{LYNQ_REQUEST_FACTORY,"CGSN",7},
{-1,NULL,0},
\ No newline at end of file
diff --git a/framework/lynq-ril-service/src/ril.cpp b/framework/lynq-ril-service/src/ril.cpp
index 915b399..057790b 100755
--- a/framework/lynq-ril-service/src/ril.cpp
+++ b/framework/lynq-ril-service/src/ril.cpp
@@ -174,6 +174,7 @@
/*For at extension to receive at buffer*/
char *at_buf_ext[MAX_AT_CMD];
int sockfd = 0;
+int imei_cnt = 0;
/*lei add*/
#if RILC_LOG
static char printBuf[PRINTBUF_SIZE];
@@ -3903,6 +3904,31 @@
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;
+}
+
+static char * lynqStrdupReadString(Parcel &p) {
+ size_t stringlen;
+ const char16_t *s16;
+
+ s16 = p.readString16Inplace(&stringlen);
+ return strndup16to8(s16, stringlen);
+}
+
extern "C" void
RIL_onRequestComplete(RIL_Token t, RIL_Errno e, void *response, size_t responselen) {
RequestInfo *pRI;
@@ -4165,7 +4191,64 @@
}
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 = lynqStrdupReadString(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:");
+ }
+ }
+ imei_cnt++;
+ }
+ }
+ }
+ break;
+ }
+ /*lei add for AT+CGSN 2022/8/4*/
default:
break;
}