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

Commit 3ecafe9c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "wifi(implementation): Set/Reset TX power limit" into oc-dr1-dev

parents dc6e5d1b 8184d210
Loading
Loading
Loading
Loading
+22 −2
Original line number Original line Diff line number Diff line
@@ -17,6 +17,9 @@
#include <android-base/logging.h>
#include <android-base/logging.h>
#include <utils/SystemClock.h>
#include <utils/SystemClock.h>


#include <android/hardware/wifi/1.0/IWifiChip.h>
#include <android/hardware/wifi/1.1/IWifiChip.h>

#include "hidl_struct_util.h"
#include "hidl_struct_util.h"


namespace android {
namespace android {
@@ -66,6 +69,17 @@ convertLegacyLoggerFeatureToHidlStaIfaceCapability(uint32_t feature) {
  return {};
  return {};
}
}


V1_1::IWifiChip::ChipCapabilityMask convertLegacyFeatureToHidlChipCapability(
    uint32_t feature) {
  using HidlChipCaps = V1_1::IWifiChip::ChipCapabilityMask;
  switch (feature) {
    case WIFI_FEATURE_SET_TX_POWER_LIMIT:
      return HidlChipCaps::SET_TX_POWER_LIMIT;
  };
  CHECK(false) << "Unknown legacy feature: " << feature;
  return {};
}

IWifiStaIface::StaIfaceCapabilityMask
IWifiStaIface::StaIfaceCapabilityMask
convertLegacyFeatureToHidlStaIfaceCapability(uint32_t feature) {
convertLegacyFeatureToHidlStaIfaceCapability(uint32_t feature) {
  using HidlStaIfaceCaps = IWifiStaIface::StaIfaceCapabilityMask;
  using HidlStaIfaceCaps = IWifiStaIface::StaIfaceCapabilityMask;
@@ -102,7 +116,9 @@ convertLegacyFeatureToHidlStaIfaceCapability(uint32_t feature) {
}
}


bool convertLegacyFeaturesToHidlChipCapabilities(
bool convertLegacyFeaturesToHidlChipCapabilities(
    uint32_t legacy_logger_feature_set, uint32_t* hidl_caps) {
    uint32_t legacy_feature_set,
    uint32_t legacy_logger_feature_set,
    uint32_t* hidl_caps) {
  if (!hidl_caps) {
  if (!hidl_caps) {
    return false;
    return false;
  }
  }
@@ -117,6 +133,11 @@ bool convertLegacyFeaturesToHidlChipCapabilities(
      *hidl_caps |= convertLegacyLoggerFeatureToHidlChipCapability(feature);
      *hidl_caps |= convertLegacyLoggerFeatureToHidlChipCapability(feature);
    }
    }
  }
  }
  for (const auto feature : {WIFI_FEATURE_SET_TX_POWER_LIMIT}) {
    if (feature & legacy_feature_set) {
      *hidl_caps |= convertLegacyFeatureToHidlChipCapability(feature);
    }
  }
  // There are no flags for these 3 in the legacy feature set. Adding them to
  // There are no flags for these 3 in the legacy feature set. Adding them to
  // the set because all the current devices support it.
  // the set because all the current devices support it.
  *hidl_caps |= HidlChipCaps::DEBUG_RING_BUFFER_VENDOR_DATA;
  *hidl_caps |= HidlChipCaps::DEBUG_RING_BUFFER_VENDOR_DATA;
@@ -241,7 +262,6 @@ bool convertLegacyFeaturesToHidlStaCapabilities(
    return false;
    return false;
  }
  }
  *hidl_caps = {};
  *hidl_caps = {};
  *hidl_caps = 0;
  using HidlStaIfaceCaps = IWifiStaIface::StaIfaceCapabilityMask;
  using HidlStaIfaceCaps = IWifiStaIface::StaIfaceCapabilityMask;
  for (const auto feature : {legacy_hal::WIFI_LOGGER_PACKET_FATE_SUPPORTED}) {
  for (const auto feature : {legacy_hal::WIFI_LOGGER_PACKET_FATE_SUPPORTED}) {
    if (feature & legacy_logger_feature_set) {
    if (feature & legacy_logger_feature_set) {
+4 −2
Original line number Original line Diff line number Diff line
@@ -19,7 +19,7 @@


#include <vector>
#include <vector>


#include <android/hardware/wifi/1.0/IWifi.h>
#include <android/hardware/wifi/1.0/types.h>


#include "wifi_legacy_hal.h"
#include "wifi_legacy_hal.h"


@@ -39,7 +39,9 @@ using namespace android::hardware::wifi::V1_0;


// Chip conversion methods.
// Chip conversion methods.
bool convertLegacyFeaturesToHidlChipCapabilities(
bool convertLegacyFeaturesToHidlChipCapabilities(
    uint32_t legacy_logger_feature_set, uint32_t* hidl_caps);
    uint32_t legacy_feature_set,
    uint32_t legacy_logger_feature_set,
    uint32_t* hidl_caps);
bool convertLegacyDebugRingBufferStatusToHidl(
bool convertLegacyDebugRingBufferStatusToHidl(
    const legacy_hal::wifi_ring_buffer_status& legacy_status,
    const legacy_hal::wifi_ring_buffer_status& legacy_status,
    WifiDebugRingBufferStatus* hidl_status);
    WifiDebugRingBufferStatus* hidl_status);
+12 −8
Original line number Original line Diff line number Diff line
@@ -387,7 +387,13 @@ WifiStatus WifiChip::registerEventCallbackInternal(


std::pair<WifiStatus, uint32_t> WifiChip::getCapabilitiesInternal() {
std::pair<WifiStatus, uint32_t> WifiChip::getCapabilitiesInternal() {
  legacy_hal::wifi_error legacy_status;
  legacy_hal::wifi_error legacy_status;
  uint32_t legacy_feature_set;
  uint32_t legacy_logger_feature_set;
  uint32_t legacy_logger_feature_set;
  std::tie(legacy_status, legacy_feature_set) =
      legacy_hal_.lock()->getSupportedFeatureSet();
  if (legacy_status != legacy_hal::WIFI_SUCCESS) {
    return {createWifiStatusFromLegacyError(legacy_status), 0};
  }
  std::tie(legacy_status, legacy_logger_feature_set) =
  std::tie(legacy_status, legacy_logger_feature_set) =
      legacy_hal_.lock()->getLoggerSupportedFeatureSet();
      legacy_hal_.lock()->getLoggerSupportedFeatureSet();
  if (legacy_status != legacy_hal::WIFI_SUCCESS) {
  if (legacy_status != legacy_hal::WIFI_SUCCESS) {
@@ -395,7 +401,7 @@ std::pair<WifiStatus, uint32_t> WifiChip::getCapabilitiesInternal() {
  }
  }
  uint32_t hidl_caps;
  uint32_t hidl_caps;
  if (!hidl_struct_util::convertLegacyFeaturesToHidlChipCapabilities(
  if (!hidl_struct_util::convertLegacyFeaturesToHidlChipCapabilities(
          legacy_logger_feature_set, &hidl_caps)) {
          legacy_feature_set, legacy_logger_feature_set, &hidl_caps)) {
    return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), 0};
    return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), 0};
  }
  }
  return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_caps};
  return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_caps};
@@ -818,16 +824,14 @@ WifiStatus WifiChip::enableDebugErrorAlertsInternal(bool enable) {
  return createWifiStatusFromLegacyError(legacy_status);
  return createWifiStatusFromLegacyError(legacy_status);
}
}


WifiStatus WifiChip::setTxPowerLimitInternal(int32_t /* powerInDbm */) {
WifiStatus WifiChip::setTxPowerLimitInternal(int32_t powerInDbm) {
  // TODO(b/62437848): Implement this method once we are ready with the
  auto legacy_status = legacy_hal_.lock()->setTxPowerLimit(powerInDbm);
  // header changes in legacy HAL.
  return createWifiStatusFromLegacyError(legacy_status);
  return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED);
}
}


