From 60638572b2ff6b1c6d0313c18bb306523ddf0b59 Mon Sep 17 00:00:00 2001 From: Tomasz Wasilczyk Date: Mon, 13 Dec 2021 17:13:48 -0800 Subject: [PATCH 1/4] Use AIDL callbacks directly. Bug: 210498497 Test: build cuttlefish with ag/16322062, watch logs Change-Id: I1e0cd95f5f9a911564d14be2d8bbb328572de8c8 Merged-In: I1e0cd95f5f9a911564d14be2d8bbb328572de8c8 --- radio/aidl/compat/libradiocompat/Android.bp | 1 - .../compat/libradiocompat/RadioCompatBase.cpp | 5 - .../compat/libradiocompat/RadioResponse.cpp | 12 +- .../compat/libradiocompat/commonStructs.cpp | 6 +- .../compat/libradiocompat/commonStructs.h | 2 +- .../libradiocompat/config/RadioConfig.cpp | 18 +-- .../config/RadioConfigIndication.cpp | 16 +- .../config/RadioConfigResponse.cpp | 28 ++-- .../compat/libradiocompat/data/RadioData.cpp | 16 +- .../data/RadioIndication-data.cpp | 20 ++- .../data/RadioResponse-data.cpp | 59 +++---- radio/aidl/compat/libradiocompat/debug.h | 6 - .../libradiocompat/GuaranteedCallback.h | 50 ++++++ .../include/libradiocompat/RadioCompatBase.h | 2 - .../include/libradiocompat/RadioConfig.h | 15 +- .../libradiocompat}/RadioConfigIndication.h | 10 +- .../libradiocompat}/RadioConfigResponse.h | 10 +- .../include/libradiocompat/RadioData.h | 2 + .../include/libradiocompat/RadioIndication.h | 38 ++++- .../include/libradiocompat/RadioMessaging.h | 2 + .../include/libradiocompat/RadioModem.h | 2 + .../include/libradiocompat/RadioNetwork.h | 2 + .../include/libradiocompat/RadioResponse.h | 32 +++- .../include/libradiocompat/RadioSim.h | 2 + .../include/libradiocompat/RadioVoice.h | 2 + .../messaging/RadioIndication-messaging.cpp | 29 ++-- .../messaging/RadioMessaging.cpp | 4 + .../messaging/RadioResponse-messaging.cpp | 86 ++++------- .../modem/RadioIndication-modem.cpp | 20 ++- .../libradiocompat/modem/RadioModem.cpp | 4 + .../modem/RadioResponse-modem.cpp | 56 +++---- .../network/RadioIndication-network.cpp | 64 +++----- .../libradiocompat/network/RadioNetwork.cpp | 10 +- .../network/RadioResponse-network.cpp | 144 +++++++----------- .../sim/RadioIndication-sim.cpp | 38 ++--- .../libradiocompat/sim/RadioResponse-sim.cpp | 130 ++++++---------- .../compat/libradiocompat/sim/RadioSim.cpp | 10 +- .../voice/RadioIndication-voice.cpp | 47 +++--- .../voice/RadioResponse-voice.cpp | 110 +++++-------- .../libradiocompat/voice/RadioVoice.cpp | 9 +- 40 files changed, 528 insertions(+), 591 deletions(-) create mode 100644 radio/aidl/compat/libradiocompat/include/libradiocompat/GuaranteedCallback.h rename radio/aidl/compat/libradiocompat/{config => include/libradiocompat}/RadioConfigIndication.h (82%) rename radio/aidl/compat/libradiocompat/{config => include/libradiocompat}/RadioConfigResponse.h (88%) diff --git a/radio/aidl/compat/libradiocompat/Android.bp b/radio/aidl/compat/libradiocompat/Android.bp index 5294de4bb1..9d568c4aa0 100644 --- a/radio/aidl/compat/libradiocompat/Android.bp +++ b/radio/aidl/compat/libradiocompat/Android.bp @@ -28,7 +28,6 @@ cc_library { cflags: [ "-Wall", "-Wextra", - //"-Wold-style-cast", // TODO(b/203699028) enable after aosp/1900880 gets merged "-DANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION", ], shared_libs: [ diff --git a/radio/aidl/compat/libradiocompat/RadioCompatBase.cpp b/radio/aidl/compat/libradiocompat/RadioCompatBase.cpp index dba6c19fa2..2364484f13 100644 --- a/radio/aidl/compat/libradiocompat/RadioCompatBase.cpp +++ b/radio/aidl/compat/libradiocompat/RadioCompatBase.cpp @@ -28,9 +28,4 @@ RadioCompatBase::RadioCompatBase(std::shared_ptr context, sp context) : mContext( Return RadioResponse::acknowledgeRequest(int32_t serial) { LOG_CALL << serial; // TODO(b/203699028): send to correct requestor or confirm if spam is not a problem - if (mDataCb) mDataCb->acknowledgeRequest(serial); - if (mMessagingCb) mMessagingCb->acknowledgeRequest(serial); - if (mModemCb) mModemCb->acknowledgeRequest(serial); - if (mNetworkCb) mNetworkCb->acknowledgeRequest(serial); - if (mSimCb) mSimCb->acknowledgeRequest(serial); - if (mVoiceCb) mVoiceCb->acknowledgeRequest(serial); + if (mDataCb) mDataCb.get()->acknowledgeRequest(serial); + if (mMessagingCb) mMessagingCb.get()->acknowledgeRequest(serial); + if (mModemCb) mModemCb.get()->acknowledgeRequest(serial); + if (mNetworkCb) mNetworkCb.get()->acknowledgeRequest(serial); + if (mSimCb) mSimCb.get()->acknowledgeRequest(serial); + if (mVoiceCb) mVoiceCb.get()->acknowledgeRequest(serial); return {}; } diff --git a/radio/aidl/compat/libradiocompat/commonStructs.cpp b/radio/aidl/compat/libradiocompat/commonStructs.cpp index c25768dc27..6e4c873d65 100644 --- a/radio/aidl/compat/libradiocompat/commonStructs.cpp +++ b/radio/aidl/compat/libradiocompat/commonStructs.cpp @@ -20,11 +20,11 @@ namespace android::hardware::radio::compat { namespace aidl = ::aidl::android::hardware::radio; -V1_6::RadioResponseInfo notSupported(int32_t serial) { +aidl::RadioResponseInfo notSupported(int32_t serial) { return { - .type = V1_0::RadioResponseType::SOLICITED, + .type = aidl::RadioResponseType::SOLICITED, .serial = serial, - .error = V1_6::RadioError::REQUEST_NOT_SUPPORTED, + .error = aidl::RadioError::REQUEST_NOT_SUPPORTED, }; } diff --git a/radio/aidl/compat/libradiocompat/commonStructs.h b/radio/aidl/compat/libradiocompat/commonStructs.h index b8599167c9..a4a4869e61 100644 --- a/radio/aidl/compat/libradiocompat/commonStructs.h +++ b/radio/aidl/compat/libradiocompat/commonStructs.h @@ -21,7 +21,7 @@ namespace android::hardware::radio::compat { -V1_6::RadioResponseInfo notSupported(int32_t serial); +aidl::android::hardware::radio::RadioResponseInfo notSupported(int32_t serial); std::string toAidl(const hidl_string& str); hidl_string toHidl(const std::string& str); diff --git a/radio/aidl/compat/libradiocompat/config/RadioConfig.cpp b/radio/aidl/compat/libradiocompat/config/RadioConfig.cpp index d0d6f7af28..d6399bfddf 100644 --- a/radio/aidl/compat/libradiocompat/config/RadioConfig.cpp +++ b/radio/aidl/compat/libradiocompat/config/RadioConfig.cpp @@ -16,8 +16,6 @@ #include -#include "RadioConfigIndication.h" -#include "RadioConfigResponse.h" #include "commonStructs.h" #include "debug.h" #include "structs.h" @@ -31,11 +29,13 @@ namespace aidl = ::aidl::android::hardware::radio::config; constexpr auto ok = &ScopedAStatus::ok; RadioConfig::RadioConfig(sp hidlHal) - : mHal1_1(hidlHal), mHal1_3(config::V1_3::IRadioConfig::castFrom(hidlHal)) {} + : mHal1_1(hidlHal), + mHal1_3(config::V1_3::IRadioConfig::castFrom(hidlHal)), + mRadioConfigResponse(sp::make()), + mRadioConfigIndication(sp::make()) {} -config::V1_3::IRadioConfigResponse& RadioConfig::respond() { - CHECK(mRadioConfigResponse) << "setResponseFunctions was not called yet"; - return *mRadioConfigResponse; +std::shared_ptr RadioConfig::respond() { + return mRadioConfigResponse->respond(); } ScopedAStatus RadioConfig::getHalDeviceCapabilities(int32_t serial) { @@ -43,7 +43,7 @@ ScopedAStatus RadioConfig::getHalDeviceCapabilities(int32_t serial) { if (mHal1_3) { mHal1_3->getHalDeviceCapabilities(serial); } else { - respond().getHalDeviceCapabilitiesResponse(notSupported(serial), false); + respond()->getHalDeviceCapabilitiesResponse(notSupported(serial), false); } return ok(); } @@ -86,8 +86,8 @@ ScopedAStatus RadioConfig::setResponseFunctions( CHECK(radioConfigResponse); CHECK(radioConfigIndication); - mRadioConfigResponse = sp::make(radioConfigResponse); - mRadioConfigIndication = sp::make(radioConfigIndication); + mRadioConfigResponse->setResponseFunction(radioConfigResponse); + mRadioConfigIndication->setResponseFunction(radioConfigIndication); mHal1_1->setResponseFunctions(mRadioConfigResponse, mRadioConfigIndication); return ok(); diff --git a/radio/aidl/compat/libradiocompat/config/RadioConfigIndication.cpp b/radio/aidl/compat/libradiocompat/config/RadioConfigIndication.cpp index 0320ad77ca..c1e32c111f 100644 --- a/radio/aidl/compat/libradiocompat/config/RadioConfigIndication.cpp +++ b/radio/aidl/compat/libradiocompat/config/RadioConfigIndication.cpp @@ -14,7 +14,7 @@ * limitations under the License. */ -#include "RadioConfigIndication.h" +#include #include "commonStructs.h" #include "debug.h" @@ -28,20 +28,26 @@ namespace android::hardware::radio::compat { namespace aidl = ::aidl::android::hardware::radio::config; -RadioConfigIndication::RadioConfigIndication(std::shared_ptr callback) - : mCallback(callback) {} +void RadioConfigIndication::setResponseFunction( + std::shared_ptr callback) { + mCallback = callback; +} + +std::shared_ptr RadioConfigIndication::indicate() { + return mCallback.get(); +} Return RadioConfigIndication::simSlotsStatusChanged( V1_0::RadioIndicationType type, const hidl_vec& slotStatus) { LOG_CALL << type; - mCallback->simSlotsStatusChanged(toAidl(type), toAidl(slotStatus)); + indicate()->simSlotsStatusChanged(toAidl(type), toAidl(slotStatus)); return {}; } Return RadioConfigIndication::simSlotsStatusChanged_1_2( V1_0::RadioIndicationType type, const hidl_vec& slotStatus) { LOG_CALL << type; - mCallback->simSlotsStatusChanged(toAidl(type), toAidl(slotStatus)); + indicate()->simSlotsStatusChanged(toAidl(type), toAidl(slotStatus)); return {}; } diff --git a/radio/aidl/compat/libradiocompat/config/RadioConfigResponse.cpp b/radio/aidl/compat/libradiocompat/config/RadioConfigResponse.cpp index 7066ae46c6..523c504781 100644 --- a/radio/aidl/compat/libradiocompat/config/RadioConfigResponse.cpp +++ b/radio/aidl/compat/libradiocompat/config/RadioConfigResponse.cpp @@ -14,7 +14,7 @@ * limitations under the License. */ -#include "RadioConfigResponse.h" +#include #include "commonStructs.h" #include "debug.h" @@ -28,14 +28,20 @@ namespace android::hardware::radio::compat { namespace aidl = ::aidl::android::hardware::radio::config; -RadioConfigResponse::RadioConfigResponse(std::shared_ptr callback) - : mCallback(callback) {} +void RadioConfigResponse::setResponseFunction( + std::shared_ptr callback) { + mCallback = callback; +} + +std::shared_ptr RadioConfigResponse::respond() { + return mCallback.get(); +} Return RadioConfigResponse::getSimSlotsStatusResponse( const V1_0::RadioResponseInfo& info, const hidl_vec& slotStatus) { LOG_CALL << info.serial; - mCallback->getSimSlotsStatusResponse(toAidl(info), toAidl(slotStatus)); + respond()->getSimSlotsStatusResponse(toAidl(info), toAidl(slotStatus)); return {}; }; @@ -43,47 +49,47 @@ Return RadioConfigResponse::getSimSlotsStatusResponse_1_2( const V1_0::RadioResponseInfo& info, const hidl_vec& slotStatus) { LOG_CALL << info.serial; - mCallback->getSimSlotsStatusResponse(toAidl(info), toAidl(slotStatus)); + respond()->getSimSlotsStatusResponse(toAidl(info), toAidl(slotStatus)); return {}; }; Return RadioConfigResponse::setSimSlotsMappingResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - mCallback->setSimSlotsMappingResponse(toAidl(info)); + respond()->setSimSlotsMappingResponse(toAidl(info)); return {}; }; Return RadioConfigResponse::getPhoneCapabilityResponse( const V1_0::RadioResponseInfo& info, const config::V1_1::PhoneCapability& phoneCapability) { LOG_CALL << info.serial; - mCallback->getPhoneCapabilityResponse(toAidl(info), toAidl(phoneCapability)); + respond()->getPhoneCapabilityResponse(toAidl(info), toAidl(phoneCapability)); return {}; }; Return RadioConfigResponse::setPreferredDataModemResponse( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - mCallback->setPreferredDataModemResponse(toAidl(info)); + respond()->setPreferredDataModemResponse(toAidl(info)); return {}; }; Return RadioConfigResponse::setModemsConfigResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - mCallback->setNumOfLiveModemsResponse(toAidl(info)); + respond()->setNumOfLiveModemsResponse(toAidl(info)); return {}; }; Return RadioConfigResponse::getModemsConfigResponse( const V1_0::RadioResponseInfo& info, const config::V1_1::ModemsConfig& modemsConfig) { LOG_CALL << info.serial; - mCallback->getNumOfLiveModemsResponse(toAidl(info), modemsConfig.numOfLiveModems); + respond()->getNumOfLiveModemsResponse(toAidl(info), modemsConfig.numOfLiveModems); return {}; }; Return RadioConfigResponse::getHalDeviceCapabilitiesResponse( const V1_6::RadioResponseInfo& info, bool modemReducedFeatureSet1) { LOG_CALL << info.serial; - mCallback->getHalDeviceCapabilitiesResponse(toAidl(info), modemReducedFeatureSet1); + respond()->getHalDeviceCapabilitiesResponse(toAidl(info), modemReducedFeatureSet1); return {}; }; diff --git a/radio/aidl/compat/libradiocompat/data/RadioData.cpp b/radio/aidl/compat/libradiocompat/data/RadioData.cpp index cc6f526de8..c819251831 100644 --- a/radio/aidl/compat/libradiocompat/data/RadioData.cpp +++ b/radio/aidl/compat/libradiocompat/data/RadioData.cpp @@ -31,12 +31,16 @@ namespace aidl = ::aidl::android::hardware::radio::data; namespace aidlCommon = ::aidl::android::hardware::radio; constexpr auto ok = &ScopedAStatus::ok; +std::shared_ptr RadioData::respond() { + return mRadioResponse->dataCb(); +} + ScopedAStatus RadioData::allocatePduSessionId(int32_t serial) { LOG_CALL << serial; if (mHal1_6) { mHal1_6->allocatePduSessionId(serial); } else { - respond().allocatePduSessionIdResponse(notSupported(serial), 0); + respond()->allocatePduSessionIdResponse(notSupported(serial), 0); } return ok(); } @@ -46,7 +50,7 @@ ScopedAStatus RadioData::cancelHandover(int32_t serial, int32_t callId) { if (mHal1_6) { mHal1_6->cancelHandover(serial, callId); } else { - respond().cancelHandoverResponse(notSupported(serial)); + respond()->cancelHandoverResponse(notSupported(serial)); } return ok(); } @@ -69,7 +73,7 @@ ScopedAStatus RadioData::getSlicingConfig(int32_t serial) { if (mHal1_6) { mHal1_6->getSlicingConfig(serial); } else { - respond().getSlicingConfigResponse(notSupported(serial), {}); + respond()->getSlicingConfigResponse(notSupported(serial), {}); } return ok(); } @@ -79,7 +83,7 @@ ScopedAStatus RadioData::releasePduSessionId(int32_t serial, int32_t id) { if (mHal1_6) { mHal1_6->releasePduSessionId(serial, id); } else { - respond().releasePduSessionIdResponse(notSupported(serial)); + respond()->releasePduSessionIdResponse(notSupported(serial)); } return ok(); } @@ -109,7 +113,7 @@ ScopedAStatus RadioData::setDataThrottling(int32_t serial, aidl::DataThrottlingA if (mHal1_6) { mHal1_6->setDataThrottling(serial, V1_6::DataThrottlingAction(dta), completionDurationMs); } else { - respond().setDataThrottlingResponse(notSupported(serial)); + respond()->setDataThrottlingResponse(notSupported(serial)); } return ok(); } @@ -161,7 +165,7 @@ ScopedAStatus RadioData::startHandover(int32_t serial, int32_t callId) { if (mHal1_6) { mHal1_6->startHandover(serial, callId); } else { - respond().startHandoverResponse(notSupported(serial)); + respond()->startHandoverResponse(notSupported(serial)); } return ok(); } diff --git a/radio/aidl/compat/libradiocompat/data/RadioIndication-data.cpp b/radio/aidl/compat/libradiocompat/data/RadioIndication-data.cpp index a680e562ab..1d367d2025 100644 --- a/radio/aidl/compat/libradiocompat/data/RadioIndication-data.cpp +++ b/radio/aidl/compat/libradiocompat/data/RadioIndication-data.cpp @@ -29,10 +29,13 @@ namespace android::hardware::radio::compat { namespace aidl = ::aidl::android::hardware::radio::data; void RadioIndication::setResponseFunction(std::shared_ptr dataCb) { - CHECK(dataCb); mDataCb = dataCb; } +std::shared_ptr RadioIndication::dataCb() { + return mDataCb.get(); +} + Return RadioIndication::dataCallListChanged(V1_0::RadioIndicationType type, const hidl_vec&) { LOG_CALL << type; @@ -50,40 +53,35 @@ Return RadioIndication::dataCallListChanged_1_4(V1_0::RadioIndicationType Return RadioIndication::dataCallListChanged_1_5( V1_0::RadioIndicationType type, const hidl_vec& dcList) { LOG_CALL << type; - CHECK_CB(mDataCb); - mDataCb->dataCallListChanged(toAidl(type), toAidl(dcList)); + dataCb()->dataCallListChanged(toAidl(type), toAidl(dcList)); return {}; } Return RadioIndication::dataCallListChanged_1_6( V1_0::RadioIndicationType type, const hidl_vec& dcList) { LOG_CALL << type; - CHECK_CB(mDataCb); - mDataCb->dataCallListChanged(toAidl(type), toAidl(dcList)); + dataCb()->dataCallListChanged(toAidl(type), toAidl(dcList)); return {}; } Return RadioIndication::keepaliveStatus(V1_0::RadioIndicationType type, const V1_1::KeepaliveStatus& status) { LOG_CALL << type; - CHECK_CB(mDataCb); - mDataCb->keepaliveStatus(toAidl(type), toAidl(status)); + dataCb()->keepaliveStatus(toAidl(type), toAidl(status)); return {}; } Return RadioIndication::pcoData(V1_0::RadioIndicationType type, const V1_0::PcoDataInfo& pco) { LOG_CALL << type; - CHECK_CB(mDataCb); - mDataCb->pcoData(toAidl(type), toAidl(pco)); + dataCb()->pcoData(toAidl(type), toAidl(pco)); return {}; } Return RadioIndication::unthrottleApn(V1_0::RadioIndicationType type, const hidl_string& apn) { LOG_CALL << type; - CHECK_CB(mDataCb); - mDataCb->unthrottleApn(toAidl(type), mContext->getDataProfile(apn)); + dataCb()->unthrottleApn(toAidl(type), mContext->getDataProfile(apn)); return {}; } diff --git a/radio/aidl/compat/libradiocompat/data/RadioResponse-data.cpp b/radio/aidl/compat/libradiocompat/data/RadioResponse-data.cpp index 171f692d41..0bfa2df5f0 100644 --- a/radio/aidl/compat/libradiocompat/data/RadioResponse-data.cpp +++ b/radio/aidl/compat/libradiocompat/data/RadioResponse-data.cpp @@ -29,29 +29,29 @@ namespace android::hardware::radio::compat { namespace aidl = ::aidl::android::hardware::radio::data; void RadioResponse::setResponseFunction(std::shared_ptr dataCb) { - CHECK(dataCb); mDataCb = dataCb; } +std::shared_ptr RadioResponse::dataCb() { + return mDataCb.get(); +} + Return RadioResponse::allocatePduSessionIdResponse(const V1_6::RadioResponseInfo& info, int32_t id) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->allocatePduSessionIdResponse(toAidl(info), id); + dataCb()->allocatePduSessionIdResponse(toAidl(info), id); return {}; } Return RadioResponse::cancelHandoverResponse(const V1_6::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->cancelHandoverResponse(toAidl(info)); + dataCb()->cancelHandoverResponse(toAidl(info)); return {}; } Return RadioResponse::deactivateDataCallResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->deactivateDataCallResponse(toAidl(info)); + dataCb()->deactivateDataCallResponse(toAidl(info)); return {}; } @@ -73,8 +73,7 @@ Return RadioResponse::getDataCallListResponse_1_5( const V1_0::RadioResponseInfo& info, const hidl_vec& dcResponse) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->getDataCallListResponse(toAidl(info), toAidl(dcResponse)); + dataCb()->getDataCallListResponse(toAidl(info), toAidl(dcResponse)); return {}; } @@ -82,65 +81,56 @@ Return RadioResponse::getDataCallListResponse_1_6( const V1_6::RadioResponseInfo& info, const hidl_vec& dcResponse) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->getDataCallListResponse(toAidl(info), toAidl(dcResponse)); + dataCb()->getDataCallListResponse(toAidl(info), toAidl(dcResponse)); return {}; } Return RadioResponse::getSlicingConfigResponse(const V1_6::RadioResponseInfo& info, const V1_6::SlicingConfig& slicingConfig) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->getSlicingConfigResponse(toAidl(info), toAidl(slicingConfig)); + dataCb()->getSlicingConfigResponse(toAidl(info), toAidl(slicingConfig)); return {}; } Return RadioResponse::releasePduSessionIdResponse(const V1_6::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->releasePduSessionIdResponse(toAidl(info)); + dataCb()->releasePduSessionIdResponse(toAidl(info)); return {}; } Return RadioResponse::setDataAllowedResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->setDataAllowedResponse(toAidl(info)); + dataCb()->setDataAllowedResponse(toAidl(info)); return {}; } Return RadioResponse::setDataProfileResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->setDataProfileResponse(toAidl(info)); + dataCb()->setDataProfileResponse(toAidl(info)); return {}; } Return RadioResponse::setDataProfileResponse_1_5(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->setDataProfileResponse(toAidl(info)); + dataCb()->setDataProfileResponse(toAidl(info)); return {}; } Return RadioResponse::setDataThrottlingResponse(const V1_6::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->setDataThrottlingResponse(toAidl(info)); + dataCb()->setDataThrottlingResponse(toAidl(info)); return {}; } Return RadioResponse::setInitialAttachApnResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->setInitialAttachApnResponse(toAidl(info)); + dataCb()->setInitialAttachApnResponse(toAidl(info)); return {}; } Return RadioResponse::setInitialAttachApnResponse_1_5(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->setInitialAttachApnResponse(toAidl(info)); + dataCb()->setInitialAttachApnResponse(toAidl(info)); return {}; } @@ -161,38 +151,33 @@ Return RadioResponse::setupDataCallResponse_1_4(const V1_0::RadioResponseI Return RadioResponse::setupDataCallResponse_1_5(const V1_0::RadioResponseInfo& info, const V1_5::SetupDataCallResult& dcResponse) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->setupDataCallResponse(toAidl(info), toAidl(dcResponse)); + dataCb()->setupDataCallResponse(toAidl(info), toAidl(dcResponse)); return {}; } Return RadioResponse::setupDataCallResponse_1_6(const V1_6::RadioResponseInfo& info, const V1_6::SetupDataCallResult& dcResponse) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->setupDataCallResponse(toAidl(info), toAidl(dcResponse)); + dataCb()->setupDataCallResponse(toAidl(info), toAidl(dcResponse)); return {}; } Return RadioResponse::startHandoverResponse(const V1_6::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->startHandoverResponse(toAidl(info)); + dataCb()->startHandoverResponse(toAidl(info)); return {}; } Return RadioResponse::startKeepaliveResponse(const V1_0::RadioResponseInfo& info, const V1_1::KeepaliveStatus& status) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->startKeepaliveResponse(toAidl(info), toAidl(status)); + dataCb()->startKeepaliveResponse(toAidl(info), toAidl(status)); return {}; } Return RadioResponse::stopKeepaliveResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mDataCb); - mDataCb->stopKeepaliveResponse(toAidl(info)); + dataCb()->stopKeepaliveResponse(toAidl(info)); return {}; } diff --git a/radio/aidl/compat/libradiocompat/debug.h b/radio/aidl/compat/libradiocompat/debug.h index 4158059f88..cb773bf27d 100644 --- a/radio/aidl/compat/libradiocompat/debug.h +++ b/radio/aidl/compat/libradiocompat/debug.h @@ -26,12 +26,6 @@ static constexpr bool kSuperVerbose = true; #define LOG_CALL \ if constexpr (debug::kSuperVerbose) LOG(VERBOSE) << (RADIO_MODULE ".") << __func__ << ' ' -#define CHECK_CB(field) \ - if (!field) { \ - LOG(WARNING) << "Callback not set"; \ - return {}; \ - } - } // namespace debug inline std::ostream& operator<<(std::ostream& os, const V1_0::RadioIndicationType& type) { diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/GuaranteedCallback.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/GuaranteedCallback.h new file mode 100644 index 0000000000..0b6ee1115a --- /dev/null +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/GuaranteedCallback.h @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + +#include +#include +#include + +namespace android::hardware::radio::compat { + +template +class GuaranteedCallback { + mutable std::mutex mCallbackGuard; + std::shared_ptr mCallback GUARDED_BY(mCallbackGuard); + + public: + GuaranteedCallback& operator=( + const std::shared_ptr& callback) { + CHECK(callback); + const std::lock_guard lock(mCallbackGuard); + mCallback = callback; + return *this; + } + + std::shared_ptr get() { + if (mCallback) return mCallback; + const std::lock_guard lock(mCallbackGuard); + if (mCallback) return mCallback; + + LOG(isIndication ? WARNING : ERROR) << "Callback is not set"; + return mCallback = ndk::SharedRefBase::make(); + } + + operator bool() const { return mCallback != nullptr; } +}; + +} // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioCompatBase.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioCompatBase.h index 21d7898002..cd17541f69 100644 --- a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioCompatBase.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioCompatBase.h @@ -33,8 +33,6 @@ class RadioCompatBase { sp mRadioResponse; sp mRadioIndication; - V1_6::IRadioResponse& respond(); - public: RadioCompatBase(std::shared_ptr context, sp hidlHal, sp radioResponse, sp radioIndication); diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioConfig.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioConfig.h index 31ad207d40..bbfff61ec3 100644 --- a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioConfig.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioConfig.h @@ -15,6 +15,9 @@ */ #pragma once +#include "RadioConfigIndication.h" +#include "RadioConfigResponse.h" + #include #include #include @@ -30,11 +33,13 @@ namespace android::hardware::radio::compat { * fetch source implementation and publish resulting HAL instance. */ class RadioConfig : public aidl::android::hardware::radio::config::BnRadioConfig { - sp mHal1_1; - sp mHal1_3; + const sp mHal1_1; + const sp mHal1_3; - sp mRadioConfigResponse; - sp mRadioConfigIndication; + const sp mRadioConfigResponse; + const sp mRadioConfigIndication; + + std::shared_ptr<::aidl::android::hardware::radio::config::IRadioConfigResponse> respond(); ::ndk::ScopedAStatus getHalDeviceCapabilities(int32_t serial) override; ::ndk::ScopedAStatus getNumOfLiveModems(int32_t serial) override; @@ -52,8 +57,6 @@ class RadioConfig : public aidl::android::hardware::radio::config::BnRadioConfig const std::vector& slotMap) override; - config::V1_3::IRadioConfigResponse& respond(); - public: /** * Constructs AIDL IRadioConfig instance wrapping existing HIDL IRadioConfig instance. diff --git a/radio/aidl/compat/libradiocompat/config/RadioConfigIndication.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioConfigIndication.h similarity index 82% rename from radio/aidl/compat/libradiocompat/config/RadioConfigIndication.h rename to radio/aidl/compat/libradiocompat/include/libradiocompat/RadioConfigIndication.h index 3d8d971694..d256a879f9 100644 --- a/radio/aidl/compat/libradiocompat/config/RadioConfigIndication.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioConfigIndication.h @@ -15,13 +15,17 @@ */ #pragma once +#include "GuaranteedCallback.h" + #include #include namespace android::hardware::radio::compat { class RadioConfigIndication : public config::V1_2::IRadioConfigIndication { - std::shared_ptr mCallback; + GuaranteedCallback + mCallback; Return simSlotsStatusChanged( V1_0::RadioIndicationType type, @@ -31,8 +35,10 @@ class RadioConfigIndication : public config::V1_2::IRadioConfigIndication { const hidl_vec& slotStatus) override; public: - RadioConfigIndication( + void setResponseFunction( std::shared_ptr cb); + + std::shared_ptr indicate(); }; } // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/config/RadioConfigResponse.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioConfigResponse.h similarity index 88% rename from radio/aidl/compat/libradiocompat/config/RadioConfigResponse.h rename to radio/aidl/compat/libradiocompat/include/libradiocompat/RadioConfigResponse.h index 1461dd2035..dc86da22ee 100644 --- a/radio/aidl/compat/libradiocompat/config/RadioConfigResponse.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioConfigResponse.h @@ -15,13 +15,17 @@ */ #pragma once +#include "GuaranteedCallback.h" + #include #include namespace android::hardware::radio::compat { class RadioConfigResponse : public config::V1_3::IRadioConfigResponse { - std::shared_ptr mCallback; + GuaranteedCallback + mCallback; Return getSimSlotsStatusResponse( const V1_0::RadioResponseInfo& info, @@ -41,8 +45,10 @@ class RadioConfigResponse : public config::V1_3::IRadioConfigResponse { bool modemReducedFeatureSet1) override; public: - RadioConfigResponse( + void setResponseFunction( std::shared_ptr callback); + + std::shared_ptr respond(); }; } // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioData.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioData.h index ba8bb0a6ae..c617ec24ea 100644 --- a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioData.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioData.h @@ -22,6 +22,8 @@ namespace android::hardware::radio::compat { class RadioData : public RadioCompatBase, public aidl::android::hardware::radio::data::BnRadioData { + std::shared_ptr<::aidl::android::hardware::radio::data::IRadioDataResponse> respond(); + ::ndk::ScopedAStatus allocatePduSessionId(int32_t serial) override; ::ndk::ScopedAStatus cancelHandover(int32_t serial, int32_t callId) override; ::ndk::ScopedAStatus deactivateDataCall( diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioIndication.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioIndication.h index 4d03063a41..c668af5dce 100644 --- a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioIndication.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioIndication.h @@ -16,6 +16,7 @@ #pragma once #include "DriverContext.h" +#include "GuaranteedCallback.h" #include #include @@ -30,13 +31,30 @@ namespace android::hardware::radio::compat { class RadioIndication : public V1_6::IRadioIndication { std::shared_ptr mContext; - std::shared_ptr<::aidl::android::hardware::radio::data::IRadioDataIndication> mDataCb; - std::shared_ptr<::aidl::android::hardware::radio::messaging::IRadioMessagingIndication> + GuaranteedCallback< // + ::aidl::android::hardware::radio::data::IRadioDataIndication, + ::aidl::android::hardware::radio::data::IRadioDataIndicationDefault, true> + mDataCb; + GuaranteedCallback< // + ::aidl::android::hardware::radio::messaging::IRadioMessagingIndication, + ::aidl::android::hardware::radio::messaging::IRadioMessagingIndicationDefault, true> mMessagingCb; - std::shared_ptr<::aidl::android::hardware::radio::modem::IRadioModemIndication> mModemCb; - std::shared_ptr<::aidl::android::hardware::radio::network::IRadioNetworkIndication> mNetworkCb; - std::shared_ptr<::aidl::android::hardware::radio::sim::IRadioSimIndication> mSimCb; - std::shared_ptr<::aidl::android::hardware::radio::voice::IRadioVoiceIndication> mVoiceCb; + GuaranteedCallback< // + ::aidl::android::hardware::radio::modem::IRadioModemIndication, + ::aidl::android::hardware::radio::modem::IRadioModemIndicationDefault, true> + mModemCb; + GuaranteedCallback< // + ::aidl::android::hardware::radio::network::IRadioNetworkIndication, + ::aidl::android::hardware::radio::network::IRadioNetworkIndicationDefault, true> + mNetworkCb; + GuaranteedCallback< // + ::aidl::android::hardware::radio::sim::IRadioSimIndication, + ::aidl::android::hardware::radio::sim::IRadioSimIndicationDefault, true> + mSimCb; + GuaranteedCallback< // + ::aidl::android::hardware::radio::voice::IRadioVoiceIndication, + ::aidl::android::hardware::radio::voice::IRadioVoiceIndicationDefault, true> + mVoiceCb; // IRadioIndication @ 1.0 Return radioStateChanged(V1_0::RadioIndicationType type, @@ -200,6 +218,14 @@ class RadioIndication : public V1_6::IRadioIndication { std::shared_ptr<::aidl::android::hardware::radio::sim::IRadioSimIndication> simCb); void setResponseFunction( std::shared_ptr<::aidl::android::hardware::radio::voice::IRadioVoiceIndication> voicCb); + + std::shared_ptr<::aidl::android::hardware::radio::data::IRadioDataIndication> dataCb(); + std::shared_ptr<::aidl::android::hardware::radio::messaging::IRadioMessagingIndication> + messagingCb(); + std::shared_ptr<::aidl::android::hardware::radio::modem::IRadioModemIndication> modemCb(); + std::shared_ptr<::aidl::android::hardware::radio::network::IRadioNetworkIndication> networkCb(); + std::shared_ptr<::aidl::android::hardware::radio::sim::IRadioSimIndication> simCb(); + std::shared_ptr<::aidl::android::hardware::radio::voice::IRadioVoiceIndication> voiceCb(); }; } // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioMessaging.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioMessaging.h index 0cd3381983..419e9fb3a4 100644 --- a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioMessaging.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioMessaging.h @@ -23,6 +23,8 @@ namespace android::hardware::radio::compat { class RadioMessaging : public RadioCompatBase, public aidl::android::hardware::radio::messaging::BnRadioMessaging { + std::shared_ptr<::aidl::android::hardware::radio::messaging::IRadioMessagingResponse> respond(); + ::ndk::ScopedAStatus acknowledgeIncomingGsmSmsWithPdu(int32_t serial, bool success, const std::string& ackPdu) override; ::ndk::ScopedAStatus acknowledgeLastIncomingCdmaSms( diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioModem.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioModem.h index 666ff472a0..fdca1244ae 100644 --- a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioModem.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioModem.h @@ -23,6 +23,8 @@ namespace android::hardware::radio::compat { class RadioModem : public RadioCompatBase, public aidl::android::hardware::radio::modem::BnRadioModem { + std::shared_ptr<::aidl::android::hardware::radio::modem::IRadioModemResponse> respond(); + ::ndk::ScopedAStatus enableModem(int32_t serial, bool on) override; ::ndk::ScopedAStatus getBasebandVersion(int32_t serial) override; ::ndk::ScopedAStatus getDeviceIdentity(int32_t serial) override; diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioNetwork.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioNetwork.h index c776fd1f09..60c65b5ee7 100644 --- a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioNetwork.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioNetwork.h @@ -23,6 +23,8 @@ namespace android::hardware::radio::compat { class RadioNetwork : public RadioCompatBase, public aidl::android::hardware::radio::network::BnRadioNetwork { + std::shared_ptr<::aidl::android::hardware::radio::network::IRadioNetworkResponse> respond(); + ::ndk::ScopedAStatus getAllowedNetworkTypesBitmap(int32_t serial) override; ::ndk::ScopedAStatus getAvailableBandModes(int32_t serial) override; ::ndk::ScopedAStatus getAvailableNetworks(int32_t serial) override; diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioResponse.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioResponse.h index 344864f75e..1f82dd19ca 100644 --- a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioResponse.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioResponse.h @@ -16,6 +16,7 @@ #pragma once #include "DriverContext.h" +#include "GuaranteedCallback.h" #include #include @@ -30,13 +31,24 @@ namespace android::hardware::radio::compat { class RadioResponse : public V1_6::IRadioResponse { std::shared_ptr mContext; - std::shared_ptr<::aidl::android::hardware::radio::data::IRadioDataResponse> mDataCb; - std::shared_ptr<::aidl::android::hardware::radio::messaging::IRadioMessagingResponse> + GuaranteedCallback<::aidl::android::hardware::radio::data::IRadioDataResponse, + ::aidl::android::hardware::radio::data::IRadioDataResponseDefault> + mDataCb; + GuaranteedCallback<::aidl::android::hardware::radio::messaging::IRadioMessagingResponse, + ::aidl::android::hardware::radio::messaging::IRadioMessagingResponseDefault> mMessagingCb; - std::shared_ptr<::aidl::android::hardware::radio::modem::IRadioModemResponse> mModemCb; - std::shared_ptr<::aidl::android::hardware::radio::network::IRadioNetworkResponse> mNetworkCb; - std::shared_ptr<::aidl::android::hardware::radio::sim::IRadioSimResponse> mSimCb; - std::shared_ptr<::aidl::android::hardware::radio::voice::IRadioVoiceResponse> mVoiceCb; + GuaranteedCallback<::aidl::android::hardware::radio::modem::IRadioModemResponse, + ::aidl::android::hardware::radio::modem::IRadioModemResponseDefault> + mModemCb; + GuaranteedCallback<::aidl::android::hardware::radio::network::IRadioNetworkResponse, + ::aidl::android::hardware::radio::network::IRadioNetworkResponseDefault> + mNetworkCb; + GuaranteedCallback<::aidl::android::hardware::radio::sim::IRadioSimResponse, + ::aidl::android::hardware::radio::sim::IRadioSimResponseDefault> + mSimCb; + GuaranteedCallback<::aidl::android::hardware::radio::voice::IRadioVoiceResponse, + ::aidl::android::hardware::radio::voice::IRadioVoiceResponseDefault> + mVoiceCb; // IRadioResponse @ 1.0 Return getIccCardStatusResponse(const V1_0::RadioResponseInfo& info, @@ -428,6 +440,14 @@ class RadioResponse : public V1_6::IRadioResponse { std::shared_ptr<::aidl::android::hardware::radio::sim::IRadioSimResponse> simCb); void setResponseFunction( std::shared_ptr<::aidl::android::hardware::radio::voice::IRadioVoiceResponse> voiceCb); + + std::shared_ptr<::aidl::android::hardware::radio::data::IRadioDataResponse> dataCb(); + std::shared_ptr<::aidl::android::hardware::radio::messaging::IRadioMessagingResponse> + messagingCb(); + std::shared_ptr<::aidl::android::hardware::radio::modem::IRadioModemResponse> modemCb(); + std::shared_ptr<::aidl::android::hardware::radio::network::IRadioNetworkResponse> networkCb(); + std::shared_ptr<::aidl::android::hardware::radio::sim::IRadioSimResponse> simCb(); + std::shared_ptr<::aidl::android::hardware::radio::voice::IRadioVoiceResponse> voiceCb(); }; } // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioSim.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioSim.h index a6b77fd507..84bb68b57f 100644 --- a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioSim.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioSim.h @@ -22,6 +22,8 @@ namespace android::hardware::radio::compat { class RadioSim : public RadioCompatBase, public aidl::android::hardware::radio::sim::BnRadioSim { + std::shared_ptr<::aidl::android::hardware::radio::sim::IRadioSimResponse> respond(); + ::ndk::ScopedAStatus areUiccApplicationsEnabled(int32_t serial) override; ::ndk::ScopedAStatus changeIccPin2ForApp(int32_t serial, const std::string& oldPin2, const std::string& newPin2, diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioVoice.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioVoice.h index 5bf93e0fb3..5839e3a774 100644 --- a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioVoice.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioVoice.h @@ -23,6 +23,8 @@ namespace android::hardware::radio::compat { class RadioVoice : public RadioCompatBase, public aidl::android::hardware::radio::voice::BnRadioVoice { + std::shared_ptr<::aidl::android::hardware::radio::voice::IRadioVoiceResponse> respond(); + ::ndk::ScopedAStatus acceptCall(int32_t serial) override; ::ndk::ScopedAStatus conference(int32_t serial) override; ::ndk::ScopedAStatus dial( diff --git a/radio/aidl/compat/libradiocompat/messaging/RadioIndication-messaging.cpp b/radio/aidl/compat/libradiocompat/messaging/RadioIndication-messaging.cpp index c7342b1146..e5c33b300f 100644 --- a/radio/aidl/compat/libradiocompat/messaging/RadioIndication-messaging.cpp +++ b/radio/aidl/compat/libradiocompat/messaging/RadioIndication-messaging.cpp @@ -27,67 +27,62 @@ namespace android::hardware::radio::compat { namespace aidl = ::aidl::android::hardware::radio::messaging; void RadioIndication::setResponseFunction(std::shared_ptr rmiCb) { - CHECK(rmiCb); mMessagingCb = rmiCb; } +std::shared_ptr RadioIndication::messagingCb() { + return mMessagingCb.get(); +} + Return RadioIndication::cdmaNewSms(V1_0::RadioIndicationType type, const V1_0::CdmaSmsMessage& msg) { LOG_CALL << type; - CHECK_CB(mMessagingCb); - mMessagingCb->cdmaNewSms(toAidl(type), toAidl(msg)); + messagingCb()->cdmaNewSms(toAidl(type), toAidl(msg)); return {}; } Return RadioIndication::cdmaRuimSmsStorageFull(V1_0::RadioIndicationType type) { LOG_CALL << type; - CHECK_CB(mMessagingCb); - mMessagingCb->cdmaRuimSmsStorageFull(toAidl(type)); + messagingCb()->cdmaRuimSmsStorageFull(toAidl(type)); return {}; } Return RadioIndication::newBroadcastSms(V1_0::RadioIndicationType type, const hidl_vec& data) { LOG_CALL << type; - CHECK_CB(mMessagingCb); - mMessagingCb->newBroadcastSms(toAidl(type), data); + messagingCb()->newBroadcastSms(toAidl(type), data); return {}; } Return RadioIndication::newSms(V1_0::RadioIndicationType type, const hidl_vec& pdu) { LOG_CALL << type; - CHECK_CB(mMessagingCb); - mMessagingCb->newSms(toAidl(type), pdu); + messagingCb()->newSms(toAidl(type), pdu); return {}; } Return RadioIndication::newSmsOnSim(V1_0::RadioIndicationType type, int32_t recordNumber) { LOG_CALL << type; - CHECK_CB(mMessagingCb); - mMessagingCb->newSmsOnSim(toAidl(type), recordNumber); + messagingCb()->newSmsOnSim(toAidl(type), recordNumber); return {}; } Return RadioIndication::newSmsStatusReport(V1_0::RadioIndicationType type, const hidl_vec& pdu) { LOG_CALL << type; - CHECK_CB(mMessagingCb); - mMessagingCb->newSmsStatusReport(toAidl(type), pdu); + messagingCb()->newSmsStatusReport(toAidl(type), pdu); return {}; } Return RadioIndication::onUssd(V1_0::RadioIndicationType type, V1_0::UssdModeType modeType, const hidl_string& msg) { LOG_CALL << type; - CHECK_CB(mMessagingCb); - mMessagingCb->onUssd(toAidl(type), aidl::UssdModeType(modeType), msg); + messagingCb()->onUssd(toAidl(type), aidl::UssdModeType(modeType), msg); return {}; } Return RadioIndication::simSmsStorageFull(V1_0::RadioIndicationType type) { LOG_CALL << type; - CHECK_CB(mMessagingCb); - mMessagingCb->simSmsStorageFull(toAidl(type)); + messagingCb()->simSmsStorageFull(toAidl(type)); return {}; } diff --git a/radio/aidl/compat/libradiocompat/messaging/RadioMessaging.cpp b/radio/aidl/compat/libradiocompat/messaging/RadioMessaging.cpp index c1a82b566f..79e7c01441 100644 --- a/radio/aidl/compat/libradiocompat/messaging/RadioMessaging.cpp +++ b/radio/aidl/compat/libradiocompat/messaging/RadioMessaging.cpp @@ -29,6 +29,10 @@ using ::ndk::ScopedAStatus; namespace aidl = ::aidl::android::hardware::radio::messaging; constexpr auto ok = &ScopedAStatus::ok; +std::shared_ptr RadioMessaging::respond() { + return mRadioResponse->messagingCb(); +} + ScopedAStatus RadioMessaging::acknowledgeIncomingGsmSmsWithPdu( // int32_t serial, bool success, const std::string& ackPdu) { LOG_CALL << serial << ' ' << success << ' ' << ackPdu; diff --git a/radio/aidl/compat/libradiocompat/messaging/RadioResponse-messaging.cpp b/radio/aidl/compat/libradiocompat/messaging/RadioResponse-messaging.cpp index 379e4630af..24ad3d7c9b 100644 --- a/radio/aidl/compat/libradiocompat/messaging/RadioResponse-messaging.cpp +++ b/radio/aidl/compat/libradiocompat/messaging/RadioResponse-messaging.cpp @@ -29,52 +29,49 @@ namespace android::hardware::radio::compat { namespace aidl = ::aidl::android::hardware::radio::messaging; void RadioResponse::setResponseFunction(std::shared_ptr rmrCb) { - CHECK(rmrCb); mMessagingCb = rmrCb; } +std::shared_ptr RadioResponse::messagingCb() { + return mMessagingCb.get(); +} + Return RadioResponse::acknowledgeIncomingGsmSmsWithPduResponse( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->acknowledgeIncomingGsmSmsWithPduResponse(toAidl(info)); + messagingCb()->acknowledgeIncomingGsmSmsWithPduResponse(toAidl(info)); return {}; } Return RadioResponse::acknowledgeLastIncomingCdmaSmsResponse( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->acknowledgeLastIncomingCdmaSmsResponse(toAidl(info)); + messagingCb()->acknowledgeLastIncomingCdmaSmsResponse(toAidl(info)); return {}; } Return RadioResponse::acknowledgeLastIncomingGsmSmsResponse( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->acknowledgeLastIncomingGsmSmsResponse(toAidl(info)); + messagingCb()->acknowledgeLastIncomingGsmSmsResponse(toAidl(info)); return {}; } Return RadioResponse::cancelPendingUssdResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->cancelPendingUssdResponse(toAidl(info)); + messagingCb()->cancelPendingUssdResponse(toAidl(info)); return {}; } Return RadioResponse::deleteSmsOnRuimResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->deleteSmsOnRuimResponse(toAidl(info)); + messagingCb()->deleteSmsOnRuimResponse(toAidl(info)); return {}; } Return RadioResponse::deleteSmsOnSimResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->deleteSmsOnSimResponse(toAidl(info)); + messagingCb()->deleteSmsOnSimResponse(toAidl(info)); return {}; } @@ -82,162 +79,141 @@ Return RadioResponse::getCdmaBroadcastConfigResponse( const V1_0::RadioResponseInfo& info, const hidl_vec& configs) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->getCdmaBroadcastConfigResponse(toAidl(info), toAidl(configs)); + messagingCb()->getCdmaBroadcastConfigResponse(toAidl(info), toAidl(configs)); return {}; } Return RadioResponse::getGsmBroadcastConfigResponse( const V1_0::RadioResponseInfo& info, const hidl_vec& cfg) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->getGsmBroadcastConfigResponse(toAidl(info), toAidl(cfg)); + messagingCb()->getGsmBroadcastConfigResponse(toAidl(info), toAidl(cfg)); return {}; } Return RadioResponse::getSmscAddressResponse(const V1_0::RadioResponseInfo& info, const hidl_string& smsc) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->getSmscAddressResponse(toAidl(info), smsc); + messagingCb()->getSmscAddressResponse(toAidl(info), smsc); return {}; } Return RadioResponse::reportSmsMemoryStatusResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->reportSmsMemoryStatusResponse(toAidl(info)); + messagingCb()->reportSmsMemoryStatusResponse(toAidl(info)); return {}; } Return RadioResponse::sendCdmaSmsExpectMoreResponse(const V1_0::RadioResponseInfo& info, const V1_0::SendSmsResult& sms) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->sendCdmaSmsExpectMoreResponse(toAidl(info), toAidl(sms)); + messagingCb()->sendCdmaSmsExpectMoreResponse(toAidl(info), toAidl(sms)); return {}; } Return RadioResponse::sendCdmaSmsExpectMoreResponse_1_6(const V1_6::RadioResponseInfo& info, const V1_0::SendSmsResult& sms) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->sendCdmaSmsExpectMoreResponse(toAidl(info), toAidl(sms)); + messagingCb()->sendCdmaSmsExpectMoreResponse(toAidl(info), toAidl(sms)); return {}; } Return RadioResponse::sendCdmaSmsResponse(const V1_0::RadioResponseInfo& info, const V1_0::SendSmsResult& sms) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->sendCdmaSmsResponse(toAidl(info), toAidl(sms)); + messagingCb()->sendCdmaSmsResponse(toAidl(info), toAidl(sms)); return {}; } Return RadioResponse::sendCdmaSmsResponse_1_6(const V1_6::RadioResponseInfo& info, const V1_0::SendSmsResult& sms) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->sendCdmaSmsResponse(toAidl(info), toAidl(sms)); + messagingCb()->sendCdmaSmsResponse(toAidl(info), toAidl(sms)); return {}; } Return RadioResponse::sendImsSmsResponse(const V1_0::RadioResponseInfo& info, const V1_0::SendSmsResult& sms) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->sendImsSmsResponse(toAidl(info), toAidl(sms)); + messagingCb()->sendImsSmsResponse(toAidl(info), toAidl(sms)); return {}; } Return RadioResponse::sendSMSExpectMoreResponse(const V1_0::RadioResponseInfo& info, const V1_0::SendSmsResult& sms) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->sendSmsExpectMoreResponse(toAidl(info), toAidl(sms)); + messagingCb()->sendSmsExpectMoreResponse(toAidl(info), toAidl(sms)); return {}; } Return RadioResponse::sendSmsExpectMoreResponse_1_6(const V1_6::RadioResponseInfo& info, const V1_0::SendSmsResult& sms) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->sendSmsExpectMoreResponse(toAidl(info), toAidl(sms)); + messagingCb()->sendSmsExpectMoreResponse(toAidl(info), toAidl(sms)); return {}; } Return RadioResponse::sendSmsResponse(const V1_0::RadioResponseInfo& info, const V1_0::SendSmsResult& sms) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->sendSmsResponse(toAidl(info), toAidl(sms)); + messagingCb()->sendSmsResponse(toAidl(info), toAidl(sms)); return {}; } Return RadioResponse::sendSmsResponse_1_6(const V1_6::RadioResponseInfo& info, const V1_0::SendSmsResult& sms) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->sendSmsResponse(toAidl(info), toAidl(sms)); + messagingCb()->sendSmsResponse(toAidl(info), toAidl(sms)); return {}; } Return RadioResponse::sendUssdResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->sendUssdResponse(toAidl(info)); + messagingCb()->sendUssdResponse(toAidl(info)); return {}; } Return RadioResponse::setCdmaBroadcastActivationResponse( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->setCdmaBroadcastActivationResponse(toAidl(info)); + messagingCb()->setCdmaBroadcastActivationResponse(toAidl(info)); return {}; } Return RadioResponse::setCdmaBroadcastConfigResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->setCdmaBroadcastConfigResponse(toAidl(info)); + messagingCb()->setCdmaBroadcastConfigResponse(toAidl(info)); return {}; } Return RadioResponse::setGsmBroadcastActivationResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->setGsmBroadcastActivationResponse(toAidl(info)); + messagingCb()->setGsmBroadcastActivationResponse(toAidl(info)); return {}; } Return RadioResponse::setGsmBroadcastConfigResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->setGsmBroadcastConfigResponse(toAidl(info)); + messagingCb()->setGsmBroadcastConfigResponse(toAidl(info)); return {}; } Return RadioResponse::setSmscAddressResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mMessagingCb); - mMessagingCb->setSmscAddressResponse(toAidl(info)); + messagingCb()->setSmscAddressResponse(toAidl(info)); return {}; } Return RadioResponse::writeSmsToRuimResponse(const V1_0::RadioResponseInfo& info, uint32_t index) { LOG_CALL << info.serial << ' ' << index; - CHECK_CB(mMessagingCb); - mMessagingCb->writeSmsToRuimResponse(toAidl(info), index); + messagingCb()->writeSmsToRuimResponse(toAidl(info), index); return {}; } Return RadioResponse::writeSmsToSimResponse(const V1_0::RadioResponseInfo& info, int32_t index) { LOG_CALL << info.serial << ' ' << index; - CHECK_CB(mMessagingCb); - mMessagingCb->writeSmsToSimResponse(toAidl(info), index); + messagingCb()->writeSmsToSimResponse(toAidl(info), index); return {}; } diff --git a/radio/aidl/compat/libradiocompat/modem/RadioIndication-modem.cpp b/radio/aidl/compat/libradiocompat/modem/RadioIndication-modem.cpp index 8fc4da62d5..851c93b921 100644 --- a/radio/aidl/compat/libradiocompat/modem/RadioIndication-modem.cpp +++ b/radio/aidl/compat/libradiocompat/modem/RadioIndication-modem.cpp @@ -29,44 +29,42 @@ namespace android::hardware::radio::compat { namespace aidl = ::aidl::android::hardware::radio::modem; void RadioIndication::setResponseFunction(std::shared_ptr modemCb) { - CHECK(modemCb); mModemCb = modemCb; } +std::shared_ptr RadioIndication::modemCb() { + return mModemCb.get(); +} + Return RadioIndication::hardwareConfigChanged(V1_0::RadioIndicationType type, const hidl_vec& configs) { LOG_CALL << type; - CHECK_CB(mModemCb); - mModemCb->hardwareConfigChanged(toAidl(type), toAidl(configs)); + modemCb()->hardwareConfigChanged(toAidl(type), toAidl(configs)); return {}; } Return RadioIndication::modemReset(V1_0::RadioIndicationType type, const hidl_string& reasn) { LOG_CALL << type; - CHECK_CB(mModemCb); - mModemCb->modemReset(toAidl(type), reasn); + modemCb()->modemReset(toAidl(type), reasn); return {}; } Return RadioIndication::radioCapabilityIndication(V1_0::RadioIndicationType type, const V1_0::RadioCapability& rc) { LOG_CALL << type; - CHECK_CB(mModemCb); - mModemCb->radioCapabilityIndication(toAidl(type), toAidl(rc)); + modemCb()->radioCapabilityIndication(toAidl(type), toAidl(rc)); return {}; } Return RadioIndication::radioStateChanged(V1_0::RadioIndicationType t, V1_0::RadioState st) { LOG_CALL << t; - CHECK_CB(mModemCb); - mModemCb->radioStateChanged(toAidl(t), aidl::RadioState(st)); + modemCb()->radioStateChanged(toAidl(t), aidl::RadioState(st)); return {}; } Return RadioIndication::rilConnected(V1_0::RadioIndicationType type) { LOG_CALL << type; - CHECK_CB(mModemCb); - mModemCb->rilConnected(toAidl(type)); + modemCb()->rilConnected(toAidl(type)); return {}; } diff --git a/radio/aidl/compat/libradiocompat/modem/RadioModem.cpp b/radio/aidl/compat/libradiocompat/modem/RadioModem.cpp index 660ae9f2ed..3fff5ee317 100644 --- a/radio/aidl/compat/libradiocompat/modem/RadioModem.cpp +++ b/radio/aidl/compat/libradiocompat/modem/RadioModem.cpp @@ -27,6 +27,10 @@ using ::ndk::ScopedAStatus; namespace aidl = ::aidl::android::hardware::radio::modem; constexpr auto ok = &ScopedAStatus::ok; +std::shared_ptr RadioModem::respond() { + return mRadioResponse->modemCb(); +} + ScopedAStatus RadioModem::enableModem(int32_t serial, bool on) { LOG_CALL << serial; mHal1_5->enableModem(serial, on); diff --git a/radio/aidl/compat/libradiocompat/modem/RadioResponse-modem.cpp b/radio/aidl/compat/libradiocompat/modem/RadioResponse-modem.cpp index 300627c0f4..6e1a962903 100644 --- a/radio/aidl/compat/libradiocompat/modem/RadioResponse-modem.cpp +++ b/radio/aidl/compat/libradiocompat/modem/RadioResponse-modem.cpp @@ -29,22 +29,23 @@ namespace android::hardware::radio::compat { namespace aidl = ::aidl::android::hardware::radio::modem; void RadioResponse::setResponseFunction(std::shared_ptr modemCb) { - CHECK(modemCb); mModemCb = modemCb; } +std::shared_ptr RadioResponse::modemCb() { + return mModemCb.get(); +} + Return RadioResponse::enableModemResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->enableModemResponse(toAidl(info)); + modemCb()->enableModemResponse(toAidl(info)); return {}; } Return RadioResponse::getBasebandVersionResponse(const V1_0::RadioResponseInfo& info, const hidl_string& version) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->getBasebandVersionResponse(toAidl(info), version); + modemCb()->getBasebandVersionResponse(toAidl(info), version); return {}; } @@ -52,112 +53,97 @@ Return RadioResponse::getDeviceIdentityResponse( // const V1_0::RadioResponseInfo& info, const hidl_string& imei, const hidl_string& imeisv, const hidl_string& esn, const hidl_string& meid) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->getDeviceIdentityResponse(toAidl(info), imei, imeisv, esn, meid); + modemCb()->getDeviceIdentityResponse(toAidl(info), imei, imeisv, esn, meid); return {}; } Return RadioResponse::getHardwareConfigResponse( const V1_0::RadioResponseInfo& info, const hidl_vec& config) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->getHardwareConfigResponse(toAidl(info), toAidl(config)); + modemCb()->getHardwareConfigResponse(toAidl(info), toAidl(config)); return {}; } Return RadioResponse::getModemActivityInfoResponse( const V1_0::RadioResponseInfo& info, const V1_0::ActivityStatsInfo& activityInfo) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->getModemActivityInfoResponse(toAidl(info), toAidl(activityInfo)); + modemCb()->getModemActivityInfoResponse(toAidl(info), toAidl(activityInfo)); return {}; } Return RadioResponse::getModemStackStatusResponse(const V1_0::RadioResponseInfo& info, bool isEnabled) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->getModemStackStatusResponse(toAidl(info), isEnabled); + modemCb()->getModemStackStatusResponse(toAidl(info), isEnabled); return {}; } Return RadioResponse::getRadioCapabilityResponse(const V1_0::RadioResponseInfo& info, const V1_0::RadioCapability& rc) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->getRadioCapabilityResponse(toAidl(info), toAidl(rc)); + modemCb()->getRadioCapabilityResponse(toAidl(info), toAidl(rc)); return {}; } Return RadioResponse::nvReadItemResponse(const V1_0::RadioResponseInfo& info, const hidl_string& result) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->nvReadItemResponse(toAidl(info), result); + modemCb()->nvReadItemResponse(toAidl(info), result); return {}; } Return RadioResponse::nvResetConfigResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->nvResetConfigResponse(toAidl(info)); + modemCb()->nvResetConfigResponse(toAidl(info)); return {}; } Return RadioResponse::nvWriteCdmaPrlResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->nvWriteCdmaPrlResponse(toAidl(info)); + modemCb()->nvWriteCdmaPrlResponse(toAidl(info)); return {}; } Return RadioResponse::nvWriteItemResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->nvWriteItemResponse(toAidl(info)); + modemCb()->nvWriteItemResponse(toAidl(info)); return {}; } Return RadioResponse::requestShutdownResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->requestShutdownResponse(toAidl(info)); + modemCb()->requestShutdownResponse(toAidl(info)); return {}; } Return RadioResponse::sendDeviceStateResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->sendDeviceStateResponse(toAidl(info)); + modemCb()->sendDeviceStateResponse(toAidl(info)); return {}; } Return RadioResponse::setRadioCapabilityResponse(const V1_0::RadioResponseInfo& info, const V1_0::RadioCapability& rc) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->setRadioCapabilityResponse(toAidl(info), toAidl(rc)); + modemCb()->setRadioCapabilityResponse(toAidl(info), toAidl(rc)); return {}; } Return RadioResponse::setRadioPowerResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->setRadioPowerResponse(toAidl(info)); + modemCb()->setRadioPowerResponse(toAidl(info)); return {}; } Return RadioResponse::setRadioPowerResponse_1_5(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->setRadioPowerResponse(toAidl(info)); + modemCb()->setRadioPowerResponse(toAidl(info)); return {}; } Return RadioResponse::setRadioPowerResponse_1_6(const V1_6::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mModemCb); - mModemCb->setRadioPowerResponse(toAidl(info)); + modemCb()->setRadioPowerResponse(toAidl(info)); return {}; } diff --git a/radio/aidl/compat/libradiocompat/network/RadioIndication-network.cpp b/radio/aidl/compat/libradiocompat/network/RadioIndication-network.cpp index 899b133bfe..d4cbdbcf5b 100644 --- a/radio/aidl/compat/libradiocompat/network/RadioIndication-network.cpp +++ b/radio/aidl/compat/libradiocompat/network/RadioIndication-network.cpp @@ -30,23 +30,24 @@ using ::aidl::android::hardware::radio::RadioTechnology; namespace aidl = ::aidl::android::hardware::radio::network; void RadioIndication::setResponseFunction(std::shared_ptr netCb) { - CHECK(netCb); mNetworkCb = netCb; } +std::shared_ptr RadioIndication::networkCb() { + return mNetworkCb.get(); +} + Return RadioIndication::barringInfoChanged(V1_0::RadioIndicationType type, const V1_5::CellIdentity& cellIdentity, const hidl_vec& barringInfos) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->barringInfoChanged(toAidl(type), toAidl(cellIdentity), toAidl(barringInfos)); + networkCb()->barringInfoChanged(toAidl(type), toAidl(cellIdentity), toAidl(barringInfos)); return {}; } Return RadioIndication::cdmaPrlChanged(V1_0::RadioIndicationType type, int32_t version) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->cdmaPrlChanged(toAidl(type), version); + networkCb()->cdmaPrlChanged(toAidl(type), version); return {}; } @@ -74,32 +75,28 @@ Return RadioIndication::cellInfoList_1_4(V1_0::RadioIndicationType type, Return RadioIndication::cellInfoList_1_5(V1_0::RadioIndicationType type, const hidl_vec& records) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->cellInfoList(toAidl(type), toAidl(records)); + networkCb()->cellInfoList(toAidl(type), toAidl(records)); return {}; } Return RadioIndication::cellInfoList_1_6(V1_0::RadioIndicationType type, const hidl_vec& records) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->cellInfoList(toAidl(type), toAidl(records)); + networkCb()->cellInfoList(toAidl(type), toAidl(records)); return {}; } Return RadioIndication::currentLinkCapacityEstimate(V1_0::RadioIndicationType type, const V1_2::LinkCapacityEstimate& lce) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->currentLinkCapacityEstimate(toAidl(type), toAidl(lce)); + networkCb()->currentLinkCapacityEstimate(toAidl(type), toAidl(lce)); return {}; } Return RadioIndication::currentLinkCapacityEstimate_1_6( V1_0::RadioIndicationType type, const V1_6::LinkCapacityEstimate& lce) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->currentLinkCapacityEstimate(toAidl(type), toAidl(lce)); + networkCb()->currentLinkCapacityEstimate(toAidl(type), toAidl(lce)); return {}; } @@ -113,16 +110,14 @@ Return RadioIndication::currentPhysicalChannelConfigs( Return RadioIndication::currentPhysicalChannelConfigs_1_4( V1_0::RadioIndicationType type, const hidl_vec& configs) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->currentPhysicalChannelConfigs(toAidl(type), toAidl(configs)); + networkCb()->currentPhysicalChannelConfigs(toAidl(type), toAidl(configs)); return {}; } Return RadioIndication::currentPhysicalChannelConfigs_1_6( V1_0::RadioIndicationType type, const hidl_vec& configs) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->currentPhysicalChannelConfigs(toAidl(type), toAidl(configs)); + networkCb()->currentPhysicalChannelConfigs(toAidl(type), toAidl(configs)); return {}; } @@ -143,23 +138,20 @@ Return RadioIndication::currentSignalStrength_1_2(V1_0::RadioIndicationTyp Return RadioIndication::currentSignalStrength_1_4( V1_0::RadioIndicationType type, const V1_4::SignalStrength& signalStrength) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->currentSignalStrength(toAidl(type), toAidl(signalStrength)); + networkCb()->currentSignalStrength(toAidl(type), toAidl(signalStrength)); return {}; } Return RadioIndication::currentSignalStrength_1_6( V1_0::RadioIndicationType type, const V1_6::SignalStrength& signalStrength) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->currentSignalStrength(toAidl(type), toAidl(signalStrength)); + networkCb()->currentSignalStrength(toAidl(type), toAidl(signalStrength)); return {}; } Return RadioIndication::imsNetworkStateChanged(V1_0::RadioIndicationType type) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->imsNetworkStateChanged(toAidl(type)); + networkCb()->imsNetworkStateChanged(toAidl(type)); return {}; } @@ -187,31 +179,27 @@ Return RadioIndication::networkScanResult_1_4(V1_0::RadioIndicationType ty Return RadioIndication::networkScanResult_1_5(V1_0::RadioIndicationType type, const V1_5::NetworkScanResult& result) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->networkScanResult(toAidl(type), toAidl(result)); + networkCb()->networkScanResult(toAidl(type), toAidl(result)); return {}; } Return RadioIndication::networkScanResult_1_6(V1_0::RadioIndicationType type, const V1_6::NetworkScanResult& result) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->networkScanResult(toAidl(type), toAidl(result)); + networkCb()->networkScanResult(toAidl(type), toAidl(result)); return {}; } Return RadioIndication::networkStateChanged(V1_0::RadioIndicationType type) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->networkStateChanged(toAidl(type)); + networkCb()->networkStateChanged(toAidl(type)); return {}; } Return RadioIndication::nitzTimeReceived(V1_0::RadioIndicationType type, const hidl_string& nitzTime, uint64_t receivedTime) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->nitzTimeReceived(toAidl(type), nitzTime, receivedTime, 0); + networkCb()->nitzTimeReceived(toAidl(type), nitzTime, receivedTime, 0); return {}; } @@ -220,33 +208,29 @@ Return RadioIndication::registrationFailed( // const hidl_string& chosenPlmn, hidl_bitfield domain, int32_t causeCode, int32_t additionalCauseCode) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->registrationFailed(toAidl(type), toAidl(cellIdentity), chosenPlmn, - aidl::Domain(domain), causeCode, additionalCauseCode); + networkCb()->registrationFailed(toAidl(type), toAidl(cellIdentity), chosenPlmn, + aidl::Domain(domain), causeCode, additionalCauseCode); return {}; } Return RadioIndication::restrictedStateChanged(V1_0::RadioIndicationType type, V1_0::PhoneRestrictedState state) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->restrictedStateChanged(toAidl(type), aidl::PhoneRestrictedState(state)); + networkCb()->restrictedStateChanged(toAidl(type), aidl::PhoneRestrictedState(state)); return {}; } Return RadioIndication::suppSvcNotify(V1_0::RadioIndicationType type, const V1_0::SuppSvcNotification& suppSvc) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->suppSvcNotify(toAidl(type), toAidl(suppSvc)); + networkCb()->suppSvcNotify(toAidl(type), toAidl(suppSvc)); return {}; } Return RadioIndication::voiceRadioTechChanged(V1_0::RadioIndicationType type, V1_0::RadioTechnology rat) { LOG_CALL << type; - CHECK_CB(mNetworkCb); - mNetworkCb->voiceRadioTechChanged(toAidl(type), RadioTechnology(rat)); + networkCb()->voiceRadioTechChanged(toAidl(type), RadioTechnology(rat)); return {}; } diff --git a/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp b/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp index af0bc4619f..08894874fc 100644 --- a/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp +++ b/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp @@ -33,6 +33,10 @@ using ::ndk::ScopedAStatus; namespace aidl = ::aidl::android::hardware::radio::network; constexpr auto ok = &ScopedAStatus::ok; +std::shared_ptr RadioNetwork::respond() { + return mRadioResponse->networkCb(); +} + ScopedAStatus RadioNetwork::getAllowedNetworkTypesBitmap(int32_t serial) { LOG_CALL << serial; if (mHal1_6) { @@ -108,7 +112,7 @@ ScopedAStatus RadioNetwork::getSystemSelectionChannels(int32_t serial) { if (mHal1_6) { mHal1_6->getSystemSelectionChannels(serial); } else { - respond().getSystemSelectionChannelsResponse(notSupported(serial), {}); + respond()->getSystemSelectionChannelsResponse(notSupported(serial), {}); } return ok(); } @@ -130,7 +134,7 @@ ScopedAStatus RadioNetwork::isNrDualConnectivityEnabled(int32_t serial) { if (mHal1_6) { mHal1_6->isNrDualConnectivityEnabled(serial); } else { - respond().isNrDualConnectivityEnabledResponse(notSupported(serial), false); + respond()->isNrDualConnectivityEnabledResponse(notSupported(serial), false); } return ok(); } @@ -219,7 +223,7 @@ ScopedAStatus RadioNetwork::setNrDualConnectivityState(int32_t serial, if (mHal1_6) { mHal1_6->setNrDualConnectivityState(serial, V1_6::NrDualConnectivityState(st)); } else { - respond().setNrDualConnectivityStateResponse(notSupported(serial)); + respond()->setNrDualConnectivityStateResponse(notSupported(serial)); } return ok(); } diff --git a/radio/aidl/compat/libradiocompat/network/RadioResponse-network.cpp b/radio/aidl/compat/libradiocompat/network/RadioResponse-network.cpp index 81f7775e19..bab1d4a30d 100644 --- a/radio/aidl/compat/libradiocompat/network/RadioResponse-network.cpp +++ b/radio/aidl/compat/libradiocompat/network/RadioResponse-network.cpp @@ -33,25 +33,26 @@ using ::aidl::android::hardware::radio::RadioTechnologyFamily; namespace aidl = ::aidl::android::hardware::radio::network; void RadioResponse::setResponseFunction(std::shared_ptr netCb) { - CHECK(netCb); mNetworkCb = netCb; } +std::shared_ptr RadioResponse::networkCb() { + return mNetworkCb.get(); +} + Return RadioResponse::getAllowedNetworkTypesBitmapResponse( const V1_6::RadioResponseInfo& info, hidl_bitfield networkTypeBitmap) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getAllowedNetworkTypesBitmapResponse(toAidl(info), - RadioAccessFamily(networkTypeBitmap)); + networkCb()->getAllowedNetworkTypesBitmapResponse(toAidl(info), + RadioAccessFamily(networkTypeBitmap)); return {}; } Return RadioResponse::getPreferredNetworkTypeResponse(const V1_0::RadioResponseInfo& info, V1_0::PreferredNetworkType nwType) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getAllowedNetworkTypesBitmapResponse( // + networkCb()->getAllowedNetworkTypesBitmapResponse( // toAidl(info), RadioAccessFamily(getRafFromNetworkType(nwType))); return {}; } @@ -66,16 +67,14 @@ Return RadioResponse::getPreferredNetworkTypeBitmapResponse( Return RadioResponse::getAvailableBandModesResponse( const V1_0::RadioResponseInfo& info, const hidl_vec& bandModes) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getAvailableBandModesResponse(toAidl(info), toAidl(bandModes)); + networkCb()->getAvailableBandModesResponse(toAidl(info), toAidl(bandModes)); return {}; } Return RadioResponse::getAvailableNetworksResponse( const V1_0::RadioResponseInfo& info, const hidl_vec& networkInfos) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getAvailableNetworksResponse(toAidl(info), toAidl(networkInfos)); + networkCb()->getAvailableNetworksResponse(toAidl(info), toAidl(networkInfos)); return {}; } @@ -83,16 +82,14 @@ Return RadioResponse::getBarringInfoResponse( const V1_0::RadioResponseInfo& info, const V1_5::CellIdentity& cellIdentity, const hidl_vec& barringInfos) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getBarringInfoResponse(toAidl(info), toAidl(cellIdentity), toAidl(barringInfos)); + networkCb()->getBarringInfoResponse(toAidl(info), toAidl(cellIdentity), toAidl(barringInfos)); return {}; } Return RadioResponse::getCdmaRoamingPreferenceResponse(const V1_0::RadioResponseInfo& info, V1_0::CdmaRoamingType type) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getCdmaRoamingPreferenceResponse(toAidl(info), aidl::CdmaRoamingType(type)); + networkCb()->getCdmaRoamingPreferenceResponse(toAidl(info), aidl::CdmaRoamingType(type)); return {}; } @@ -120,16 +117,14 @@ Return RadioResponse::getCellInfoListResponse_1_4(const V1_0::RadioRespons Return RadioResponse::getCellInfoListResponse_1_5(const V1_0::RadioResponseInfo& info, const hidl_vec& cellInfo) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getCellInfoListResponse(toAidl(info), toAidl(cellInfo)); + networkCb()->getCellInfoListResponse(toAidl(info), toAidl(cellInfo)); return {}; } Return RadioResponse::getCellInfoListResponse_1_6(const V1_6::RadioResponseInfo& info, const hidl_vec& cellInfo) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getCellInfoListResponse(toAidl(info), toAidl(cellInfo)); + networkCb()->getCellInfoListResponse(toAidl(info), toAidl(cellInfo)); return {}; } @@ -157,25 +152,22 @@ Return RadioResponse::getDataRegistrationStateResponse_1_4( Return RadioResponse::getDataRegistrationStateResponse_1_5( const V1_0::RadioResponseInfo& info, const V1_5::RegStateResult& dataRegResponse) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getDataRegistrationStateResponse(toAidl(info), toAidl(dataRegResponse)); + networkCb()->getDataRegistrationStateResponse(toAidl(info), toAidl(dataRegResponse)); return {}; } Return RadioResponse::getDataRegistrationStateResponse_1_6( const V1_6::RadioResponseInfo& info, const V1_6::RegStateResult& dataRegResponse) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getDataRegistrationStateResponse(toAidl(info), toAidl(dataRegResponse)); + networkCb()->getDataRegistrationStateResponse(toAidl(info), toAidl(dataRegResponse)); return {}; } Return RadioResponse::getImsRegistrationStateResponse( // const V1_0::RadioResponseInfo& info, bool isRegd, V1_0::RadioTechnologyFamily ratFamily) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getImsRegistrationStateResponse(toAidl(info), isRegd, - RadioTechnologyFamily(ratFamily)); + networkCb()->getImsRegistrationStateResponse(toAidl(info), isRegd, + RadioTechnologyFamily(ratFamily)); return {}; } @@ -189,8 +181,7 @@ Return RadioResponse::getNeighboringCidsResponse(const V1_0::RadioResponse Return RadioResponse::getNetworkSelectionModeResponse(const V1_0::RadioResponseInfo& info, bool manual) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getNetworkSelectionModeResponse(toAidl(info), manual); + networkCb()->getNetworkSelectionModeResponse(toAidl(info), manual); return {}; } @@ -198,8 +189,7 @@ Return RadioResponse::getOperatorResponse( // const V1_0::RadioResponseInfo& info, const hidl_string& longName, const hidl_string& shortName, const hidl_string& numeric) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getOperatorResponse(toAidl(info), longName, shortName, numeric); + networkCb()->getOperatorResponse(toAidl(info), longName, shortName, numeric); return {}; } @@ -220,16 +210,14 @@ Return RadioResponse::getSignalStrengthResponse_1_2(const V1_0::RadioRespo Return RadioResponse::getSignalStrengthResponse_1_4( const V1_0::RadioResponseInfo& info, const V1_4::SignalStrength& signalStrength) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getSignalStrengthResponse(toAidl(info), toAidl(signalStrength)); + networkCb()->getSignalStrengthResponse(toAidl(info), toAidl(signalStrength)); return {}; } Return RadioResponse::getSignalStrengthResponse_1_6( const V1_6::RadioResponseInfo& info, const V1_6::SignalStrength& signalStrength) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getSignalStrengthResponse(toAidl(info), toAidl(signalStrength)); + networkCb()->getSignalStrengthResponse(toAidl(info), toAidl(signalStrength)); return {}; } @@ -237,16 +225,14 @@ Return RadioResponse::getSystemSelectionChannelsResponse( const V1_6::RadioResponseInfo& info, const hidl_vec& specifiers) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getSystemSelectionChannelsResponse(toAidl(info), toAidl(specifiers)); + networkCb()->getSystemSelectionChannelsResponse(toAidl(info), toAidl(specifiers)); return {}; } Return RadioResponse::getVoiceRadioTechnologyResponse(const V1_0::RadioResponseInfo& info, V1_0::RadioTechnology rat) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getVoiceRadioTechnologyResponse(toAidl(info), RadioTechnology(rat)); + networkCb()->getVoiceRadioTechnologyResponse(toAidl(info), RadioTechnology(rat)); return {}; } @@ -267,24 +253,21 @@ Return RadioResponse::getVoiceRegistrationStateResponse_1_2( Return RadioResponse::getVoiceRegistrationStateResponse_1_5( const V1_0::RadioResponseInfo& info, const V1_5::RegStateResult& voiceRegResponse) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getVoiceRegistrationStateResponse(toAidl(info), toAidl(voiceRegResponse)); + networkCb()->getVoiceRegistrationStateResponse(toAidl(info), toAidl(voiceRegResponse)); return {}; } Return RadioResponse::getVoiceRegistrationStateResponse_1_6( const V1_6::RadioResponseInfo& info, const V1_6::RegStateResult& voiceRegResponse) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->getVoiceRegistrationStateResponse(toAidl(info), toAidl(voiceRegResponse)); + networkCb()->getVoiceRegistrationStateResponse(toAidl(info), toAidl(voiceRegResponse)); return {}; } Return RadioResponse::isNrDualConnectivityEnabledResponse(const V1_6::RadioResponseInfo& info, bool isEnabled) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->isNrDualConnectivityEnabledResponse(toAidl(info), isEnabled); + networkCb()->isNrDualConnectivityEnabledResponse(toAidl(info), isEnabled); return {}; } @@ -297,15 +280,13 @@ Return RadioResponse::pullLceDataResponse(const V1_0::RadioResponseInfo& i Return RadioResponse::setAllowedNetworkTypesBitmapResponse(const V1_6::RadioResponseInfo& i) { LOG_CALL << i.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setAllowedNetworkTypesBitmapResponse(toAidl(i)); + networkCb()->setAllowedNetworkTypesBitmapResponse(toAidl(i)); return {}; } Return RadioResponse::setPreferredNetworkTypeResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setAllowedNetworkTypesBitmapResponse(toAidl(info)); + networkCb()->setAllowedNetworkTypesBitmapResponse(toAidl(info)); return {}; } @@ -318,174 +299,151 @@ Return RadioResponse::setPreferredNetworkTypeBitmapResponse( Return RadioResponse::setBandModeResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setBandModeResponse(toAidl(info)); + networkCb()->setBandModeResponse(toAidl(info)); return {}; } Return RadioResponse::setBarringPasswordResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setBarringPasswordResponse(toAidl(info)); + networkCb()->setBarringPasswordResponse(toAidl(info)); return {}; } Return RadioResponse::setCdmaRoamingPreferenceResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setCdmaRoamingPreferenceResponse(toAidl(info)); + networkCb()->setCdmaRoamingPreferenceResponse(toAidl(info)); return {}; } Return RadioResponse::setCellInfoListRateResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setCellInfoListRateResponse(toAidl(info)); + networkCb()->setCellInfoListRateResponse(toAidl(info)); return {}; } Return RadioResponse::setIndicationFilterResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setIndicationFilterResponse(toAidl(info)); + networkCb()->setIndicationFilterResponse(toAidl(info)); return {}; } Return RadioResponse::setIndicationFilterResponse_1_5(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setIndicationFilterResponse(toAidl(info)); + networkCb()->setIndicationFilterResponse(toAidl(info)); return {}; } Return RadioResponse::setLinkCapacityReportingCriteriaResponse( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setLinkCapacityReportingCriteriaResponse(toAidl(info)); + networkCb()->setLinkCapacityReportingCriteriaResponse(toAidl(info)); return {}; } Return RadioResponse::setLinkCapacityReportingCriteriaResponse_1_5( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setLinkCapacityReportingCriteriaResponse(toAidl(info)); + networkCb()->setLinkCapacityReportingCriteriaResponse(toAidl(info)); return {}; } Return RadioResponse::setLocationUpdatesResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setLocationUpdatesResponse(toAidl(info)); + networkCb()->setLocationUpdatesResponse(toAidl(info)); return {}; } Return RadioResponse::setNetworkSelectionModeAutomaticResponse( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setNetworkSelectionModeAutomaticResponse(toAidl(info)); + networkCb()->setNetworkSelectionModeAutomaticResponse(toAidl(info)); return {}; } Return RadioResponse::setNetworkSelectionModeManualResponse( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setNetworkSelectionModeManualResponse(toAidl(info)); + networkCb()->setNetworkSelectionModeManualResponse(toAidl(info)); return {}; } Return RadioResponse::setNetworkSelectionModeManualResponse_1_5( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setNetworkSelectionModeManualResponse(toAidl(info)); + networkCb()->setNetworkSelectionModeManualResponse(toAidl(info)); return {}; } Return RadioResponse::setNrDualConnectivityStateResponse( const V1_6::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setNrDualConnectivityStateResponse(toAidl(info)); + networkCb()->setNrDualConnectivityStateResponse(toAidl(info)); return {}; } Return RadioResponse::setSignalStrengthReportingCriteriaResponse( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setSignalStrengthReportingCriteriaResponse(toAidl(info)); + networkCb()->setSignalStrengthReportingCriteriaResponse(toAidl(info)); return {}; } Return RadioResponse::setSignalStrengthReportingCriteriaResponse_1_5( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setSignalStrengthReportingCriteriaResponse(toAidl(info)); + networkCb()->setSignalStrengthReportingCriteriaResponse(toAidl(info)); return {}; } Return RadioResponse::setSuppServiceNotificationsResponse( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setSuppServiceNotificationsResponse(toAidl(info)); + networkCb()->setSuppServiceNotificationsResponse(toAidl(info)); return {}; } Return RadioResponse::setSystemSelectionChannelsResponse( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setSystemSelectionChannelsResponse(toAidl(info)); + networkCb()->setSystemSelectionChannelsResponse(toAidl(info)); return {}; } Return RadioResponse::setSystemSelectionChannelsResponse_1_5( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->setSystemSelectionChannelsResponse(toAidl(info)); + networkCb()->setSystemSelectionChannelsResponse(toAidl(info)); return {}; } Return RadioResponse::startNetworkScanResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->startNetworkScanResponse(toAidl(info)); + networkCb()->startNetworkScanResponse(toAidl(info)); return {}; } Return RadioResponse::startNetworkScanResponse_1_4(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->startNetworkScanResponse(toAidl(info)); + networkCb()->startNetworkScanResponse(toAidl(info)); return {}; } Return RadioResponse::startNetworkScanResponse_1_5(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->startNetworkScanResponse(toAidl(info)); + networkCb()->startNetworkScanResponse(toAidl(info)); return {}; } Return RadioResponse::stopNetworkScanResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->stopNetworkScanResponse(toAidl(info)); + networkCb()->stopNetworkScanResponse(toAidl(info)); return {}; } Return RadioResponse::supplyNetworkDepersonalizationResponse( const V1_0::RadioResponseInfo& info, int32_t remainingRetries) { LOG_CALL << info.serial; - CHECK_CB(mNetworkCb); - mNetworkCb->supplyNetworkDepersonalizationResponse(toAidl(info), remainingRetries); + networkCb()->supplyNetworkDepersonalizationResponse(toAidl(info), remainingRetries); return {}; } diff --git a/radio/aidl/compat/libradiocompat/sim/RadioIndication-sim.cpp b/radio/aidl/compat/libradiocompat/sim/RadioIndication-sim.cpp index 6b906c62f3..3938e004d3 100644 --- a/radio/aidl/compat/libradiocompat/sim/RadioIndication-sim.cpp +++ b/radio/aidl/compat/libradiocompat/sim/RadioIndication-sim.cpp @@ -29,29 +29,29 @@ namespace android::hardware::radio::compat { namespace aidl = ::aidl::android::hardware::radio::sim; void RadioIndication::setResponseFunction(std::shared_ptr simCb) { - CHECK(simCb); mSimCb = simCb; } +std::shared_ptr RadioIndication::simCb() { + return mSimCb.get(); +} + Return RadioIndication::carrierInfoForImsiEncryption(V1_0::RadioIndicationType type) { LOG_CALL << type; - CHECK_CB(mSimCb); - mSimCb->carrierInfoForImsiEncryption(toAidl(type)); + simCb()->carrierInfoForImsiEncryption(toAidl(type)); return {}; } Return RadioIndication::cdmaSubscriptionSourceChanged( V1_0::RadioIndicationType type, V1_0::CdmaSubscriptionSource cdmaSource) { LOG_CALL << type; - CHECK_CB(mSimCb); - mSimCb->cdmaSubscriptionSourceChanged(toAidl(type), aidl::CdmaSubscriptionSource(cdmaSource)); + simCb()->cdmaSubscriptionSourceChanged(toAidl(type), aidl::CdmaSubscriptionSource(cdmaSource)); return {}; } Return RadioIndication::simPhonebookChanged(V1_0::RadioIndicationType type) { LOG_CALL << type; - CHECK_CB(mSimCb); - mSimCb->simPhonebookChanged(toAidl(type)); + simCb()->simPhonebookChanged(toAidl(type)); return {}; } @@ -59,62 +59,54 @@ Return RadioIndication::simPhonebookRecordsReceived( V1_0::RadioIndicationType type, V1_6::PbReceivedStatus status, const hidl_vec& rec) { LOG_CALL << type; - CHECK_CB(mSimCb); - mSimCb->simPhonebookRecordsReceived(toAidl(type), aidl::PbReceivedStatus(status), toAidl(rec)); + simCb()->simPhonebookRecordsReceived(toAidl(type), aidl::PbReceivedStatus(status), toAidl(rec)); return {}; } Return RadioIndication::simRefresh(V1_0::RadioIndicationType type, const V1_0::SimRefreshResult& refreshResult) { LOG_CALL << type; - CHECK_CB(mSimCb); - mSimCb->simRefresh(toAidl(type), toAidl(refreshResult)); + simCb()->simRefresh(toAidl(type), toAidl(refreshResult)); return {}; } Return RadioIndication::simStatusChanged(V1_0::RadioIndicationType type) { LOG_CALL << type; - CHECK_CB(mSimCb); - mSimCb->simStatusChanged(toAidl(type)); + simCb()->simStatusChanged(toAidl(type)); return {}; } Return RadioIndication::stkEventNotify(V1_0::RadioIndicationType type, const hidl_string& cmd) { LOG_CALL << type; - CHECK_CB(mSimCb); - mSimCb->stkEventNotify(toAidl(type), cmd); + simCb()->stkEventNotify(toAidl(type), cmd); return {}; } Return RadioIndication::stkProactiveCommand(V1_0::RadioIndicationType type, const hidl_string& cmd) { LOG_CALL << type; - CHECK_CB(mSimCb); - mSimCb->stkProactiveCommand(toAidl(type), cmd); + simCb()->stkProactiveCommand(toAidl(type), cmd); return {}; } Return RadioIndication::stkSessionEnd(V1_0::RadioIndicationType type) { LOG_CALL << type; - CHECK_CB(mSimCb); - mSimCb->stkSessionEnd(toAidl(type)); + simCb()->stkSessionEnd(toAidl(type)); return {}; } Return RadioIndication::subscriptionStatusChanged(V1_0::RadioIndicationType type, bool activate) { LOG_CALL << type; - CHECK_CB(mSimCb); - mSimCb->subscriptionStatusChanged(toAidl(type), activate); + simCb()->subscriptionStatusChanged(toAidl(type), activate); return {}; } Return RadioIndication::uiccApplicationsEnablementChanged(V1_0::RadioIndicationType type, bool enabled) { LOG_CALL << type; - CHECK_CB(mSimCb); - mSimCb->uiccApplicationsEnablementChanged(toAidl(type), enabled); + simCb()->uiccApplicationsEnablementChanged(toAidl(type), enabled); return {}; } diff --git a/radio/aidl/compat/libradiocompat/sim/RadioResponse-sim.cpp b/radio/aidl/compat/libradiocompat/sim/RadioResponse-sim.cpp index 2dfbc50fcd..3ad9130314 100644 --- a/radio/aidl/compat/libradiocompat/sim/RadioResponse-sim.cpp +++ b/radio/aidl/compat/libradiocompat/sim/RadioResponse-sim.cpp @@ -29,48 +29,46 @@ namespace android::hardware::radio::compat { namespace aidl = ::aidl::android::hardware::radio::sim; void RadioResponse::setResponseFunction(std::shared_ptr simCb) { - CHECK(simCb); mSimCb = simCb; } +std::shared_ptr RadioResponse::simCb() { + return mSimCb.get(); +} + Return RadioResponse::areUiccApplicationsEnabledResponse(const V1_0::RadioResponseInfo& info, bool enabled) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->areUiccApplicationsEnabledResponse(toAidl(info), enabled); + simCb()->areUiccApplicationsEnabledResponse(toAidl(info), enabled); return {}; } Return RadioResponse::changeIccPin2ForAppResponse(const V1_0::RadioResponseInfo& info, int32_t remainingRetries) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->changeIccPin2ForAppResponse(toAidl(info), remainingRetries); + simCb()->changeIccPin2ForAppResponse(toAidl(info), remainingRetries); return {}; } Return RadioResponse::changeIccPinForAppResponse(const V1_0::RadioResponseInfo& info, int32_t remainingRetries) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->changeIccPinForAppResponse(toAidl(info), remainingRetries); + simCb()->changeIccPinForAppResponse(toAidl(info), remainingRetries); return {}; } Return RadioResponse::enableUiccApplicationsResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->enableUiccApplicationsResponse(toAidl(info)); + simCb()->enableUiccApplicationsResponse(toAidl(info)); return {}; } Return RadioResponse::getAllowedCarriersResponse( // const V1_0::RadioResponseInfo& info, bool allAllowed, const V1_0::CarrierRestrictions& cr) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); aidl::CarrierRestrictions aidlCr = toAidl(cr); if (allAllowed) aidlCr = {}; - mSimCb->getAllowedCarriersResponse(toAidl(info), aidlCr, {}); + simCb()->getAllowedCarriersResponse(toAidl(info), aidlCr, {}); return {}; } @@ -78,9 +76,8 @@ Return RadioResponse::getAllowedCarriersResponse_1_4( const V1_0::RadioResponseInfo& info, const V1_4::CarrierRestrictionsWithPriority& carriers, V1_4::SimLockMultiSimPolicy multiSimPolicy) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->getAllowedCarriersResponse(toAidl(info), toAidl(carriers), - aidl::SimLockMultiSimPolicy(multiSimPolicy)); + simCb()->getAllowedCarriersResponse(toAidl(info), toAidl(carriers), + aidl::SimLockMultiSimPolicy(multiSimPolicy)); return {}; } @@ -88,133 +85,116 @@ Return RadioResponse::getCDMASubscriptionResponse( const V1_0::RadioResponseInfo& info, const hidl_string& mdn, const hidl_string& hSid, const hidl_string& hNid, const hidl_string& min, const hidl_string& prl) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->getCdmaSubscriptionResponse(toAidl(info), mdn, hSid, hNid, min, prl); + simCb()->getCdmaSubscriptionResponse(toAidl(info), mdn, hSid, hNid, min, prl); return {}; } Return RadioResponse::getCdmaSubscriptionSourceResponse(const V1_0::RadioResponseInfo& info, V1_0::CdmaSubscriptionSource s) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->getCdmaSubscriptionSourceResponse(toAidl(info), aidl::CdmaSubscriptionSource(s)); + simCb()->getCdmaSubscriptionSourceResponse(toAidl(info), aidl::CdmaSubscriptionSource(s)); return {}; } Return RadioResponse::getFacilityLockForAppResponse(const V1_0::RadioResponseInfo& info, int32_t response) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->getFacilityLockForAppResponse(toAidl(info), response); + simCb()->getFacilityLockForAppResponse(toAidl(info), response); return {}; } Return RadioResponse::getIccCardStatusResponse(const V1_0::RadioResponseInfo& info, const V1_0::CardStatus& cardStatus) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->getIccCardStatusResponse(toAidl(info), toAidl(cardStatus)); + simCb()->getIccCardStatusResponse(toAidl(info), toAidl(cardStatus)); return {}; } Return RadioResponse::getIccCardStatusResponse_1_2(const V1_0::RadioResponseInfo& info, const V1_2::CardStatus& cardStatus) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->getIccCardStatusResponse(toAidl(info), toAidl(cardStatus)); + simCb()->getIccCardStatusResponse(toAidl(info), toAidl(cardStatus)); return {}; } Return RadioResponse::getIccCardStatusResponse_1_4(const V1_0::RadioResponseInfo& info, const V1_4::CardStatus& cardStatus) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->getIccCardStatusResponse(toAidl(info), toAidl(cardStatus)); + simCb()->getIccCardStatusResponse(toAidl(info), toAidl(cardStatus)); return {}; } Return RadioResponse::getIccCardStatusResponse_1_5(const V1_0::RadioResponseInfo& info, const V1_5::CardStatus& cardStatus) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->getIccCardStatusResponse(toAidl(info), toAidl(cardStatus)); + simCb()->getIccCardStatusResponse(toAidl(info), toAidl(cardStatus)); return {}; } Return RadioResponse::getIMSIForAppResponse(const V1_0::RadioResponseInfo& info, const hidl_string& imsi) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->getImsiForAppResponse(toAidl(info), imsi); + simCb()->getImsiForAppResponse(toAidl(info), imsi); return {}; } Return RadioResponse::getSimPhonebookCapacityResponse( const V1_6::RadioResponseInfo& info, const V1_6::PhonebookCapacity& capacity) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->getSimPhonebookCapacityResponse(toAidl(info), toAidl(capacity)); + simCb()->getSimPhonebookCapacityResponse(toAidl(info), toAidl(capacity)); return {}; } Return RadioResponse::getSimPhonebookRecordsResponse(const V1_6::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->getSimPhonebookRecordsResponse(toAidl(info)); + simCb()->getSimPhonebookRecordsResponse(toAidl(info)); return {}; } Return RadioResponse::iccCloseLogicalChannelResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->iccCloseLogicalChannelResponse(toAidl(info)); + simCb()->iccCloseLogicalChannelResponse(toAidl(info)); return {}; } Return RadioResponse::iccIOForAppResponse(const V1_0::RadioResponseInfo& info, const V1_0::IccIoResult& iccIo) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->iccIoForAppResponse(toAidl(info), toAidl(iccIo)); + simCb()->iccIoForAppResponse(toAidl(info), toAidl(iccIo)); return {}; } Return RadioResponse::iccOpenLogicalChannelResponse( // const V1_0::RadioResponseInfo& info, int32_t chanId, const hidl_vec& selectResp) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->iccOpenLogicalChannelResponse(toAidl(info), chanId, toAidl(selectResp)); + simCb()->iccOpenLogicalChannelResponse(toAidl(info), chanId, toAidl(selectResp)); return {}; } Return RadioResponse::iccTransmitApduBasicChannelResponse(const V1_0::RadioResponseInfo& info, const V1_0::IccIoResult& result) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->iccTransmitApduBasicChannelResponse(toAidl(info), toAidl(result)); + simCb()->iccTransmitApduBasicChannelResponse(toAidl(info), toAidl(result)); return {}; } Return RadioResponse::iccTransmitApduLogicalChannelResponse( const V1_0::RadioResponseInfo& info, const V1_0::IccIoResult& result) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->iccTransmitApduLogicalChannelResponse(toAidl(info), toAidl(result)); + simCb()->iccTransmitApduLogicalChannelResponse(toAidl(info), toAidl(result)); return {}; } Return RadioResponse::reportStkServiceIsRunningResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->reportStkServiceIsRunningResponse(toAidl(info)); + simCb()->reportStkServiceIsRunningResponse(toAidl(info)); return {}; } Return RadioResponse::requestIccSimAuthenticationResponse(const V1_0::RadioResponseInfo& info, const V1_0::IccIoResult& result) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->requestIccSimAuthenticationResponse(toAidl(info), toAidl(result)); + simCb()->requestIccSimAuthenticationResponse(toAidl(info), toAidl(result)); return {}; } @@ -228,121 +208,105 @@ Return RadioResponse::requestIsimAuthenticationResponse(const V1_0::RadioR Return RadioResponse::sendEnvelopeResponse(const V1_0::RadioResponseInfo& info, const hidl_string& commandResponse) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->sendEnvelopeResponse(toAidl(info), commandResponse); + simCb()->sendEnvelopeResponse(toAidl(info), commandResponse); return {}; } Return RadioResponse::sendEnvelopeWithStatusResponse(const V1_0::RadioResponseInfo& info, const V1_0::IccIoResult& iccIo) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->sendEnvelopeWithStatusResponse(toAidl(info), toAidl(iccIo)); + simCb()->sendEnvelopeWithStatusResponse(toAidl(info), toAidl(iccIo)); return {}; } Return RadioResponse::sendTerminalResponseToSimResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->sendTerminalResponseToSimResponse(toAidl(info)); + simCb()->sendTerminalResponseToSimResponse(toAidl(info)); return {}; } Return RadioResponse::setAllowedCarriersResponse(const V1_0::RadioResponseInfo& info, int32_t numAllowed) { LOG_CALL << info.serial << ' ' << numAllowed; - CHECK_CB(mSimCb); - mSimCb->setAllowedCarriersResponse(toAidl(info)); + simCb()->setAllowedCarriersResponse(toAidl(info)); return {}; } Return RadioResponse::setAllowedCarriersResponse_1_4(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->setAllowedCarriersResponse(toAidl(info)); + simCb()->setAllowedCarriersResponse(toAidl(info)); return {}; } Return RadioResponse::setCarrierInfoForImsiEncryptionResponse( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->setCarrierInfoForImsiEncryptionResponse(toAidl(info)); + simCb()->setCarrierInfoForImsiEncryptionResponse(toAidl(info)); return {}; } Return RadioResponse::setCdmaSubscriptionSourceResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->setCdmaSubscriptionSourceResponse(toAidl(info)); + simCb()->setCdmaSubscriptionSourceResponse(toAidl(info)); return {}; } Return RadioResponse::setFacilityLockForAppResponse(const V1_0::RadioResponseInfo& info, int32_t retry) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->setFacilityLockForAppResponse(toAidl(info), retry); + simCb()->setFacilityLockForAppResponse(toAidl(info), retry); return {}; } Return RadioResponse::setSimCardPowerResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->setSimCardPowerResponse(toAidl(info)); + simCb()->setSimCardPowerResponse(toAidl(info)); return {}; } Return RadioResponse::setSimCardPowerResponse_1_1(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->setSimCardPowerResponse(toAidl(info)); + simCb()->setSimCardPowerResponse(toAidl(info)); return {}; } Return RadioResponse::setSimCardPowerResponse_1_6(const V1_6::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->setSimCardPowerResponse(toAidl(info)); + simCb()->setSimCardPowerResponse(toAidl(info)); return {}; } Return RadioResponse::setUiccSubscriptionResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->setUiccSubscriptionResponse(toAidl(info)); + simCb()->setUiccSubscriptionResponse(toAidl(info)); return {}; } Return RadioResponse::supplyIccPin2ForAppResponse(const V1_0::RadioResponseInfo& info, int32_t remainingRetries) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->supplyIccPin2ForAppResponse(toAidl(info), remainingRetries); + simCb()->supplyIccPin2ForAppResponse(toAidl(info), remainingRetries); return {}; } Return RadioResponse::supplyIccPinForAppResponse(const V1_0::RadioResponseInfo& info, int32_t remainingRetries) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->supplyIccPinForAppResponse(toAidl(info), remainingRetries); + simCb()->supplyIccPinForAppResponse(toAidl(info), remainingRetries); return {}; } Return RadioResponse::supplyIccPuk2ForAppResponse(const V1_0::RadioResponseInfo& info, int32_t remainingRetries) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->supplyIccPuk2ForAppResponse(toAidl(info), remainingRetries); + simCb()->supplyIccPuk2ForAppResponse(toAidl(info), remainingRetries); return {}; } Return RadioResponse::supplyIccPukForAppResponse(const V1_0::RadioResponseInfo& info, int32_t remainingRetries) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->supplyIccPukForAppResponse(toAidl(info), remainingRetries); + simCb()->supplyIccPukForAppResponse(toAidl(info), remainingRetries); return {}; } @@ -350,16 +314,14 @@ Return RadioResponse::supplySimDepersonalizationResponse(const V1_0::Radio V1_5::PersoSubstate persoType, int32_t rRet) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->supplySimDepersonalizationResponse(toAidl(info), aidl::PersoSubstate(persoType), rRet); + simCb()->supplySimDepersonalizationResponse(toAidl(info), aidl::PersoSubstate(persoType), rRet); return {}; } Return RadioResponse::updateSimPhonebookRecordsResponse(const V1_6::RadioResponseInfo& info, int32_t updatedRecordIndex) { LOG_CALL << info.serial; - CHECK_CB(mSimCb); - mSimCb->updateSimPhonebookRecordsResponse(toAidl(info), updatedRecordIndex); + simCb()->updateSimPhonebookRecordsResponse(toAidl(info), updatedRecordIndex); return {}; } diff --git a/radio/aidl/compat/libradiocompat/sim/RadioSim.cpp b/radio/aidl/compat/libradiocompat/sim/RadioSim.cpp index ca27918024..5fecd8838b 100644 --- a/radio/aidl/compat/libradiocompat/sim/RadioSim.cpp +++ b/radio/aidl/compat/libradiocompat/sim/RadioSim.cpp @@ -30,6 +30,10 @@ using ::ndk::ScopedAStatus; namespace aidl = ::aidl::android::hardware::radio::sim; constexpr auto ok = &ScopedAStatus::ok; +std::shared_ptr RadioSim::respond() { + return mRadioResponse->simCb(); +} + ScopedAStatus RadioSim::areUiccApplicationsEnabled(int32_t serial) { LOG_CALL << serial; mHal1_5->areUiccApplicationsEnabled(serial); @@ -99,7 +103,7 @@ ScopedAStatus RadioSim::getSimPhonebookCapacity(int32_t serial) { if (mHal1_6) { mHal1_6->getSimPhonebookCapacity(serial); } else { - respond().getSimPhonebookCapacityResponse(notSupported(serial), {}); + respond()->getSimPhonebookCapacityResponse(notSupported(serial), {}); } return ok(); } @@ -109,7 +113,7 @@ ScopedAStatus RadioSim::getSimPhonebookRecords(int32_t serial) { if (mHal1_6) { mHal1_6->getSimPhonebookRecords(serial); } else { - respond().getSimPhonebookRecordsResponse(notSupported(serial)); + respond()->getSimPhonebookRecordsResponse(notSupported(serial)); } return ok(); } @@ -287,7 +291,7 @@ ScopedAStatus RadioSim::updateSimPhonebookRecords(int32_t serial, if (mHal1_6) { mHal1_6->updateSimPhonebookRecords(serial, toHidl(recordInfo)); } else { - respond().updateSimPhonebookRecordsResponse(notSupported(serial), 0); + respond()->updateSimPhonebookRecordsResponse(notSupported(serial), 0); } return ok(); } diff --git a/radio/aidl/compat/libradiocompat/voice/RadioIndication-voice.cpp b/radio/aidl/compat/libradiocompat/voice/RadioIndication-voice.cpp index 6d9bda8dea..359fce0321 100644 --- a/radio/aidl/compat/libradiocompat/voice/RadioIndication-voice.cpp +++ b/radio/aidl/compat/libradiocompat/voice/RadioIndication-voice.cpp @@ -29,113 +29,102 @@ namespace android::hardware::radio::compat { namespace aidl = ::aidl::android::hardware::radio::voice; void RadioIndication::setResponseFunction(std::shared_ptr voiceCb) { - CHECK(voiceCb); mVoiceCb = voiceCb; } +std::shared_ptr RadioIndication::voiceCb() { + return mVoiceCb.get(); +} + Return RadioIndication::callRing(V1_0::RadioIndicationType type, bool isGsm, const V1_0::CdmaSignalInfoRecord& record) { LOG_CALL << type; - CHECK_CB(mVoiceCb); - mVoiceCb->callRing(toAidl(type), isGsm, toAidl(record)); + voiceCb()->callRing(toAidl(type), isGsm, toAidl(record)); return {}; } Return RadioIndication::callStateChanged(V1_0::RadioIndicationType type) { LOG_CALL << type; - CHECK_CB(mVoiceCb); - mVoiceCb->callStateChanged(toAidl(type)); + voiceCb()->callStateChanged(toAidl(type)); return {}; } Return RadioIndication::cdmaCallWaiting(V1_0::RadioIndicationType type, const V1_0::CdmaCallWaiting& callWaitingRecord) { LOG_CALL << type; - CHECK_CB(mVoiceCb); - mVoiceCb->cdmaCallWaiting(toAidl(type), toAidl(callWaitingRecord)); + voiceCb()->cdmaCallWaiting(toAidl(type), toAidl(callWaitingRecord)); return {}; } Return RadioIndication::cdmaInfoRec(V1_0::RadioIndicationType type, const V1_0::CdmaInformationRecords& records) { LOG_CALL << type; - CHECK_CB(mVoiceCb); - mVoiceCb->cdmaInfoRec(toAidl(type), toAidl(records.infoRec)); + voiceCb()->cdmaInfoRec(toAidl(type), toAidl(records.infoRec)); return {}; } Return RadioIndication::cdmaOtaProvisionStatus(V1_0::RadioIndicationType type, V1_0::CdmaOtaProvisionStatus status) { LOG_CALL << type; - CHECK_CB(mVoiceCb); - mVoiceCb->cdmaOtaProvisionStatus(toAidl(type), aidl::CdmaOtaProvisionStatus(status)); + voiceCb()->cdmaOtaProvisionStatus(toAidl(type), aidl::CdmaOtaProvisionStatus(status)); return {}; } Return RadioIndication::currentEmergencyNumberList( V1_0::RadioIndicationType type, const hidl_vec& emergencyNumbers) { LOG_CALL << type; - CHECK_CB(mVoiceCb); - mVoiceCb->currentEmergencyNumberList(toAidl(type), toAidl(emergencyNumbers)); + voiceCb()->currentEmergencyNumberList(toAidl(type), toAidl(emergencyNumbers)); return {}; } Return RadioIndication::enterEmergencyCallbackMode(V1_0::RadioIndicationType type) { LOG_CALL << type; - CHECK_CB(mVoiceCb); - mVoiceCb->enterEmergencyCallbackMode(toAidl(type)); + voiceCb()->enterEmergencyCallbackMode(toAidl(type)); return {}; } Return RadioIndication::exitEmergencyCallbackMode(V1_0::RadioIndicationType type) { LOG_CALL << type; - CHECK_CB(mVoiceCb); - mVoiceCb->exitEmergencyCallbackMode(toAidl(type)); + voiceCb()->exitEmergencyCallbackMode(toAidl(type)); return {}; } Return RadioIndication::indicateRingbackTone(V1_0::RadioIndicationType type, bool start) { LOG_CALL << type; - CHECK_CB(mVoiceCb); - mVoiceCb->indicateRingbackTone(toAidl(type), start); + voiceCb()->indicateRingbackTone(toAidl(type), start); return {}; } Return RadioIndication::onSupplementaryServiceIndication(V1_0::RadioIndicationType type, const V1_0::StkCcUnsolSsResult& ss) { LOG_CALL << type; - CHECK_CB(mVoiceCb); - mVoiceCb->onSupplementaryServiceIndication(toAidl(type), toAidl(ss)); + voiceCb()->onSupplementaryServiceIndication(toAidl(type), toAidl(ss)); return {}; } Return RadioIndication::resendIncallMute(V1_0::RadioIndicationType type) { LOG_CALL << type; - CHECK_CB(mVoiceCb); - mVoiceCb->resendIncallMute(toAidl(type)); + voiceCb()->resendIncallMute(toAidl(type)); return {}; } Return RadioIndication::srvccStateNotify(V1_0::RadioIndicationType type, V1_0::SrvccState state) { LOG_CALL << type; - CHECK_CB(mVoiceCb); - mVoiceCb->srvccStateNotify(toAidl(type), aidl::SrvccState(state)); + voiceCb()->srvccStateNotify(toAidl(type), aidl::SrvccState(state)); return {}; } Return RadioIndication::stkCallControlAlphaNotify(V1_0::RadioIndicationType type, const hidl_string& alpha) { LOG_CALL << type; - CHECK_CB(mVoiceCb); - mVoiceCb->stkCallControlAlphaNotify(toAidl(type), alpha); + voiceCb()->stkCallControlAlphaNotify(toAidl(type), alpha); return {}; } Return RadioIndication::stkCallSetup(V1_0::RadioIndicationType type, int64_t timeout) { LOG_CALL << type; - CHECK_CB(mVoiceCb); - mVoiceCb->stkCallSetup(toAidl(type), timeout); + voiceCb()->stkCallSetup(toAidl(type), timeout); return {}; } diff --git a/radio/aidl/compat/libradiocompat/voice/RadioResponse-voice.cpp b/radio/aidl/compat/libradiocompat/voice/RadioResponse-voice.cpp index 0a64c56be2..d233548233 100644 --- a/radio/aidl/compat/libradiocompat/voice/RadioResponse-voice.cpp +++ b/radio/aidl/compat/libradiocompat/voice/RadioResponse-voice.cpp @@ -29,265 +29,233 @@ namespace android::hardware::radio::compat { namespace aidl = ::aidl::android::hardware::radio::voice; void RadioResponse::setResponseFunction(std::shared_ptr voiceCb) { - CHECK(voiceCb); mVoiceCb = voiceCb; } +std::shared_ptr RadioResponse::voiceCb() { + return mVoiceCb.get(); +} + Return RadioResponse::acceptCallResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->acceptCallResponse(toAidl(info)); + voiceCb()->acceptCallResponse(toAidl(info)); return {}; } Return RadioResponse::conferenceResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->conferenceResponse(toAidl(info)); + voiceCb()->conferenceResponse(toAidl(info)); return {}; } Return RadioResponse::dialResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->dialResponse(toAidl(info)); + voiceCb()->dialResponse(toAidl(info)); return {}; } Return RadioResponse::emergencyDialResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->emergencyDialResponse(toAidl(info)); + voiceCb()->emergencyDialResponse(toAidl(info)); return {}; } Return RadioResponse::exitEmergencyCallbackModeResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->exitEmergencyCallbackModeResponse(toAidl(info)); + voiceCb()->exitEmergencyCallbackModeResponse(toAidl(info)); return {}; } Return RadioResponse::explicitCallTransferResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->explicitCallTransferResponse(toAidl(info)); + voiceCb()->explicitCallTransferResponse(toAidl(info)); return {}; } Return RadioResponse::getCallForwardStatusResponse( const V1_0::RadioResponseInfo& info, const hidl_vec& callFwdInfos) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->getCallForwardStatusResponse(toAidl(info), toAidl(callFwdInfos)); + voiceCb()->getCallForwardStatusResponse(toAidl(info), toAidl(callFwdInfos)); return {}; } Return RadioResponse::getCallWaitingResponse(const V1_0::RadioResponseInfo& info, bool enable, int32_t serviceClass) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->getCallWaitingResponse(toAidl(info), enable, serviceClass); + voiceCb()->getCallWaitingResponse(toAidl(info), enable, serviceClass); return {}; } Return RadioResponse::getClipResponse(const V1_0::RadioResponseInfo& info, V1_0::ClipStatus status) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->getClipResponse(toAidl(info), aidl::ClipStatus(status)); + voiceCb()->getClipResponse(toAidl(info), aidl::ClipStatus(status)); return {}; } Return RadioResponse::getClirResponse(const V1_0::RadioResponseInfo& info, int32_t n, int32_t m) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->getClirResponse(toAidl(info), n, m); + voiceCb()->getClirResponse(toAidl(info), n, m); return {}; } Return RadioResponse::getCurrentCallsResponse(const V1_0::RadioResponseInfo& info, const hidl_vec& calls) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->getCurrentCallsResponse(toAidl(info), toAidl(calls)); + voiceCb()->getCurrentCallsResponse(toAidl(info), toAidl(calls)); return {}; } Return RadioResponse::getCurrentCallsResponse_1_2(const V1_0::RadioResponseInfo& info, const hidl_vec& calls) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->getCurrentCallsResponse(toAidl(info), toAidl(calls)); + voiceCb()->getCurrentCallsResponse(toAidl(info), toAidl(calls)); return {}; } Return RadioResponse::getCurrentCallsResponse_1_6(const V1_6::RadioResponseInfo& info, const hidl_vec& calls) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->getCurrentCallsResponse(toAidl(info), toAidl(calls)); + voiceCb()->getCurrentCallsResponse(toAidl(info), toAidl(calls)); return {}; } Return RadioResponse::getLastCallFailCauseResponse( const V1_0::RadioResponseInfo& info, const V1_0::LastCallFailCauseInfo& failCauseinfo) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->getLastCallFailCauseResponse(toAidl(info), toAidl(failCauseinfo)); + voiceCb()->getLastCallFailCauseResponse(toAidl(info), toAidl(failCauseinfo)); return {}; } Return RadioResponse::getMuteResponse(const V1_0::RadioResponseInfo& info, bool enable) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->getMuteResponse(toAidl(info), enable); + voiceCb()->getMuteResponse(toAidl(info), enable); return {}; } Return RadioResponse::getPreferredVoicePrivacyResponse(const V1_0::RadioResponseInfo& info, bool enable) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->getPreferredVoicePrivacyResponse(toAidl(info), enable); + voiceCb()->getPreferredVoicePrivacyResponse(toAidl(info), enable); return {}; } Return RadioResponse::getTTYModeResponse(const V1_0::RadioResponseInfo& info, V1_0::TtyMode mode) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->getTtyModeResponse(toAidl(info), aidl::TtyMode(mode)); + voiceCb()->getTtyModeResponse(toAidl(info), aidl::TtyMode(mode)); return {}; } Return RadioResponse::handleStkCallSetupRequestFromSimResponse( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->handleStkCallSetupRequestFromSimResponse(toAidl(info)); + voiceCb()->handleStkCallSetupRequestFromSimResponse(toAidl(info)); return {}; } Return RadioResponse::hangupConnectionResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->hangupConnectionResponse(toAidl(info)); + voiceCb()->hangupConnectionResponse(toAidl(info)); return {}; } Return RadioResponse::hangupForegroundResumeBackgroundResponse( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->hangupForegroundResumeBackgroundResponse(toAidl(info)); + voiceCb()->hangupForegroundResumeBackgroundResponse(toAidl(info)); return {}; } Return RadioResponse::hangupWaitingOrBackgroundResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->hangupWaitingOrBackgroundResponse(toAidl(info)); + voiceCb()->hangupWaitingOrBackgroundResponse(toAidl(info)); return {}; } Return RadioResponse::rejectCallResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->rejectCallResponse(toAidl(info)); + voiceCb()->rejectCallResponse(toAidl(info)); return {}; } Return RadioResponse::sendBurstDtmfResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->sendBurstDtmfResponse(toAidl(info)); + voiceCb()->sendBurstDtmfResponse(toAidl(info)); return {}; } Return RadioResponse::sendCDMAFeatureCodeResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->sendCdmaFeatureCodeResponse(toAidl(info)); + voiceCb()->sendCdmaFeatureCodeResponse(toAidl(info)); return {}; } Return RadioResponse::sendDtmfResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->sendDtmfResponse(toAidl(info)); + voiceCb()->sendDtmfResponse(toAidl(info)); return {}; } Return RadioResponse::separateConnectionResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->separateConnectionResponse(toAidl(info)); + voiceCb()->separateConnectionResponse(toAidl(info)); return {}; } Return RadioResponse::setCallForwardResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->setCallForwardResponse(toAidl(info)); + voiceCb()->setCallForwardResponse(toAidl(info)); return {}; } Return RadioResponse::setCallWaitingResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->setCallWaitingResponse(toAidl(info)); + voiceCb()->setCallWaitingResponse(toAidl(info)); return {}; } Return RadioResponse::setClirResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->setClirResponse(toAidl(info)); + voiceCb()->setClirResponse(toAidl(info)); return {}; } Return RadioResponse::setMuteResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->setMuteResponse(toAidl(info)); + voiceCb()->setMuteResponse(toAidl(info)); return {}; } Return RadioResponse::setPreferredVoicePrivacyResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->setPreferredVoicePrivacyResponse(toAidl(info)); + voiceCb()->setPreferredVoicePrivacyResponse(toAidl(info)); return {}; } Return RadioResponse::setTTYModeResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->setTtyModeResponse(toAidl(info)); + voiceCb()->setTtyModeResponse(toAidl(info)); return {}; } Return RadioResponse::startDtmfResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->startDtmfResponse(toAidl(info)); + voiceCb()->startDtmfResponse(toAidl(info)); return {}; } Return RadioResponse::stopDtmfResponse(const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->stopDtmfResponse(toAidl(info)); + voiceCb()->stopDtmfResponse(toAidl(info)); return {}; } Return RadioResponse::switchWaitingOrHoldingAndActiveResponse( const V1_0::RadioResponseInfo& info) { LOG_CALL << info.serial; - CHECK_CB(mVoiceCb); - mVoiceCb->switchWaitingOrHoldingAndActiveResponse(toAidl(info)); + voiceCb()->switchWaitingOrHoldingAndActiveResponse(toAidl(info)); return {}; } diff --git a/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp b/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp index 16c6b14632..d4c0c92e3a 100644 --- a/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp +++ b/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp @@ -30,6 +30,10 @@ using ::ndk::ScopedAStatus; namespace aidl = ::aidl::android::hardware::radio::voice; constexpr auto ok = &ScopedAStatus::ok; +std::shared_ptr RadioVoice::respond() { + return mRadioResponse->voiceCb(); +} + ScopedAStatus RadioVoice::acceptCall(int32_t serial) { LOG_CALL << serial; mHal1_5->acceptCall(serial); @@ -152,7 +156,7 @@ ScopedAStatus RadioVoice::hangupWaitingOrBackground(int32_t serial) { ScopedAStatus RadioVoice::isVoNrEnabled(int32_t serial) { LOG_CALL << serial; - // TODO(b/203699028): can't call isVoNrEnabledResponse with 1.6 callback + respond()->isVoNrEnabledResponse(notSupported(serial), false); return ok(); } @@ -245,7 +249,8 @@ ScopedAStatus RadioVoice::setTtyMode(int32_t serial, aidl::TtyMode mode) { ndk::ScopedAStatus RadioVoice::setVoNrEnabled(int32_t serial, [[maybe_unused]] bool enable) { LOG_CALL << serial; - // TODO(b/203699028): should set `persist.radio.is_vonr_enabled_` property instead + // Note: a workaround for older HALs could also be setting persist.radio.is_vonr_enabled_ + respond()->setVoNrEnabledResponse(notSupported(serial)); return ok(); } From 571542b4be04ba0c07e7a7bcdd101a9cf89fe67b Mon Sep 17 00:00:00 2001 From: Tomasz Wasilczyk Date: Wed, 15 Dec 2021 16:15:45 -0800 Subject: [PATCH 2/4] Use most recent available HAL methods. Bug: 207695009 Test: Build with ag/16322062 and a handful of patches from b/207695009, try to use telephony stack Change-Id: I7db1747550493a634290a968e3f5bbada66f322f Merged-In: I7db1747550493a634290a968e3f5bbada66f322f --- .../compat/libradiocompat/data/RadioData.cpp | 6 +++- .../messaging/RadioMessaging.cpp | 24 ++++++++++++--- .../libradiocompat/network/RadioNetwork.cpp | 30 ++++++++++++++----- .../compat/libradiocompat/sim/RadioSim.cpp | 2 +- .../libradiocompat/voice/RadioVoice.cpp | 22 ++++++++++---- 5 files changed, 65 insertions(+), 19 deletions(-) diff --git a/radio/aidl/compat/libradiocompat/data/RadioData.cpp b/radio/aidl/compat/libradiocompat/data/RadioData.cpp index c819251831..91529c9af3 100644 --- a/radio/aidl/compat/libradiocompat/data/RadioData.cpp +++ b/radio/aidl/compat/libradiocompat/data/RadioData.cpp @@ -64,7 +64,11 @@ ScopedAStatus RadioData::deactivateDataCall(int32_t serial, int32_t cid, ScopedAStatus RadioData::getDataCallList(int32_t serial) { LOG_CALL << serial; - mHal1_5->getDataCallList(serial); + if (mHal1_6) { + mHal1_6->getDataCallList_1_6(serial); + } else { + mHal1_5->getDataCallList(serial); + } return ok(); } diff --git a/radio/aidl/compat/libradiocompat/messaging/RadioMessaging.cpp b/radio/aidl/compat/libradiocompat/messaging/RadioMessaging.cpp index 79e7c01441..650d1910ff 100644 --- a/radio/aidl/compat/libradiocompat/messaging/RadioMessaging.cpp +++ b/radio/aidl/compat/libradiocompat/messaging/RadioMessaging.cpp @@ -104,13 +104,21 @@ ScopedAStatus RadioMessaging::responseAcknowledgement() { ScopedAStatus RadioMessaging::sendCdmaSms(int32_t serial, const aidl::CdmaSmsMessage& sms) { LOG_CALL << serial; - mHal1_5->sendCdmaSms(serial, toHidl(sms)); + if (mHal1_6) { + mHal1_6->sendCdmaSms_1_6(serial, toHidl(sms)); + } else { + mHal1_5->sendCdmaSms(serial, toHidl(sms)); + } return ok(); } ScopedAStatus RadioMessaging::sendCdmaSmsExpectMore(int32_t serial, const aidl::CdmaSmsMessage& m) { LOG_CALL << serial; - mHal1_5->sendCdmaSmsExpectMore(serial, toHidl(m)); + if (mHal1_6) { + mHal1_6->sendCdmaSmsExpectMore_1_6(serial, toHidl(m)); + } else { + mHal1_5->sendCdmaSmsExpectMore(serial, toHidl(m)); + } return ok(); } @@ -122,13 +130,21 @@ ScopedAStatus RadioMessaging::sendImsSms(int32_t serial, const aidl::ImsSmsMessa ScopedAStatus RadioMessaging::sendSms(int32_t serial, const aidl::GsmSmsMessage& message) { LOG_CALL << serial; - mHal1_5->sendSms(serial, toHidl(message)); + if (mHal1_6) { + mHal1_6->sendSms_1_6(serial, toHidl(message)); + } else { + mHal1_5->sendSms(serial, toHidl(message)); + } return ok(); } ScopedAStatus RadioMessaging::sendSmsExpectMore(int32_t serial, const aidl::GsmSmsMessage& msg) { LOG_CALL << serial; - mHal1_5->sendSMSExpectMore(serial, toHidl(msg)); + if (mHal1_6) { + mHal1_6->sendSmsExpectMore_1_6(serial, toHidl(msg)); + } else { + mHal1_5->sendSMSExpectMore(serial, toHidl(msg)); + } return ok(); } diff --git a/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp b/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp index 08894874fc..34e889db00 100644 --- a/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp +++ b/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp @@ -73,13 +73,21 @@ ScopedAStatus RadioNetwork::getCdmaRoamingPreference(int32_t serial) { ScopedAStatus RadioNetwork::getCellInfoList(int32_t serial) { LOG_CALL << serial; - mHal1_5->getCellInfoList(serial); + if (mHal1_6) { + mHal1_6->getCellInfoList_1_6(serial); + } else { + mHal1_5->getCellInfoList(serial); + } return ok(); } ScopedAStatus RadioNetwork::getDataRegistrationState(int32_t serial) { LOG_CALL << serial; - mHal1_5->getDataRegistrationState(serial); + if (mHal1_6) { + mHal1_6->getDataRegistrationState_1_6(serial); + } else { + mHal1_5->getDataRegistrationState_1_5(serial); + } return ok(); } @@ -103,7 +111,11 @@ ScopedAStatus RadioNetwork::getOperator(int32_t serial) { ScopedAStatus RadioNetwork::getSignalStrength(int32_t serial) { LOG_CALL << serial; - mHal1_5->getSignalStrength(serial); + if (mHal1_6) { + mHal1_6->getSignalStrength_1_6(serial); + } else { + mHal1_5->getSignalStrength_1_4(serial); + } return ok(); } @@ -125,7 +137,11 @@ ScopedAStatus RadioNetwork::getVoiceRadioTechnology(int32_t serial) { ScopedAStatus RadioNetwork::getVoiceRegistrationState(int32_t serial) { LOG_CALL << serial; - mHal1_5->getVoiceRegistrationState(serial); + if (mHal1_6) { + mHal1_6->getVoiceRegistrationState_1_6(serial); + } else { + mHal1_5->getVoiceRegistrationState_1_5(serial); + } return ok(); } @@ -183,7 +199,7 @@ ScopedAStatus RadioNetwork::setCellInfoListRate(int32_t serial, int32_t rate) { ScopedAStatus RadioNetwork::setIndicationFilter(int32_t serial, aidl::IndicationFilter indFilter) { LOG_CALL << serial; - mHal1_5->setIndicationFilter(serial, toHidlBitfield(indFilter)); + mHal1_5->setIndicationFilter_1_5(serial, toHidlBitfield(indFilter)); return ok(); } @@ -192,9 +208,9 @@ ScopedAStatus RadioNetwork::setLinkCapacityReportingCriteria( // const std::vector& thrDownlinkKbps, const std::vector& thrUplinkKbps, AccessNetwork accessNetwork) { LOG_CALL << serial; - mHal1_5->setLinkCapacityReportingCriteria( // + mHal1_5->setLinkCapacityReportingCriteria_1_5( // serial, hysteresisMs, hysteresisDlKbps, hysteresisUlKbps, thrDownlinkKbps, - thrUplinkKbps, V1_2::AccessNetwork(accessNetwork)); + thrUplinkKbps, V1_5::AccessNetwork(accessNetwork)); return ok(); } diff --git a/radio/aidl/compat/libradiocompat/sim/RadioSim.cpp b/radio/aidl/compat/libradiocompat/sim/RadioSim.cpp index 5fecd8838b..e72ac7ee99 100644 --- a/radio/aidl/compat/libradiocompat/sim/RadioSim.cpp +++ b/radio/aidl/compat/libradiocompat/sim/RadioSim.cpp @@ -62,7 +62,7 @@ ScopedAStatus RadioSim::enableUiccApplications(int32_t serial, bool enable) { ScopedAStatus RadioSim::getAllowedCarriers(int32_t serial) { LOG_CALL << serial; - mHal1_5->getAllowedCarriers(serial); + mHal1_5->getAllowedCarriers_1_4(serial); return ok(); } diff --git a/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp b/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp index d4c0c92e3a..742fdbe844 100644 --- a/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp +++ b/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp @@ -53,13 +53,19 @@ ScopedAStatus RadioVoice::dial(int32_t serial, const aidl::Dial& dialInfo) { } ScopedAStatus RadioVoice::emergencyDial( // - int32_t serial, const aidl::Dial& dialInfo, aidl::EmergencyServiceCategory categories, + int32_t serial, const aidl::Dial& info, aidl::EmergencyServiceCategory categories, const std::vector& urns, aidl::EmergencyCallRouting routing, - bool hasKnownUserIntentEmerg, bool isTesting) { + bool knownUserIntentEmerg, bool isTesting) { LOG_CALL << serial; - mHal1_5->emergencyDial(serial, toHidl(dialInfo), - toHidlBitfield(categories), toHidl(urns), - V1_4::EmergencyCallRouting(routing), hasKnownUserIntentEmerg, isTesting); + if (mHal1_6) { + mHal1_6->emergencyDial_1_6( // + serial, toHidl(info), toHidlBitfield(categories), + toHidl(urns), V1_4::EmergencyCallRouting(routing), knownUserIntentEmerg, isTesting); + } else { + mHal1_5->emergencyDial( // + serial, toHidl(info), toHidlBitfield(categories), + toHidl(urns), V1_4::EmergencyCallRouting(routing), knownUserIntentEmerg, isTesting); + } return ok(); } @@ -102,7 +108,11 @@ ScopedAStatus RadioVoice::getClir(int32_t serial) { ScopedAStatus RadioVoice::getCurrentCalls(int32_t serial) { LOG_CALL << serial; - mHal1_5->getCurrentCalls(serial); + if (mHal1_6) { + mHal1_6->getCurrentCalls_1_6(serial); + } else { + mHal1_5->getCurrentCalls(serial); + } return ok(); } From 963a56f74e03996464d9141df3694378b8a7f89c Mon Sep 17 00:00:00 2001 From: Tomasz Wasilczyk Date: Thu, 16 Dec 2021 12:19:09 -0800 Subject: [PATCH 3/4] Set HAL response functions after framework sets all of theirs. Bug: 207695009 Test: Build with ag/16322062 and a handful of patches from b/207695009, try to use telephony stack Change-Id: I74afe105a22a24efa0c38de20c75beffc58b144f Merged-In: I74afe105a22a24efa0c38de20c75beffc58b144f --- radio/aidl/compat/libradiocompat/Android.bp | 1 + .../compat/libradiocompat/CallbackManager.cpp | 84 +++++++++++++++++++ .../compat/libradiocompat/RadioCompatBase.cpp | 5 +- .../libradiocompat/config/RadioConfig.cpp | 2 +- .../compat/libradiocompat/data/RadioData.cpp | 16 ++-- .../include/libradiocompat/CallbackManager.h | 62 ++++++++++++++ .../include/libradiocompat/RadioCompatBase.h | 8 +- .../messaging/RadioMessaging.cpp | 16 ++-- .../libradiocompat/modem/RadioModem.cpp | 16 ++-- .../libradiocompat/network/RadioNetwork.cpp | 16 ++-- .../compat/libradiocompat/sim/RadioSim.cpp | 16 ++-- .../libradiocompat/voice/RadioVoice.cpp | 16 ++-- radio/aidl/compat/service/service.cpp | 27 +++--- 13 files changed, 194 insertions(+), 91 deletions(-) create mode 100644 radio/aidl/compat/libradiocompat/CallbackManager.cpp create mode 100644 radio/aidl/compat/libradiocompat/include/libradiocompat/CallbackManager.h diff --git a/radio/aidl/compat/libradiocompat/Android.bp b/radio/aidl/compat/libradiocompat/Android.bp index 9d568c4aa0..487d91b6b9 100644 --- a/radio/aidl/compat/libradiocompat/Android.bp +++ b/radio/aidl/compat/libradiocompat/Android.bp @@ -55,6 +55,7 @@ cc_library { "libutils", ], srcs: [ + "CallbackManager.cpp", "DriverContext.cpp", "RadioCompatBase.cpp", "RadioIndication.cpp", diff --git a/radio/aidl/compat/libradiocompat/CallbackManager.cpp b/radio/aidl/compat/libradiocompat/CallbackManager.cpp new file mode 100644 index 0000000000..c2eaed1959 --- /dev/null +++ b/radio/aidl/compat/libradiocompat/CallbackManager.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include + +using namespace std::literals::chrono_literals; + +namespace android::hardware::radio::compat { + +/** + * How much setter thread will wait with setting response functions after the last + * setResponseFunctions call from the framework. Subsequent calls from the framework reset the + * clock, so this number should be larger than the longest time between setResponseFunctions calls + * from the framework. + * + * Real world measurements with Cuttlefish give <10ms delay between Modem and Data and <2ms delays + * between all others. + */ +static constexpr auto kDelayedSetterDelay = 100ms; + +CallbackManager::CallbackManager(std::shared_ptr context, sp hidlHal) + : mHidlHal(hidlHal), + mRadioResponse(sp::make(context)), + mRadioIndication(sp::make(context)), + mDelayedSetterThread(&CallbackManager::delayedSetterThread, this) {} + +CallbackManager::~CallbackManager() { + { + std::unique_lock lock(mDelayedSetterGuard); + mDelayedSetterDeadline = std::nullopt; + mDestroy = true; + mDelayedSetterCv.notify_all(); + } + mDelayedSetterThread.join(); +} + +RadioResponse& CallbackManager::response() const { + return *mRadioResponse; +} + +void CallbackManager::setResponseFunctionsDelayed() { + std::unique_lock lock(mDelayedSetterGuard); + mDelayedSetterDeadline = std::chrono::steady_clock::now() + kDelayedSetterDelay; + mDelayedSetterCv.notify_all(); +} + +void CallbackManager::delayedSetterThread() { + while (!mDestroy) { + std::unique_lock lock(mDelayedSetterGuard); + auto deadline = mDelayedSetterDeadline; + + // not waiting to set response functions + if (!deadline) { + mDelayedSetterCv.wait(lock); + continue; + } + + // waiting to set response functions, but not yet + if (*deadline > std::chrono::steady_clock::now()) { + mDelayedSetterCv.wait_until(lock, *deadline); + continue; + } + + mHidlHal->setResponseFunctions(mRadioResponse, mRadioIndication).assertOk(); + mDelayedSetterDeadline = std::nullopt; + } +} + +} // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/RadioCompatBase.cpp b/radio/aidl/compat/libradiocompat/RadioCompatBase.cpp index 2364484f13..2a2d7a36e9 100644 --- a/radio/aidl/compat/libradiocompat/RadioCompatBase.cpp +++ b/radio/aidl/compat/libradiocompat/RadioCompatBase.cpp @@ -21,11 +21,10 @@ namespace android::hardware::radio::compat { RadioCompatBase::RadioCompatBase(std::shared_ptr context, sp hidlHal, - sp radioResponse, sp radioInd) + std::shared_ptr cbMgr) : mContext(context), mHal1_5(hidlHal), mHal1_6(V1_6::IRadio::castFrom(hidlHal)), - mRadioResponse(radioResponse), - mRadioIndication(radioInd) {} + mCallbackManager(cbMgr) {} } // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/config/RadioConfig.cpp b/radio/aidl/compat/libradiocompat/config/RadioConfig.cpp index d6399bfddf..5b22dbe6ca 100644 --- a/radio/aidl/compat/libradiocompat/config/RadioConfig.cpp +++ b/radio/aidl/compat/libradiocompat/config/RadioConfig.cpp @@ -88,7 +88,7 @@ ScopedAStatus RadioConfig::setResponseFunctions( mRadioConfigResponse->setResponseFunction(radioConfigResponse); mRadioConfigIndication->setResponseFunction(radioConfigIndication); - mHal1_1->setResponseFunctions(mRadioConfigResponse, mRadioConfigIndication); + mHal1_1->setResponseFunctions(mRadioConfigResponse, mRadioConfigIndication).assertOk(); return ok(); } diff --git a/radio/aidl/compat/libradiocompat/data/RadioData.cpp b/radio/aidl/compat/libradiocompat/data/RadioData.cpp index 91529c9af3..d2f368778f 100644 --- a/radio/aidl/compat/libradiocompat/data/RadioData.cpp +++ b/radio/aidl/compat/libradiocompat/data/RadioData.cpp @@ -32,7 +32,7 @@ namespace aidlCommon = ::aidl::android::hardware::radio; constexpr auto ok = &ScopedAStatus::ok; std::shared_ptr RadioData::respond() { - return mRadioResponse->dataCb(); + return mCallbackManager->response().dataCb(); } ScopedAStatus RadioData::allocatePduSessionId(int32_t serial) { @@ -129,16 +129,10 @@ ScopedAStatus RadioData::setInitialAttachApn(int32_t serial, const aidl::DataPro } ScopedAStatus RadioData::setResponseFunctions( - const std::shared_ptr& dataResponse, - const std::shared_ptr& dataIndication) { - LOG_CALL << dataResponse << ' ' << dataIndication; - - CHECK(dataResponse); - CHECK(dataIndication); - - mRadioResponse->setResponseFunction(dataResponse); - mRadioIndication->setResponseFunction(dataIndication); - + const std::shared_ptr& response, + const std::shared_ptr& indication) { + LOG_CALL << response << ' ' << indication; + mCallbackManager->setResponseFunctions(response, indication); return ok(); } diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/CallbackManager.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/CallbackManager.h new file mode 100644 index 0000000000..f1a7b49c7a --- /dev/null +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/CallbackManager.h @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + +#include "DriverContext.h" +#include "RadioIndication.h" +#include "RadioResponse.h" + +#include +#include + +#include + +namespace android::hardware::radio::compat { + +class CallbackManager { + sp mHidlHal; + sp mRadioResponse; + sp mRadioIndication; + + std::thread mDelayedSetterThread; + std::mutex mDelayedSetterGuard; + std::optional> mDelayedSetterDeadline + GUARDED_BY(mDelayedSetterGuard); + std::condition_variable mDelayedSetterCv GUARDED_BY(mDelayedSetterGuard); + bool mDestroy GUARDED_BY(mDelayedSetterGuard) = false; + + void setResponseFunctionsDelayed(); + void delayedSetterThread(); + + public: + CallbackManager(std::shared_ptr context, sp hidlHal); + ~CallbackManager(); + + RadioResponse& response() const; + + template + void setResponseFunctions(const std::shared_ptr& response, + const std::shared_ptr& indication) { + CHECK(response); + CHECK(indication); + + mRadioResponse->setResponseFunction(response); + mRadioIndication->setResponseFunction(indication); + setResponseFunctionsDelayed(); + } +}; + +} // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioCompatBase.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioCompatBase.h index cd17541f69..eb22fff25d 100644 --- a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioCompatBase.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioCompatBase.h @@ -15,9 +15,8 @@ */ #pragma once +#include "CallbackManager.h" #include "DriverContext.h" -#include "RadioIndication.h" -#include "RadioResponse.h" #include @@ -30,12 +29,11 @@ class RadioCompatBase { sp mHal1_5; sp mHal1_6; - sp mRadioResponse; - sp mRadioIndication; + std::shared_ptr mCallbackManager; public: RadioCompatBase(std::shared_ptr context, sp hidlHal, - sp radioResponse, sp radioIndication); + std::shared_ptr cbMgr); }; } // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/messaging/RadioMessaging.cpp b/radio/aidl/compat/libradiocompat/messaging/RadioMessaging.cpp index 650d1910ff..4d94e17e99 100644 --- a/radio/aidl/compat/libradiocompat/messaging/RadioMessaging.cpp +++ b/radio/aidl/compat/libradiocompat/messaging/RadioMessaging.cpp @@ -30,7 +30,7 @@ namespace aidl = ::aidl::android::hardware::radio::messaging; constexpr auto ok = &ScopedAStatus::ok; std::shared_ptr RadioMessaging::respond() { - return mRadioResponse->messagingCb(); + return mCallbackManager->response().messagingCb(); } ScopedAStatus RadioMessaging::acknowledgeIncomingGsmSmsWithPdu( // @@ -181,16 +181,10 @@ ScopedAStatus RadioMessaging::setGsmBroadcastConfig( } ScopedAStatus RadioMessaging::setResponseFunctions( - const std::shared_ptr& messagingResponse, - const std::shared_ptr& messagingIndication) { - LOG_CALL << messagingResponse << ' ' << messagingIndication; - - CHECK(messagingResponse); - CHECK(messagingIndication); - - mRadioResponse->setResponseFunction(messagingResponse); - mRadioIndication->setResponseFunction(messagingIndication); - + const std::shared_ptr& response, + const std::shared_ptr& indication) { + LOG_CALL << response << ' ' << indication; + mCallbackManager->setResponseFunctions(response, indication); return ok(); } diff --git a/radio/aidl/compat/libradiocompat/modem/RadioModem.cpp b/radio/aidl/compat/libradiocompat/modem/RadioModem.cpp index 3fff5ee317..d28b94041b 100644 --- a/radio/aidl/compat/libradiocompat/modem/RadioModem.cpp +++ b/radio/aidl/compat/libradiocompat/modem/RadioModem.cpp @@ -28,7 +28,7 @@ namespace aidl = ::aidl::android::hardware::radio::modem; constexpr auto ok = &ScopedAStatus::ok; std::shared_ptr RadioModem::respond() { - return mRadioResponse->modemCb(); + return mCallbackManager->response().modemCb(); } ScopedAStatus RadioModem::enableModem(int32_t serial, bool on) { @@ -133,16 +133,10 @@ ScopedAStatus RadioModem::setRadioPower(int32_t serial, bool powerOn, bool forEm } ScopedAStatus RadioModem::setResponseFunctions( - const std::shared_ptr& modemResponse, - const std::shared_ptr& modemIndication) { - LOG_CALL << modemResponse << ' ' << modemIndication; - - CHECK(modemResponse); - CHECK(modemIndication); - - mRadioResponse->setResponseFunction(modemResponse); - mRadioIndication->setResponseFunction(modemIndication); - + const std::shared_ptr& response, + const std::shared_ptr& indication) { + LOG_CALL << response << ' ' << indication; + mCallbackManager->setResponseFunctions(response, indication); return ok(); } diff --git a/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp b/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp index 34e889db00..c94be63733 100644 --- a/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp +++ b/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp @@ -34,7 +34,7 @@ namespace aidl = ::aidl::android::hardware::radio::network; constexpr auto ok = &ScopedAStatus::ok; std::shared_ptr RadioNetwork::respond() { - return mRadioResponse->networkCb(); + return mCallbackManager->response().networkCb(); } ScopedAStatus RadioNetwork::getAllowedNetworkTypesBitmap(int32_t serial) { @@ -245,16 +245,10 @@ ScopedAStatus RadioNetwork::setNrDualConnectivityState(int32_t serial, } ScopedAStatus RadioNetwork::setResponseFunctions( - const std::shared_ptr& networkResponse, - const std::shared_ptr& networkIndication) { - LOG_CALL << networkResponse << ' ' << networkIndication; - - CHECK(networkResponse); - CHECK(networkIndication); - - mRadioResponse->setResponseFunction(networkResponse); - mRadioIndication->setResponseFunction(networkIndication); - + const std::shared_ptr& response, + const std::shared_ptr& indication) { + LOG_CALL << response << ' ' << indication; + mCallbackManager->setResponseFunctions(response, indication); return ok(); } diff --git a/radio/aidl/compat/libradiocompat/sim/RadioSim.cpp b/radio/aidl/compat/libradiocompat/sim/RadioSim.cpp index e72ac7ee99..b43f64f784 100644 --- a/radio/aidl/compat/libradiocompat/sim/RadioSim.cpp +++ b/radio/aidl/compat/libradiocompat/sim/RadioSim.cpp @@ -31,7 +31,7 @@ namespace aidl = ::aidl::android::hardware::radio::sim; constexpr auto ok = &ScopedAStatus::ok; std::shared_ptr RadioSim::respond() { - return mRadioResponse->simCb(); + return mCallbackManager->response().simCb(); } ScopedAStatus RadioSim::areUiccApplicationsEnabled(int32_t serial) { @@ -221,16 +221,10 @@ ScopedAStatus RadioSim::setFacilityLockForApp( // } ScopedAStatus RadioSim::setResponseFunctions( - const std::shared_ptr& simResponse, - const std::shared_ptr& simIndication) { - LOG_CALL << simResponse << ' ' << simIndication; - - CHECK(simResponse); - CHECK(simIndication); - - mRadioResponse->setResponseFunction(simResponse); - mRadioIndication->setResponseFunction(simIndication); - + const std::shared_ptr& response, + const std::shared_ptr& indication) { + LOG_CALL << response << ' ' << indication; + mCallbackManager->setResponseFunctions(response, indication); return ok(); } diff --git a/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp b/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp index 742fdbe844..7b1d1fa01e 100644 --- a/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp +++ b/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp @@ -31,7 +31,7 @@ namespace aidl = ::aidl::android::hardware::radio::voice; constexpr auto ok = &ScopedAStatus::ok; std::shared_ptr RadioVoice::respond() { - return mRadioResponse->voiceCb(); + return mCallbackManager->response().voiceCb(); } ScopedAStatus RadioVoice::acceptCall(int32_t serial) { @@ -238,16 +238,10 @@ ScopedAStatus RadioVoice::setPreferredVoicePrivacy(int32_t serial, bool enable) } ScopedAStatus RadioVoice::setResponseFunctions( - const std::shared_ptr& voiceResponse, - const std::shared_ptr& voiceIndication) { - LOG_CALL << voiceResponse << ' ' << voiceIndication; - - CHECK(voiceResponse); - CHECK(voiceIndication); - - mRadioResponse->setResponseFunction(voiceResponse); - mRadioIndication->setResponseFunction(voiceIndication); - + const std::shared_ptr& response, + const std::shared_ptr& indication) { + LOG_CALL << response << ' ' << indication; + mCallbackManager->setResponseFunctions(response, indication); return ok(); } diff --git a/radio/aidl/compat/service/service.cpp b/radio/aidl/compat/service/service.cpp index 6bcd4b0c61..7433feef17 100644 --- a/radio/aidl/compat/service/service.cpp +++ b/radio/aidl/compat/service/service.cpp @@ -19,13 +19,12 @@ #include #include #include +#include #include #include -#include #include #include #include -#include #include #include @@ -36,9 +35,8 @@ using namespace std::string_literals; static std::vector> gPublishedHals; template -static void publishRadioHal(std::shared_ptr context, - sp hidlHal, sp responseCb, - sp indicationCb, const std::string& slot) { +static void publishRadioHal(std::shared_ptr ctx, sp hidlHal, + std::shared_ptr cm, const std::string& slot) { const auto instance = T::descriptor + "/"s + slot; if (!AServiceManager_isDeclared(instance.c_str())) { LOG(INFO) << instance << " is not declared in VINTF (this may be intentional)"; @@ -46,7 +44,7 @@ static void publishRadioHal(std::shared_ptr context, } LOG(DEBUG) << "Publishing " << instance; - auto aidlHal = ndk::SharedRefBase::make(context, hidlHal, responseCb, indicationCb); + auto aidlHal = ndk::SharedRefBase::make(ctx, hidlHal, cm); gPublishedHals.push_back(aidlHal); const auto status = AServiceManager_addService(aidlHal->asBinder().get(), instance.c_str()); CHECK_EQ(status, STATUS_OK); @@ -59,17 +57,14 @@ static void publishRadio(std::string slot) { hidl_utils::linkDeathToDeath(radioHidl); auto context = std::make_shared(); + auto callbackMgr = std::make_shared(context, radioHidl); - auto responseCb = sp::make(context); - auto indicationCb = sp::make(context); - radioHidl->setResponseFunctions(responseCb, indicationCb).assertOk(); - - publishRadioHal(context, radioHidl, responseCb, indicationCb, slot); - publishRadioHal(context, radioHidl, responseCb, indicationCb, slot); - publishRadioHal(context, radioHidl, responseCb, indicationCb, slot); - publishRadioHal(context, radioHidl, responseCb, indicationCb, slot); - publishRadioHal(context, radioHidl, responseCb, indicationCb, slot); - publishRadioHal(context, radioHidl, responseCb, indicationCb, slot); + publishRadioHal(context, radioHidl, callbackMgr, slot); + publishRadioHal(context, radioHidl, callbackMgr, slot); + publishRadioHal(context, radioHidl, callbackMgr, slot); + publishRadioHal(context, radioHidl, callbackMgr, slot); + publishRadioHal(context, radioHidl, callbackMgr, slot); + publishRadioHal(context, radioHidl, callbackMgr, slot); } static void publishRadioConfig() { From 6155d5f969de9020e57a8bbef40c424378eeb1c8 Mon Sep 17 00:00:00 2001 From: Tomasz Wasilczyk Date: Tue, 28 Dec 2021 20:30:54 -0800 Subject: [PATCH 4/4] Move Radio HAL compat shim logs to radio buffer Test: adb logcat -b radio | grep -i radiocompat Change-Id: Iac870a24d619db8a86ce91029f25c50ef862a268 Merged-In: Iac870a24d619db8a86ce91029f25c50ef862a268 --- radio/aidl/compat/service/service.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/radio/aidl/compat/service/service.cpp b/radio/aidl/compat/service/service.cpp index 7433feef17..8af05deb08 100644 --- a/radio/aidl/compat/service/service.cpp +++ b/radio/aidl/compat/service/service.cpp @@ -81,6 +81,7 @@ static void publishRadioConfig() { } static void main() { + base::InitLogging(nullptr, base::LogdLogger(base::RADIO)); base::SetDefaultTag("radiocompat"); base::SetMinimumLogSeverity(base::VERBOSE); LOG(DEBUG) << "Radio HAL compat service starting...";