[bugfix]get imei
Change-Id: Ib08715229340125e4bd558ee23187bbe7483835c
diff --git a/lib/liblynq-sim/src/lynq_sim.cpp b/lib/liblynq-sim/src/lynq_sim.cpp
index 3eee001..4a2eb1a 100755
--- a/lib/liblynq-sim/src/lynq_sim.cpp
+++ b/lib/liblynq-sim/src/lynq_sim.cpp
@@ -33,6 +33,7 @@
#define RIL_REQUEST_OEM_HOOK_RAW 59
#define RIL_REQUEST_SCREEN_STATE 61
#define RIL_REQUEST_SIM_IO 28
+#define RIL_REQUEST_DEVICE_IDENTITY 98
#define LYNQ_REQUEST_SET_DEFAULT_SIM_ALL 8008
#define MAX_LEN 1024*8
#define MAX_NUM 10
@@ -587,25 +588,45 @@
return error1;
}
-int lynq_get_imei(char buf[]){
+/**
+ * @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;
+}
+
+int lynq_get_imei(char buf[])
+{
int ret = -1;
if(buf == NULL)
return ret;
int send_num = 0;
int recv_num = 0;
int len = 0;
+ lynq_client_t client_t1;
+ memset(&client_t1, 0, sizeof(client_t1) );
+ client_t1.request = RIL_REQUEST_DEVICE_IDENTITY;
+ client_t1.paramLen = 0;
+ client_t1.uToken = Global_uToken;
char res_data[MAX_LEN] = {0};
- client_t.request = RIL_REQUEST_OEM_HOOK_RAW;
- client_t.paramLen = 1;
- client_t.uToken = Global_uToken;
- sprintf(client_t.param, "%s\n", "AT+CGSN");
- send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+ memset(client_t1.param, 0, sizeof(client_t1.param));
+ send_num = sendto(sock_fd, &client_t1, sizeof(client_t1), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
if(send_num < 0)
{
RLOGD("sendto error:");
- return ret;
+ return send_num;
}
- //get data msg
+ //get data msg
recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
if(recv_num < 0 || recv_num == 0)
{
@@ -615,19 +636,18 @@
Parcel p;
p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
p.setDataPosition(0);
- int num = -1;
+ int num = 0;
if(p.dataAvail() > 0)
- {
- char test[30] = {0};
- char *argv[5] = {0};
+ {
p.readInt32(&resp_type);
p.readInt32(&request);
p.readInt32(&slot_id);
p.readInt32(&error1);
- p.readInt32(&num);
- if(num == -1){
- }else{
- p.read(buf, num);
+ if(!error1){
+ p.readInt32(&num);
+ char * test = lynqStrdupReadString(p);
+ parse_imei(test);
+ memcpy(buf, test, strlen(test));
}
}
return error1;