WifiStatus WifiChip::resetTxPowerLimitInternal() {
WifiStatus WifiChip::resetTxPowerLimitInternal() {
  // TODO(b/62437848): Implement this method once we are ready with the
  auto legacy_status = legacy_hal_.lock()->resetTxPowerLimit();
  // header changes in legacy HAL.
  return createWifiStatusFromLegacyError(legacy_status);
  return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED);
}
}


WifiStatus WifiChip::handleChipConfiguration(ChipModeId mode_id) {
WifiStatus WifiChip::handleChipConfiguration(ChipModeId mode_id) {
+9 −0
Original line number Original line Diff line number Diff line
@@ -752,6 +752,15 @@ wifi_error WifiLegacyHal::setScanningMacOui(const std::array<uint8_t, 3>& oui) {
                                                      oui_internal.data());
                                                      oui_internal.data());
}
}


wifi_error WifiLegacyHal::setTxPowerLimit(int32_t tx_level_dbm) {
  return global_func_table_.wifi_set_tx_power_limit(wlan_interface_handle_,
                                                    tx_level_dbm);
}

wifi_error WifiLegacyHal::resetTxPowerLimit() {
  return global_func_table_.wifi_reset_tx_power_limit(wlan_interface_handle_);
}

std::pair<wifi_error, uint32_t> WifiLegacyHal::getLoggerSupportedFeatureSet() {
std::pair<wifi_error, uint32_t> WifiLegacyHal::getLoggerSupportedFeatureSet() {
  uint32_t supported_features;
  uint32_t supported_features;
  wifi_error status = global_func_table_.wifi_get_logger_supported_feature_set(
  wifi_error status = global_func_table_.wifi_get_logger_supported_feature_set(
+2 −0
Original line number Original line Diff line number Diff line
@@ -205,6 +205,8 @@ class WifiLegacyHal {
      uint32_t period_in_ms);
      uint32_t period_in_ms);
  wifi_error stopSendingOffloadedPacket(uint32_t cmd_id);
  wifi_error stopSendingOffloadedPacket(uint32_t cmd_id);
  wifi_error setScanningMacOui(const std::array<uint8_t, 3>& oui);
  wifi_error setScanningMacOui(const std::array<uint8_t, 3>& oui);
  wifi_error setTxPowerLimit(int32_t tx_level_dbm);
  wifi_error resetTxPowerLimit();
  // Logger/debug functions.
  // Logger/debug functions.
  std::pair<wifi_error, uint32_t> getLoggerSupportedFeatureSet();
  std::pair<wifi_error, uint32_t> getLoggerSupportedFeatureSet();
  wifi_error startPktFateMonitoring();
  wifi_error startPktFateMonitoring();
Loading