[Feature][API-1402] Add send at command to set and query sbp feature config api
Only Configure: No
Affected branch: GSW3.0-No-Connman
Affected module: network
Is it affected on both ZXIC and MTK:only MTK
Self-test: Yes
Doc Update:Need
Change-Id: Ifb4ea92b0729a6c057c37bdd5a13462a0519ed5d
diff --git a/src/lynq/lib/liblynq-network/include/lynq_network/lynq_network.h b/src/lynq/lib/liblynq-network/include/lynq_network/lynq_network.h
index ba7c1f4..00c5669 100755
--- a/src/lynq/lib/liblynq-network/include/lynq_network/lynq_network.h
+++ b/src/lynq/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/src/lynq/lib/liblynq-network/lynq_network.cpp b/src/lynq/lib/liblynq-network/lynq_network.cpp
index c025404..ec580e2 100755
--- a/src/lynq/lib/liblynq-network/lynq_network.cpp
+++ b/src/lynq/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;