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

Commit 09b47a78 authored by Shuibing Dai's avatar Shuibing Dai Committed by Android (Google) Code Review
Browse files

Merge "Add a new AIDL API for wifi indoor/dfs channel usage"

parents b6bfd93a e5fbcab1
Loading
Loading
Loading
Loading
+28 −22
Original line number Diff line number Diff line
@@ -80,24 +80,25 @@ interface IWifiChip {
  void startLoggingToDebugRingBuffer(in String ringName, in android.hardware.wifi.WifiDebugRingBufferVerboseLevel verboseLevel, in int maxIntervalInSec, in int minDataSizeInBytes);
  void stopLoggingToDebugRingBuffer();
  void triggerSubsystemRestart();
  const int NO_POWER_CAP_CONSTANT = 2147483647;
  void enableStaChannelForPeerNetwork(in android.hardware.wifi.IWifiChip.ChannelCategoryMask channelCategoryEnableFlag);
  const int NO_POWER_CAP_CONSTANT = 0x7FFFFFFF;
  @Backing(type="int") @VintfStability
  enum ChipCapabilityMask {
    DEBUG_MEMORY_FIRMWARE_DUMP = 1,
    DEBUG_MEMORY_DRIVER_DUMP = 2,
    DEBUG_RING_BUFFER_CONNECT_EVENT = 4,
    DEBUG_RING_BUFFER_POWER_EVENT = 8,
    DEBUG_RING_BUFFER_WAKELOCK_EVENT = 16,
    DEBUG_RING_BUFFER_VENDOR_DATA = 32,
    DEBUG_HOST_WAKE_REASON_STATS = 64,
    DEBUG_ERROR_ALERTS = 128,
    SET_TX_POWER_LIMIT = 256,
    D2D_RTT = 512,
    D2AP_RTT = 1024,
    USE_BODY_HEAD_SAR = 2048,
    SET_LATENCY_MODE = 4096,
    P2P_RAND_MAC = 8192,
    WIGIG = 16384,
    DEBUG_MEMORY_FIRMWARE_DUMP = (1 << 0),
    DEBUG_MEMORY_DRIVER_DUMP = (1 << 1),
    DEBUG_RING_BUFFER_CONNECT_EVENT = (1 << 2),
    DEBUG_RING_BUFFER_POWER_EVENT = (1 << 3),
    DEBUG_RING_BUFFER_WAKELOCK_EVENT = (1 << 4),
    DEBUG_RING_BUFFER_VENDOR_DATA = (1 << 5),
    DEBUG_HOST_WAKE_REASON_STATS = (1 << 6),
    DEBUG_ERROR_ALERTS = (1 << 7),
    SET_TX_POWER_LIMIT = (1 << 8),
    D2D_RTT = (1 << 9),
    D2AP_RTT = (1 << 10),
    USE_BODY_HEAD_SAR = (1 << 11),
    SET_LATENCY_MODE = (1 << 12),
    P2P_RAND_MAC = (1 << 13),
    WIGIG = (1 << 14),
  }
  @VintfStability
  parcelable ChipConcurrencyCombinationLimit {
@@ -129,9 +130,9 @@ interface IWifiChip {
  }
  @Backing(type="int") @VintfStability
  enum CoexRestriction {
    WIFI_DIRECT = 1,
    SOFTAP = 2,
    WIFI_AWARE = 4,
    WIFI_DIRECT = (1 << 0),
    SOFTAP = (1 << 1),
    WIFI_AWARE = (1 << 2),
  }
  @VintfStability
  parcelable CoexUnsafeChannel {
@@ -159,8 +160,13 @@ interface IWifiChip {
  }
  @Backing(type="int") @VintfStability
  enum UsableChannelFilter {
    CELLULAR_COEXISTENCE = 1,
    CONCURRENCY = 2,
    NAN_INSTANT_MODE = 4,
    CELLULAR_COEXISTENCE = (1 << 0),
    CONCURRENCY = (1 << 1),
    NAN_INSTANT_MODE = (1 << 2),
  }
  @Backing(type="int") @VintfStability
  enum ChannelCategoryMask {
    INDOOR_CHANNEL = (1 << 0),
    DFS_CHANNEL = (1 << 1),
  }
}
+25 −0
Original line number Diff line number Diff line
@@ -1106,4 +1106,29 @@ interface IWifiChip {
     *         |WifiStatusCode.ERROR_UNKNOWN|
     */
    void triggerSubsystemRestart();

    /**
     * Channel category mask.
     */
    @VintfStability
    @Backing(type="int")
    enum ChannelCategoryMask {
        INDOOR_CHANNEL = 1 << 0,
        DFS_CHANNEL = 1 << 1,
    }

    /**
     * API to enable or disable the feature of allowing current STA-connected channel for WFA GO,
     * SAP and Aware when the regulatory allows.
     * If the channel category is enabled and allowed by the regulatory, the HAL method
     * getUsableChannels() will contain the current STA-connected channel if that channel belongs
     * to that category.
     * @param channelCategoryEnableFlag bitmask of |ChannelCategoryMask|.
     *        For each bit, 1 enables the channel category and 0 disables that channel category.
     * @throws ServiceSpecificException with one of the following values:
     *         |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|,
     *         |WifiStatusCode.ERROR_NOT_SUPPORTED|,
     *         |WifiStatusCode.FAILURE_UNKNOWN|
     */
    void enableStaChannelForPeerNetwork(in ChannelCategoryMask channelCategoryEnableFlag);
}
+13 −0
Original line number Diff line number Diff line
@@ -3311,6 +3311,19 @@ bool convertLegacyWifiChipCapabilitiesToAidl(
    return true;
}

uint32_t convertAidlChannelCategoryToLegacy(uint32_t aidl_channel_category_mask) {
    uint32_t channel_category_mask = 0;
    if (aidl_channel_category_mask &
        static_cast<int32_t>(IWifiChip::ChannelCategoryMask::INDOOR_CHANNEL)) {
        channel_category_mask |= legacy_hal::WIFI_INDOOR_CHANNEL;
    }
    if (aidl_channel_category_mask &
        static_cast<int32_t>(IWifiChip::ChannelCategoryMask::DFS_CHANNEL)) {
        channel_category_mask |= legacy_hal::WIFI_DFS_CHANNEL;
    }
    return channel_category_mask;
}

}  // namespace aidl_struct_util
}  // namespace wifi
}  // namespace hardware
+1 −0
Original line number Diff line number Diff line
@@ -200,6 +200,7 @@ bool convertLegacyNanBootstrappingRequestIndToAidl(
bool convertLegacyNanBootstrappingConfirmIndToAidl(
        const legacy_hal::NanBootstrappingConfirmInd& legacy_ind,
        NanBootstrappingConfirmInd* aidl_ind);
uint32_t convertAidlChannelCategoryToLegacy(uint32_t aidl_channel_category_mask);
}  // namespace aidl_struct_util
}  // namespace wifi
}  // namespace hardware
+16 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ namespace {
using aidl::android::hardware::wifi::IfaceType;
using aidl::android::hardware::wifi::IWifiChip;
using CoexRestriction = aidl::android::hardware::wifi::IWifiChip::CoexRestriction;
using ChannelCategoryMask = aidl::android::hardware::wifi::IWifiChip::ChannelCategoryMask;
using android::base::unique_fd;

constexpr char kCpioMagic[] = "070701";
@@ -685,6 +686,13 @@ ndk::ScopedAStatus WifiChip::getWifiChipCapabilities(WifiChipCapabilities* _aidl
                           &WifiChip::getWifiChipCapabilitiesInternal, _aidl_return);
}

