[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}
};