From 797c1c2b6cb1b90ba43453659403ba8651d85187 Mon Sep 17 00:00:00 2001 From: Grace Chen Date: Thu, 23 Mar 2017 18:39:48 -0700 Subject: [PATCH] Support different SIM power states Test: Verify SIM power states Bug: 35844036 Merged-In: Iabdbcba2572a481537c47da536b66a4b99365511 Change-Id: Iabdbcba2572a481537c47da536b66a4b99365511 --- libril/ril.cpp | 2 +- libril/ril_service.cpp | 38 +++++++++++++++++++++++++++++--------- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/libril/ril.cpp b/libril/ril.cpp index bd5e02e..29ccbc8 100644 --- a/libril/ril.cpp +++ b/libril/ril.cpp @@ -831,7 +831,7 @@ void RIL_onUnsolicitedResponse(int unsolResponse, const void *data, } #if VDBG - RLOGI("%s UNSOLICITED: %s length:%d", rilSocketIdToString(soc_id), + RLOGI("%s UNSOLICITED: %s length:%zu", rilSocketIdToString(soc_id), requestToString(unsolResponse), datalen); #endif diff --git a/libril/ril_service.cpp b/libril/ril_service.cpp index 0bdb10d..8436267 100644 --- a/libril/ril_service.cpp +++ b/libril/ril_service.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include @@ -31,9 +32,6 @@ #define INVALID_HEX_CHAR 16 -// Enable verbose logging -#define VDBG 0 - using namespace android::hardware::radio::V1_0; using namespace android::hardware::radio::deprecated::V1_0; using ::android::hardware::configureRpcThreadpool; @@ -425,6 +423,8 @@ struct RadioImpl : public ::android::hardware::radio::V1_1::IRadio { Return setIndicationFilter(int32_t serial, int32_t indicationFilter); Return setSimCardPower(int32_t serial, bool powerUp); + Return setSimCardPower_1_1(int32_t serial, + const ::android::hardware::radio::V1_1::CardPowerState state); Return responseAcknowledgement(); @@ -2659,6 +2659,15 @@ Return RadioImpl::setSimCardPower(int32_t serial, bool powerUp) { return Void(); } +Return RadioImpl::setSimCardPower_1_1(int32_t serial, + const ::android::hardware::radio::V1_1::CardPowerState state) { +#if VDBG + RLOGD("setSimCardPower_1_1: serial %d state %d", serial, state); +#endif + dispatchInts(serial, mSlotId, RIL_REQUEST_SET_SIM_CARD_POWER, 1, state); + return Void(); +} + Return RadioImpl::responseAcknowledgement() { android::releaseWakeLock(); return Void(); @@ -6319,7 +6328,6 @@ int radio::setIndicationFilterResponse(int slotId, return 0; } - int radio::setSimCardPowerResponse(int slotId, int responseType, int serial, RIL_Errno e, void *response, size_t responseLen) { @@ -6330,13 +6338,25 @@ int radio::setSimCardPowerResponse(int slotId, if (radioService[slotId]->mRadioResponse != NULL) { RadioResponseInfo responseInfo = {}; populateResponseInfo(responseInfo, serial, responseType, e); - Return retStatus - = radioService[slotId]->mRadioResponse->setSimCardPowerResponse(responseInfo); - radioService[slotId]->checkReturnStatus(retStatus); + Return> ret = + ::android::hardware::radio::V1_1::IRadioResponse::castFrom( + radioService[slotId]->mRadioResponse); + if (ret.isOk()) { + sp<::android::hardware::radio::V1_1::IRadioResponse> radioResponseV1_1 = ret; + Return retStatus + = radioResponseV1_1->setSimCardPowerResponse_1_1(responseInfo); + radioService[slotId]->checkReturnStatus(retStatus); + } else { + RLOGD("setSimCardPowerResponse: ret.isOK() == false for radioService[%d]", + slotId); + Return retStatus + = radioService[slotId]->mRadioResponse->setSimCardPowerResponse(responseInfo); + radioService[slotId]->checkReturnStatus(retStatus); + } } else { - RLOGE("setSimCardPowerResponse: radioService[%d]->mRadioResponse == NULL", slotId); + RLOGE("setSimCardPowerResponse: radioService[%d]->mRadioResponse == NULL", + slotId); } - return 0; } -- 2.11.0