[bugfix][T108][bug-view-1143/1140] solve use dm_deinit api then dm_init fail and get air plane state error, add ql_dm_get_modem_state api

Only Configure: No
Affected branch: LYNQ_SDK_ASR_T108_V05.04.01.00
Affected module: DM
Is it affected on IC: only ASR
Self-test: yes
Doc Update: no

Change-Id: I50514c414f3c0109270caf50a2ef05414ebbbc2e
diff --git a/mbtk/libql_lib_v2_rilv2/ql_dm.c b/mbtk/libql_lib_v2_rilv2/ql_dm.c
index 867c4fd..d6aabd2 100755
--- a/mbtk/libql_lib_v2_rilv2/ql_dm.c
+++ b/mbtk/libql_lib_v2_rilv2/ql_dm.c
@@ -111,17 +111,17 @@
             return NULL;
         }
         
-        if(mbtk_info == LYNQ_AIR_PLANE_MODE_OFF)
+        if(mbtk_info == MBTK_RADIO_STATE_FULL_FUNC)
         {
             ql_info = QL_DM_AIR_PLANE_MODE_OFF;
         }
         
-        if(mbtk_info == LYNQ_AIR_PLANE_MODE_ON)
+        if(mbtk_info == MBTK_RADIO_STATE_DIS_RF)
         {
             ql_info = QL_DM_AIR_PLANE_MODE_ON;
         }
         
-        if(mbtk_info != LYNQ_AIR_PLANE_MODE_OFF && mbtk_info !=LYNQ_AIR_PLANE_MODE_ON)
+        if(mbtk_info != MBTK_RADIO_STATE_FULL_FUNC  && mbtk_info !=MBTK_RADIO_STATE_DIS_RF)
         {
             
             ql_info = QL_DM_AIR_PLANE_MODE_UNKNOWN;
@@ -199,6 +199,7 @@
         }
         else 
         {
+            ql_info_handle = NULL;
             LOGI("mbtk_info_handle_free success");
             return QL_ERR_OK;
         }
@@ -287,7 +288,38 @@
   @retval Other error code defined by ql_type.h
   */
 /*-----------------------------------------------------------------------------------------------*/
