From: Grace Chen Date: Fri, 24 Mar 2017 01:39:48 +0000 (-0700) Subject: Support different SIM power states X-Git-Tag: android-x86-9.0-r1~42^2^2~2^2~11^2^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=797c1c2b6cb1b90ba43453659403ba8651d85187;p=android-x86%2Fhardware-ril.git Support different SIM power states Test: Verify SIM power states Bug: 35844036 Merged-In: Iabdbcba2572a481537c47da536b66a4b99365511 Change-Id: Iabdbcba2572a481537c47da536b66a4b99365511 --- 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; }