Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 07161690 authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk
Browse files

Implement RadioData for AIDL-HIDL Telephony HAL translator

Bug: 203699028
Test: Boot and grep logcat against radiocompat
Change-Id: I5770ee4125cd9e6f118200ecee889ad785e8929f
parent 7f51a9ad
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ cc_library {
        "android.hardware.radio.config@1.1",
        "android.hardware.radio.config@1.2",
        "android.hardware.radio.config@1.3",
        "android.hardware.radio.data-V1-ndk",
        "android.hardware.radio.messaging-V1-ndk",
        "android.hardware.radio.sim-V1-ndk",
        "android.hardware.radio@1.0",
@@ -60,6 +61,10 @@ cc_library {
        "config/RadioConfigIndication.cpp",
        "config/RadioConfigResponse.cpp",
        "config/structs.cpp",
        "data/RadioIndication-data.cpp",
        "data/RadioResponse-data.cpp",
        "data/RadioData.cpp",
        "data/structs.cpp",
        "messaging/RadioIndication-messaging.cpp",
        "messaging/RadioMessaging.cpp",
        "messaging/RadioResponse-messaging.cpp",
+0 −35
Original line number Diff line number Diff line
@@ -44,11 +44,6 @@ Return<void> RadioIndication::currentSignalStrength(V1_0::RadioIndicationType ty
    return {};
}

Return<void> RadioIndication::dataCallListChanged(
        V1_0::RadioIndicationType type, const hidl_vec<V1_0::SetupDataCallResult>& dcList) {
    return {};
}

Return<void> RadioIndication::suppSvcNotify(V1_0::RadioIndicationType type,
                                            const V1_0::SuppSvcNotification& suppSvc) {
    return {};
@@ -151,11 +146,6 @@ Return<void> RadioIndication::lceData(V1_0::RadioIndicationType type,
    return {};
}

Return<void> RadioIndication::pcoData(V1_0::RadioIndicationType type,
                                      const V1_0::PcoDataInfo& pco) {
    return {};
}

Return<void> RadioIndication::modemReset(V1_0::RadioIndicationType type,
                                         const hidl_string& reason) {
    return {};
@@ -166,11 +156,6 @@ Return<void> RadioIndication::networkScanResult(V1_0::RadioIndicationType type,
    return {};
}

Return<void> RadioIndication::keepaliveStatus(V1_0::RadioIndicationType type,
                                              const V1_1::KeepaliveStatus& status) {
    return {};
}

Return<void> RadioIndication::networkScanResult_1_2(V1_0::RadioIndicationType type,
                                                    const V1_2::NetworkScanResult& result) {
    return {};
@@ -216,11 +201,6 @@ Return<void> RadioIndication::currentPhysicalChannelConfigs_1_4(
    return {};
}

Return<void> RadioIndication::dataCallListChanged_1_4(
        V1_0::RadioIndicationType type, const hidl_vec<V1_4::SetupDataCallResult>& dcList) {
    return {};
}

Return<void> RadioIndication::currentSignalStrength_1_4(
        V1_0::RadioIndicationType type, const V1_4::SignalStrength& signalStrength) {
    return {};
@@ -249,21 +229,6 @@ Return<void> RadioIndication::networkScanResult_1_5(V1_0::RadioIndicationType ty
    return {};
}

Return<void> RadioIndication::dataCallListChanged_1_5(
        V1_0::RadioIndicationType type, const hidl_vec<V1_5::SetupDataCallResult>& dcList) {
    return {};
}

Return<void> RadioIndication::dataCallListChanged_1_6(
        V1_0::RadioIndicationType type, const hidl_vec<V1_6::SetupDataCallResult>& dcList) {
    return {};
}

Return<void> RadioIndication::unthrottleApn(V1_0::RadioIndicationType type,
                                            const hidl_string& apn) {
    return {};
}

Return<void> RadioIndication::currentLinkCapacityEstimate_1_6(
        V1_0::RadioIndicationType type, const V1_6::LinkCapacityEstimate& lce) {
    return {};
+1 −102
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ namespace android::hardware::radio::compat {
Return<void> RadioResponse::acknowledgeRequest(int32_t serial) {
    LOG_CALL << serial;
    // TODO(b/203699028): send to correct requestor or confirm if spam is not a problem
    if (mDataCb) mDataCb->acknowledgeRequest(serial);
    if (mMessagingCb) mMessagingCb->acknowledgeRequest(serial);
    if (mSimCb) mSimCb->acknowledgeRequest(serial);
    return {};
@@ -107,11 +108,6 @@ Return<void> RadioResponse::sendDtmfResponse(const V1_0::RadioResponseInfo& info
    return {};
}

Return<void> RadioResponse::setupDataCallResponse(const V1_0::RadioResponseInfo& info,
                                                  const V1_0::SetupDataCallResult& dcResponse) {
    return {};
}

Return<void> RadioResponse::getClirResponse(const V1_0::RadioResponseInfo& info, int32_t n,
                                            int32_t m) {
    return {};
@@ -143,10 +139,6 @@ Return<void> RadioResponse::acceptCallResponse(const V1_0::RadioResponseInfo& in
    return {};
}

Return<void> RadioResponse::deactivateDataCallResponse(const V1_0::RadioResponseInfo& info) {
    return {};
}

Return<void> RadioResponse::setBarringPasswordResponse(const V1_0::RadioResponseInfo& info) {
    return {};
}
@@ -201,11 +193,6 @@ Return<void> RadioResponse::getClipResponse(const V1_0::RadioResponseInfo& info,
    return {};
}

Return<void> RadioResponse::getDataCallListResponse(
        const V1_0::RadioResponseInfo& info, const hidl_vec<V1_0::SetupDataCallResult>& dcResp) {
    return {};
}

Return<void> RadioResponse::setSuppServiceNotificationsResponse(
        const V1_0::RadioResponseInfo& info) {
    return {};
@@ -306,10 +293,6 @@ Return<void> RadioResponse::setCellInfoListRateResponse(const V1_0::RadioRespons
    return {};
}

Return<void> RadioResponse::setInitialAttachApnResponse(const V1_0::RadioResponseInfo& info) {
    return {};
}

Return<void> RadioResponse::getImsRegistrationStateResponse(  //
        const V1_0::RadioResponseInfo& info, bool isRegd, V1_0::RadioTechnologyFamily ratFamily) {
    return {};
@@ -332,19 +315,11 @@ Return<void> RadioResponse::nvResetConfigResponse(const V1_0::RadioResponseInfo&
    return {};
}

Return<void> RadioResponse::setDataAllowedResponse(const V1_0::RadioResponseInfo& info) {
    return {};
}

Return<void> RadioResponse::getHardwareConfigResponse(
        const V1_0::RadioResponseInfo& info, const hidl_vec<V1_0::HardwareConfig>& config) {
    return {};
}

Return<void> RadioResponse::setDataProfileResponse(const V1_0::RadioResponseInfo& info) {
    return {};
}

Return<void> RadioResponse::requestShutdownResponse(const V1_0::RadioResponseInfo& info) {
    return {};
}
@@ -395,15 +370,6 @@ Return<void> RadioResponse::stopNetworkScanResponse(const V1_0::RadioResponseInf
    return {};
}

Return<void> RadioResponse::startKeepaliveResponse(const V1_0::RadioResponseInfo& info,
                                                   const V1_1::KeepaliveStatus& status) {
    return {};
}

Return<void> RadioResponse::stopKeepaliveResponse(const V1_0::RadioResponseInfo& info) {
    return {};
}

Return<void> RadioResponse::getCellInfoListResponse_1_2(const V1_0::RadioResponseInfo& info,
                                                        const hidl_vec<V1_2::CellInfo>& cellInfo) {
    return {};
@@ -482,17 +448,6 @@ Return<void> RadioResponse::setPreferredNetworkTypeBitmapResponse(
    return {};
}

Return<void> RadioResponse::getDataCallListResponse_1_4(
        const V1_0::RadioResponseInfo& info,
        const hidl_vec<V1_4::SetupDataCallResult>& dcResponse) {
    return {};
}

Return<void> RadioResponse::setupDataCallResponse_1_4(const V1_0::RadioResponseInfo& info,
                                                      const V1_4::SetupDataCallResult& dcResponse) {
    return {};
}

Return<void> RadioResponse::getSignalStrengthResponse_1_4(
        const V1_0::RadioResponseInfo& info, const V1_4::SignalStrength& signalStrength) {
    return {};
@@ -517,25 +472,6 @@ Return<void> RadioResponse::startNetworkScanResponse_1_5(const V1_0::RadioRespon
    return {};
}

Return<void> RadioResponse::setupDataCallResponse_1_5(const V1_0::RadioResponseInfo& info,
                                                      const V1_5::SetupDataCallResult& dcResponse) {
    return {};
}

Return<void> RadioResponse::getDataCallListResponse_1_5(
        const V1_0::RadioResponseInfo& info,
        const hidl_vec<V1_5::SetupDataCallResult>& dcResponse) {
    return {};
}

Return<void> RadioResponse::setInitialAttachApnResponse_1_5(const V1_0::RadioResponseInfo& info) {
    return {};
}

Return<void> RadioResponse::setDataProfileResponse_1_5(const V1_0::RadioResponseInfo& info) {
    return {};
}

Return<void> RadioResponse::setRadioPowerResponse_1_5(const V1_0::RadioResponseInfo& info) {
    return {};
}
@@ -574,17 +510,6 @@ Return<void> RadioResponse::setRadioPowerResponse_1_6(const V1_6::RadioResponseI
    return {};
}

Return<void> RadioResponse::setupDataCallResponse_1_6(const V1_6::RadioResponseInfo& info,
                                                      const V1_6::SetupDataCallResult& dcResponse) {
    return {};
}

Return<void> RadioResponse::getDataCallListResponse_1_6(
        const V1_6::RadioResponseInfo& info,
        const hidl_vec<V1_6::SetupDataCallResult>& dcResponse) {
    return {};
}

Return<void> RadioResponse::setNrDualConnectivityStateResponse(
        const V1_6::RadioResponseInfo& info) {
    return {};
@@ -595,23 +520,6 @@ Return<void> RadioResponse::isNrDualConnectivityEnabledResponse(const V1_6::Radi
    return {};
}

Return<void> RadioResponse::allocatePduSessionIdResponse(const V1_6::RadioResponseInfo& info,
                                                         int32_t id) {
    return {};
}

Return<void> RadioResponse::releasePduSessionIdResponse(const V1_6::RadioResponseInfo& info) {
    return {};
}

Return<void> RadioResponse::startHandoverResponse(const V1_6::RadioResponseInfo& info) {
    return {};
}

Return<void> RadioResponse::cancelHandoverResponse(const V1_6::RadioResponseInfo& info) {
    return {};
}

Return<void> RadioResponse::setAllowedNetworkTypesBitmapResponse(
        const V1_6::RadioResponseInfo& info) {
    return {};
@@ -623,10 +531,6 @@ Return<void> RadioResponse::getAllowedNetworkTypesBitmapResponse(
    return {};
}

Return<void> RadioResponse::setDataThrottlingResponse(const V1_6::RadioResponseInfo& info) {
    return {};
}

Return<void> RadioResponse::getSystemSelectionChannelsResponse(
        const V1_6::RadioResponseInfo& info,
        const hidl_vec<V1_5::RadioAccessSpecifier>& specifiers) {
@@ -658,9 +562,4 @@ Return<void> RadioResponse::getCurrentCallsResponse_1_6(const V1_6::RadioRespons
    return {};
}

Return<void> RadioResponse::getSlicingConfigResponse(const V1_6::RadioResponseInfo& info,
                                                     const V1_6::SlicingConfig& slicingConfig) {
    return {};
}

}  // namespace android::hardware::radio::compat
+52 −0
Original line number Diff line number Diff line
@@ -17,6 +17,9 @@

#include <hidl/HidlSupport.h>

#include <type_traits>
#include <variant>

namespace android::hardware::radio::compat {

/**
@@ -51,4 +54,53 @@ auto toHidl(const std::vector<T>& inp) {
    return out;
}

/**
 * Converts T=OptionalX HIDL value to std::optional<X> AIDL value.
 *
 * To convert values, the template uses toAidl functions for a given type T.value.
 */
template <typename T>
std::optional<decltype(toAidl(T{}.value()))> toAidl(const T& opt) {
    if (opt.getDiscriminator() == T::hidl_discriminator::noinit) return std::nullopt;
    return toAidl(opt.value());
}

/**
 * Converts T=OptionalX HIDL value to std::variant<bool, X> AIDL value.
 *
 * For some reason, not every OptionalX gets generated into a std::optional<X>.
 */
template <typename T>
std::variant<bool, decltype(toAidl(T{}.value()))> toAidlVariant(const T& opt) {
    if (opt.getDiscriminator() == T::hidl_discriminator::noinit) return false;
    return toAidl(opt.value());
}

/**
 * Converts std::optional<X> AIDL value to T=OptionalX HIDL value.
 *
 * X is inferred from toAidl(T.value) declaration. Please note that toAidl(T.value) doesn't have to
 * be implemented if it's not needed for anything else than giving this hint to type system.
 *
 * To convert values, the template uses toHidl functions for a given type T, assuming it's defined.
 *
 * \param opt value to convert
 */
template <typename T>
T toHidl(const std::optional<decltype(toAidl(T{}.value()))>& opt) {
    T hidl;
    if (opt.has_value()) hidl.value(toHidl(*opt));
    return hidl;
}

/**
 * Converts U AIDL bitfield value to HIDL T bitfield value.
 *
 * \param val value to convert
 */
template <typename T, typename U>
hidl_bitfield<T> toHidlBitfield(U val) {
    return static_cast<int>(val);
}

}  // namespace android::hardware::radio::compat
+8 −0
Original line number Diff line number Diff line
@@ -40,6 +40,14 @@ uint8_t toAidl(int8_t v) {
    return v;
}

int8_t toAidl(uint8_t v) {
    return v;
}

int32_t toAidl(uint32_t v) {
    return v;
}

aidl::RadioIndicationType toAidl(V1_0::RadioIndicationType type) {
    return aidl::RadioIndicationType(type);
}
Loading