[Bugfix][T106BUG-254][Network]  set "at+cfun =4 " error

       Affected branch: unknown
       Affected module: unknown
       Is it affected on both ZXIC and MTK: ZXIC
       Self-test: Yes
       Doc Update: No

Change-Id: Ib6cf0834aa172c6788ecd09d1c301f39e2b38c62
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp
index 0b1dd7d..3982cbc 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq-qser-network-demo.cpp
@@ -23,8 +23,8 @@
 int (*qser_nw_get_signal_strength_p)(nw_client_handle_type h_nw,QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info);

 int (*qser_nw_set_oos_config_p)(nw_client_handle_type   h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info);

 int (*qser_nw_get_oos_config_p)(nw_client_handle_type   h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info);

-

-

+int (*qser_nw_set_rf_mode_p) (nw_client_handle_type   h_nw,E_QSER_NW_RF_MODE_TYPE_T rf_mode);

+int (*qser_nw_get_rf_mode_p) (nw_client_handle_type   h_nw,E_QSER_NW_RF_MODE_TYPE_T* rf_mode);

 

 int getFunc()

 {

@@ -46,10 +46,12 @@
     qser_nw_add_rx_msg_handler_p = (int (*)(nw_client_handle_type  h_nw, QSER_NW_RxMsgHandlerFunc_t handlerPtr,void* contextPtr))dlsym(handle_network,"qser_nw_add_rx_msg_handler");

     qser_nw_get_oos_config_p = (int (*)(nw_client_handle_type   h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info))dlsym(handle_network,"qser_nw_get_oos_config");

     qser_nw_set_oos_config_p = (int (*)(nw_client_handle_type   h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info))dlsym(handle_network,"qser_nw_set_oos_config");

-

+    qser_nw_set_rf_mode_p = (int (*)(nw_client_handle_type   h_nw, E_QSER_NW_RF_MODE_TYPE_T rf_mode))dlsym(handle_network,"qser_nw_set_rf_mode");

+    qser_nw_get_rf_mode_p = (int (*)(nw_client_handle_type   h_nw, E_QSER_NW_RF_MODE_TYPE_T* rf_mode))dlsym(handle_network,"qser_nw_get_rf_mode");

         

     if(qser_nw_client_deinit_p==NULL || qser_nw_client_init_p==NULL || qser_nw_set_config_p ==NULL ||

-       qser_nw_get_operator_name_p == NULL || qser_nw_get_reg_status_p ==NULL || qser_nw_add_rx_msg_handler_p==NULL)

+       qser_nw_get_operator_name_p == NULL || qser_nw_get_reg_status_p ==NULL || qser_nw_add_rx_msg_handler_p==NULL ||

+       qser_nw_set_rf_mode_p == NULL || qser_nw_get_rf_mode_p == NULL || qser_nw_get_oos_config_p == NULL || qser_nw_set_oos_config_p == NULL)

     {

         printf("get func pointer null");

         exit(EXIT_FAILURE);

@@ -87,7 +89,9 @@
     {5,     "qser_nw_get_signal_strength"},

     {6,     "qser_nw_set_oos_config"},

     {7,     "qser_nw_get_oos_config"},

-    {8,     "qser_nw_client_deinit"},  

+    {8,     "qser_nw_set_rf_mode"},

+    {9,     "qser_nw_get_rf_mode"},

+    {10,     "qser_nw_client_deinit"},  

  

     

     {-1,    "quit"}

@@ -435,7 +439,7 @@
                              

                  break;

              }                 

-             case 8://"qser_nw_client_deinit"

+             case 10://"qser_nw_client_deinit"

              {

                  ret = qser_nw_client_deinit_p(h_nw);

                  printf("qser_nw_client_deinit ret = %d\n", ret);

@@ -556,6 +560,22 @@
                 }                

                 break;

              }         

+             case 9://"qser_nw_get_rf_mode"

+             {

+                 E_QSER_NW_RF_MODE_TYPE_T  rf_mode;

+                 ret = qser_nw_get_rf_mode_p(h_nw, &rf_mode);

+                 printf("qser_nw_get_rf_mode ret = %d, rf mode=%d\n", ret, rf_mode);

+                 break;

+             }       

+             case 8://"qser_nw_set_rf_mode"

+             {

+                 E_QSER_NW_RF_MODE_TYPE_T  rf_mode;

+                 printf("please input you want set rf mode (0: cfun 0;  1: cfun 1; 4: flight mode \n");

+                 scanf("%d", &rf_mode);

+                 ret = qser_nw_set_rf_mode_p(h_nw, rf_mode);

+                 printf("qser_nw_set_rf_mode %d ret = %dn",rf_mode, ret);

+                 break;

+             }       

              default:

              {

                  show_group_help(&t_nw_test);

diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq_qser_network.h b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq_qser_network.h
index 4083e13..bf7781a 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq_qser_network.h
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-network-demo/files/lynq_qser_network.h
@@ -366,6 +366,12 @@
     QSER_NW_NR_SIGNAL_INFO_T      nr_sig_info;
 }QSER_NW_SINGNAL_EVENT_IND_T;
 
