Merge "[Feature][DATA][T8TSK-282] Optimize data call timeout mechanism" into GSW3.0-No-Connman
diff --git a/framework/lynq-audio-service/src/lynq_audio_service.c b/framework/lynq-audio-service/src/lynq_audio_service.c
index 9e1957c..cdf425d 100755
--- a/framework/lynq-audio-service/src/lynq_audio_service.c
+++ b/framework/lynq-audio-service/src/lynq_audio_service.c
@@ -5,7 +5,8 @@
 
 int main()
 {
-    system("/usr/bin/pulseaudio -D");
+    RLOGD("Open the pulseaudio service\n");
+    system("/usr/bin/pulseaudio -D --system");
     while(1)
     {
         sleep(UINT32_MAX);
diff --git a/lib/liblynq-network/include/lynq_network/lynq_network.h b/lib/liblynq-network/include/lynq_network/lynq_network.h
index ba7c1f4..00c5669 100755
--- a/lib/liblynq-network/include/lynq_network/lynq_network.h
+++ b/lib/liblynq-network/include/lynq_network/lynq_network.h
@@ -78,6 +78,9 @@
 int lynq_set_ims(const int ims_mode);

 int lynq_wait_signalchanges(int *handle);

 int lynq_get_urc_info(const int handle,signalStrength_t *solSigStren,int *slot_id);

+int lynq_set_feature_config_sbp(int sbp_flag);

+int lynq_query_feature_config_sbp(int *sbp_status );

+

 

 typedef enum {

     NETWORK_STATE_BUFFER_TYPE_VOICE_REG,

diff --git a/lib/liblynq-network/lynq_network.cpp b/lib/liblynq-network/lynq_network.cpp
index c025404..ec580e2 100755
--- a/lib/liblynq-network/lynq_network.cpp
+++ b/lib/liblynq-network/lynq_network.cpp
@@ -25,6 +25,12 @@
 /*in CR AUTO00207414, in modem, 23G detach need 10s, 5g ims detach need 5s, so set length to 12s */

 #define WAIT_TIME_LENGTH_FOR_SET_PREFFERRED_NETWORK_TYPE (12) 

 

+#define SET_SBP_OPEN    " AT+ESBP=5,\"SBP_NRRC_BAR_CELL_WITH_CONNECTION_FAILURE\",1 "

+#define SET_SBP_CLOSE   " AT+ESBP=5,\"SBP_NRRC_BAR_CELL_WITH_CONNECTION_FAILURE\",0 "

+#define QUERY_SBP_STATUS    "AT+ESBP=7,\"SBP_NRRC_BAR_CELL_WITH_CONNECTION_FAILURE\""

+#define OPEN    1

+#define CLOSE    0

+

 

 using ::android::Parcel;

 

@@ -1109,6 +1115,106 @@
     return RESULT_OK;   

 }

 

+

+/*****************************************

+* @brief:sned at request ,close or open SBP

+* @param count [IN]:sbp_flag 0:close 1:open

+* @param sum [OUT]:NA

+* @return :NA

+* @todo:

+* @see:NA

+* @warning:NA

+******************************************/

+int lynq_set_feature_config_sbp(int sbp_flag)

+{

+    int ret = 0;

+     Parcel* p=NULL;

+     

+    if(sbp_flag != OPEN && sbp_flag != CLOSE)

+    {

+         LYERRLOG("Bad input paramater ,you need input 0 or 1 !!!");

+         return RESULT_ERROR;

+    }

+    if(sbp_flag == OPEN)

+    {

+        ret = lynq_send_common_request(p,g_wait_time,RIL_REQUEST_OEM_HOOK_RAW,1,"%s",SET_SBP_OPEN);

+    }

+    else if(sbp_flag == CLOSE)

+    {

+        ret = lynq_send_common_request(p,g_wait_time,RIL_REQUEST_OEM_HOOK_RAW,1,"%s",SET_SBP_CLOSE);

+    }

+    if(ret != RESULT_OK)

+    {

+

+        LYERRLOG("%s  lynq_send_common_request failure, ret is %d",__func__,ret);

+        return ret;  

+    }     

+       return 0;

+}

+

+/*****************************************

+* @brief:send at request,get sbp status

+* @param count [IN]:NA

+* @param sum [OUT]:sbp_status

+* @return :NA

+* @todo:

+* @see:NA

+* @warning:NA

+******************************************/

+int lynq_query_feature_config_sbp(int *sbp_status )

+{

+    int ret = 0;

+    Parcel* p=NULL;

+    

+    ret = lynq_send_common_request(p,g_wait_time,RIL_REQUEST_OEM_HOOK_RAW,1,"%s",QUERY_SBP_STATUS);

+    if(ret != RESULT_OK)

+    {

+

+       LYERRLOG("%s  lynq_send_common_request failure, ret is %d",__func__,ret);

+       return ret;  

+    }     

+    

+   

+    const char* data;

+    int data_len;

+    char* data_str;

+    char* start;

+    char status[8] = {'0'};

+    data = lynq_get_raw_data(p,&data_len);

+    if(data==NULL || data_len == 0)

+    {

+        LYERRLOG("%s lynq_get_raw_data NULL or data_len is 0",__func__);    

+        delete p;

+        return LYNQ_E_INNER_ERROR; 

+    }

+    data_str = (char*) calloc(1,data_len+1);

+    if (NULL == data_str) 

+    {

+         LYERRLOG("%s alloc mem error, data_len is %d",__func__,data_len+1);         

+         delete p;

+         return LYNQ_E_MALLOC_ERROR;

+    }

+    memmove(data_str, data, data_len);     

+    data_str[data_len]='\0';           

+    LYINFLOG("%s return string is %s",__func__,data_str);  

+    start = strchr(data_str,':');

+    if(start != NULL)

+    {

+        strncpy(status,start+1,4);

+        *sbp_status = atoi(status);

+        LYINFLOG("Query sbp status is %d",*sbp_status);

+        return RESULT_OK;

+        

+    }

+    else 

+    {

+        LYERRLOG("Query sbp status Failed");

+        return LYNQ_E_INNER_ERROR;

+    }

+    

+}

+  

+

 static pthread_mutex_t urc_signal_state_change_mutex = PTHREAD_MUTEX_INITIALIZER;

 static pthread_cond_t urc_signal_state_change_cond = PTHREAD_COND_INITIALIZER;

 

diff --git a/lib/liblynq-wifi6/libwifi6.c b/lib/liblynq-wifi6/libwifi6.c
index 221170c..0a5a4e3 100755
--- a/lib/liblynq-wifi6/libwifi6.c
+++ b/lib/liblynq-wifi6/libwifi6.c
@@ -2246,6 +2246,10 @@
     DO_OK_FAIL_REQUEST(lynq_wifi_frequency_cmd);
     DO_OK_FAIL_REQUEST(lynq_cmd_mode);
     DO_OK_FAIL_REQUEST(cmd_save_config);
+//@ tmp do down/up to fix 5G AP turn to 2.4G cannot be conenct
+    system("wl down");
+    system("wl up");
+    RLOGD("[%s] -- run cmd down/up --%d",__func__,__LINE__);
 
     return 0;
 }