diff options
author | Roshan Pius <rpius@google.com> | 2017-03-10 01:16:48 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2017-03-10 01:16:48 +0000 |
commit | cdca05557df85742a8fe7e15b8d78cd60b6a5986 (patch) | |
tree | 81055e8f3d10cf81bc81551c2dc2f1d2f0c9f872 /wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp | |
parent | 255cdb29a09961b876b5330830014245d9567828 (diff) | |
parent | 46b6454d2f23936677a57cc37a0ccffeff41a185 (diff) |
Merge changes If83c1cbe,I12ad2665
* changes:
wifi(implementation): Move out clearing on stop complete
wifi(vts): Some IWifiChip/IWifiStaIface tests
Diffstat (limited to 'wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp')
-rw-r--r-- | wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp | 115 |
1 files changed, 58 insertions, 57 deletions
diff --git a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp index e0c92fe104..0e10e42b65 100644 --- a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp +++ b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp @@ -35,6 +35,53 @@ using ::android::sp; using ::android::hardware::hidl_string; using ::android::hardware::hidl_vec; +namespace { +bool findAnyModeSupportingIfaceType( + IfaceType desired_type, const std::vector<IWifiChip::ChipMode>& modes, + ChipModeId* mode_id) { + for (const auto& mode : modes) { + for (const auto& combination : mode.availableCombinations) { + for (const auto& iface_limit : combination.limits) { + const auto& iface_types = iface_limit.types; + if (std::find(iface_types.begin(), iface_types.end(), + desired_type) != iface_types.end()) { + *mode_id = mode.id; + return true; + } + } + } + } + return false; +} + +bool configureChipToSupportIfaceTypeInternal(const sp<IWifiChip>& wifi_chip, + IfaceType type, + ChipModeId* configured_mode_id) { + if (!configured_mode_id) { + return false; + } + const auto& status_and_modes = HIDL_INVOKE(wifi_chip, getAvailableModes); + if (status_and_modes.first.code != WifiStatusCode::SUCCESS) { + return false; + } + if (!findAnyModeSupportingIfaceType(type, status_and_modes.second, + configured_mode_id)) { + return false; + } + if (HIDL_INVOKE(wifi_chip, configureChip, *configured_mode_id).code != + WifiStatusCode::SUCCESS) { + return false; + } + return true; +} + +bool configureChipToSupportIfaceTypeInternal(const sp<IWifiChip>& wifi_chip, + IfaceType type) { + ChipModeId mode_id; + return configureChipToSupportIfaceTypeInternal(wifi_chip, type, &mode_id); +} +} // namespace + void stopFramework() { ASSERT_EQ(std::system("stop"), 0); stopWifi(); @@ -53,79 +100,30 @@ sp<IWifiChip> getWifiChip() { if (!wifi.get()) { return nullptr; } - if (HIDL_INVOKE(wifi, start).code != WifiStatusCode::SUCCESS) { return nullptr; } - const auto& status_and_chip_ids = HIDL_INVOKE(wifi, getChipIds); const auto& chip_ids = status_and_chip_ids.second; if (status_and_chip_ids.first.code != WifiStatusCode::SUCCESS || chip_ids.size() != 1) { return nullptr; } - const auto& status_and_chip = HIDL_INVOKE(wifi, getChip, chip_ids[0]); if (status_and_chip.first.code != WifiStatusCode::SUCCESS) { return nullptr; } - return status_and_chip.second; } -// Since we currently only support one iface of each type. Just iterate thru the -// modes of operation and find the mode ID to use for that iface type. -bool findModeToSupportIfaceType(IfaceType type, - const std::vector<IWifiChip::ChipMode>& modes, - ChipModeId* mode_id) { - for (const auto& mode : modes) { - std::vector<IWifiChip::ChipIfaceCombination> combinations = - mode.availableCombinations; - for (const auto& combination : combinations) { - std::vector<IWifiChip::ChipIfaceCombinationLimit> iface_limits = - combination.limits; - for (const auto& iface_limit : iface_limits) { - std::vector<IfaceType> iface_types = iface_limit.types; - for (const auto& iface_type : iface_types) { - if (iface_type == type) { - *mode_id = mode.id; - return true; - } - } - } - } - } - return false; -} - -bool configureChipToSupportIfaceType(const sp<IWifiChip>& wifi_chip, - IfaceType type) { - const auto& status_and_modes = HIDL_INVOKE(wifi_chip, getAvailableModes); - if (status_and_modes.first.code != WifiStatusCode::SUCCESS) { - return false; - } - - ChipModeId mode_id; - if (!findModeToSupportIfaceType(type, status_and_modes.second, &mode_id)) { - return false; - } - - if (HIDL_INVOKE(wifi_chip, configureChip, mode_id).code != - WifiStatusCode::SUCCESS) { - return false; - } - return true; -} - sp<IWifiApIface> getWifiApIface() { sp<IWifiChip> wifi_chip = getWifiChip(); if (!wifi_chip.get()) { return nullptr; } - if (!configureChipToSupportIfaceType(wifi_chip, IfaceType::AP)) { + if (!configureChipToSupportIfaceTypeInternal(wifi_chip, IfaceType::AP)) { return nullptr; } - const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createApIface); if (status_and_iface.first.code != WifiStatusCode::SUCCESS) { return nullptr; @@ -138,10 +136,9 @@ sp<IWifiNanIface> getWifiNanIface() { if (!wifi_chip.get()) { return nullptr; } - if (!configureChipToSupportIfaceType(wifi_chip, IfaceType::NAN)) { + if (!configureChipToSupportIfaceTypeInternal(wifi_chip, IfaceType::NAN)) { return nullptr; } - const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createNanIface); if (status_and_iface.first.code != WifiStatusCode::SUCCESS) { return nullptr; @@ -154,10 +151,9 @@ sp<IWifiP2pIface> getWifiP2pIface() { if (!wifi_chip.get()) { return nullptr; } - if (!configureChipToSupportIfaceType(wifi_chip, IfaceType::P2P)) { + if (!configureChipToSupportIfaceTypeInternal(wifi_chip, IfaceType::P2P)) { return nullptr; } - const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createP2pIface); if (status_and_iface.first.code != WifiStatusCode::SUCCESS) { return nullptr; @@ -170,10 +166,9 @@ sp<IWifiStaIface> getWifiStaIface() { if (!wifi_chip.get()) { return nullptr; } - if (!configureChipToSupportIfaceType(wifi_chip, IfaceType::STA)) { + if (!configureChipToSupportIfaceTypeInternal(wifi_chip, IfaceType::STA)) { return nullptr; } - const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createStaIface); if (status_and_iface.first.code != WifiStatusCode::SUCCESS) { return nullptr; @@ -190,7 +185,6 @@ sp<IWifiRttController> getWifiRttController() { if (!wifi_sta_iface.get()) { return nullptr; } - const auto& status_and_controller = HIDL_INVOKE(wifi_chip, createRttController, wifi_sta_iface); if (status_and_controller.first.code != WifiStatusCode::SUCCESS) { @@ -199,6 +193,13 @@ sp<IWifiRttController> getWifiRttController() { return status_and_controller.second; } +bool configureChipToSupportIfaceType(const sp<IWifiChip>& wifi_chip, + IfaceType type, + ChipModeId* configured_mode_id) { + return configureChipToSupportIfaceTypeInternal(wifi_chip, type, + configured_mode_id); +} + void stopWifi() { sp<IWifi> wifi = getWifi(); ASSERT_NE(wifi, nullptr); |