diff --git a/radio/aidl/compat/libradiocompat/Android.bp b/radio/aidl/compat/libradiocompat/Android.bp index ada7c7ed98..00c1db658d 100644 --- a/radio/aidl/compat/libradiocompat/Android.bp +++ b/radio/aidl/compat/libradiocompat/Android.bp @@ -37,17 +37,32 @@ cc_library { "android.hardware.radio.config@1.1", "android.hardware.radio.config@1.2", "android.hardware.radio.config@1.3", + "android.hardware.radio.messaging-V1-ndk", + "android.hardware.radio@1.0", + "android.hardware.radio@1.1", + "android.hardware.radio@1.2", + "android.hardware.radio@1.3", + "android.hardware.radio@1.4", + "android.hardware.radio@1.5", + "android.hardware.radio@1.6", "libbase", "libbinder_ndk", "libhidlbase", "libutils", ], srcs: [ + "RadioCompatBase.cpp", + "RadioIndication.cpp", + "RadioResponse.cpp", "commonStructs.cpp", "config/RadioConfig.cpp", "config/RadioConfigIndication.cpp", "config/RadioConfigResponse.cpp", "config/structs.cpp", + "messaging/RadioIndication-messaging.cpp", + "messaging/RadioMessaging.cpp", + "messaging/RadioResponse-messaging.cpp", + "messaging/structs.cpp", ], export_include_dirs: ["include"], } diff --git a/radio/aidl/compat/libradiocompat/RadioCompatBase.cpp b/radio/aidl/compat/libradiocompat/RadioCompatBase.cpp new file mode 100644 index 0000000000..a9eac68d13 --- /dev/null +++ b/radio/aidl/compat/libradiocompat/RadioCompatBase.cpp @@ -0,0 +1,35 @@ +/* + * 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 + +namespace android::hardware::radio::compat { + +RadioCompatBase::RadioCompatBase(sp hidlHal, sp radioResponse, + sp radioIndication) + : mHal1_5(hidlHal), + mHal1_6(V1_6::IRadio::castFrom(hidlHal)), + mRadioResponse(radioResponse), + mRadioIndication(radioIndication) {} + +V1_6::IRadioResponse& RadioCompatBase::respond() { + CHECK(mRadioResponse) << "This shouldn't happen (response functions are passed in constructor)"; + return *mRadioResponse; +} + +} // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/RadioIndication.cpp b/radio/aidl/compat/libradiocompat/RadioIndication.cpp new file mode 100644 index 0000000000..5cbb954229 --- /dev/null +++ b/radio/aidl/compat/libradiocompat/RadioIndication.cpp @@ -0,0 +1,344 @@ +/* + * 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 + +// TODO(b/203699028): remove when fully implemented +#pragma GCC diagnostic ignored "-Wunused-parameter" + +namespace android::hardware::radio::compat { + +Return RadioIndication::radioStateChanged(V1_0::RadioIndicationType type, + V1_0::RadioState radioState) { + return {}; +} + +Return RadioIndication::callStateChanged(V1_0::RadioIndicationType type) { + return {}; +} + +Return RadioIndication::networkStateChanged(V1_0::RadioIndicationType type) { + return {}; +} + +Return RadioIndication::nitzTimeReceived(V1_0::RadioIndicationType type, + const hidl_string& nitzTime, uint64_t receivedTime) { + return {}; +} + +Return RadioIndication::currentSignalStrength(V1_0::RadioIndicationType type, + const V1_0::SignalStrength& signalStrength) { + return {}; +} + +Return RadioIndication::dataCallListChanged( + V1_0::RadioIndicationType type, const hidl_vec& dcList) { + return {}; +} + +Return RadioIndication::suppSvcNotify(V1_0::RadioIndicationType type, + const V1_0::SuppSvcNotification& suppSvc) { + return {}; +} + +Return RadioIndication::stkSessionEnd(V1_0::RadioIndicationType type) { + return {}; +} + +Return RadioIndication::stkProactiveCommand(V1_0::RadioIndicationType type, + const hidl_string& cmd) { + return {}; +} + +Return RadioIndication::stkEventNotify(V1_0::RadioIndicationType type, + const hidl_string& cmd) { + return {}; +} + +Return RadioIndication::stkCallSetup(V1_0::RadioIndicationType type, int64_t timeout) { + return {}; +} + +Return RadioIndication::simRefresh(V1_0::RadioIndicationType type, + const V1_0::SimRefreshResult& refreshResult) { + return {}; +} + +Return RadioIndication::callRing(V1_0::RadioIndicationType type, bool isGsm, + const V1_0::CdmaSignalInfoRecord& record) { + return {}; +} + +Return RadioIndication::simStatusChanged(V1_0::RadioIndicationType type) { + return {}; +} + +Return RadioIndication::restrictedStateChanged(V1_0::RadioIndicationType type, + V1_0::PhoneRestrictedState state) { + return {}; +} + +Return RadioIndication::enterEmergencyCallbackMode(V1_0::RadioIndicationType type) { + return {}; +} + +Return RadioIndication::cdmaCallWaiting(V1_0::RadioIndicationType type, + const V1_0::CdmaCallWaiting& callWaitingRecord) { + return {}; +} + +Return RadioIndication::cdmaOtaProvisionStatus(V1_0::RadioIndicationType type, + V1_0::CdmaOtaProvisionStatus status) { + return {}; +} + +Return RadioIndication::cdmaInfoRec(V1_0::RadioIndicationType type, + const V1_0::CdmaInformationRecords& records) { + return {}; +} + +Return RadioIndication::indicateRingbackTone(V1_0::RadioIndicationType type, bool start) { + return {}; +} + +Return RadioIndication::resendIncallMute(V1_0::RadioIndicationType type) { + return {}; +} + +Return RadioIndication::cdmaSubscriptionSourceChanged( + V1_0::RadioIndicationType type, V1_0::CdmaSubscriptionSource cdmaSource) { + return {}; +} + +Return RadioIndication::cdmaPrlChanged(V1_0::RadioIndicationType type, int32_t version) { + return {}; +} + +Return RadioIndication::exitEmergencyCallbackMode(V1_0::RadioIndicationType type) { + return {}; +} + +Return RadioIndication::rilConnected(V1_0::RadioIndicationType type) { + return {}; +} + +Return RadioIndication::voiceRadioTechChanged(V1_0::RadioIndicationType type, + V1_0::RadioTechnology rat) { + return {}; +} + +Return RadioIndication::cellInfoList(V1_0::RadioIndicationType type, + const hidl_vec& records) { + return {}; +} + +Return RadioIndication::imsNetworkStateChanged(V1_0::RadioIndicationType type) { + return {}; +} + +Return RadioIndication::subscriptionStatusChanged(V1_0::RadioIndicationType type, + bool activate) { + return {}; +} + +Return RadioIndication::srvccStateNotify(V1_0::RadioIndicationType type, + V1_0::SrvccState state) { + return {}; +} + +Return RadioIndication::hardwareConfigChanged(V1_0::RadioIndicationType type, + const hidl_vec& configs) { + return {}; +} + +Return RadioIndication::radioCapabilityIndication(V1_0::RadioIndicationType type, + const V1_0::RadioCapability& rc) { + return {}; +} + +Return RadioIndication::onSupplementaryServiceIndication(V1_0::RadioIndicationType type, + const V1_0::StkCcUnsolSsResult& ss) { + return {}; +} + +Return RadioIndication::stkCallControlAlphaNotify(V1_0::RadioIndicationType type, + const hidl_string& alpha) { + return {}; +} + +Return RadioIndication::lceData(V1_0::RadioIndicationType type, + const V1_0::LceDataInfo& lce) { + return {}; +} + +Return RadioIndication::pcoData(V1_0::RadioIndicationType type, + const V1_0::PcoDataInfo& pco) { + return {}; +} + +Return RadioIndication::modemReset(V1_0::RadioIndicationType type, + const hidl_string& reason) { + return {}; +} + +Return RadioIndication::carrierInfoForImsiEncryption(V1_0::RadioIndicationType info) { + return {}; +} + +Return RadioIndication::networkScanResult(V1_0::RadioIndicationType type, + const V1_1::NetworkScanResult& result) { + return {}; +} + +Return RadioIndication::keepaliveStatus(V1_0::RadioIndicationType type, + const V1_1::KeepaliveStatus& status) { + return {}; +} + +Return RadioIndication::networkScanResult_1_2(V1_0::RadioIndicationType type, + const V1_2::NetworkScanResult& result) { + return {}; +} + +Return RadioIndication::cellInfoList_1_2(V1_0::RadioIndicationType type, + const hidl_vec& records) { + return {}; +} + +Return RadioIndication::currentLinkCapacityEstimate(V1_0::RadioIndicationType type, + const V1_2::LinkCapacityEstimate& lce) { + return {}; +} + +Return RadioIndication::currentPhysicalChannelConfigs( + V1_0::RadioIndicationType type, const hidl_vec& configs) { + return {}; +} + +Return RadioIndication::currentSignalStrength_1_2( + V1_0::RadioIndicationType type, const V1_2::SignalStrength& signalStrength) { + return {}; +} + +Return RadioIndication::currentEmergencyNumberList( + V1_0::RadioIndicationType type, const hidl_vec& emergencyNumbers) { + return {}; +} + +Return RadioIndication::cellInfoList_1_4(V1_0::RadioIndicationType type, + const hidl_vec& records) { + return {}; +} + +Return RadioIndication::networkScanResult_1_4(V1_0::RadioIndicationType type, + const V1_4::NetworkScanResult& result) { + return {}; +} + +Return RadioIndication::currentPhysicalChannelConfigs_1_4( + V1_0::RadioIndicationType type, const hidl_vec& configs) { + return {}; +} + +Return RadioIndication::dataCallListChanged_1_4( + V1_0::RadioIndicationType type, const hidl_vec& dcList) { + return {}; +} + +Return RadioIndication::currentSignalStrength_1_4( + V1_0::RadioIndicationType type, const V1_4::SignalStrength& signalStrength) { + return {}; +} + +Return RadioIndication::uiccApplicationsEnablementChanged(V1_0::RadioIndicationType type, + bool enabled) { + return {}; +} + +Return RadioIndication::registrationFailed( // + V1_0::RadioIndicationType type, const V1_5::CellIdentity& cellIdentity, + const hidl_string& chosenPlmn, hidl_bitfield domain, int32_t causeCode, + int32_t additionalCauseCode) { + return {}; +} + +Return RadioIndication::barringInfoChanged(V1_0::RadioIndicationType type, + const V1_5::CellIdentity& cellIdentity, + const hidl_vec& barringInfos) { + return {}; +} + +Return RadioIndication::cellInfoList_1_5(V1_0::RadioIndicationType type, + const hidl_vec& records) { + return {}; +} + +Return RadioIndication::networkScanResult_1_5(V1_0::RadioIndicationType type, + const V1_5::NetworkScanResult& result) { + return {}; +} + +Return RadioIndication::dataCallListChanged_1_5( + V1_0::RadioIndicationType type, const hidl_vec& dcList) { + return {}; +} + +Return RadioIndication::dataCallListChanged_1_6( + V1_0::RadioIndicationType type, const hidl_vec& dcList) { + return {}; +} + +Return RadioIndication::unthrottleApn(V1_0::RadioIndicationType type, + const hidl_string& apn) { + return {}; +} + +Return RadioIndication::currentLinkCapacityEstimate_1_6( + V1_0::RadioIndicationType type, const V1_6::LinkCapacityEstimate& lce) { + return {}; +} + +Return RadioIndication::currentSignalStrength_1_6( + V1_0::RadioIndicationType type, const V1_6::SignalStrength& signalStrength) { + return {}; +} + +Return RadioIndication::cellInfoList_1_6(V1_0::RadioIndicationType type, + const hidl_vec& records) { + return {}; +} + +Return RadioIndication::networkScanResult_1_6(V1_0::RadioIndicationType type, + const V1_6::NetworkScanResult& result) { + return {}; +} + +Return RadioIndication::currentPhysicalChannelConfigs_1_6( + V1_0::RadioIndicationType type, const hidl_vec& configs) { + return {}; +} + +Return RadioIndication::simPhonebookChanged(V1_0::RadioIndicationType type) { + return {}; +} + +Return RadioIndication::simPhonebookRecordsReceived( + V1_0::RadioIndicationType type, V1_6::PbReceivedStatus status, + const hidl_vec& records) { + return {}; +} + +} // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/RadioResponse.cpp b/radio/aidl/compat/libradiocompat/RadioResponse.cpp new file mode 100644 index 0000000000..15002a8490 --- /dev/null +++ b/radio/aidl/compat/libradiocompat/RadioResponse.cpp @@ -0,0 +1,866 @@ +/* + * 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 "debug.h" + +// TODO(b/203699028): remove when fully implemented +#pragma GCC diagnostic ignored "-Wunused-parameter" + +#define RADIO_MODULE "Common" + +namespace android::hardware::radio::compat { + +Return RadioResponse::acknowledgeRequest(int32_t serial) { + LOG_CALL << serial; + if (mMessagingCb) mMessagingCb->acknowledgeRequest(serial); + return {}; +} + +Return RadioResponse::getIccCardStatusResponse(const V1_0::RadioResponseInfo& info, + const V1_0::CardStatus& cardStatus) { + return {}; +} + +Return RadioResponse::supplyIccPinForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t remainingRetries) { + return {}; +} + +Return RadioResponse::supplyIccPukForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t remainingRetries) { + return {}; +} + +Return RadioResponse::supplyIccPin2ForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t remainingRetries) { + return {}; +} + +Return RadioResponse::supplyIccPuk2ForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t remainingRetries) { + return {}; +} + +Return RadioResponse::changeIccPinForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t remainingRetries) { + return {}; +} + +Return RadioResponse::changeIccPin2ForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t remainingRetries) { + return {}; +} + +Return RadioResponse::supplyNetworkDepersonalizationResponse( + const V1_0::RadioResponseInfo& info, int32_t remainingRetries) { + return {}; +} + +Return RadioResponse::getCurrentCallsResponse(const V1_0::RadioResponseInfo& info, + const hidl_vec& calls) { + return {}; +} + +Return RadioResponse::dialResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getIMSIForAppResponse(const V1_0::RadioResponseInfo& info, + const hidl_string& imsi) { + return {}; +} + +Return RadioResponse::hangupConnectionResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::hangupWaitingOrBackgroundResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::hangupForegroundResumeBackgroundResponse( + const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::switchWaitingOrHoldingAndActiveResponse( + const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::conferenceResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::rejectCallResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getLastCallFailCauseResponse( + const V1_0::RadioResponseInfo& info, const V1_0::LastCallFailCauseInfo& failCauseinfo) { + return {}; +} + +Return RadioResponse::getSignalStrengthResponse(const V1_0::RadioResponseInfo& info, + const V1_0::SignalStrength& sigStrength) { + return {}; +} + +Return RadioResponse::getVoiceRegistrationStateResponse( + const V1_0::RadioResponseInfo& info, const V1_0::VoiceRegStateResult& voiceRegResponse) { + return {}; +} + +Return RadioResponse::getDataRegistrationStateResponse( + const V1_0::RadioResponseInfo& info, const V1_0::DataRegStateResult& dataRegResponse) { + return {}; +} + +Return RadioResponse::getOperatorResponse( // + const V1_0::RadioResponseInfo& info, const hidl_string& longName, + const hidl_string& shortName, const hidl_string& numeric) { + return {}; +} + +Return RadioResponse::setRadioPowerResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::sendDtmfResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setupDataCallResponse(const V1_0::RadioResponseInfo& info, + const V1_0::SetupDataCallResult& dcResponse) { + return {}; +} + +Return RadioResponse::iccIOForAppResponse(const V1_0::RadioResponseInfo& info, + const V1_0::IccIoResult& iccIo) { + return {}; +} + +Return RadioResponse::getClirResponse(const V1_0::RadioResponseInfo& info, int32_t n, + int32_t m) { + return {}; +} + +Return RadioResponse::setClirResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getCallForwardStatusResponse( + const V1_0::RadioResponseInfo& info, const hidl_vec& callFwdInfos) { + return {}; +} + +Return RadioResponse::setCallForwardResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getCallWaitingResponse(const V1_0::RadioResponseInfo& info, bool enable, + int32_t serviceClass) { + return {}; +} + +Return RadioResponse::setCallWaitingResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::acceptCallResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::deactivateDataCallResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getFacilityLockForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t response) { + return {}; +} + +Return RadioResponse::setFacilityLockForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t retry) { + return {}; +} + +Return RadioResponse::setBarringPasswordResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getNetworkSelectionModeResponse(const V1_0::RadioResponseInfo& info, + bool manual) { + return {}; +} + +Return RadioResponse::setNetworkSelectionModeAutomaticResponse( + const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setNetworkSelectionModeManualResponse( + const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getAvailableNetworksResponse( + const V1_0::RadioResponseInfo& info, const hidl_vec& networkInfos) { + return {}; +} + +Return RadioResponse::startDtmfResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::stopDtmfResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getBasebandVersionResponse(const V1_0::RadioResponseInfo& info, + const hidl_string& version) { + return {}; +} + +Return RadioResponse::separateConnectionResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setMuteResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getMuteResponse(const V1_0::RadioResponseInfo& info, bool enable) { + return {}; +} + +Return RadioResponse::getClipResponse(const V1_0::RadioResponseInfo& info, + V1_0::ClipStatus status) { + return {}; +} + +Return RadioResponse::getDataCallListResponse( + const V1_0::RadioResponseInfo& info, const hidl_vec& dcResp) { + return {}; +} + +Return RadioResponse::setSuppServiceNotificationsResponse( + const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setBandModeResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getAvailableBandModesResponse( + const V1_0::RadioResponseInfo& info, const hidl_vec& bandModes) { + return {}; +} + +Return RadioResponse::sendEnvelopeResponse(const V1_0::RadioResponseInfo& info, + const hidl_string& commandResponse) { + return {}; +} + +Return RadioResponse::sendTerminalResponseToSimResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::handleStkCallSetupRequestFromSimResponse( + const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::explicitCallTransferResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setPreferredNetworkTypeResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getPreferredNetworkTypeResponse(const V1_0::RadioResponseInfo& info, + V1_0::PreferredNetworkType nwType) { + return {}; +} + +Return RadioResponse::getNeighboringCidsResponse( + const V1_0::RadioResponseInfo& info, const hidl_vec& cells) { + return {}; +} + +Return RadioResponse::setLocationUpdatesResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setCdmaSubscriptionSourceResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setCdmaRoamingPreferenceResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getCdmaRoamingPreferenceResponse(const V1_0::RadioResponseInfo& info, + V1_0::CdmaRoamingType type) { + return {}; +} + +Return RadioResponse::setTTYModeResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getTTYModeResponse(const V1_0::RadioResponseInfo& info, + V1_0::TtyMode mode) { + return {}; +} + +Return RadioResponse::setPreferredVoicePrivacyResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getPreferredVoicePrivacyResponse(const V1_0::RadioResponseInfo& info, + bool enable) { + return {}; +} + +Return RadioResponse::sendCDMAFeatureCodeResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::sendBurstDtmfResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +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) { + return {}; +} + +Return RadioResponse::getDeviceIdentityResponse( // + const V1_0::RadioResponseInfo& info, const hidl_string& imei, const hidl_string& imeisv, + const hidl_string& esn, const hidl_string& meid) { + return {}; +} + +Return RadioResponse::exitEmergencyCallbackModeResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::reportStkServiceIsRunningResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getCdmaSubscriptionSourceResponse(const V1_0::RadioResponseInfo& info, + V1_0::CdmaSubscriptionSource source) { + return {}; +} + +Return RadioResponse::requestIsimAuthenticationResponse(const V1_0::RadioResponseInfo& info, + const hidl_string& response) { + return {}; +} + +Return RadioResponse::sendEnvelopeWithStatusResponse(const V1_0::RadioResponseInfo& info, + const V1_0::IccIoResult& iccIo) { + return {}; +} + +Return RadioResponse::getVoiceRadioTechnologyResponse(const V1_0::RadioResponseInfo& info, + V1_0::RadioTechnology rat) { + return {}; +} + +Return RadioResponse::getCellInfoListResponse(const V1_0::RadioResponseInfo& info, + const hidl_vec& cellInfo) { + return {}; +} + +Return RadioResponse::setCellInfoListRateResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setInitialAttachApnResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getImsRegistrationStateResponse( // + const V1_0::RadioResponseInfo& info, bool isRegd, V1_0::RadioTechnologyFamily ratFamily) { + return {}; +} + +Return RadioResponse::iccTransmitApduBasicChannelResponse(const V1_0::RadioResponseInfo& info, + const V1_0::IccIoResult& result) { + return {}; +} + +Return RadioResponse::iccOpenLogicalChannelResponse( // + const V1_0::RadioResponseInfo& info, int32_t chanId, const hidl_vec& selectResp) { + return {}; +} + +Return RadioResponse::iccCloseLogicalChannelResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::iccTransmitApduLogicalChannelResponse( + const V1_0::RadioResponseInfo& info, const V1_0::IccIoResult& result) { + return {}; +} + +Return RadioResponse::nvReadItemResponse(const V1_0::RadioResponseInfo& info, + const hidl_string& result) { + return {}; +} + +Return RadioResponse::nvWriteItemResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::nvWriteCdmaPrlResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::nvResetConfigResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setUiccSubscriptionResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setDataAllowedResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getHardwareConfigResponse( + const V1_0::RadioResponseInfo& info, const hidl_vec& config) { + return {}; +} + +Return RadioResponse::requestIccSimAuthenticationResponse(const V1_0::RadioResponseInfo& info, + const V1_0::IccIoResult& result) { + return {}; +} + +Return RadioResponse::setDataProfileResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::requestShutdownResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getRadioCapabilityResponse(const V1_0::RadioResponseInfo& info, + const V1_0::RadioCapability& rc) { + return {}; +} + +Return RadioResponse::setRadioCapabilityResponse(const V1_0::RadioResponseInfo& info, + const V1_0::RadioCapability& rc) { + return {}; +} + +Return RadioResponse::startLceServiceResponse(const V1_0::RadioResponseInfo& info, + const V1_0::LceStatusInfo& statusInfo) { + return {}; +} + +Return RadioResponse::stopLceServiceResponse(const V1_0::RadioResponseInfo& info, + const V1_0::LceStatusInfo& statusInfo) { + return {}; +} + +Return RadioResponse::pullLceDataResponse(const V1_0::RadioResponseInfo& info, + const V1_0::LceDataInfo& lceInfo) { + return {}; +} + +Return RadioResponse::getModemActivityInfoResponse( + const V1_0::RadioResponseInfo& info, const V1_0::ActivityStatsInfo& activityInfo) { + return {}; +} + +Return RadioResponse::setAllowedCarriersResponse(const V1_0::RadioResponseInfo& info, + int32_t numAllowed) { + return {}; +} + +Return RadioResponse::getAllowedCarriersResponse( // + const V1_0::RadioResponseInfo& info, bool allAllowed, const V1_0::CarrierRestrictions& cr) { + return {}; +} + +Return RadioResponse::sendDeviceStateResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setIndicationFilterResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setSimCardPowerResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setCarrierInfoForImsiEncryptionResponse( + const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setSimCardPowerResponse_1_1(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::startNetworkScanResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::stopNetworkScanResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::startKeepaliveResponse(const V1_0::RadioResponseInfo& info, + const V1_1::KeepaliveStatus& status) { + return {}; +} + +Return RadioResponse::stopKeepaliveResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getCellInfoListResponse_1_2(const V1_0::RadioResponseInfo& info, + const hidl_vec& cellInfo) { + return {}; +} + +Return RadioResponse::getIccCardStatusResponse_1_2(const V1_0::RadioResponseInfo& info, + const V1_2::CardStatus& cardStatus) { + return {}; +} + +Return RadioResponse::setSignalStrengthReportingCriteriaResponse( + const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setLinkCapacityReportingCriteriaResponse( + const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getCurrentCallsResponse_1_2(const V1_0::RadioResponseInfo& info, + const hidl_vec& calls) { + return {}; +} + +Return RadioResponse::getSignalStrengthResponse_1_2( + const V1_0::RadioResponseInfo& info, const V1_2::SignalStrength& signalStrength) { + return {}; +} + +Return RadioResponse::getVoiceRegistrationStateResponse_1_2( + const V1_0::RadioResponseInfo& info, const V1_2::VoiceRegStateResult& voiceRegResponse) { + return {}; +} + +Return RadioResponse::getDataRegistrationStateResponse_1_2( + const V1_0::RadioResponseInfo& info, const V1_2::DataRegStateResult& dataRegResponse) { + return {}; +} + +Return RadioResponse::setSystemSelectionChannelsResponse( + const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::enableModemResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getModemStackStatusResponse(const V1_0::RadioResponseInfo& info, + bool isEnabled) { + return {}; +} + +Return RadioResponse::emergencyDialResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::startNetworkScanResponse_1_4(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getCellInfoListResponse_1_4(const V1_0::RadioResponseInfo& info, + const hidl_vec& cellInfo) { + return {}; +} + +Return RadioResponse::getDataRegistrationStateResponse_1_4( + const V1_0::RadioResponseInfo& info, const V1_4::DataRegStateResult& dataRegResponse) { + return {}; +} + +Return RadioResponse::getIccCardStatusResponse_1_4(const V1_0::RadioResponseInfo& info, + const V1_4::CardStatus& cardStatus) { + return {}; +} + +Return RadioResponse::getPreferredNetworkTypeBitmapResponse( + const V1_0::RadioResponseInfo& info, + hidl_bitfield networkTypeBitmap) { + return {}; +} + +Return RadioResponse::setPreferredNetworkTypeBitmapResponse( + const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getDataCallListResponse_1_4( + const V1_0::RadioResponseInfo& info, + const hidl_vec& dcResponse) { + return {}; +} + +Return RadioResponse::setupDataCallResponse_1_4(const V1_0::RadioResponseInfo& info, + const V1_4::SetupDataCallResult& dcResponse) { + return {}; +} + +Return RadioResponse::setAllowedCarriersResponse_1_4(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getAllowedCarriersResponse_1_4( + const V1_0::RadioResponseInfo& info, const V1_4::CarrierRestrictionsWithPriority& carriers, + V1_4::SimLockMultiSimPolicy multiSimPolicy) { + return {}; +} + +Return RadioResponse::getSignalStrengthResponse_1_4( + const V1_0::RadioResponseInfo& info, const V1_4::SignalStrength& signalStrength) { + return {}; +} + +Return RadioResponse::setSignalStrengthReportingCriteriaResponse_1_5( + const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setLinkCapacityReportingCriteriaResponse_1_5( + const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::enableUiccApplicationsResponse(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::areUiccApplicationsEnabledResponse(const V1_0::RadioResponseInfo& info, + bool enabled) { + return {}; +} + +Return RadioResponse::setSystemSelectionChannelsResponse_1_5( + const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::startNetworkScanResponse_1_5(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setupDataCallResponse_1_5(const V1_0::RadioResponseInfo& info, + const V1_5::SetupDataCallResult& dcResponse) { + return {}; +} + +Return RadioResponse::getDataCallListResponse_1_5( + const V1_0::RadioResponseInfo& info, + const hidl_vec& dcResponse) { + return {}; +} + +Return RadioResponse::setInitialAttachApnResponse_1_5(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setDataProfileResponse_1_5(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setRadioPowerResponse_1_5(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setIndicationFilterResponse_1_5(const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getBarringInfoResponse( + const V1_0::RadioResponseInfo& info, const V1_5::CellIdentity& cellIdentity, + const hidl_vec& barringInfos) { + return {}; +} + +Return RadioResponse::getVoiceRegistrationStateResponse_1_5( + const V1_0::RadioResponseInfo& info, const V1_5::RegStateResult& voiceRegResponse) { + return {}; +} + +Return RadioResponse::getDataRegistrationStateResponse_1_5( + const V1_0::RadioResponseInfo& info, const V1_5::RegStateResult& dataRegResponse) { + return {}; +} + +Return RadioResponse::getCellInfoListResponse_1_5(const V1_0::RadioResponseInfo& info, + const hidl_vec& cellInfo) { + return {}; +} + +Return RadioResponse::setNetworkSelectionModeManualResponse_1_5( + const V1_0::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::supplySimDepersonalizationResponse(const V1_0::RadioResponseInfo& info, + V1_5::PersoSubstate persoType, + int32_t remainingRetries) { + return {}; +} + +Return RadioResponse::getIccCardStatusResponse_1_5(const V1_0::RadioResponseInfo& info, + const V1_5::CardStatus& cardStatus) { + return {}; +} + +Return RadioResponse::setRadioPowerResponse_1_6(const V1_6::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setupDataCallResponse_1_6(const V1_6::RadioResponseInfo& info, + const V1_6::SetupDataCallResult& dcResponse) { + return {}; +} + +Return RadioResponse::getDataCallListResponse_1_6( + const V1_6::RadioResponseInfo& info, + const hidl_vec& dcResponse) { + return {}; +} + +Return RadioResponse::setSimCardPowerResponse_1_6(const V1_6::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setNrDualConnectivityStateResponse( + const V1_6::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::isNrDualConnectivityEnabledResponse(const V1_6::RadioResponseInfo& info, + bool isEnabled) { + return {}; +} + +Return RadioResponse::allocatePduSessionIdResponse(const V1_6::RadioResponseInfo& info, + int32_t id) { + return {}; +} + +Return RadioResponse::releasePduSessionIdResponse(const V1_6::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::startHandoverResponse(const V1_6::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::cancelHandoverResponse(const V1_6::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::setAllowedNetworkTypesBitmapResponse( + const V1_6::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getAllowedNetworkTypesBitmapResponse( + const V1_6::RadioResponseInfo& info, + hidl_bitfield networkTypeBitmap) { + return {}; +} + +Return RadioResponse::setDataThrottlingResponse(const V1_6::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getSystemSelectionChannelsResponse( + const V1_6::RadioResponseInfo& info, + const hidl_vec& specifiers) { + return {}; +} + +Return RadioResponse::getCellInfoListResponse_1_6(const V1_6::RadioResponseInfo& info, + const hidl_vec& cellInfo) { + return {}; +} + +Return RadioResponse::getSignalStrengthResponse_1_6( + const V1_6::RadioResponseInfo& info, const V1_6::SignalStrength& signalStrength) { + return {}; +} + +Return RadioResponse::getVoiceRegistrationStateResponse_1_6( + const V1_6::RadioResponseInfo& info, const V1_6::RegStateResult& voiceRegResponse) { + return {}; +} + +Return RadioResponse::getDataRegistrationStateResponse_1_6( + const V1_6::RadioResponseInfo& info, const V1_6::RegStateResult& dataRegResponse) { + return {}; +} + +Return RadioResponse::getCurrentCallsResponse_1_6(const V1_6::RadioResponseInfo& info, + const hidl_vec& calls) { + return {}; +} + +Return RadioResponse::getSlicingConfigResponse(const V1_6::RadioResponseInfo& info, + const V1_6::SlicingConfig& slicingConfig) { + return {}; +} + +Return RadioResponse::getSimPhonebookRecordsResponse(const V1_6::RadioResponseInfo& info) { + return {}; +} + +Return RadioResponse::getSimPhonebookCapacityResponse( + const V1_6::RadioResponseInfo& info, const V1_6::PhonebookCapacity& capacity) { + return {}; +} + +Return RadioResponse::updateSimPhonebookRecordsResponse(const V1_6::RadioResponseInfo& info, + int32_t updatedRecordIndex) { + return {}; +} + +} // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/debug.h b/radio/aidl/compat/libradiocompat/debug.h index cb773bf27d..4158059f88 100644 --- a/radio/aidl/compat/libradiocompat/debug.h +++ b/radio/aidl/compat/libradiocompat/debug.h @@ -26,6 +26,12 @@ 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/RadioCompatBase.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioCompatBase.h new file mode 100644 index 0000000000..a412c34abc --- /dev/null +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioCompatBase.h @@ -0,0 +1,40 @@ +/* + * 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 "RadioIndication.h" +#include "RadioResponse.h" + +#include + +namespace android::hardware::radio::compat { + +class RadioCompatBase { + protected: + sp mHal1_5; + sp mHal1_6; + + sp mRadioResponse; + sp mRadioIndication; + + V1_6::IRadioResponse& respond(); + + public: + RadioCompatBase(sp hidlHal, sp radioResponse, + sp radioIndication); +}; + +} // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioIndication.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioIndication.h new file mode 100644 index 0000000000..991ae0637e --- /dev/null +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioIndication.h @@ -0,0 +1,179 @@ +/* + * 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 + +namespace android::hardware::radio::compat { + +class RadioIndication : public V1_6::IRadioIndication { + std::shared_ptr<::aidl::android::hardware::radio::messaging::IRadioMessagingIndication> + mMessagingCb; + + // IRadioIndication @ 1.0 + Return radioStateChanged(V1_0::RadioIndicationType type, + V1_0::RadioState radioState) override; + Return callStateChanged(V1_0::RadioIndicationType type) override; + Return networkStateChanged(V1_0::RadioIndicationType type) override; + Return newSms(V1_0::RadioIndicationType type, const hidl_vec& pdu) override; + Return newSmsStatusReport(V1_0::RadioIndicationType type, + const hidl_vec& pdu) override; + Return newSmsOnSim(V1_0::RadioIndicationType type, int32_t recordNumber) override; + Return onUssd(V1_0::RadioIndicationType type, V1_0::UssdModeType modeType, + const hidl_string& msg) override; + Return nitzTimeReceived(V1_0::RadioIndicationType type, const hidl_string& nitzTime, + uint64_t receivedTime) override; + Return currentSignalStrength(V1_0::RadioIndicationType type, + const V1_0::SignalStrength& signalStrength) override; + Return dataCallListChanged(V1_0::RadioIndicationType type, + const hidl_vec& dcList) override; + Return suppSvcNotify(V1_0::RadioIndicationType type, + const V1_0::SuppSvcNotification& suppSvc) override; + Return stkSessionEnd(V1_0::RadioIndicationType type) override; + Return stkProactiveCommand(V1_0::RadioIndicationType type, + const hidl_string& cmd) override; + Return stkEventNotify(V1_0::RadioIndicationType type, const hidl_string& cmd) override; + Return stkCallSetup(V1_0::RadioIndicationType type, int64_t timeout) override; + Return simSmsStorageFull(V1_0::RadioIndicationType type) override; + Return simRefresh(V1_0::RadioIndicationType type, + const V1_0::SimRefreshResult& refreshResult) override; + Return callRing(V1_0::RadioIndicationType type, bool isGsm, + const V1_0::CdmaSignalInfoRecord& record) override; + Return simStatusChanged(V1_0::RadioIndicationType type) override; + Return cdmaNewSms(V1_0::RadioIndicationType type, + const V1_0::CdmaSmsMessage& msg) override; + Return newBroadcastSms(V1_0::RadioIndicationType type, + const hidl_vec& data) override; + Return cdmaRuimSmsStorageFull(V1_0::RadioIndicationType type) override; + Return restrictedStateChanged(V1_0::RadioIndicationType type, + V1_0::PhoneRestrictedState state) override; + Return enterEmergencyCallbackMode(V1_0::RadioIndicationType type) override; + Return cdmaCallWaiting(V1_0::RadioIndicationType type, + const V1_0::CdmaCallWaiting& callWaitingRecord) override; + Return cdmaOtaProvisionStatus(V1_0::RadioIndicationType type, + V1_0::CdmaOtaProvisionStatus status) override; + Return cdmaInfoRec(V1_0::RadioIndicationType type, + const V1_0::CdmaInformationRecords& records) override; + Return indicateRingbackTone(V1_0::RadioIndicationType type, bool start) override; + Return resendIncallMute(V1_0::RadioIndicationType type) override; + Return cdmaSubscriptionSourceChanged(V1_0::RadioIndicationType type, + V1_0::CdmaSubscriptionSource cdmaSource) override; + Return cdmaPrlChanged(V1_0::RadioIndicationType type, int32_t version) override; + Return exitEmergencyCallbackMode(V1_0::RadioIndicationType type) override; + Return rilConnected(V1_0::RadioIndicationType type) override; + Return voiceRadioTechChanged(V1_0::RadioIndicationType type, + V1_0::RadioTechnology rat) override; + Return cellInfoList(V1_0::RadioIndicationType type, + const hidl_vec& records) override; + Return imsNetworkStateChanged(V1_0::RadioIndicationType type) override; + Return subscriptionStatusChanged(V1_0::RadioIndicationType type, bool activate) override; + Return srvccStateNotify(V1_0::RadioIndicationType type, V1_0::SrvccState state) override; + Return hardwareConfigChanged(V1_0::RadioIndicationType type, + const hidl_vec& configs) override; + Return radioCapabilityIndication(V1_0::RadioIndicationType type, + const V1_0::RadioCapability& rc) override; + Return onSupplementaryServiceIndication(V1_0::RadioIndicationType type, + const V1_0::StkCcUnsolSsResult& ss) override; + Return stkCallControlAlphaNotify(V1_0::RadioIndicationType type, + const hidl_string& alpha) override; + Return lceData(V1_0::RadioIndicationType type, const V1_0::LceDataInfo& lce) override; + Return pcoData(V1_0::RadioIndicationType type, const V1_0::PcoDataInfo& pco) override; + Return modemReset(V1_0::RadioIndicationType type, const hidl_string& reason) override; + + // IRadioIndication @ 1.1 + Return carrierInfoForImsiEncryption(V1_0::RadioIndicationType info) override; + Return networkScanResult(V1_0::RadioIndicationType type, + const V1_1::NetworkScanResult& result) override; + Return keepaliveStatus(V1_0::RadioIndicationType type, + const V1_1::KeepaliveStatus& status) override; + + // IRadioIndication @ 1.2 + Return networkScanResult_1_2(V1_0::RadioIndicationType type, + const V1_2::NetworkScanResult& result) override; + Return cellInfoList_1_2(V1_0::RadioIndicationType type, + const hidl_vec& records) override; + Return currentLinkCapacityEstimate(V1_0::RadioIndicationType type, + const V1_2::LinkCapacityEstimate& lce) override; + Return currentPhysicalChannelConfigs( + V1_0::RadioIndicationType type, + const hidl_vec& configs) override; + Return currentSignalStrength_1_2(V1_0::RadioIndicationType type, + const V1_2::SignalStrength& signalStrength) override; + + // IRadioIndication @ 1.4 + Return currentEmergencyNumberList( + V1_0::RadioIndicationType type, + const hidl_vec& emergencyNumberList) override; + Return cellInfoList_1_4(V1_0::RadioIndicationType type, + const hidl_vec& records) override; + Return networkScanResult_1_4(V1_0::RadioIndicationType type, + const V1_4::NetworkScanResult& result) override; + Return currentPhysicalChannelConfigs_1_4( + V1_0::RadioIndicationType type, + const hidl_vec& configs) override; + Return dataCallListChanged_1_4( + V1_0::RadioIndicationType type, + const hidl_vec& dcList) override; + Return currentSignalStrength_1_4(V1_0::RadioIndicationType type, + const V1_4::SignalStrength& signalStrength) override; + + // IRadioIndication @ 1.5 + Return uiccApplicationsEnablementChanged(V1_0::RadioIndicationType type, + bool enabled) override; + Return registrationFailed( // + V1_0::RadioIndicationType type, const V1_5::CellIdentity& cellIdentity, + const hidl_string& chosenPlmn, hidl_bitfield domain, int32_t causeCode, + int32_t additionalCauseCode) override; + Return barringInfoChanged( // + V1_0::RadioIndicationType type, const V1_5::CellIdentity& cellIdentity, + const hidl_vec& barringInfos) override; + Return cellInfoList_1_5(V1_0::RadioIndicationType type, + const hidl_vec& records) override; + Return networkScanResult_1_5(V1_0::RadioIndicationType type, + const V1_5::NetworkScanResult& result) override; + Return dataCallListChanged_1_5( + V1_0::RadioIndicationType type, + const hidl_vec& dcList) override; + + // IRadioIndication @ 1.6 + Return dataCallListChanged_1_6( + V1_0::RadioIndicationType type, + const hidl_vec& dcList) override; + Return unthrottleApn(V1_0::RadioIndicationType type, const hidl_string& apn) override; + Return currentLinkCapacityEstimate_1_6(V1_0::RadioIndicationType type, + const V1_6::LinkCapacityEstimate& lce) override; + Return currentSignalStrength_1_6(V1_0::RadioIndicationType type, + const V1_6::SignalStrength& signalStrength) override; + Return cellInfoList_1_6(V1_0::RadioIndicationType type, + const hidl_vec& records) override; + Return networkScanResult_1_6(V1_0::RadioIndicationType type, + const V1_6::NetworkScanResult& result) override; + Return currentPhysicalChannelConfigs_1_6( + V1_0::RadioIndicationType type, + const hidl_vec& configs) override; + Return simPhonebookChanged(V1_0::RadioIndicationType type) override; + Return simPhonebookRecordsReceived( + V1_0::RadioIndicationType type, V1_6::PbReceivedStatus status, + const hidl_vec& records) override; + + public: + void setResponseFunction( + std::shared_ptr<::aidl::android::hardware::radio::messaging::IRadioMessagingIndication> + radioMessagingIndication); +}; + +} // 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 new file mode 100644 index 0000000000..0cd3381983 --- /dev/null +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioMessaging.h @@ -0,0 +1,89 @@ +/* + * 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 "RadioCompatBase.h" + +#include + +namespace android::hardware::radio::compat { + +class RadioMessaging : public RadioCompatBase, + public aidl::android::hardware::radio::messaging::BnRadioMessaging { + ::ndk::ScopedAStatus acknowledgeIncomingGsmSmsWithPdu(int32_t serial, bool success, + const std::string& ackPdu) override; + ::ndk::ScopedAStatus acknowledgeLastIncomingCdmaSms( + int32_t serial, + const ::aidl::android::hardware::radio::messaging::CdmaSmsAck& smsAck) override; + ::ndk::ScopedAStatus acknowledgeLastIncomingGsmSms( + int32_t serial, bool success, + ::aidl::android::hardware::radio::messaging::SmsAcknowledgeFailCause cause) override; + ::ndk::ScopedAStatus cancelPendingUssd(int32_t serial) override; + ::ndk::ScopedAStatus deleteSmsOnRuim(int32_t serial, int32_t index) override; + ::ndk::ScopedAStatus deleteSmsOnSim(int32_t serial, int32_t index) override; + ::ndk::ScopedAStatus getCdmaBroadcastConfig(int32_t serial) override; + ::ndk::ScopedAStatus getGsmBroadcastConfig(int32_t serial) override; + ::ndk::ScopedAStatus getSmscAddress(int32_t serial) override; + ::ndk::ScopedAStatus reportSmsMemoryStatus(int32_t serial, bool available) override; + ::ndk::ScopedAStatus responseAcknowledgement() override; + ::ndk::ScopedAStatus sendCdmaSms( + int32_t serial, + const ::aidl::android::hardware::radio::messaging::CdmaSmsMessage& sms) override; + ::ndk::ScopedAStatus sendCdmaSmsExpectMore( + int32_t serial, + const ::aidl::android::hardware::radio::messaging::CdmaSmsMessage& sms) override; + ::ndk::ScopedAStatus sendImsSms( + int32_t serial, + const ::aidl::android::hardware::radio::messaging::ImsSmsMessage& message) override; + ::ndk::ScopedAStatus sendSms( + int32_t serial, + const ::aidl::android::hardware::radio::messaging::GsmSmsMessage& message) override; + ::ndk::ScopedAStatus sendSmsExpectMore( + int32_t serial, + const ::aidl::android::hardware::radio::messaging::GsmSmsMessage& message) override; + ::ndk::ScopedAStatus sendUssd(int32_t serial, const std::string& ussd) override; + ::ndk::ScopedAStatus setCdmaBroadcastActivation(int32_t serial, bool activate) override; + ::ndk::ScopedAStatus setCdmaBroadcastConfig( + int32_t serial, + const std::vector< + ::aidl::android::hardware::radio::messaging::CdmaBroadcastSmsConfigInfo>& + configInfo) override; + ::ndk::ScopedAStatus setGsmBroadcastActivation(int32_t serial, bool activate) override; + ::ndk::ScopedAStatus setGsmBroadcastConfig( + int32_t serial, + const std::vector< + ::aidl::android::hardware::radio::messaging::GsmBroadcastSmsConfigInfo>& + configInfo) override; + ::ndk::ScopedAStatus setResponseFunctions( + const std::shared_ptr< + ::aidl::android::hardware::radio::messaging::IRadioMessagingResponse>& + radioMessagingResponse, + const std::shared_ptr< + ::aidl::android::hardware::radio::messaging::IRadioMessagingIndication>& + radioMessagingIndication) override; + ::ndk::ScopedAStatus setSmscAddress(int32_t serial, const std::string& smsc) override; + ::ndk::ScopedAStatus writeSmsToRuim( + int32_t serial, + const ::aidl::android::hardware::radio::messaging::CdmaSmsWriteArgs& cdmaSms) override; + ::ndk::ScopedAStatus writeSmsToSim( + int32_t serial, + const ::aidl::android::hardware::radio::messaging::SmsWriteArgs& smsWriteArgs) override; + + public: + using RadioCompatBase::RadioCompatBase; +}; + +} // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioResponse.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioResponse.h new file mode 100644 index 0000000000..121cc45687 --- /dev/null +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioResponse.h @@ -0,0 +1,407 @@ +/* + * 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 + +namespace android::hardware::radio::compat { + +class RadioResponse : public V1_6::IRadioResponse { + std::shared_ptr<::aidl::android::hardware::radio::messaging::IRadioMessagingResponse> + mMessagingCb; + + // IRadioResponse @ 1.0 + Return getIccCardStatusResponse(const V1_0::RadioResponseInfo& info, + const V1_0::CardStatus& cardStatus) override; + Return supplyIccPinForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t remainingRetries) override; + Return supplyIccPukForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t remainingRetries) override; + Return supplyIccPin2ForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t remainingRetries) override; + Return supplyIccPuk2ForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t remainingRetries) override; + Return changeIccPinForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t remainingRetries) override; + Return changeIccPin2ForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t remainingRetries) override; + Return supplyNetworkDepersonalizationResponse(const V1_0::RadioResponseInfo& info, + int32_t remainingRetries) override; + Return getCurrentCallsResponse(const V1_0::RadioResponseInfo& info, + const hidl_vec& calls) override; + Return dialResponse(const V1_0::RadioResponseInfo& info) override; + Return getIMSIForAppResponse(const V1_0::RadioResponseInfo& info, + const hidl_string& imsi) override; + Return hangupConnectionResponse(const V1_0::RadioResponseInfo& info) override; + Return hangupWaitingOrBackgroundResponse(const V1_0::RadioResponseInfo& info) override; + Return hangupForegroundResumeBackgroundResponse( + const V1_0::RadioResponseInfo& info) override; + Return switchWaitingOrHoldingAndActiveResponse( + const V1_0::RadioResponseInfo& info) override; + Return conferenceResponse(const V1_0::RadioResponseInfo& info) override; + Return rejectCallResponse(const V1_0::RadioResponseInfo& info) override; + Return getLastCallFailCauseResponse( + const V1_0::RadioResponseInfo& info, + const V1_0::LastCallFailCauseInfo& failCauseinfo) override; + Return getSignalStrengthResponse(const V1_0::RadioResponseInfo& info, + const V1_0::SignalStrength& sigStrength) override; + Return getVoiceRegistrationStateResponse( + const V1_0::RadioResponseInfo& info, + const V1_0::VoiceRegStateResult& voiceRegResponse) override; + Return getDataRegistrationStateResponse( + const V1_0::RadioResponseInfo& info, + const V1_0::DataRegStateResult& dataRegResponse) override; + Return getOperatorResponse(const V1_0::RadioResponseInfo& info, + const hidl_string& longName, const hidl_string& shortName, + const hidl_string& numeric) override; + Return setRadioPowerResponse(const V1_0::RadioResponseInfo& info) override; + Return sendDtmfResponse(const V1_0::RadioResponseInfo& info) override; + Return sendSmsResponse(const V1_0::RadioResponseInfo& info, + const V1_0::SendSmsResult& sms) override; + Return sendSMSExpectMoreResponse(const V1_0::RadioResponseInfo& info, + const V1_0::SendSmsResult& sms) override; + Return setupDataCallResponse(const V1_0::RadioResponseInfo& info, + const V1_0::SetupDataCallResult& dcResponse) override; + Return iccIOForAppResponse(const V1_0::RadioResponseInfo& info, + const V1_0::IccIoResult& iccIo) override; + Return sendUssdResponse(const V1_0::RadioResponseInfo& info) override; + Return cancelPendingUssdResponse(const V1_0::RadioResponseInfo& info) override; + Return getClirResponse(const V1_0::RadioResponseInfo& info, int32_t n, + int32_t m) override; + Return setClirResponse(const V1_0::RadioResponseInfo& info) override; + Return getCallForwardStatusResponse( + const V1_0::RadioResponseInfo& info, + const hidl_vec& callForwardInfos) override; + Return setCallForwardResponse(const V1_0::RadioResponseInfo& info) override; + Return getCallWaitingResponse(const V1_0::RadioResponseInfo& info, bool enable, + int32_t serviceClass) override; + Return setCallWaitingResponse(const V1_0::RadioResponseInfo& info) override; + Return acknowledgeLastIncomingGsmSmsResponse( + const V1_0::RadioResponseInfo& info) override; + Return acceptCallResponse(const V1_0::RadioResponseInfo& info) override; + Return deactivateDataCallResponse(const V1_0::RadioResponseInfo& info) override; + Return getFacilityLockForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t response) override; + Return setFacilityLockForAppResponse(const V1_0::RadioResponseInfo& info, + int32_t retry) override; + Return setBarringPasswordResponse(const V1_0::RadioResponseInfo& info) override; + Return getNetworkSelectionModeResponse(const V1_0::RadioResponseInfo& info, + bool manual) override; + Return setNetworkSelectionModeAutomaticResponse( + const V1_0::RadioResponseInfo& info) override; + Return setNetworkSelectionModeManualResponse( + const V1_0::RadioResponseInfo& info) override; + Return getAvailableNetworksResponse( + const V1_0::RadioResponseInfo& info, + const hidl_vec& networkInfos) override; + Return startDtmfResponse(const V1_0::RadioResponseInfo& info) override; + Return stopDtmfResponse(const V1_0::RadioResponseInfo& info) override; + Return getBasebandVersionResponse(const V1_0::RadioResponseInfo& info, + const hidl_string& version) override; + Return separateConnectionResponse(const V1_0::RadioResponseInfo& info) override; + Return setMuteResponse(const V1_0::RadioResponseInfo& info) override; + Return getMuteResponse(const V1_0::RadioResponseInfo& info, bool enable) override; + Return getClipResponse(const V1_0::RadioResponseInfo& info, + V1_0::ClipStatus status) override; + Return getDataCallListResponse( + const V1_0::RadioResponseInfo& info, + const hidl_vec& dcResponse) override; + Return setSuppServiceNotificationsResponse(const V1_0::RadioResponseInfo& info) override; + Return writeSmsToSimResponse(const V1_0::RadioResponseInfo& info, int32_t index) override; + Return deleteSmsOnSimResponse(const V1_0::RadioResponseInfo& info) override; + Return setBandModeResponse(const V1_0::RadioResponseInfo& info) override; + Return getAvailableBandModesResponse( + const V1_0::RadioResponseInfo& info, + const hidl_vec& bandModes) override; + Return sendEnvelopeResponse(const V1_0::RadioResponseInfo& info, + const hidl_string& commandResponse) override; + Return sendTerminalResponseToSimResponse(const V1_0::RadioResponseInfo& info) override; + Return handleStkCallSetupRequestFromSimResponse( + const V1_0::RadioResponseInfo& info) override; + Return explicitCallTransferResponse(const V1_0::RadioResponseInfo& info) override; + Return setPreferredNetworkTypeResponse(const V1_0::RadioResponseInfo& info) override; + Return getPreferredNetworkTypeResponse(const V1_0::RadioResponseInfo& info, + V1_0::PreferredNetworkType nwType) override; + Return getNeighboringCidsResponse(const V1_0::RadioResponseInfo& info, + const hidl_vec& cells) override; + Return setLocationUpdatesResponse(const V1_0::RadioResponseInfo& info) override; + Return setCdmaSubscriptionSourceResponse(const V1_0::RadioResponseInfo& info) override; + Return setCdmaRoamingPreferenceResponse(const V1_0::RadioResponseInfo& info) override; + Return getCdmaRoamingPreferenceResponse(const V1_0::RadioResponseInfo& info, + V1_0::CdmaRoamingType type) override; + Return setTTYModeResponse(const V1_0::RadioResponseInfo& info) override; + Return getTTYModeResponse(const V1_0::RadioResponseInfo& info, + V1_0::TtyMode mode) override; + Return setPreferredVoicePrivacyResponse(const V1_0::RadioResponseInfo& info) override; + Return getPreferredVoicePrivacyResponse(const V1_0::RadioResponseInfo& info, + bool enable) override; + Return sendCDMAFeatureCodeResponse(const V1_0::RadioResponseInfo& info) override; + Return sendBurstDtmfResponse(const V1_0::RadioResponseInfo& info) override; + Return sendCdmaSmsResponse(const V1_0::RadioResponseInfo& info, + const V1_0::SendSmsResult& sms) override; + Return acknowledgeLastIncomingCdmaSmsResponse( + const V1_0::RadioResponseInfo& info) override; + Return getGsmBroadcastConfigResponse( + const V1_0::RadioResponseInfo& info, + const hidl_vec& configs) override; + Return setGsmBroadcastConfigResponse(const V1_0::RadioResponseInfo& info) override; + Return setGsmBroadcastActivationResponse(const V1_0::RadioResponseInfo& info) override; + Return getCdmaBroadcastConfigResponse( + const V1_0::RadioResponseInfo& info, + const hidl_vec& configs) override; + Return setCdmaBroadcastConfigResponse(const V1_0::RadioResponseInfo& info) override; + Return setCdmaBroadcastActivationResponse(const V1_0::RadioResponseInfo& info) override; + Return 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) override; + Return writeSmsToRuimResponse(const V1_0::RadioResponseInfo& info, + uint32_t index) override; + Return deleteSmsOnRuimResponse(const V1_0::RadioResponseInfo& info) override; + Return getDeviceIdentityResponse( // + const V1_0::RadioResponseInfo& info, const hidl_string& imei, const hidl_string& imeisv, + const hidl_string& esn, const hidl_string& meid) override; + Return exitEmergencyCallbackModeResponse(const V1_0::RadioResponseInfo& info) override; + Return getSmscAddressResponse(const V1_0::RadioResponseInfo& info, + const hidl_string& smsc) override; + Return setSmscAddressResponse(const V1_0::RadioResponseInfo& info) override; + Return reportSmsMemoryStatusResponse(const V1_0::RadioResponseInfo& info) override; + Return reportStkServiceIsRunningResponse(const V1_0::RadioResponseInfo& info) override; + Return getCdmaSubscriptionSourceResponse(const V1_0::RadioResponseInfo& info, + V1_0::CdmaSubscriptionSource source) override; + Return requestIsimAuthenticationResponse(const V1_0::RadioResponseInfo& info, + const hidl_string& response) override; + Return acknowledgeIncomingGsmSmsWithPduResponse( + const V1_0::RadioResponseInfo& info) override; + Return sendEnvelopeWithStatusResponse(const V1_0::RadioResponseInfo& info, + const V1_0::IccIoResult& iccIo) override; + Return getVoiceRadioTechnologyResponse(const V1_0::RadioResponseInfo& info, + V1_0::RadioTechnology rat) override; + Return getCellInfoListResponse(const V1_0::RadioResponseInfo& info, + const hidl_vec& cellInfo) override; + Return setCellInfoListRateResponse(const V1_0::RadioResponseInfo& info) override; + Return setInitialAttachApnResponse(const V1_0::RadioResponseInfo& info) override; + Return getImsRegistrationStateResponse(const V1_0::RadioResponseInfo& info, + bool isRegistered, + V1_0::RadioTechnologyFamily ratFamily) override; + Return sendImsSmsResponse(const V1_0::RadioResponseInfo& info, + const V1_0::SendSmsResult& sms) override; + Return iccTransmitApduBasicChannelResponse(const V1_0::RadioResponseInfo& info, + const V1_0::IccIoResult& result) override; + Return iccOpenLogicalChannelResponse(const V1_0::RadioResponseInfo& info, + int32_t channelId, + const hidl_vec& selectResponse) override; + Return iccCloseLogicalChannelResponse(const V1_0::RadioResponseInfo& info) override; + Return iccTransmitApduLogicalChannelResponse(const V1_0::RadioResponseInfo& info, + const V1_0::IccIoResult& result) override; + Return nvReadItemResponse(const V1_0::RadioResponseInfo& info, + const hidl_string& result) override; + Return nvWriteItemResponse(const V1_0::RadioResponseInfo& info) override; + Return nvWriteCdmaPrlResponse(const V1_0::RadioResponseInfo& info) override; + Return nvResetConfigResponse(const V1_0::RadioResponseInfo& info) override; + Return setUiccSubscriptionResponse(const V1_0::RadioResponseInfo& info) override; + Return setDataAllowedResponse(const V1_0::RadioResponseInfo& info) override; + Return getHardwareConfigResponse(const V1_0::RadioResponseInfo& info, + const hidl_vec& config) override; + Return requestIccSimAuthenticationResponse(const V1_0::RadioResponseInfo& info, + const V1_0::IccIoResult& result) override; + Return setDataProfileResponse(const V1_0::RadioResponseInfo& info) override; + Return requestShutdownResponse(const V1_0::RadioResponseInfo& info) override; + Return getRadioCapabilityResponse(const V1_0::RadioResponseInfo& info, + const V1_0::RadioCapability& rc) override; + Return setRadioCapabilityResponse(const V1_0::RadioResponseInfo& info, + const V1_0::RadioCapability& rc) override; + Return startLceServiceResponse(const V1_0::RadioResponseInfo& info, + const V1_0::LceStatusInfo& statusInfo) override; + Return stopLceServiceResponse(const V1_0::RadioResponseInfo& info, + const V1_0::LceStatusInfo& statusInfo) override; + Return pullLceDataResponse(const V1_0::RadioResponseInfo& info, + const V1_0::LceDataInfo& lceInfo) override; + Return getModemActivityInfoResponse(const V1_0::RadioResponseInfo& info, + const V1_0::ActivityStatsInfo& activityInfo) override; + Return setAllowedCarriersResponse(const V1_0::RadioResponseInfo& info, + int32_t numAllowed) override; + Return getAllowedCarriersResponse(const V1_0::RadioResponseInfo& info, bool allAllowed, + const V1_0::CarrierRestrictions& carriers) override; + Return sendDeviceStateResponse(const V1_0::RadioResponseInfo& info) override; + Return setIndicationFilterResponse(const V1_0::RadioResponseInfo& info) override; + Return setSimCardPowerResponse(const V1_0::RadioResponseInfo& info) override; + Return acknowledgeRequest(int32_t serial) override; + + // IRadioResponse @ 1.1 + Return setCarrierInfoForImsiEncryptionResponse( + const V1_0::RadioResponseInfo& info) override; + Return setSimCardPowerResponse_1_1(const V1_0::RadioResponseInfo& info) override; + Return startNetworkScanResponse(const V1_0::RadioResponseInfo& info) override; + Return stopNetworkScanResponse(const V1_0::RadioResponseInfo& info) override; + Return startKeepaliveResponse(const V1_0::RadioResponseInfo& info, + const V1_1::KeepaliveStatus& status) override; + Return stopKeepaliveResponse(const V1_0::RadioResponseInfo& info) override; + + // IRadioResponse @ 1.2 + Return getCellInfoListResponse_1_2(const V1_0::RadioResponseInfo& info, + const hidl_vec& cellInfo) override; + Return getIccCardStatusResponse_1_2(const V1_0::RadioResponseInfo& info, + const V1_2::CardStatus& cardStatus) override; + Return setSignalStrengthReportingCriteriaResponse( + const V1_0::RadioResponseInfo& info) override; + Return setLinkCapacityReportingCriteriaResponse( + const V1_0::RadioResponseInfo& info) override; + Return getCurrentCallsResponse_1_2(const V1_0::RadioResponseInfo& info, + const hidl_vec& calls) override; + Return getSignalStrengthResponse_1_2(const V1_0::RadioResponseInfo& info, + const V1_2::SignalStrength& signalStrength) override; + Return getVoiceRegistrationStateResponse_1_2( + const V1_0::RadioResponseInfo& info, + const V1_2::VoiceRegStateResult& voiceRegResponse) override; + Return getDataRegistrationStateResponse_1_2( + const V1_0::RadioResponseInfo& info, + const V1_2::DataRegStateResult& dataRegResponse) override; + + // IRadioResponse @ 1.3 + Return setSystemSelectionChannelsResponse(const V1_0::RadioResponseInfo& info) override; + Return enableModemResponse(const V1_0::RadioResponseInfo& info) override; + Return getModemStackStatusResponse(const V1_0::RadioResponseInfo& info, + bool isEnabled) override; + + // IRadioResponse @ 1.4 + Return emergencyDialResponse(const V1_0::RadioResponseInfo& info) override; + Return startNetworkScanResponse_1_4(const V1_0::RadioResponseInfo& info) override; + Return getCellInfoListResponse_1_4(const V1_0::RadioResponseInfo& info, + const hidl_vec& cellInfo) override; + Return getDataRegistrationStateResponse_1_4( + const V1_0::RadioResponseInfo& info, + const V1_4::DataRegStateResult& dataRegResponse) override; + Return getIccCardStatusResponse_1_4(const V1_0::RadioResponseInfo& info, + const V1_4::CardStatus& cardStatus) override; + Return getPreferredNetworkTypeBitmapResponse( + const V1_0::RadioResponseInfo& info, + hidl_bitfield networkTypeBitmap) override; + Return setPreferredNetworkTypeBitmapResponse( + const V1_0::RadioResponseInfo& info) override; + Return getDataCallListResponse_1_4( + const V1_0::RadioResponseInfo& info, + const hidl_vec& dcResponse) override; + Return setupDataCallResponse_1_4(const V1_0::RadioResponseInfo& info, + const V1_4::SetupDataCallResult& dcResponse) override; + Return setAllowedCarriersResponse_1_4(const V1_0::RadioResponseInfo& info) override; + Return getAllowedCarriersResponse_1_4( + const V1_0::RadioResponseInfo& info, + const V1_4::CarrierRestrictionsWithPriority& carriers, + V1_4::SimLockMultiSimPolicy multiSimPolicy) override; + Return getSignalStrengthResponse_1_4(const V1_0::RadioResponseInfo& info, + const V1_4::SignalStrength& signalStrength) override; + + // IRadioResponse @ 1.5 + Return setSignalStrengthReportingCriteriaResponse_1_5( + const V1_0::RadioResponseInfo& info) override; + Return setLinkCapacityReportingCriteriaResponse_1_5( + const V1_0::RadioResponseInfo& info) override; + Return enableUiccApplicationsResponse(const V1_0::RadioResponseInfo& info) override; + Return areUiccApplicationsEnabledResponse(const V1_0::RadioResponseInfo& info, + bool enabled) override; + Return setSystemSelectionChannelsResponse_1_5( + const V1_0::RadioResponseInfo& info) override; + Return startNetworkScanResponse_1_5(const V1_0::RadioResponseInfo& info) override; + Return setupDataCallResponse_1_5(const V1_0::RadioResponseInfo& info, + const V1_5::SetupDataCallResult& dcResponse) override; + Return getDataCallListResponse_1_5( + const V1_0::RadioResponseInfo& info, + const hidl_vec& dcResponse) override; + Return setInitialAttachApnResponse_1_5(const V1_0::RadioResponseInfo& info) override; + Return setDataProfileResponse_1_5(const V1_0::RadioResponseInfo& info) override; + Return setRadioPowerResponse_1_5(const V1_0::RadioResponseInfo& info) override; + Return setIndicationFilterResponse_1_5(const V1_0::RadioResponseInfo& info) override; + Return getBarringInfoResponse(const V1_0::RadioResponseInfo& info, + const V1_5::CellIdentity& cellIdentity, + const hidl_vec& barringInfos) override; + Return getVoiceRegistrationStateResponse_1_5( + const V1_0::RadioResponseInfo& info, + const V1_5::RegStateResult& voiceRegResponse) override; + Return getDataRegistrationStateResponse_1_5( + const V1_0::RadioResponseInfo& info, + const V1_5::RegStateResult& dataRegResponse) override; + Return getCellInfoListResponse_1_5(const V1_0::RadioResponseInfo& info, + const hidl_vec& cellInfo) override; + Return setNetworkSelectionModeManualResponse_1_5( + const V1_0::RadioResponseInfo& info) override; + Return sendCdmaSmsExpectMoreResponse(const V1_0::RadioResponseInfo& info, + const V1_0::SendSmsResult& sms) override; + Return supplySimDepersonalizationResponse(const V1_0::RadioResponseInfo& info, + V1_5::PersoSubstate persoType, + int32_t remainingRetries) override; + Return getIccCardStatusResponse_1_5(const V1_0::RadioResponseInfo& info, + const V1_5::CardStatus& cardStatus) override; + + // IRadioResponse @ 1.6 + Return setRadioPowerResponse_1_6(const V1_6::RadioResponseInfo& info) override; + Return setupDataCallResponse_1_6(const V1_6::RadioResponseInfo& info, + const V1_6::SetupDataCallResult& dcResponse) override; + Return getDataCallListResponse_1_6( + const V1_6::RadioResponseInfo& info, + const hidl_vec& dcResponse) override; + Return sendSmsResponse_1_6(const V1_6::RadioResponseInfo& info, + const V1_0::SendSmsResult& sms) override; + Return sendSmsExpectMoreResponse_1_6(const V1_6::RadioResponseInfo& info, + const V1_0::SendSmsResult& sms) override; + Return sendCdmaSmsResponse_1_6(const V1_6::RadioResponseInfo& info, + const V1_0::SendSmsResult& sms) override; + Return sendCdmaSmsExpectMoreResponse_1_6(const V1_6::RadioResponseInfo& info, + const V1_0::SendSmsResult& sms) override; + Return setSimCardPowerResponse_1_6(const V1_6::RadioResponseInfo& info) override; + Return setNrDualConnectivityStateResponse(const V1_6::RadioResponseInfo& info) override; + Return isNrDualConnectivityEnabledResponse(const V1_6::RadioResponseInfo& info, + bool isEnabled) override; + Return allocatePduSessionIdResponse(const V1_6::RadioResponseInfo& info, + int32_t id) override; + Return releasePduSessionIdResponse(const V1_6::RadioResponseInfo& info) override; + Return startHandoverResponse(const V1_6::RadioResponseInfo& info) override; + Return cancelHandoverResponse(const V1_6::RadioResponseInfo& info) override; + Return setAllowedNetworkTypesBitmapResponse(const V1_6::RadioResponseInfo& info) override; + Return getAllowedNetworkTypesBitmapResponse( + const V1_6::RadioResponseInfo& info, + hidl_bitfield networkTypeBitmap) override; + Return setDataThrottlingResponse(const V1_6::RadioResponseInfo& info) override; + Return getSystemSelectionChannelsResponse( + const V1_6::RadioResponseInfo& info, + const hidl_vec& specifiers) override; + Return getCellInfoListResponse_1_6(const V1_6::RadioResponseInfo& info, + const hidl_vec& cellInfo) override; + Return getSignalStrengthResponse_1_6(const V1_6::RadioResponseInfo& info, + const V1_6::SignalStrength& signalStrength) override; + Return getVoiceRegistrationStateResponse_1_6( + const V1_6::RadioResponseInfo& info, + const V1_6::RegStateResult& voiceRegResponse) override; + Return getDataRegistrationStateResponse_1_6( + const V1_6::RadioResponseInfo& info, + const V1_6::RegStateResult& dataRegResponse) override; + Return getCurrentCallsResponse_1_6(const V1_6::RadioResponseInfo& info, + const hidl_vec& calls) override; + Return getSlicingConfigResponse(const V1_6::RadioResponseInfo& info, + const V1_6::SlicingConfig& slicingConfig) override; + Return getSimPhonebookRecordsResponse(const V1_6::RadioResponseInfo& info) override; + Return getSimPhonebookCapacityResponse(const V1_6::RadioResponseInfo& info, + const V1_6::PhonebookCapacity& capacity) override; + Return updateSimPhonebookRecordsResponse(const V1_6::RadioResponseInfo& info, + int32_t updatedRecordIndex) override; + + public: + void setResponseFunction( + std::shared_ptr<::aidl::android::hardware::radio::messaging::IRadioMessagingResponse> + radioMessagingResponse); +}; + +} // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/messaging/RadioIndication-messaging.cpp b/radio/aidl/compat/libradiocompat/messaging/RadioIndication-messaging.cpp new file mode 100644 index 0000000000..c7342b1146 --- /dev/null +++ b/radio/aidl/compat/libradiocompat/messaging/RadioIndication-messaging.cpp @@ -0,0 +1,94 @@ +/* + * 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 "commonStructs.h" +#include "debug.h" +#include "structs.h" + +#define RADIO_MODULE "MessagingIndication" + +namespace android::hardware::radio::compat { + +namespace aidl = ::aidl::android::hardware::radio::messaging; + +void RadioIndication::setResponseFunction(std::shared_ptr rmiCb) { + CHECK(rmiCb); + mMessagingCb = rmiCb; +} + +Return RadioIndication::cdmaNewSms(V1_0::RadioIndicationType type, + const V1_0::CdmaSmsMessage& msg) { + LOG_CALL << type; + CHECK_CB(mMessagingCb); + mMessagingCb->cdmaNewSms(toAidl(type), toAidl(msg)); + return {}; +} + +Return RadioIndication::cdmaRuimSmsStorageFull(V1_0::RadioIndicationType type) { + LOG_CALL << type; + CHECK_CB(mMessagingCb); + mMessagingCb->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); + return {}; +} + +Return RadioIndication::newSms(V1_0::RadioIndicationType type, const hidl_vec& pdu) { + LOG_CALL << type; + CHECK_CB(mMessagingCb); + mMessagingCb->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); + return {}; +} + +Return RadioIndication::newSmsStatusReport(V1_0::RadioIndicationType type, + const hidl_vec& pdu) { + LOG_CALL << type; + CHECK_CB(mMessagingCb); + mMessagingCb->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); + return {}; +} + +Return RadioIndication::simSmsStorageFull(V1_0::RadioIndicationType type) { + LOG_CALL << type; + CHECK_CB(mMessagingCb); + mMessagingCb->simSmsStorageFull(toAidl(type)); + return {}; +} + +} // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/messaging/RadioMessaging.cpp b/radio/aidl/compat/libradiocompat/messaging/RadioMessaging.cpp new file mode 100644 index 0000000000..c1a82b566f --- /dev/null +++ b/radio/aidl/compat/libradiocompat/messaging/RadioMessaging.cpp @@ -0,0 +1,195 @@ +/* + * 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 "debug.h" +#include "structs.h" + +#include "collections.h" + +#define RADIO_MODULE "Messaging" + +namespace android::hardware::radio::compat { + +using ::ndk::ScopedAStatus; +namespace aidl = ::aidl::android::hardware::radio::messaging; +constexpr auto ok = &ScopedAStatus::ok; + +ScopedAStatus RadioMessaging::acknowledgeIncomingGsmSmsWithPdu( // + int32_t serial, bool success, const std::string& ackPdu) { + LOG_CALL << serial << ' ' << success << ' ' << ackPdu; + mHal1_5->acknowledgeIncomingGsmSmsWithPdu(serial, success, ackPdu); + return ok(); +} + +ScopedAStatus RadioMessaging::acknowledgeLastIncomingCdmaSms( // + int32_t serial, const aidl::CdmaSmsAck& smsAck) { + LOG_CALL << serial; + mHal1_5->acknowledgeLastIncomingCdmaSms(serial, toHidl(smsAck)); + return ok(); +} + +ScopedAStatus RadioMessaging::acknowledgeLastIncomingGsmSms( // + int32_t serial, bool success, aidl::SmsAcknowledgeFailCause cause) { + LOG_CALL << serial << ' ' << success; + mHal1_5->acknowledgeLastIncomingGsmSms(serial, success, V1_0::SmsAcknowledgeFailCause(cause)); + return ok(); +} + +ScopedAStatus RadioMessaging::cancelPendingUssd(int32_t serial) { + LOG_CALL << serial; + mHal1_5->cancelPendingUssd(serial); + return ok(); +} + +ScopedAStatus RadioMessaging::deleteSmsOnRuim(int32_t serial, int32_t index) { + LOG_CALL << serial << ' ' << index; + mHal1_5->deleteSmsOnRuim(serial, index); + return ok(); +} + +ScopedAStatus RadioMessaging::deleteSmsOnSim(int32_t serial, int32_t index) { + LOG_CALL << serial << ' ' << index; + mHal1_5->deleteSmsOnSim(serial, index); + return ok(); +} + +ScopedAStatus RadioMessaging::getCdmaBroadcastConfig(int32_t serial) { + LOG_CALL << serial; + mHal1_5->getCdmaBroadcastConfig(serial); + return ok(); +} + +ScopedAStatus RadioMessaging::getGsmBroadcastConfig(int32_t serial) { + LOG_CALL << serial; + mHal1_5->getGsmBroadcastConfig(serial); + return ok(); +} + +ScopedAStatus RadioMessaging::getSmscAddress(int32_t serial) { + LOG_CALL << serial; + mHal1_5->getSmscAddress(serial); + return ok(); +} + +ScopedAStatus RadioMessaging::reportSmsMemoryStatus(int32_t serial, bool available) { + LOG_CALL << serial << ' ' << available; + mHal1_5->reportSmsMemoryStatus(serial, available); + return ok(); +} + +ScopedAStatus RadioMessaging::responseAcknowledgement() { + LOG_CALL; + mHal1_5->responseAcknowledgement(); + return ok(); +} + +ScopedAStatus RadioMessaging::sendCdmaSms(int32_t serial, const aidl::CdmaSmsMessage& sms) { + LOG_CALL << serial; + 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)); + return ok(); +} + +ScopedAStatus RadioMessaging::sendImsSms(int32_t serial, const aidl::ImsSmsMessage& message) { + LOG_CALL << serial; + mHal1_5->sendImsSms(serial, toHidl(message)); + return ok(); +} + +ScopedAStatus RadioMessaging::sendSms(int32_t serial, const aidl::GsmSmsMessage& message) { + LOG_CALL << serial; + 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)); + return ok(); +} + +ScopedAStatus RadioMessaging::sendUssd(int32_t serial, const std::string& ussd) { + LOG_CALL << serial << ' ' << ussd; + mHal1_5->sendUssd(serial, ussd); + return ok(); +} + +ScopedAStatus RadioMessaging::setCdmaBroadcastActivation(int32_t serial, bool activate) { + LOG_CALL << serial << ' ' << activate; + mHal1_5->setCdmaBroadcastActivation(serial, activate); + return ok(); +} + +ScopedAStatus RadioMessaging::setCdmaBroadcastConfig( + int32_t serial, const std::vector& cfgInfo) { + LOG_CALL << serial; + mHal1_5->setCdmaBroadcastConfig(serial, toHidl(cfgInfo)); + return ok(); +} + +ScopedAStatus RadioMessaging::setGsmBroadcastActivation(int32_t serial, bool activate) { + LOG_CALL << serial << ' ' << activate; + mHal1_5->setGsmBroadcastActivation(serial, activate); + return ok(); +} + +ScopedAStatus RadioMessaging::setGsmBroadcastConfig( + int32_t serial, const std::vector& configInfo) { + LOG_CALL << serial; + mHal1_5->setGsmBroadcastConfig(serial, toHidl(configInfo)); + return ok(); +} + +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); + + return ok(); +} + +ScopedAStatus RadioMessaging::setSmscAddress(int32_t serial, const std::string& smsc) { + LOG_CALL << serial << ' ' << smsc; + mHal1_5->setSmscAddress(serial, smsc); + return ok(); +} + +ScopedAStatus RadioMessaging::writeSmsToRuim(int32_t serial, const aidl::CdmaSmsWriteArgs& sms) { + LOG_CALL << serial; + mHal1_5->writeSmsToRuim(serial, toHidl(sms)); + return ok(); +} + +ScopedAStatus RadioMessaging::writeSmsToSim(int32_t serial, const aidl::SmsWriteArgs& smsWrArgs) { + LOG_CALL << serial; + mHal1_5->writeSmsToSim(serial, toHidl(smsWrArgs)); + return ok(); +} + +} // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/messaging/RadioResponse-messaging.cpp b/radio/aidl/compat/libradiocompat/messaging/RadioResponse-messaging.cpp new file mode 100644 index 0000000000..379e4630af --- /dev/null +++ b/radio/aidl/compat/libradiocompat/messaging/RadioResponse-messaging.cpp @@ -0,0 +1,244 @@ +/* + * 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 "commonStructs.h" +#include "debug.h" +#include "structs.h" + +#include "collections.h" + +#define RADIO_MODULE "MessagingResponse" + +namespace android::hardware::radio::compat { + +namespace aidl = ::aidl::android::hardware::radio::messaging; + +void RadioResponse::setResponseFunction(std::shared_ptr rmrCb) { + CHECK(rmrCb); + mMessagingCb = rmrCb; +} + +Return RadioResponse::acknowledgeIncomingGsmSmsWithPduResponse( + const V1_0::RadioResponseInfo& info) { + LOG_CALL << info.serial; + CHECK_CB(mMessagingCb); + mMessagingCb->acknowledgeIncomingGsmSmsWithPduResponse(toAidl(info)); + return {}; +} + +Return RadioResponse::acknowledgeLastIncomingCdmaSmsResponse( + const V1_0::RadioResponseInfo& info) { + LOG_CALL << info.serial; + CHECK_CB(mMessagingCb); + mMessagingCb->acknowledgeLastIncomingCdmaSmsResponse(toAidl(info)); + return {}; +} + +Return RadioResponse::acknowledgeLastIncomingGsmSmsResponse( + const V1_0::RadioResponseInfo& info) { + LOG_CALL << info.serial; + CHECK_CB(mMessagingCb); + mMessagingCb->acknowledgeLastIncomingGsmSmsResponse(toAidl(info)); + return {}; +} + +Return RadioResponse::cancelPendingUssdResponse(const V1_0::RadioResponseInfo& info) { + LOG_CALL << info.serial; + CHECK_CB(mMessagingCb); + mMessagingCb->cancelPendingUssdResponse(toAidl(info)); + return {}; +} + +Return RadioResponse::deleteSmsOnRuimResponse(const V1_0::RadioResponseInfo& info) { + LOG_CALL << info.serial; + CHECK_CB(mMessagingCb); + mMessagingCb->deleteSmsOnRuimResponse(toAidl(info)); + return {}; +} + +Return RadioResponse::deleteSmsOnSimResponse(const V1_0::RadioResponseInfo& info) { + LOG_CALL << info.serial; + CHECK_CB(mMessagingCb); + mMessagingCb->deleteSmsOnSimResponse(toAidl(info)); + return {}; +} + +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)); + 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)); + 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); + return {}; +} + +Return RadioResponse::reportSmsMemoryStatusResponse(const V1_0::RadioResponseInfo& info) { + LOG_CALL << info.serial; + CHECK_CB(mMessagingCb); + mMessagingCb->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)); + 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)); + 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)); + 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)); + 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)); + 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)); + 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)); + 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)); + 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)); + return {}; +} + +Return RadioResponse::sendUssdResponse(const V1_0::RadioResponseInfo& info) { + LOG_CALL << info.serial; + CHECK_CB(mMessagingCb); + mMessagingCb->sendUssdResponse(toAidl(info)); + return {}; +} + +Return RadioResponse::setCdmaBroadcastActivationResponse( + const V1_0::RadioResponseInfo& info) { + LOG_CALL << info.serial; + CHECK_CB(mMessagingCb); + mMessagingCb->setCdmaBroadcastActivationResponse(toAidl(info)); + return {}; +} + +Return RadioResponse::setCdmaBroadcastConfigResponse(const V1_0::RadioResponseInfo& info) { + LOG_CALL << info.serial; + CHECK_CB(mMessagingCb); + mMessagingCb->setCdmaBroadcastConfigResponse(toAidl(info)); + return {}; +} + +Return RadioResponse::setGsmBroadcastActivationResponse(const V1_0::RadioResponseInfo& info) { + LOG_CALL << info.serial; + CHECK_CB(mMessagingCb); + mMessagingCb->setGsmBroadcastActivationResponse(toAidl(info)); + return {}; +} + +Return RadioResponse::setGsmBroadcastConfigResponse(const V1_0::RadioResponseInfo& info) { + LOG_CALL << info.serial; + CHECK_CB(mMessagingCb); + mMessagingCb->setGsmBroadcastConfigResponse(toAidl(info)); + return {}; +} + +Return RadioResponse::setSmscAddressResponse(const V1_0::RadioResponseInfo& info) { + LOG_CALL << info.serial; + CHECK_CB(mMessagingCb); + mMessagingCb->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); + 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); + return {}; +} + +} // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/messaging/structs.cpp b/radio/aidl/compat/libradiocompat/messaging/structs.cpp new file mode 100644 index 0000000000..90196802e1 --- /dev/null +++ b/radio/aidl/compat/libradiocompat/messaging/structs.cpp @@ -0,0 +1,172 @@ +/* + * 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 "structs.h" + +#include "collections.h" + +#include +#include + +namespace android::hardware::radio::compat { + +namespace aidl = ::aidl::android::hardware::radio::messaging; + +V1_0::CdmaSmsAck toHidl(const aidl::CdmaSmsAck& smsAck) { + return { + .errorClass = (smsAck.errorClass ? V1_0::CdmaSmsErrorClass::ERROR + : V1_0::CdmaSmsErrorClass::NO_ERROR), + .smsCauseCode = smsAck.smsCauseCode, + }; +} + +static aidl::CdmaSmsAddress toAidl(const V1_0::CdmaSmsAddress& addr) { + return { + .digitMode = static_cast(addr.digitMode), + .isNumberModeDataNetwork = addr.numberMode == V1_0::CdmaSmsNumberMode::DATA_NETWORK, + .numberType = static_cast(addr.numberType), + .numberPlan = static_cast(addr.numberPlan), + .digits = addr.digits, + }; +} + +static V1_0::CdmaSmsAddress toHidl(const aidl::CdmaSmsAddress& addr) { + return { + .digitMode = V1_0::CdmaSmsDigitMode{addr.digitMode}, + .numberMode = addr.isNumberModeDataNetwork ? V1_0::CdmaSmsNumberMode::DATA_NETWORK + : V1_0::CdmaSmsNumberMode::NOT_DATA_NETWORK, + .numberType = V1_0::CdmaSmsNumberType{addr.numberType}, + .numberPlan = V1_0::CdmaSmsNumberPlan{addr.numberPlan}, + .digits = addr.digits, + }; +} + +static aidl::CdmaSmsSubaddress toAidl(const V1_0::CdmaSmsSubaddress& addr) { + return { + .subaddressType = static_cast(addr.subaddressType), + .odd = addr.odd, + .digits = addr.digits, + }; +} + +static V1_0::CdmaSmsSubaddress toHidl(const aidl::CdmaSmsSubaddress& addr) { + return { + .subaddressType = V1_0::CdmaSmsSubaddressType{addr.subaddressType}, + .odd = addr.odd, + .digits = addr.digits, + }; +} + +::aidl::android::hardware::radio::messaging::CdmaSmsMessage toAidl(const V1_0::CdmaSmsMessage& m) { + return { + .teleserviceId = m.teleserviceId, + .isServicePresent = m.isServicePresent, + .serviceCategory = m.serviceCategory, + .address = toAidl(m.address), + .subAddress = toAidl(m.subAddress), + .bearerData = m.bearerData, + }; +} + +V1_0::CdmaSmsMessage toHidl(const aidl::CdmaSmsMessage& msg) { + return { + .teleserviceId = msg.teleserviceId, + .isServicePresent = msg.isServicePresent, + .serviceCategory = msg.serviceCategory, + .address = toHidl(msg.address), + .subAddress = toHidl(msg.subAddress), + .bearerData = msg.bearerData, + }; +} + +V1_0::ImsSmsMessage toHidl(const aidl::ImsSmsMessage& msg) { + return { + .tech = V1_0::RadioTechnologyFamily{msg.tech}, + .retry = msg.retry, + .messageRef = msg.messageRef, + .cdmaMessage = toHidl(msg.cdmaMessage), + .gsmMessage = toHidl(msg.gsmMessage), + }; +} + +V1_0::GsmSmsMessage toHidl(const aidl::GsmSmsMessage& msg) { + return { + .smscPdu = msg.smscPdu, + .pdu = msg.pdu, + }; +} + +aidl::CdmaBroadcastSmsConfigInfo toAidl(const V1_0::CdmaBroadcastSmsConfigInfo& info) { + return { + .serviceCategory = info.serviceCategory, + .language = info.language, + .selected = info.selected, + }; +} + +V1_0::CdmaBroadcastSmsConfigInfo toHidl(const aidl::CdmaBroadcastSmsConfigInfo& info) { + return { + .serviceCategory = info.serviceCategory, + .language = info.language, + .selected = info.selected, + }; +} + +aidl::GsmBroadcastSmsConfigInfo toAidl(const V1_0::GsmBroadcastSmsConfigInfo& info) { + return { + .fromServiceId = info.fromServiceId, + .toServiceId = info.toServiceId, + .fromCodeScheme = info.fromCodeScheme, + .toCodeScheme = info.toCodeScheme, + .selected = info.selected, + }; +} + +V1_0::GsmBroadcastSmsConfigInfo toHidl(const aidl::GsmBroadcastSmsConfigInfo& info) { + return { + .fromServiceId = info.fromServiceId, + .toServiceId = info.toServiceId, + .fromCodeScheme = info.fromCodeScheme, + .toCodeScheme = info.toCodeScheme, + .selected = info.selected, + }; +} + +V1_0::CdmaSmsWriteArgs toHidl(const aidl::CdmaSmsWriteArgs& args) { + return { + .status = V1_0::CdmaSmsWriteArgsStatus{args.status}, + .message = toHidl(args.message), + }; +} + +V1_0::SmsWriteArgs toHidl(const aidl::SmsWriteArgs& args) { + return { + .status = V1_0::SmsWriteArgsStatus{args.status}, + .pdu = args.pdu, + .smsc = args.smsc, + }; +} + +::aidl::android::hardware::radio::messaging::SendSmsResult toAidl( + const V1_0::SendSmsResult& result) { + return { + .messageRef = result.messageRef, + .ackPDU = result.ackPDU, + .errorCode = result.errorCode, + }; +} + +} // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/libradiocompat/messaging/structs.h b/radio/aidl/compat/libradiocompat/messaging/structs.h new file mode 100644 index 0000000000..afb49419f7 --- /dev/null +++ b/radio/aidl/compat/libradiocompat/messaging/structs.h @@ -0,0 +1,57 @@ +/* + * 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 +#include +#include +#include +#include +#include +#include +#include + +namespace android::hardware::radio::compat { + +V1_0::CdmaSmsAck toHidl(const ::aidl::android::hardware::radio::messaging::CdmaSmsAck& ack); + +::aidl::android::hardware::radio::messaging::CdmaSmsMessage toAidl(const V1_0::CdmaSmsMessage& msg); +V1_0::CdmaSmsMessage toHidl(const ::aidl::android::hardware::radio::messaging::CdmaSmsMessage& msg); + +V1_0::ImsSmsMessage toHidl(const ::aidl::android::hardware::radio::messaging::ImsSmsMessage& msg); + +V1_0::GsmSmsMessage toHidl(const ::aidl::android::hardware::radio::messaging::GsmSmsMessage& msg); + +::aidl::android::hardware::radio::messaging::CdmaBroadcastSmsConfigInfo // +toAidl(const V1_0::CdmaBroadcastSmsConfigInfo& info); +V1_0::CdmaBroadcastSmsConfigInfo // +toHidl(const ::aidl::android::hardware::radio::messaging::CdmaBroadcastSmsConfigInfo& info); + +::aidl::android::hardware::radio::messaging::GsmBroadcastSmsConfigInfo // +toAidl(const V1_0::GsmBroadcastSmsConfigInfo& info); +V1_0::GsmBroadcastSmsConfigInfo // +toHidl(const ::aidl::android::hardware::radio::messaging::GsmBroadcastSmsConfigInfo& info); + +V1_0::CdmaSmsWriteArgs // +toHidl(const ::aidl::android::hardware::radio::messaging::CdmaSmsWriteArgs& args); + +V1_0::SmsWriteArgs toHidl(const ::aidl::android::hardware::radio::messaging::SmsWriteArgs& args); + +::aidl::android::hardware::radio::messaging::SendSmsResult toAidl(const V1_0::SendSmsResult& res); + +} // namespace android::hardware::radio::compat diff --git a/radio/aidl/compat/service/Android.bp b/radio/aidl/compat/service/Android.bp index f708b84764..82ab81f7a4 100644 --- a/radio/aidl/compat/service/Android.bp +++ b/radio/aidl/compat/service/Android.bp @@ -39,6 +39,14 @@ cc_binary { "android.hardware.radio.config@1.1", "android.hardware.radio.config@1.2", "android.hardware.radio.config@1.3", + "android.hardware.radio.messaging-V1-ndk", + "android.hardware.radio@1.0", + "android.hardware.radio@1.1", + "android.hardware.radio@1.2", + "android.hardware.radio@1.3", + "android.hardware.radio@1.4", + "android.hardware.radio@1.5", + "android.hardware.radio@1.6", "libbase", "libbinder_ndk", "libhidlbase", diff --git a/radio/aidl/compat/service/hidl-utils.cpp b/radio/aidl/compat/service/hidl-utils.cpp index d8949666af..fc0d54db9f 100644 --- a/radio/aidl/compat/service/hidl-utils.cpp +++ b/radio/aidl/compat/service/hidl-utils.cpp @@ -17,6 +17,7 @@ #include "hidl-utils.h" #include +#include namespace android::hardware::hidl_utils { @@ -33,4 +34,13 @@ void linkDeathToDeath(sp<::android::hidl::base::V1_0::IBase> hal) { CHECK(linkStatus.withDefault(false)) << "Failed to link to HAL death"; } +hidl_vec listManifestByInterface(const char* descriptor) { + auto manager = hidl::manager::V1_2::IServiceManager::getService(); + hidl_vec services; + manager->listManifestByInterface(descriptor, hidl_utils::fill(&services)); + CHECK_GT(services.size(), 0u) << "No " << descriptor + << " services in manifest (missing privileges?)" << std::endl; + return services; +} + } // namespace android::hardware::hidl_utils diff --git a/radio/aidl/compat/service/hidl-utils.h b/radio/aidl/compat/service/hidl-utils.h index 3f81a9b96f..be3386fb6e 100644 --- a/radio/aidl/compat/service/hidl-utils.h +++ b/radio/aidl/compat/service/hidl-utils.h @@ -18,13 +18,61 @@ #include +#include + namespace android::hardware::hidl_utils { /** - * Link to a given HALs death and restart the current process in such a case. + * Helper functor to fetch results from multi-return HIDL calls. + * It's meant to be used in place of _hidl_cb callbacks. * + * Please note extracting these return variables outside of the callback scope requires making + * a copy of each return variable. This may be costly for frequently called HIDL methods with + * non-negligible return object size. Please be cautious about performance when using this. + * + * Example usage: + * Result result; + * sp iface; + * hidlObject->someMethod(arg1, arg2, hidl_utils::fill(&result, &iface)).assertOk(); + * // use result and iface + */ +template +struct fill : public std::function { + /** + * Create _hidl_cb functor that copies the call arguments to specified pointers. + * + * \param args... Targets to copy the call arguments to + */ + fill(T*... args) : mTargets(args...) {} + + void operator()(const T&... args) { copy<0, T...>(args...); } + + private: + std::tuple mTargets; + + template + inline void copy(const First& first) { + *std::get(mTargets) = first; + } + + template + inline void copy(const First& first, const Rest&... rest) { + *std::get(mTargets) = first; + copy(rest...); + } +}; + +/** + * Link to a given HALs death and restart the current process in such a case. * \param hal HAL to which death to link */ void linkDeathToDeath(sp hal); +/** + * List HAL instances of a given interface. + * + * \descriptor HIDL HAL descriptor + */ +hidl_vec listManifestByInterface(const char* descriptor); + } // namespace android::hardware::hidl_utils diff --git a/radio/aidl/compat/service/radio-compat.xml b/radio/aidl/compat/service/radio-compat.xml index 60f8ff5d7c..781f2f41c8 100644 --- a/radio/aidl/compat/service/radio-compat.xml +++ b/radio/aidl/compat/service/radio-compat.xml @@ -3,4 +3,15 @@ android.hardware.radio.config IRadioConfig/default + diff --git a/radio/aidl/compat/service/service.cpp b/radio/aidl/compat/service/service.cpp index c177dd1233..4d34cf120e 100644 --- a/radio/aidl/compat/service/service.cpp +++ b/radio/aidl/compat/service/service.cpp @@ -20,6 +20,9 @@ #include #include #include +#include +#include +#include namespace android::hardware::radio::service { @@ -27,6 +30,35 @@ using namespace std::string_literals; static std::vector> gPublishedHals; +template +static void publishRadioHal(sp hidlHal, sp responseCb, + sp indicationCb, 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)"; + return; + } + LOG(DEBUG) << "Publishing " << instance; + + auto aidlHal = ndk::SharedRefBase::make(hidlHal, responseCb, indicationCb); + gPublishedHals.push_back(aidlHal); + const auto status = AServiceManager_addService(aidlHal->asBinder().get(), instance.c_str()); + CHECK_EQ(status, STATUS_OK); +} + +static void publishRadio(std::string slot) { + auto radioHidl = V1_5::IRadio::getService(slot); + CHECK(radioHidl) << "HIDL IRadio not present in VINTF"; + + hidl_utils::linkDeathToDeath(radioHidl); + + auto responseCb = sp::make(); + auto indicationCb = sp::make(); + radioHidl->setResponseFunctions(responseCb, indicationCb).assertOk(); + + publishRadioHal(radioHidl, responseCb, indicationCb, slot); +} + static void publishRadioConfig() { auto hidlHal = config::V1_1::IRadioConfig::getService(); CHECK(hidlHal) << "HIDL IRadioConfig not present in VINTF"; @@ -47,6 +79,12 @@ static void main() { publishRadioConfig(); + const auto slots = hidl_utils::listManifestByInterface(V1_0::IRadio::descriptor); + LOG(INFO) << "Found " << slots.size() << " slot(s)"; + for (const auto& slot : slots) { + publishRadio(slot); + } + LOG(DEBUG) << "Radio HAL compat service is operational"; ABinderProcess_joinThreadPool(); LOG(FATAL) << "Radio HAL compat service has stopped";