ndk::ScopedAStatus WifiChip::enableStaChannelForPeerNetwork(
        ChannelCategoryMask in_channelCategoryEnableFlag) {
    return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID,
                           &WifiChip::enableStaChannelForPeerNetworkInternal,
                           in_channelCategoryEnableFlag);
}

void WifiChip::invalidateAndRemoveAllIfaces() {
    invalidateAndClearBridgedApAll();
    invalidateAndClearAll(ap_ifaces_);
@@ -1428,6 +1436,14 @@ std::pair<WifiChipCapabilities, ndk::ScopedAStatus> WifiChip::getWifiChipCapabil
    return {aidl_chip_capabilities, ndk::ScopedAStatus::ok()};
}

ndk::ScopedAStatus WifiChip::enableStaChannelForPeerNetworkInternal(
        ChannelCategoryMask channelCategoryEnableFlag) {
    auto legacy_status = legacy_hal_.lock()->enableStaChannelForPeerNetwork(
            aidl_struct_util::convertAidlChannelCategoryToLegacy(
                    static_cast<uint32_t>(channelCategoryEnableFlag)));
    return createWifiStatusFromLegacyError(legacy_status);
}

ndk::ScopedAStatus WifiChip::triggerSubsystemRestartInternal() {
    auto legacy_status = legacy_hal_.lock()->triggerSubsystemRestart();
    return createWifiStatusFromLegacyError(legacy_status);
Loading