Squashed 'LYNQ_PUBLIC/' changes from 994e41a76..f3dd8cbdf

f3dd8cbdf [Feature][ZK-92] ftp gpslog to soc with syslog
8bb9992d3 [Feature][API-1508] in NMEA-statement for ZK ,transfer BD to GB
17579bbfa [BugFix][API-1564]fix File descriptor leakage
9c8bb35ff Merge "[Bugfix][API-1561][mtklog]  support mtk log slim fota upgrade"
926d2ad75 [Bugfix][API-1561][mtklog]  support mtk log slim fota upgrade
4bcc14334 Merge "[Bugfix][ZK-78][FOTA]get process and upgrade status error when start fota up status"
610236b60 [Bugfix][ZK-78][FOTA]get process and upgrade status error when start fota up status
f700d98cb Merge "[Bugfix][API-1473][mdlog] lynq_query_registration_state type Voice  lac cid error"
0c874421d [Feature][T8TSK-320]Print the reason for the PDN when disconnected by the modem into the syslog
dac13540e Merge "[Feature][API-1406][API-1113]Adjust SEND_SMS timeout"
31850f3e5 Merge "[Feature][API-1557] FIX libvendor-ril can`t connected RILD issue"
d3a8f5da1 [Feature][API-1557] FIX libvendor-ril can`t connected RILD issue
2f4c07922 Merge "[Feature][T8TSK-316][rtp] rtp confirm to the standard of Geely"
1ee60ec01 Merge "[Bugfix][API-1551[network]  lynq_set_vlan_info, vlan_info is "", ret 8004"
98beaeaf3 Merge "[Bugfix][API-1534]After turning on the USB port, delay for 3 seconds to make a  call"
786e97304 [Feature][T8TSK-289] missing wom when add telephonyware to LYNQ_PUBLIC repo 0
d25d37156 [Bugfix][API-1534]After turning on the USB port, delay for 3 seconds to make a  call
4157623f6 [Feature][T8TSK-316][rtp] rtp confirm to the standard of Geely
c66c73d5d [Bugfix][API-1551[network]  lynq_set_vlan_info, vlan_info is "", ret 8004
4bf2e2e0b [Feature][API-1406][API-1113]Adjust SEND_SMS timeout
4b1c33121 [Bugfix][API-1473][mdlog] lynq_query_registration_state type Voice  lac cid error

git-subtree-dir: LYNQ_PUBLIC
git-subtree-split: f3dd8cbdf17f75f5c9672368b59c1cd59194fce6

Change-Id: Ie206616813b8064220450958d9f91e5048c08ac2
diff --git a/common_src/framework/lynq-ril-service/src/rtp/call_rtp.cpp b/common_src/framework/lynq-ril-service/src/rtp/call_rtp.cpp
index 0f8e597..e784cc6 100755
--- a/common_src/framework/lynq-ril-service/src/rtp/call_rtp.cpp
+++ b/common_src/framework/lynq-ril-service/src/rtp/call_rtp.cpp
@@ -143,25 +143,22 @@
 {

     RLOGD("%s start!",__FUNCTION__);

     android::Parcel p;

-

-    if(argc < 2) 

+    const char* vlan_info="";   

+        

+    if(argc >1) 

     {

-        android::lynqAssemblyParcelheader(p,socket_id,pRI->uToken,LYNQ_REQUEST_SET_VLAN_INFO,0,2);

-        android::LYNQ_RIL_respSocket_sp(p,pRI);
-        free(pRI);
-        RLOGW("Warning: no %s!",__FUNCTION__);

-        return -1;
+        vlan_info=argv[1];      

     } 

 

-    if(exe_set_vlan_info(argv[1],strlen(argv[1])+1)==RESULT_OK)

+    if(exe_set_vlan_info(vlan_info,strlen(vlan_info)+1)==RESULT_OK)

     {

         android::lynqAssemblyParcelheader(p,socket_id,pRI->uToken,LYNQ_REQUEST_SET_VLAN_INFO,0,0);

-        RLOGD(">>>>%s<<<< success value is %s!\n", __FUNCTION__, argv[1]);

+        RLOGD(">>>>%s<<<< success value is %s!\n", __FUNCTION__, vlan_info);

     }

     else

     {

         android::lynqAssemblyParcelheader(p,socket_id,pRI->uToken,LYNQ_REQUEST_SET_VLAN_INFO,0,4);

-        RLOGE(">>>>%s <<<< failure value is %s!\n",__FUNCTION__, argv[1]);

+        RLOGE(">>>>%s <<<< failure value is %s!\n",__FUNCTION__, vlan_info);

     }       

 

     android::LYNQ_RIL_respSocket(p,(void *)pRI);  

@@ -514,7 +511,7 @@
                sprintf(ssrc_para_string,RTP_SSRC_INFO_FORMAT,g_rtp_server_info.ssrc);

             }

             sprintf(cmd,RTP_TO_CMD,   \

-            ssrc_para_string, g_rtp_server_info.ip,vlan_para_string,g_rtp_server_info.port);       

+            g_rtp_client_info.channels, g_rtp_client_info.clockrate, ssrc_para_string, g_rtp_server_info.ip,vlan_para_string,g_rtp_server_info.port);       

             

             RLOGD("start to rtp play: cmd is %s",cmd);

             system(cmd);    

@@ -680,7 +677,7 @@
     RLOGD("exe_set_rtp_port suc: LYNQ_Rtp_Mode is %d, port is %d", rtp_mode, port);

     return RESULT_OK;  

 }

-int exe_set_rtp_param(const int clock_rate,const int channels,const int latency) //only for client mode

+int exe_set_rtp_param(const int clock_rate,const int channels,const int latency) 

 {

     g_rtp_client_info.clockrate = clock_rate;

     g_rtp_client_info.channels = channels;

diff --git a/common_src/framework/lynq-ril-service/src/rtp/call_rtp_inner.h b/common_src/framework/lynq-ril-service/src/rtp/call_rtp_inner.h
index 7e5614f..0a1ebd0 100755
--- a/common_src/framework/lynq-ril-service/src/rtp/call_rtp_inner.h
+++ b/common_src/framework/lynq-ril-service/src/rtp/call_rtp_inner.h
@@ -15,8 +15,8 @@
     RTP_MODE_MAX

 }LYNQ_Rtp_Mode;

 

-#define RTP_FROM_CMD "gst-launch-1.0 -v udpsrc port=%d caps=\'application/x-rtp, media=(string)audio, clock-rate=(int)%d, channels=(int)%d\' ! rtpjitterbuffer latency=%d ! rtppcmadepay ! alawdec ! alsasink device=\'hw:0,2\'"

-#define RTP_TO_CMD   "gst-launch-1.0 -v alsasrc device=\'hw:0,6\' ! alawenc ! rtppcmapay ! %s udpsink host=%s %s auto-multicast=true port=%d"

+#define RTP_FROM_CMD "gst-launch-1.0 -v udpsrc port=%d caps=\'application/x-rtp, media=(string)audio, clock-rate=(int)%d, channels=(int)%d\' ! rtpjitterbuffer latency=%d ! rtpL16depay ! audioconvert ! alsasink device=\'hw:0,2\'"

+#define RTP_TO_CMD   "gst-launch-1.0 -v alsasrc device=\'hw:0,6\' ! audioconvert ! audio/x-raw,format=S16BE, channels=%d ! audioresample  ! audio/x-raw, rate=%d ! rtpL16pay ! %s udpsink host=%s %s auto-multicast=true port=%d"                        

 #define RTP_VLAN_INFO_FORMAT "multicast-iface=\"%s\""

 #define RTP_SSRC_INFO_FORMAT " rtpmux name=mux ssrc=%u !"

 

diff --git a/common_src/lib/liblynq-call/lynq_call.cpp b/common_src/lib/liblynq-call/lynq_call.cpp
index 8e6943d..0b7e385 100755
--- a/common_src/lib/liblynq-call/lynq_call.cpp
+++ b/common_src/lib/liblynq-call/lynq_call.cpp
@@ -30,7 +30,8 @@
 #define AUDIO_CTRL_SER "/tmp/audio_ctrl_service"

 #define LIBMODEM_AFE "/tmp/libmodem-afe-ctrl"

 #define TELE_DEMO_LOCK "/tmp/tel_demo_single_proc.lock"

-

+#define CALL_REBOOT_FLAG "/tmp/.call_reboot_flag"

+#define SYSTEM_UPTIME 40

 #define MAX_RING_INCOMING_INTERVAL 10

 

 using ::android::Parcel;

@@ -989,6 +990,49 @@
     return 0;

 }

 

+int call_boot_check()

+{

+    FILE *file = NULL;

+    int uptime = 0;

+

+    file = fopen("/proc/uptime", "r");

+    if(file == NULL) 

+    {

+        LYERRLOG("Error opening /proc/uptime");

+        return -1;

+    }

+    

+    if(fscanf(file, "%d ", &uptime) != 1) 

+    {

+        LYERRLOG("Error reading uptime value");

+    }

+    

+    fclose(file);

+

+    if(uptime > SYSTEM_UPTIME) 

+    {

+        LYINFLOG("System uptime is greater than 40 seconds.");

+    } 

+    else 

+    {

+        LYINFLOG("System uptime is less than 40 seconds.");

+        FILE *fp = NULL;

+        if(check_file_access(CALL_REBOOT_FLAG) != 0)

+        {

+            usleep(3000000);

+            fp = fopen(CALL_REBOOT_FLAG,"w");

+            if(fp == NULL)

+            {

+                LYERRLOG("Creat call reboot flag file failed !!!!");

+                return -1;

+            }

+            LYINFLOG("Creat flag file success");

+            fclose(fp);

+        }

+    }

+    return 0;

+

+}

 int lynq_call(int* handle,char addr[])

 {

     if(g_module_init_flag != MODULE_RUNNING)

@@ -997,6 +1041,11 @@
         return LYNQ_E_CONFLICT;

     }

     try_reset_audio_service();

+

+#ifdef GSW_RIL_CFG

+    call_boot_check();

+#endif

+

     int lynq_call_id = -1;

 

     LYINFLOG("lynq_call begin addr %s",addr);

diff --git a/common_src/lib/liblynq-call/lynq_call_rtp.cpp b/common_src/lib/liblynq-call/lynq_call_rtp.cpp
index 05b3032..092a85c 100755
--- a/common_src/lib/liblynq-call/lynq_call_rtp.cpp
+++ b/common_src/lib/liblynq-call/lynq_call_rtp.cpp
@@ -33,6 +33,17 @@
     return strndup16to8(s16, stringlen);

 }

 

+int is_whitespace_only(const char *str) {  

+    while (*str != '\0') {

+        if (!isspace((unsigned char)*str)) { 

+            return 0; 

+        }  

+        str++;

+    }  

+    return 1; 

+}  

+

+

 /*set*/

 int lynq_set_voice_audio_mode(const LYNQ_Audio_Mode audio_mode)

 {

@@ -62,9 +73,9 @@
         LYERRLOG("%s module state %d error",__func__,g_module_init_flag);

         return LYNQ_E_CONFLICT;

     }

-    if (NULL == ip)

+    if (NULL == ip || is_whitespace_only(ip))

     {

-        LYERRLOG("ip is NULL!!!");

+        LYERRLOG("ip is NULL or white space string !!!");

         return LYNQ_E_PARAMETER_ANONALY;

     }

     if ((ip_length < strlen(ip)+1) || (ip_length > MAX_IP_LENGTH))

@@ -94,15 +105,24 @@
         LYERRLOG("vlan_info is NULL!!!");

         return LYNQ_E_PARAMETER_ANONALY;

     }

-    

-    if ((vlan_info_length < strlen(vlan_info)+1) || (vlan_info_length > MAX_VLAN_INFO_LENGTH))

-    {

-        LYERRLOG("incoming vlan_info error, vlan info length %d", vlan_info_length);

-        return LYNQ_E_PARAMETER_ANONALY;

-    }    

 

     Parcel* p=NULL;

-    int ret=lynq_send_common_request(p,g_wait_time,LYNQ_REQUEST_SET_VLAN_INFO,1,"%s",vlan_info);

+    int ret;

+

+    if(is_whitespace_only(vlan_info))

+    {

+        ret=lynq_send_common_request(p,g_wait_time,LYNQ_REQUEST_SET_VLAN_INFO,0,"");    

+    }

+    else

+    {

+        if ((vlan_info_length < strlen(vlan_info)+1) || (vlan_info_length > MAX_VLAN_INFO_LENGTH))

+        {

+            LYERRLOG("incoming vlan_info error, vlan info length %d", vlan_info_length);

+            return LYNQ_E_PARAMETER_ANONALY;

+        }       

+        ret=lynq_send_common_request(p,g_wait_time,LYNQ_REQUEST_SET_VLAN_INFO,1,"%s",vlan_info);

+    }    

+    

     if(ret==RESULT_OK)

     {

         delete p;        

diff --git a/common_src/lib/liblynq-call/makefile b/common_src/lib/liblynq-call/makefile
index 6073694..6d3e7ba 100755
--- a/common_src/lib/liblynq-call/makefile
+++ b/common_src/lib/liblynq-call/makefile
@@ -41,6 +41,10 @@
     -llynq-log \
     -llynq-shm \
 
+ifeq ($(strip $(MOBILETEK_RIL_CFG)), GSW)
+    LOCAL_CFLAGS += -DGSW_RIL_CFG
+endif
+
 SOURCES = $(wildcard *.cpp)
 
 EXECUTABLE = liblynq-call.so
diff --git a/common_src/lib/liblynq-network/lynq_network.cpp b/common_src/lib/liblynq-network/lynq_network.cpp
index ca07f55..311a360 100755
--- a/common_src/lib/liblynq-network/lynq_network.cpp
+++ b/common_src/lib/liblynq-network/lynq_network.cpp
@@ -468,6 +468,80 @@
     return RESULT_OK;  

 }

 

+int lynq_query_registration_state_from_parcel(Parcel* p, int num,int reject_index, int* regState,char * LAC,char * CID,int *netType,int *netRejected)

+{

+    int i;

+    char *resp[LYNQ_RESP_STRING_MAX_NUM]={0};    

+    int ret = RESULT_OK;

+    for(i=0;i<num;i++)

+    {

+        resp[i]=lynqStrdupReadString(p);

+    }            

+    if(resp[0]==NULL)

+    {

+        LYERRLOG("%s resp[0] %s is NULL",__func__,resp[0]);

+        ret = LYNQ_E_INNER_ERROR;

+        goto registration_from_parcel_return;

+    }

+    *regState = atoi(resp[0]);   

+    strcpy(CID,""); 

+    strcpy(LAC,"");

+    *netType = RADIO_TECH_UNKNOWN;            

+    *netRejected = -1;                   

+    if((*regState)==1 || (*regState)==5) 

+    {   

+        if(resp[1]!=NULL) 

+        {

+            strcpy(LAC,resp[1]);

+        }

+        else 

+        {           

+            LYERRLOG("%s resp[1] %s is NULL",__func__);

+        }

+        

+        if(resp[2]!=NULL) 

+        {

+            strcpy(CID,resp[2]);

+        }

+        else 

+        {                

+            LYERRLOG("%s resp[2] %s is NULL",__func__);

+        }

+

+        if(resp[3]!=NULL) 

+        {

+            *netType = atoi(resp[3]);

+        }

+        else 

+        {            

+            LYERRLOG("%s data resp[3] %s is NULL",__func__);

+        }

+    }

+    else if((*regState)==3 || (*regState)==13)

+    {    

+        if(resp[reject_index]==NULL)

+        {    

+            LYERRLOG("%s resp[%d] is NULL",__func__,reject_index);            

+        }  

+        else 

+        {

+            *netRejected = atoi(resp[reject_index]);            

+        }        

+    }    

+

+registration_from_parcel_return:

+

+    for(i=0;i<num;i++)

+    {

+        if(resp[i]!=NULL)

+        {

+            free(resp[i]);             

+        }            

+    }                  

+    return ret;

+}

+

+

 int lynq_query_registration_state(const char *type,int* regState,int* imsRegState,char * LAC,char * CID,int *netType,int *radioTechFam,int *netRejected)

 {

     if(g_module_init_flag != MODULE_RUNNING)

@@ -492,14 +566,14 @@
     memcpy(str,type,strlen(type)+1);

     strUpper(str);

     if(!strcmp(str,"VOICE"))

-    {

-        if(get_state_from_buf(NETWORK_STATE_BUFFER_TYPE_VOICE_REG,3,regState,netType,netRejected,0)==0)

+    {    

+        if(get_state_from_buf(NETWORK_STATE_BUFFER_TYPE_VOICE_REG,3,regState,netType,netRejected,2,LAC,CID)==0)

         {

             return RESULT_OK;  

         }       

         request = RIL_REQUEST_VOICE_REGISTRATION_STATE;

     }else if(!strcmp(str,"DATA")){

-        if(get_state_from_buf(NETWORK_STATE_BUFFER_TYPE_DATA_REG,2,regState,netType,2,LAC,CID)==0)

+        if(get_state_from_buf(NETWORK_STATE_BUFFER_TYPE_DATA_REG,3,regState,netType,netRejected,2,LAC,CID)==0)

         {

             return RESULT_OK;  

         }      

@@ -524,28 +598,21 @@
         return ret;  

     }   

     

-    int num,i;

-    char *resp[LYNQ_RESP_STRING_MAX_NUM];       

+    int num;

+    char *resp[LYNQ_RESP_STRING_MAX_NUM]={0};       

     if(!strcmp(str,"VOICE"))

-    {

-        p->readInt32(&num);

-        if(num == 15)

+    {        

+        p->readInt32(&num);        

+        if(num >0 && num<=15)

         {

-            for(i=0;i<15;i++)

+            ret=lynq_query_registration_state_from_parcel(p, num, 13, regState, LAC,CID,netType,netRejected);

+            if(ret!=RESULT_OK)

             {

-                resp[i]=lynqStrdupReadString(p);

-            }            

-            *regState = atoi(resp[0]);

-            *netType = atoi(resp[3]);

-            *netRejected = atoi(resp[14]);     

-            for(i=0;i<15;i++)

-            {

-                if(resp[i]!=NULL)

-                {

-                    free(resp[i]);            

-                }            

-            }            

-            set_state_to_buf(NETWORK_STATE_BUFFER_TYPE_VOICE_REG,3,*regState,*netType,*netRejected,0);

+                LYERRLOG("%s call lynq_query_registration_state_from_parcel fail",__func__);             

+                goto registration_return;       

+            }  

+            set_state_to_buf(NETWORK_STATE_BUFFER_TYPE_VOICE_REG,3,*regState,*netType,*netRejected,2,LAC,CID);

+            goto registration_return;

         }

         else 

         {

@@ -556,24 +623,17 @@
     }

     else if(!strcmp(str,"DATA")){

         p->readInt32(&num);

-        if(num == 11)

-        {                

-            for(i=0;i<4;i++)

+        if(num >0 && num <=11)

+        {        

+            ret=lynq_query_registration_state_from_parcel(p, num, 4, regState, LAC,CID,netType,netRejected);

+            if(ret!=RESULT_OK)

             {

-                resp[i]=lynqStrdupReadString(p);

-            }            

-            *regState = atoi(resp[0]);

-            strcpy(LAC,resp[1]);

-            strcpy(CID,resp[2]);

-            *netType = atoi(resp[3]);

-            for(i=0;i<4;i++)

-            {

-                if(resp[i]!=NULL)

-                {

-                    free(resp[i]);            

-                }           

-            }            

-            set_state_to_buf(NETWORK_STATE_BUFFER_TYPE_DATA_REG,2,*regState,*netType,2,LAC,CID);

+                LYERRLOG("%s call lynq_query_registration_state_from_parcel fail",__func__);             

+                goto registration_return;       

+            }              

+                        

+            set_state_to_buf(NETWORK_STATE_BUFFER_TYPE_DATA_REG,3,*regState,*netType,*netRejected,2,LAC,CID);                

+            goto registration_return;

         }

         else 

         {

@@ -598,10 +658,18 @@
             delete p;

             return LYNQ_E_INNER_ERROR;

         }            

-    }

-    LYINFLOG("%s suc",__func__); 

-    delete p;        

-    return RESULT_OK;     

+    }  

+     

+registration_return:

+

+    if(ret==RESULT_OK)

+    {

+        LYINFLOG("%s suc",__func__); 

+    }    

+   

+    delete p;

+    return ret;

+    

 }

 

 int lynq_query_prefferred_networktype(int *preNetType)

diff --git a/common_src/lib/liblynq-sms/lynq_sms.cpp b/common_src/lib/liblynq-sms/lynq_sms.cpp
index 4522fb6..938eedf 100755
--- a/common_src/lib/liblynq-sms/lynq_sms.cpp
+++ b/common_src/lib/liblynq-sms/lynq_sms.cpp
@@ -152,7 +152,7 @@
         char msg_e_b[msglen*2+1] = {0};// +1 for end of string.*2:A char array contains two elements of a string for each value

         ArrayToStr(msg, msglen, msg_e_b);

         LYINFLOG("tel, charset, msg_e_b: %s, %d, %s", telephony_num, charset, msg_e_b);

-        int ret=lynq_send_common_request(p,g_wait_time,RIL_REQUEST_SEND_SMS,3,"%s %d %s",telephony_num, charset, msg_e_b);

+        int ret=lynq_send_common_request(p,20,RIL_REQUEST_SEND_SMS,3,"%s %d %s",telephony_num, charset, msg_e_b);

         if(ret!=RESULT_OK)

         {

             LYERRLOG("%s  8bit send error %d",__func__,__LINE__);

@@ -163,7 +163,7 @@
     }

     else//other bit

     {

-        int ret=lynq_send_common_request(p,g_wait_time,RIL_REQUEST_SEND_SMS,3,"%s %d %s",telephony_num, charset, msg);

+        int ret=lynq_send_common_request(p,20,RIL_REQUEST_SEND_SMS,3,"%s %d %s",telephony_num, charset, msg);

         if(ret!=RESULT_OK)

         {

             LYERRLOG("%s  7bit send error %d",__func__,__LINE__);