diff options
author | Paul Kocialkowski <contact@paulk.fr> | 2013-09-28 16:38:51 +0200 |
---|---|---|
committer | Paul Kocialkowski <contact@paulk.fr> | 2013-09-28 16:38:51 +0200 |
commit | fd051580b347b09bf43d1fab29cea3d58b113e09 (patch) | |
tree | df76485577c71a1435be41a1b6115f2fe4795263 /misc.c | |
parent | 233ef2c6769c1c833e89651ae5846e66a5097cfb (diff) | |
download | hardware_ril_samsung-ril-fd051580b347b09bf43d1fab29cea3d58b113e09.zip hardware_ril_samsung-ril-fd051580b347b09bf43d1fab29cea3d58b113e09.tar.gz hardware_ril_samsung-ril-fd051580b347b09bf43d1fab29cea3d58b113e09.tar.bz2 |
Check modem state before RIL requests and properly report it on crash
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
Diffstat (limited to 'misc.c')
-rw-r--r-- | misc.c | 35 |
1 files changed, 16 insertions, 19 deletions
@@ -34,6 +34,9 @@ void ril_request_get_imei_send(RIL_Token t) void ril_request_get_imei(RIL_Token t) { + if (ril_radio_state_complete(RADIO_STATE_OFF, t)) + return; + if (ril_data.tokens.get_imei) { LOGD("Another IMEI request is waiting, aborting"); ril_request_complete(t, RIL_E_GENERIC_FAILURE, NULL, 0); @@ -45,11 +48,7 @@ void ril_request_get_imei(RIL_Token t) if (ril_data.tokens.get_imeisv) { LOGD("IMEISV token found: %p", ril_data.tokens.get_imeisv); - if (ril_data.state.radio_state != RADIO_STATE_OFF) { - ril_request_get_imei_send(ril_data.tokens.get_imei); - } else { - LOGD("Radio is off, waiting"); - } + ril_request_get_imei_send(ril_data.tokens.get_imei); } else { LOGD("Waiting for IMEISV token"); } @@ -57,6 +56,9 @@ void ril_request_get_imei(RIL_Token t) void ril_request_get_imeisv(RIL_Token t) { + if (ril_radio_state_complete(RADIO_STATE_OFF, t)) + return; + if (ril_data.tokens.get_imeisv) { LOGD("Another IMEISV request is waiting, aborting"); ril_request_complete(t, RIL_E_GENERIC_FAILURE, NULL, 0); @@ -68,11 +70,7 @@ void ril_request_get_imeisv(RIL_Token t) if (ril_data.tokens.get_imei) { LOGD("IMEI token found: %p", ril_data.tokens.get_imei); - if (ril_data.state.radio_state != RADIO_STATE_OFF) { - ril_request_get_imei_send(ril_data.tokens.get_imei); - } else { - LOGD("Radio is off, waiting"); - } + ril_request_get_imei_send(ril_data.tokens.get_imei); } else { LOGD("Waiting for IMEI token"); } @@ -165,6 +163,9 @@ void ril_request_baseband_version(RIL_Token t) { unsigned char data; + if (ril_radio_state_complete(RADIO_STATE_OFF, t)) + return; + if (ril_data.tokens.baseband_version) { LOGD("Another Baseband version request is waiting, aborting"); ril_request_complete(t, RIL_E_GENERIC_FAILURE, NULL, 0); @@ -173,12 +174,9 @@ void ril_request_baseband_version(RIL_Token t) ril_data.tokens.baseband_version = t; - if (ril_data.state.radio_state != RADIO_STATE_OFF) { - data = 0xff; + data = 0xff; - ipc_fmt_send(IPC_MISC_ME_VERSION, IPC_TYPE_GET, - (unsigned char *) &data, sizeof(data), ril_request_get_id(t)); - } + ipc_fmt_send(IPC_MISC_ME_VERSION, IPC_TYPE_GET, (unsigned char *) &data, sizeof(data), ril_request_get_id(t)); } void ipc_misc_me_version(struct ipc_message_info *info) @@ -215,6 +213,9 @@ error: void ril_request_get_imsi(RIL_Token t) { + if (ril_radio_state_complete(RADIO_STATE_OFF, t)) + return; + ipc_fmt_send_get(IPC_MISC_ME_IMSI, ril_request_get_id(t)); } @@ -226,10 +227,6 @@ void ipc_misc_me_imsi(struct ipc_message_info *info) if (info->data == NULL || info->length < sizeof(unsigned char)) goto error; - /* Don't consider this if modem isn't in normal power mode. */ - if (ril_data.state.power_state != IPC_PWR_PHONE_STATE_NORMAL) - return; - imsi_length = *((unsigned char *) info->data); if (((int) info->length) < imsi_length + 1) { |