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

Commit 4e6c9a2b authored by Gabriel Biren's avatar Gabriel Biren
Browse files

Improve initialization sequence for supplicant

AIDL VTS tests.

Bug: 215298798
Bug: 215467859
Test: atest VtsHalWifiSupplicantStaIfaceTargetTest \
            VtsHalWifiSupplicantStaNetworkTargetTest \
            VtsHalWifiSupplicantP2pIfaceTargetTest
      (Tested on both a Coral and Oriole device)
Change-Id: I435e16a447af16d9cd619c5bc8883ed24151080a
parent 71af5c2d
Loading
Loading
Loading
Loading
+34 −33
Original line number Diff line number Diff line
@@ -69,37 +69,6 @@ bool waitForSupplicantStart() { return waitForSupplicantState(true); }
// disable.
bool waitForSupplicantStop() { return waitForSupplicantState(false); }

// Helper function to initialize the driver and firmware to STA mode
// using the vendor HAL HIDL interface.
void initilializeDriverAndFirmware(const std::string& wifi_instance_name) {
    // Skip if wifi instance is not set.
    if (wifi_instance_name == "") {
        return;
    }
    if (getWifi(wifi_instance_name) != nullptr) {
        sp<IWifiChip> wifi_chip = getWifiChip(wifi_instance_name);
        ChipModeId mode_id;
        EXPECT_TRUE(configureChipToSupportIfaceType(
            wifi_chip, ::android::hardware::wifi::V1_0::IfaceType::STA, &mode_id));
    } else {
        LOG(WARNING) << __func__ << ": Vendor HAL not supported";
    }
}

// Helper function to deinitialize the driver and firmware
// using the vendor HAL HIDL interface.
void deInitilializeDriverAndFirmware(const std::string& wifi_instance_name) {
    // Skip if wifi instance is not set.
    if (wifi_instance_name == "") {
        return;
    }
    if (getWifi(wifi_instance_name) != nullptr) {
        stopWifi(wifi_instance_name);
    } else {
        LOG(WARNING) << __func__ << ": Vendor HAL not supported";
    }
}

