[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;