+typedef enum 
+{
+    E_QSER_NW_RF_MODE_CFUN_0 = 0,    /**<  CFUN 0. */
+    E_QSER_NW_RF_MODE_CFUN_1 = 1,    /**<  CFUN 1. */
+    E_QSER_NW_RF_MODE_FLIGHT = 4,    /**<  Flight Mode, CFUN 4. */
+}E_QSER_NW_RF_MODE_TYPE_T;
 
 int qser_nw_client_init(nw_client_handle_type  *ph_nw);
 
@@ -420,6 +426,19 @@
     void* contextPtr
 );
 
+int qser_nw_set_rf_mode
+(
+    nw_client_handle_type       h_nw,
+    E_QSER_NW_RF_MODE_TYPE_T    rf_mode
+);
+
+int qser_nw_get_rf_mode
+(
+    nw_client_handle_type       h_nw,
+    E_QSER_NW_RF_MODE_TYPE_T    *rf_mode
+);
+
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/include/lynq_qser_network.h b/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/include/lynq_qser_network.h
index 0e571fa..81aa0c2 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/include/lynq_qser_network.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/include/lynq_qser_network.h
@@ -364,6 +364,13 @@
     QSER_NW_NR_SIGNAL_INFO_T      nr_sig_info;
 }QSER_NW_SINGNAL_EVENT_IND_T;
 
+typedef enum 
+{
+    E_QSER_NW_RF_MODE_CFUN_0 = 0,    /**<  CFUN 0. */
+    E_QSER_NW_RF_MODE_CFUN_1 = 1,    /**<  CFUN 1. */
+    E_QSER_NW_RF_MODE_FLIGHT = 4,    /**<  Flight Mode, CFUN 4. */
+}E_QSER_NW_RF_MODE_TYPE_T;
+
 
 int qser_nw_client_init(nw_client_handle_type  *ph_nw);
 
@@ -418,6 +425,18 @@
     void* contextPtr
 );
 
+int qser_nw_set_rf_mode
+(
+    nw_client_handle_type       h_nw,
+    E_QSER_NW_RF_MODE_TYPE_T    rf_mode
+);
+
+int qser_nw_get_rf_mode
+(
+    nw_client_handle_type       h_nw,
+    E_QSER_NW_RF_MODE_TYPE_T    *rf_mode
+);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp
index b1539a7..2628d27 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-network/lynq_qser_network.cpp
@@ -157,9 +157,7 @@
 
 void *new_network_thread_recv(void *context)
 {
-    int handle = -1;
-    int ret = 0;
-    int slot_id = 0;
+    int handle = -1;  
     uint32_t ind_flag = 0;
 
     while (1)
@@ -646,5 +644,40 @@
     return RESULT_OK;
 }
 
+int qser_nw_set_rf_mode (nw_client_handle_type h_nw,E_QSER_NW_RF_MODE_TYPE_T rf_mode)
+{
+     if(h_nw != g_ph_hw || h_nw == INVALID_CLIENT_HANDLE)
+     {
+         LYERRLOG("h_nw not right %d %d",h_nw,g_ph_hw);
+         return RESULT_ERROR;
+     }    
+     return lynq_radio_on((lynq_network_radio_on_type )rf_mode);     
+}
+
+int qser_nw_get_rf_mode (nw_client_handle_type h_nw,E_QSER_NW_RF_MODE_TYPE_T *rf_mode)
+{
+    if(NULL == rf_mode)
+    {
+        LYERRLOG("invalid client parameters incoming");
+        return RESULT_ERROR;
+    }
+
+    if(h_nw != g_ph_hw || h_nw == INVALID_CLIENT_HANDLE)
+    {
+        LYERRLOG("h_nw not right %d %d",h_nw,g_ph_hw);
+        return RESULT_ERROR;
+    }    
+    
+    int inner_rf_mode;
+    int ret = lynq_query_radio_state(&inner_rf_mode);
+    if(ret != 0)
+    {
+        LYERRLOG("get rf mode fail");
+        return RESULT_ERROR;
+    }
+    (*rf_mode)=(E_QSER_NW_RF_MODE_TYPE_T) inner_rf_mode;
+    return RESULT_OK;
+}
+
 DEFINE_LYNQ_LIB_LOG(LYNQ_QSER_NETWORK)