// Helper function to find any iface of the desired type exposed.
bool findIfaceOfType(sp<ISupplicant> supplicant, IfaceType desired_type,
                     ISupplicant::IfaceInfo* out_info) {
@@ -156,14 +125,46 @@ void stopSupplicant(const std::string& wifi_instance_name) {
    SupplicantManager supplicant_manager;

    ASSERT_TRUE(supplicant_manager.StopSupplicant());
    deInitilializeDriverAndFirmware(wifi_instance_name);
    deInitializeDriverAndFirmware(wifi_instance_name);
    ASSERT_FALSE(supplicant_manager.IsSupplicantRunning());
}

// Helper function to initialize the driver and firmware to STA mode
// using the vendor HAL HIDL interface.
void initializeDriverAndFirmware(const std::string& wifi_instance_name) {
    // Skip if wifi instance is not set.
    if (wifi_instance_name == "") {
        return;
    }
    if (getWifi(wifi_instance_name) != nullptr) {
        sp<IWifiChip> wifi_chip = getWifiChip(wifi_instance_name);
        ChipModeId mode_id;
        EXPECT_TRUE(configureChipToSupportIfaceType(
            wifi_chip, ::android::hardware::wifi::V1_0::IfaceType::STA,
            &mode_id));
    } else {
        LOG(WARNING) << __func__ << ": Vendor HAL not supported";
    }
}

// Helper function to deinitialize the driver and firmware
// using the vendor HAL HIDL interface.
void deInitializeDriverAndFirmware(const std::string& wifi_instance_name) {
    // Skip if wifi instance is not set.
    if (wifi_instance_name == "") {
        return;
    }
    if (getWifi(wifi_instance_name) != nullptr) {
        stopWifi(wifi_instance_name);
    } else {
        LOG(WARNING) << __func__ << ": Vendor HAL not supported";
    }
}

void startSupplicantAndWaitForHidlService(
    const std::string& wifi_instance_name,
    const std::string& supplicant_instance_name) {
    initilializeDriverAndFirmware(wifi_instance_name);
    initializeDriverAndFirmware(wifi_instance_name);

    SupplicantManager supplicant_manager;
    ASSERT_TRUE(supplicant_manager.StartSupplicant());
+5 −0
Original line number Diff line number Diff line
@@ -42,6 +42,11 @@ void startSupplicantAndWaitForHidlService(
    const std::string& wifi_instance_name,
    const std::string& supplicant_instance_name);

// Used to initialize/deinitialize the driver and firmware at the
// beginning and end of each test.
void initializeDriverAndFirmware(const std::string& wifi_instance_name);
void deInitializeDriverAndFirmware(const std::string& wifi_instance_name);

// Helper functions to obtain references to the various HIDL interface objects.
// Note: We only have a single instance of each of these objects currently.
// These helper functions should be modified to return vectors if we support
+36 −0
Original line number Diff line number Diff line
@@ -33,11 +33,23 @@ cc_test {
    shared_libs: [
        "libbinder",
        "libbinder_ndk",
        "libvndksupport",
    ],
    static_libs: [
        "android.hardware.wifi@1.0",
        "android.hardware.wifi@1.1",
        "android.hardware.wifi@1.2",
        "android.hardware.wifi@1.3",
        "android.hardware.wifi@1.4",
        "android.hardware.wifi@1.5",
        "android.hardware.wifi.supplicant@1.0",
        "android.hardware.wifi.supplicant@1.1",
        "android.hardware.wifi.supplicant-V1-ndk",
        "libwifi-system",
        "libwifi-system-iface",
        "VtsHalWifiV1_0TargetTestUtil",
        "VtsHalWifiV1_5TargetTestUtil",
        "VtsHalWifiSupplicantV1_0TargetTestUtil",
    ],
    test_suites: [
        "general-tests",
@@ -55,11 +67,23 @@ cc_test {
    shared_libs: [
        "libbinder",
        "libbinder_ndk",
        "libvndksupport",
    ],
    static_libs: [
        "android.hardware.wifi@1.0",
        "android.hardware.wifi@1.1",
        "android.hardware.wifi@1.2",
        "android.hardware.wifi@1.3",
        "android.hardware.wifi@1.4",
        "android.hardware.wifi@1.5",
        "android.hardware.wifi.supplicant@1.0",
        "android.hardware.wifi.supplicant@1.1",
        "android.hardware.wifi.supplicant-V1-ndk",
        "libwifi-system",
        "libwifi-system-iface",
        "VtsHalWifiV1_0TargetTestUtil",
        "VtsHalWifiV1_5TargetTestUtil",
        "VtsHalWifiSupplicantV1_0TargetTestUtil",
    ],
    test_suites: [
        "general-tests",
@@ -77,11 +101,23 @@ cc_test {
    shared_libs: [
        "libbinder",
        "libbinder_ndk",
        "libvndksupport",
    ],
    static_libs: [
        "android.hardware.wifi@1.0",
        "android.hardware.wifi@1.1",
        "android.hardware.wifi@1.2",
        "android.hardware.wifi@1.3",
        "android.hardware.wifi@1.4",
        "android.hardware.wifi@1.5",
        "android.hardware.wifi.supplicant@1.0",
        "android.hardware.wifi.supplicant@1.1",
        "android.hardware.wifi.supplicant-V1-ndk",
        "libwifi-system",
        "libwifi-system-iface",
        "VtsHalWifiV1_0TargetTestUtil",
        "VtsHalWifiV1_5TargetTestUtil",
        "VtsHalWifiSupplicantV1_0TargetTestUtil",
    ],
    test_suites: [
        "general-tests",
+3 −4
Original line number Diff line number Diff line
@@ -165,8 +165,7 @@ class SupplicantP2pIfaceAidlTest : public testing::TestWithParam<std::string> {
   public:
    void SetUp() override {
        initializeService();
        supplicant_ = ISupplicant::fromBinder(ndk::SpAIBinder(
            AServiceManager_waitForService(GetParam().c_str())));
        supplicant_ = getSupplicant(GetParam().c_str());
        ASSERT_NE(supplicant_, nullptr);
        ASSERT_TRUE(supplicant_
                        ->setDebugParams(DebugLevel::EXCESSIVE,
@@ -180,13 +179,13 @@ class SupplicantP2pIfaceAidlTest : public testing::TestWithParam<std::string> {
            GTEST_SKIP() << "Wi-Fi Direct is not supported, skip this test.";
        }

        EXPECT_TRUE(supplicant_->addP2pInterface(getP2pIfaceName(), &p2p_iface_)
        EXPECT_TRUE(supplicant_->getP2pInterface(getP2pIfaceName(), &p2p_iface_)
                        .isOk());
        ASSERT_NE(p2p_iface_, nullptr);
    }

    void TearDown() override {
        stopSupplicant();
        stopSupplicantService();
        startWifiFramework();
    }

+3 −4
Original line number Diff line number Diff line
@@ -197,21 +197,20 @@ class SupplicantStaIfaceAidlTest : public testing::TestWithParam<std::string> {
   public:
    void SetUp() override {
        initializeService();
        supplicant_ = ISupplicant::fromBinder(ndk::SpAIBinder(
            AServiceManager_waitForService(GetParam().c_str())));
        supplicant_ = getSupplicant(GetParam().c_str());
        ASSERT_NE(supplicant_, nullptr);
        ASSERT_TRUE(supplicant_
                        ->setDebugParams(DebugLevel::EXCESSIVE,
                                         true,  // show timestamps
                                         true)
                        .isOk());
        EXPECT_TRUE(supplicant_->addStaInterface(getStaIfaceName(), &sta_iface_)
        EXPECT_TRUE(supplicant_->getStaInterface(getStaIfaceName(), &sta_iface_)
                        .isOk());
        ASSERT_NE(sta_iface_, nullptr);
    }

    void TearDown() override {
        stopSupplicant();
        stopSupplicantService();
        startWifiFramework();
    }

Loading