-int ql_dm_get_modem_state(QL_DM_MODEM_STATE_TYPE_E *modem_state);
+int ql_dm_get_modem_state(QL_DM_MODEM_STATE_TYPE_E *modem_state)
+{
+        int ret = -1;
+        mbtk_radio_state_enum tmp_rf;
+        if(ql_info_handle == NULL)
+        {
+            LOGE("DM no init");
+            return QL_ERR_NOT_INIT;
+        }
+        ret = mbtk_radio_state_get(ql_info_handle, &tmp_rf);
+        if (ret != 0)
+        {
+            LOGE("mbtk_radio_state_get fail.");
+            return QL_ERR_FAILED;
+        }
+
+        if(tmp_rf == 0 )
+        {
+            *modem_state = QL_DM_MODEM_STATE_OFFLINE;
+        }
+        else if(tmp_rf == 1)
+        {
+            *modem_state = QL_DM_MODEM_STATE_ONLINE;
+        }
+        else
+        {
+            *modem_state = QL_DM_MODEM_STATE_UNKNOWN;
+        }
+            
+        return QL_ERR_OK;
+
+}
 
 /*-----------------------------------------------------------------------------------------------*/
 /** 
@@ -465,11 +497,11 @@
         LOGE("mbtk_radio_state_get fail.");
         return QL_ERR_FAILED;
     }
-    if(tmp_rf == LYNQ_AIR_PLANE_MODE_OFF)
+    if(tmp_rf == MBTK_RADIO_STATE_FULL_FUNC )
     {
         *p_info = QL_DM_AIR_PLANE_MODE_OFF;
     }
-    else if(tmp_rf == LYNQ_AIR_PLANE_MODE_ON)
+    else if(tmp_rf == MBTK_RADIO_STATE_DIS_RF || tmp_rf == MBTK_RADIO_STATE_MINI_FUNC)
     {
         *p_info = QL_DM_AIR_PLANE_MODE_ON;
     }
@@ -494,7 +526,7 @@
 
 int ql_dm_set_air_plane_mode(QL_DM_AIR_PLANE_MODE_TYPE_E air_plane_mode)
 {
-    mbtk_radio_state_enum radio = MBTK_RADIO_STATE_MINI_FUNC;
+    //mbtk_radio_state_enum radio = MBTK_RADIO_STATE_MINI_FUNC;
     int reset = 0;
     int rf_mode = -1;
     int ret = -1;
@@ -506,7 +538,7 @@
     }
     if(air_plane_mode == QL_DM_AIR_PLANE_MODE_ON)
     {
-        rf_mode = LYNQ_AIR_PLANE_MODE_ON;
+        rf_mode = MBTK_RADIO_STATE_DIS_RF;
     }
     
     if(air_plane_mode == QL_DM_AIR_PLANE_MODE_OFF)
@@ -515,14 +547,14 @@
 
     }
     
-    if (rf_mode != LYNQ_AIR_PLANE_MODE_ON && rf_mode != LYNQ_AIR_PLANE_MODE_OFF) 
+    if (rf_mode != MBTK_RADIO_STATE_DIS_RF  && rf_mode != MBTK_RADIO_STATE_FULL_FUNC) 
     {
         LOGE("Input mode is error!");
         return QL_ERR_OP_UNSUPPORTED;
     }
 
     
-    ret = mbtk_radio_state_set(ql_info_handle, radio, reset);
+    ret = mbtk_radio_state_set(ql_info_handle, rf_mode, reset);
     if(ret != 0)
     {
         LOGE("ql_dm_set_air_plane_mode failed");
diff --git a/mbtk/test/libql_lib_v2/ql_dm_test.c b/mbtk/test/libql_lib_v2/ql_dm_test.c
index 409c460..9a053ec 100755
--- a/mbtk/test/libql_lib_v2/ql_dm_test.c
+++ b/mbtk/test/libql_lib_v2/ql_dm_test.c
@@ -281,7 +281,7 @@
     int mode;

     QL_DM_AIR_PLANE_MODE_TYPE_E air_plane_mode;

 

-    printf("please input air plane mode(1: ON, 2: OFF): ");

+    printf("please input air plane mode(1: ON, 2: OFF): \n");

     ret = t_get_int(&mode);

     if(ret != 0)

     {

@@ -337,6 +337,27 @@
 }

 

 

+void item_ql_dm_get_modem_state(void)

+{

+    int ret;

+    QL_DM_MODEM_STATE_TYPE_E modem_state = QL_DM_MODEM_STATE_UNKNOWN;

+    

+    ret = ql_dm_get_modem_state(&modem_state);

+    if(QL_DM_MODEM_STATE_ONLINE == modem_state)

+    {

+        printf("ql_dm_get_modem_state ret = %d, modem state is ONLINE\n", ret);

+    }

+    else if(QL_DM_MODEM_STATE_OFFLINE == modem_state)

+    {

+        printf("ql_dm_get_modem_state ret = %d, modem state is OFFLINE\n", ret);

+    }

+    else

+    {

+        printf("ql_dm_get_modem_state ret = %d, modem state UNKNOWN\n", ret);

+    }

+}

+

+

 static t_item_t ql_dm_items[] =

 {

     {"ql_dm_init", item_ql_dm_init},

@@ -347,6 +368,7 @@
     {"ql_dm_get_device_firmware_rev_id", item_ql_dm_get_device_firmware_rev_id},

     {"ql_dm_get_air_plane_mode", item_ql_dm_get_air_plane_mode},

     {"ql_dm_set_air_plane_mode", item_ql_dm_set_air_plane_mode},

+    {"ql_dm_get_modem_state", item_ql_dm_get_modem_state},

     {"ql_dm_set_service_error_cb", item_ql_dm_set_service_error_cb},

     {"ql_dm_deinit",         item_ql_dm_deinit}

 };