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

Commit c84d3770 authored by Mahesh KKV's avatar Mahesh KKV Committed by Sunil Ravi
Browse files

wifi: Add getWifiChipCapabilities() in shim layer

Bug: 231497844
Test: hardware/interfaces/wifi/aidl/default/tests/runtests.sh
Change-Id: Iba4f749999e9a2aa25455e09440a961188f049f9
parent 766953f2
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -2768,6 +2768,13 @@ bool convertLegacyRadioCombinationsMatrixToAidl(
    return true;
}

bool convertLegacyWifiChipCapabilitiesToAidl(
        const legacy_hal::wifi_chip_capabilities& legacy_chip_capabilities,
        WifiChipCapabilities& aidl_chip_capabilities) {
    aidl_chip_capabilities.maxMloLinkCount = legacy_chip_capabilities.max_mlo_link_count;
    return true;
}

}  // namespace aidl_struct_util
}  // namespace wifi
}  // namespace hardware
+3 −0
Original line number Diff line number Diff line
@@ -171,6 +171,9 @@ bool convertLegacyPeerInfoStatsToAidl(const legacy_hal::WifiPeerInfo& legacy_pee
                                      StaPeerInfo* aidl_peer_info_stats);
bool convertLegacyWifiRateInfoToAidl(const legacy_hal::wifi_rate& legacy_rate,
                                     WifiRateInfo* aidl_rate);
bool convertLegacyWifiChipCapabilitiesToAidl(
        const legacy_hal::wifi_chip_capabilities& legacy_chip_capabilities,
        WifiChipCapabilities& aidl_chip_capabilities);
}  // namespace aidl_struct_util
}  // namespace wifi
}  // namespace hardware
+25 −0
Original line number Diff line number Diff line
@@ -680,6 +680,11 @@ ndk::ScopedAStatus WifiChip::getSupportedRadioCombinationsMatrix(
                           &WifiChip::getSupportedRadioCombinationsMatrixInternal, _aidl_return);
}

ndk::ScopedAStatus WifiChip::getWifiChipCapabilities(WifiChipCapabilities* _aidl_return) {
    return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID,
                           &WifiChip::getWifiChipCapabilitiesInternal, _aidl_return);
}

void WifiChip::invalidateAndRemoveAllIfaces() {
    invalidateAndClearBridgedApAll();
    invalidateAndClearAll(ap_ifaces_);
@@ -1403,6 +1408,26 @@ WifiChip::getSupportedRadioCombinationsMatrixInternal() {
    return {aidl_matrix, ndk::ScopedAStatus::ok()};
}

std::pair<WifiChipCapabilities, ndk::ScopedAStatus> WifiChip::getWifiChipCapabilitiesInternal() {
    legacy_hal::wifi_error legacy_status;
    legacy_hal::wifi_chip_capabilities legacy_chip_capabilities;
    std::tie(legacy_status, legacy_chip_capabilities) =
            legacy_hal_.lock()->getWifiChipCapabilities();
    if (legacy_status != legacy_hal::WIFI_SUCCESS) {
        LOG(ERROR) << "Failed to get chip capabilities from legacy HAL: "
                   << legacyErrorToString(legacy_status);
        return {WifiChipCapabilities(), createWifiStatusFromLegacyError(legacy_status)};
    }
    WifiChipCapabilities aidl_chip_capabilities;
    if (!aidl_struct_util::convertLegacyWifiChipCapabilitiesToAidl(legacy_chip_capabilities,
                                                                   aidl_chip_capabilities)) {
        LOG(ERROR) << "Failed convertLegacyWifiChipCapabilitiesToAidl() ";
        return {WifiChipCapabilities(), createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS)};
    }

    return {aidl_chip_capabilities, ndk::ScopedAStatus::ok()};
}

ndk::ScopedAStatus WifiChip::triggerSubsystemRestartInternal() {
    auto legacy_status = legacy_hal_.lock()->triggerSubsystemRestart();
    return createWifiStatusFromLegacyError(legacy_status);
+2 −0
Original line number Diff line number Diff line
@@ -144,6 +144,7 @@ class WifiChip : public BnWifiChip {
    ndk::ScopedAStatus triggerSubsystemRestart() override;
    ndk::ScopedAStatus getSupportedRadioCombinationsMatrix(
            WifiRadioCombinationMatrix* _aidl_return) override;
    ndk::ScopedAStatus getWifiChipCapabilities(WifiChipCapabilities* _aidl_return) override;
    binder_status_t dump(int fd, const char** args, uint32_t numArgs) override;

  private:
@@ -250,6 +251,7 @@ class WifiChip : public BnWifiChip {
    ndk::ScopedAStatus triggerSubsystemRestartInternal();
    std::pair<WifiRadioCombinationMatrix, ndk::ScopedAStatus>
    getSupportedRadioCombinationsMatrixInternal();
    std::pair<WifiChipCapabilities, ndk::ScopedAStatus> getWifiChipCapabilitiesInternal();
    void setWeakPtr(std::weak_ptr<WifiChip> ptr);

    int32_t chip_id_;
+7 −0
Original line number Diff line number Diff line
@@ -1609,6 +1609,13 @@ wifi_error WifiLegacyHal::getWifiCachedScanResults(
    return status;
}

std::pair<wifi_error, wifi_chip_capabilities> WifiLegacyHal::getWifiChipCapabilities() {
    wifi_chip_capabilities chip_capabilities;
    wifi_error status =
            global_func_table_.wifi_get_chip_capabilities(global_handle_, &chip_capabilities);
    return {status, chip_capabilities};
}

void WifiLegacyHal::invalidate() {
    global_handle_ = nullptr;
    iface_name_to_handle_.clear();
Loading