summaryrefslogtreecommitdiff
path: root/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2017-05-22 14:16:06 -0700
committerRoshan Pius <rpius@google.com>2017-05-22 15:29:03 -0700
commitc802e09390844e0129ca30843b9e25e7ae33cc11 (patch)
treefd1f4270f337256664fa40cd2545085b0feab4de /wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
parent76cfb841405a7884519181dd924459c142ac43dd (diff)
wifi(vts): Add retry for HAL start
Port of the retry logic added in HalDeviceManager for temporary IWifi.start() failures when invoked immediately after IWifi.stop(). Bug: 38342536 Test: Run VTS tests Change-Id: Ie58a08c45979bafa0c61fa1c8536a2c0a0cd8ed9
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.cpp13
1 files changed, 12 insertions, 1 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 fefbd79e5a..e4382bce5d 100644
--- a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
+++ b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
@@ -36,6 +36,9 @@ using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;
namespace {
+constexpr uint32_t kHalStartRetryMaxCount = 5;
+constexpr uint32_t kHalStartRetryIntervalInMs = 2;
+
bool findAnyModeSupportingIfaceType(
IfaceType desired_type, const std::vector<IWifiChip::ChipMode>& modes,
ChipModeId* mode_id) {
@@ -92,7 +95,15 @@ sp<IWifiChip> getWifiChip() {
if (!wifi.get()) {
return nullptr;
}
- if (HIDL_INVOKE(wifi, start).code != WifiStatusCode::SUCCESS) {
+ uint32_t retry_count = 0;
+ auto status = HIDL_INVOKE(wifi, start);
+ while (retry_count < kHalStartRetryMaxCount &&
+ status.code == WifiStatusCode::ERROR_NOT_AVAILABLE) {
+ retry_count++;
+ usleep(kHalStartRetryIntervalInMs * 1000);
+ status = HIDL_INVOKE(wifi, start);
+ }
+ if (status.code != WifiStatusCode::SUCCESS) {
return nullptr;
}
const auto& status_and_chip_ids = HIDL_INVOKE(wifi, getChipIds);