summaryrefslogtreecommitdiff
path: root/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2017-03-10 01:16:48 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-03-10 01:16:48 +0000
commitcdca05557df85742a8fe7e15b8d78cd60b6a5986 (patch)
tree81055e8f3d10cf81bc81551c2dc2f1d2f0c9f872 /wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
parent255cdb29a09961b876b5330830014245d9567828 (diff)
parent46b6454d2f23936677a57cc37a0ccffeff41a185 (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.cpp115
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);