diff options
author | Tomasz Wasilczyk <twasilczyk@google.com> | 2018-11-15 11:52:57 -0800 |
---|---|---|
committer | Tomasz Wasilczyk <twasilczyk@google.com> | 2018-12-11 14:06:28 -0800 |
commit | b424da787290b37b1406474900712f621cec6ad1 (patch) | |
tree | a10aacf53ac0ada9d248e6da3e80920e160d21b7 /wifi/1.3/default/wifi_chip.cpp | |
parent | 315002043adfb811bbe65934052c3be5b7ebd123 (diff) | |
download | android_hardware_interfaces-b424da787290b37b1406474900712f621cec6ad1.tar.gz android_hardware_interfaces-b424da787290b37b1406474900712f621cec6ad1.tar.bz2 android_hardware_interfaces-b424da787290b37b1406474900712f621cec6ad1.zip |
WiFi: enable any combination of STA/AP/P2P/NAN interfaces.
The total number of interfaces is still limited to 2,
will be addressed in a separate change.
Bug: 36120314
Test: KitchenSink (see go/aae-dual-ap)
Test: b/120081854
Change-Id: I8962c5167fcbe55805fce320f639d37b4b902c5c
Diffstat (limited to 'wifi/1.3/default/wifi_chip.cpp')
-rw-r--r-- | wifi/1.3/default/wifi_chip.cpp | 95 |
1 files changed, 5 insertions, 90 deletions
diff --git a/wifi/1.3/default/wifi_chip.cpp b/wifi/1.3/default/wifi_chip.cpp index a80116ab8..dd6bd7c02 100644 --- a/wifi/1.3/default/wifi_chip.cpp +++ b/wifi/1.3/default/wifi_chip.cpp @@ -36,15 +36,6 @@ using android::hardware::wifi::V1_0::ChipModeId; using android::hardware::wifi::V1_0::IfaceType; using android::hardware::wifi::V1_0::IWifiChip; -constexpr ChipModeId kInvalidModeId = UINT32_MAX; -// These mode ID's should be unique (even across combo versions). Refer to -// handleChipConfiguration() for it's usage. -// Mode ID's for V1 -constexpr ChipModeId kV1StaChipModeId = 0; -constexpr ChipModeId kV1ApChipModeId = 1; -// Mode ID for V2 -constexpr ChipModeId kV2ChipModeId = 2; - constexpr char kCpioMagic[] = "070701"; constexpr size_t kMaxBufferSizeBytes = 1024 * 1024; constexpr uint32_t kMaxRingBufferFileAgeSeconds = 60 * 60; @@ -318,10 +309,9 @@ WifiChip::WifiChip( mode_controller_(mode_controller), feature_flags_(feature_flags), is_valid_(true), - current_mode_id_(kInvalidModeId), - debug_ring_buffer_cb_registered_(false) { - populateModes(); -} + current_mode_id_(feature_flags::chip_mode_ids::kInvalid), + modes_(feature_flags.lock()->getChipModes()), + debug_ring_buffer_cb_registered_(false) {} void WifiChip::invalidate() { if (!writeRingbufferFilesInternal()) { @@ -1118,9 +1108,9 @@ WifiStatus WifiChip::handleChipConfiguration( } // Firmware mode change not needed for V2 devices. bool success = true; - if (mode_id == kV1StaChipModeId) { + if (mode_id == feature_flags::chip_mode_ids::kV1Sta) { success = mode_controller_.lock()->changeFirmwareMode(IfaceType::STA); - } else if (mode_id == kV1ApChipModeId) { + } else if (mode_id == feature_flags::chip_mode_ids::kV1Ap) { success = mode_controller_.lock()->changeFirmwareMode(IfaceType::AP); } if (!success) { @@ -1212,81 +1202,6 @@ WifiStatus WifiChip::registerRadioModeChangeCallback() { return createWifiStatusFromLegacyError(legacy_status); } -void WifiChip::populateModes() { - // The chip combination supported for current devices is fixed. - // They can be one of the following based on device features: - // a) 2 separate modes of operation with 1 interface combination each: - // Mode 1 (STA mode): Will support 1 STA and 1 P2P or NAN(optional) - // concurrent iface operations. - // Mode 2 (AP mode): Will support 1 AP iface operation. - // - // b) 1 mode of operation with 2 interface combinations - // (conditional on isDualInterfaceSupported()): - // Interface Combination 1: Will support 1 STA and 1 P2P or NAN(optional) - // concurrent iface operations. - // Interface Combination 2: Will support 1 STA and 1 AP concurrent - // iface operations. - // If Aware is enabled (conditional on isAwareSupported()), the iface - // combination will be modified to support either P2P or NAN in place of - // just P2P. - if (feature_flags_.lock()->isDualInterfaceSupported()) { - // V2 Iface combinations for Mode Id = 2. - const IWifiChip::ChipIfaceCombinationLimit - chip_iface_combination_limit_1 = {{IfaceType::STA}, 1}; - const IWifiChip::ChipIfaceCombinationLimit - chip_iface_combination_limit_2 = {{IfaceType::AP}, 1}; - IWifiChip::ChipIfaceCombinationLimit chip_iface_combination_limit_3; - if (feature_flags_.lock()->isAwareSupported()) { - chip_iface_combination_limit_3 = {{IfaceType::P2P, IfaceType::NAN}, - 1}; - } else { - chip_iface_combination_limit_3 = {{IfaceType::P2P}, 1}; - } - const IWifiChip::ChipIfaceCombination chip_iface_combination_1 = { - {chip_iface_combination_limit_1, chip_iface_combination_limit_2}}; - const IWifiChip::ChipIfaceCombination chip_iface_combination_2 = { - {chip_iface_combination_limit_1, chip_iface_combination_limit_3}}; - if (feature_flags_.lock()->isApDisabled()) { - const IWifiChip::ChipMode chip_mode = {kV2ChipModeId, - {chip_iface_combination_2}}; - modes_ = {chip_mode}; - } else { - const IWifiChip::ChipMode chip_mode = { - kV2ChipModeId, - {chip_iface_combination_1, chip_iface_combination_2}}; - modes_ = {chip_mode}; - } - } else { - // V1 Iface combinations for Mode Id = 0. (STA Mode) - const IWifiChip::ChipIfaceCombinationLimit - sta_chip_iface_combination_limit_1 = {{IfaceType::STA}, 1}; - IWifiChip::ChipIfaceCombinationLimit sta_chip_iface_combination_limit_2; - if (feature_flags_.lock()->isAwareSupported()) { - sta_chip_iface_combination_limit_2 = { - {IfaceType::P2P, IfaceType::NAN}, 1}; - } else { - sta_chip_iface_combination_limit_2 = {{IfaceType::P2P}, 1}; - } - const IWifiChip::ChipIfaceCombination sta_chip_iface_combination = { - {sta_chip_iface_combination_limit_1, - sta_chip_iface_combination_limit_2}}; - const IWifiChip::ChipMode sta_chip_mode = { - kV1StaChipModeId, {sta_chip_iface_combination}}; - // Iface combinations for Mode Id = 1. (AP Mode) - const IWifiChip::ChipIfaceCombinationLimit - ap_chip_iface_combination_limit = {{IfaceType::AP}, 1}; - const IWifiChip::ChipIfaceCombination ap_chip_iface_combination = { - {ap_chip_iface_combination_limit}}; - const IWifiChip::ChipMode ap_chip_mode = {kV1ApChipModeId, - {ap_chip_iface_combination}}; - if (feature_flags_.lock()->isApDisabled()) { - modes_ = {sta_chip_mode}; - } else { - modes_ = {sta_chip_mode, ap_chip_mode}; - } - } -} - std::vector<IWifiChip::ChipIfaceCombination> WifiChip::getCurrentModeIfaceCombinations() { if (!isValidModeId(current_mode_id_)) { |