diff options
author | Naveen Kalla <nkalla@codeaurora.org> | 2014-07-31 16:48:31 -0700 |
---|---|---|
committer | Wink Saville <wink@google.com> | 2014-08-19 08:19:47 -0700 |
commit | a65a16a2e81b11762fd9e4233e1a212effcfee82 (patch) | |
tree | 2193567b4291928f6bf16db47487414ac9c64f56 | |
parent | 6e5a42e6948b434815d12663eeb792600531fe08 (diff) | |
download | android_hardware_ril-a65a16a2e81b11762fd9e4233e1a212effcfee82.tar.gz android_hardware_ril-a65a16a2e81b11762fd9e4233e1a212effcfee82.tar.bz2 android_hardware_ril-a65a16a2e81b11762fd9e4233e1a212effcfee82.zip |
Add RIL_REQUEST_SHUTDOWN to notify RIL that device is shutting down
When device is in airplane mode, SIM card and modem may be powered on.
RIL can use RIL_REQUEST_SHUTDOWN to shutdown the modem and SIM card
gracefully.
Bug: 9773278
Change-Id: I6afa9e810cefc7855f7ae42e51f39cc51fa2aa6e
-rw-r--r-- | include/telephony/ril.h | 18 | ||||
-rw-r--r-- | libril/ril.cpp | 1 | ||||
-rw-r--r-- | libril/ril_commands.h | 1 | ||||
-rw-r--r-- | reference-ril/reference-ril.c | 21 |
4 files changed, 41 insertions, 0 deletions
diff --git a/include/telephony/ril.h b/include/telephony/ril.h index 1518d81..9f6163f 100644 --- a/include/telephony/ril.h +++ b/include/telephony/ril.h @@ -4069,6 +4069,24 @@ typedef struct { * SUBSCRIPTION_NOT_AVAILABLE */ #define RIL_REQUEST_SET_DATA_PROFILE 128 + +/** + * RIL_REQUEST_SHUTDOWN + * + * Device is shutting down. All further commands are ignored + * and RADIO_NOT_AVAILABLE must be returned. + * + * "data" is null + * "response" is NULL + * + * Valid errors: + * SUCCESS + * RADIO_NOT_AVAILABLE + * GENERIC_FAILURE + */ +#define RIL_REQUEST_SHUTDOWN 129 + + /***********************************************************************/ diff --git a/libril/ril.cpp b/libril/ril.cpp index 4b3e1b8..feaf60f 100644 --- a/libril/ril.cpp +++ b/libril/ril.cpp @@ -4710,6 +4710,7 @@ requestToString(int request) { case RIL_UNSOL_SRVCC_STATE_NOTIFY: return "UNSOL_SRVCC_STATE_NOTIFY"; case RIL_UNSOL_HARDWARE_CONFIG_CHANGED: return "HARDWARE_CONFIG_CHANGED"; case RIL_UNSOL_DC_RT_INFO_CHANGED: return "UNSOL_DC_RT_INFO_CHANGED"; + case RIL_REQUEST_SHUTDOWN: return "SHUTDOWN"; default: return "<unknown request>"; } } diff --git a/libril/ril_commands.h b/libril/ril_commands.h index 1d96abb..7c3af55 100644 --- a/libril/ril_commands.h +++ b/libril/ril_commands.h @@ -143,3 +143,4 @@ {RIL_REQUEST_GET_DC_RT_INFO, dispatchVoid, responseDcRtInfo}, {RIL_REQUEST_SET_DC_RT_INFO_RATE, dispatchInts, responseVoid}, {RIL_REQUEST_SET_DATA_PROFILE, dispatchDataProfile, responseVoid}, + {RIL_REQUEST_SHUTDOWN, dispatchVoid, responseVoid}, diff --git a/reference-ril/reference-ril.c b/reference-ril/reference-ril.c index 5d45cde..02e5d50 100644 --- a/reference-ril/reference-ril.c +++ b/reference-ril/reference-ril.c @@ -398,6 +398,23 @@ error: RIL_onRequestComplete(t, RIL_E_GENERIC_FAILURE, NULL, 0); } +static void requestShutdown(RIL_Token t) +{ + int onOff; + + int err; + ATResponse *p_response = NULL; + + if (sState != RADIO_STATE_OFF) { + err = at_send_command("AT+CFUN=0", &p_response); + setRadioState(RADIO_STATE_UNAVAILABLE); + } + + at_response_free(p_response); + RIL_onRequestComplete(t, RIL_E_SUCCESS, NULL, 0); + return; +} + static void requestOrSendDataCallList(RIL_Token *t); static void onDataCallListChanged(void *param __unused) @@ -2308,6 +2325,10 @@ onRequest (int request, void *data, size_t datalen, RIL_Token t) requestGetHardwareConfig(data, datalen, t); break; + case RIL_REQUEST_SHUTDOWN: + requestShutdown(t); + break; + /* CDMA Specific Requests */ case RIL_REQUEST_BASEBAND_VERSION: if (TECH_BIT(sMdmInfo) == MDM_CDMA) { |