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

Commit aabb5ccb authored by Sunil Ravi's avatar Sunil Ravi Committed by Android (Google) Code Review
Browse files

Merge "Wifi: MBO-OCE feature support (phase 1)"

parents 5625bc79 89157a4b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -601,10 +601,10 @@ b74fe72cfe438f50e772e6a307657ff449d5bde83c15dd1f140ff2edbe73499c android.hardwar
033eae03c09ebc75e82db37bc39995dfaa9086745577b44d9e14e9ccb48bd8cc android.hardware.vibrator@1.4::types
3e01d4446cd69fd1c48f8572efd97487bc179564b32bd795800b97bbe10be37b android.hardware.wifi@1.4::IWifi
a64467bae843569f0d465c5be7f0c7a5b987985b55a3ef4794dd5afc68538650 android.hardware.wifi.supplicant@1.3::ISupplicant
0a7ff83fd0326b82232e1609da98f34960be11335df72fc407ad238d7bd0e081 android.hardware.wifi.supplicant@1.3::ISupplicantStaIface
44445b8a03d7b9e68b2fbd954672c18a8fce9e32851b0692f4f4ab3407f86ecb android.hardware.wifi.supplicant@1.3::ISupplicantStaIface
619fc9839ec6e369cfa9b28e3e9412e6885720ff8f9b5750c1b6ffb905120391 android.hardware.wifi.supplicant@1.3::ISupplicantStaIfaceCallback
c9273429fcf98d797d3bb07fdba6f1be95bf960f9255cde169fd1ca4db85f856 android.hardware.wifi.supplicant@1.3::ISupplicantStaNetwork
b0f8c9cd61a45a8c1b4a8e40913ecaea0921011cbe2305a6fa5a2feaa0d36c30 android.hardware.wifi.supplicant@1.3::types
9b0a3ab6f4f74b971ed094426d8a443e29b512ff03e1ab50c07156396cdb2483 android.hardware.wifi.supplicant@1.3::types
41c602462ccd1b19cfd645994be4de4c07fc197ff58a54e84476b31908e61e21 android.hardware.radio@1.5::types
a8691c71747c3f14f7a043598e856425077f755e55990507a9132ad62f8ab3f7 android.hardware.radio@1.5::IRadio
a62a93faf173b14a6175b683ebf61ffa568dc61f81e369d2dce7b1265e86cf2f android.hardware.radio@1.5::IRadioIndication
+22 −0
Original line number Diff line number Diff line
@@ -54,4 +54,26 @@ interface ISupplicantStaIface extends @1.2::ISupplicantStaIface {
     */
    getConnectionCapabilities()
        generates (SupplicantStatus status, ConnectionCapabilities capabilities);

    /**
     * Get wpa driver capabilities.
     *
     * @return status Status of the operation, and a bitmap of wpa driver features.
     *         Possible status codes:
     *         |SupplicantStatusCode.SUCCESS|,
     *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
     */
    getWpaDriverCapabilities() generates (SupplicantStatus status,
        bitfield<WpaDriverCapabilitiesMask> driverCapabilitiesMask);

    /**
     * Set MBO cellular data status.
     *
     * @param available true means cellular data available, false otherwise.
     * @return status Status of the operation.
     *         Possible status codes:
     *         |SupplicantStatusCode.SUCCESS|,
     *         |SupplicantStatusCode.FAILURE_UNKNOWN|
     */
    setMboCellularDataStatus(bool available) generates (SupplicantStatus status);
};
+14 −0
Original line number Diff line number Diff line
@@ -58,3 +58,17 @@ struct ConnectionCapabilities {
     */
    WifiTechnology technology;
};

/**
 * WPA Driver capability.
 */
enum WpaDriverCapabilitiesMask : uint32_t {
    /**
     * Multi Band Operation.
     */
    MBO = 1 << 0,
    /**
     * Optimized Connectivity Experience.
     */
    OCE = 1 << 1,
};
+36 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ using ::android::hardware::wifi::supplicant::V1_3::ConnectionCapabilities;
using ::android::hardware::wifi::supplicant::V1_3::ISupplicantStaIface;
using ::android::hardware::wifi::supplicant::V1_3::ISupplicantStaIfaceCallback;
using ::android::hardware::wifi::supplicant::V1_3::ISupplicantStaNetwork;
using ::android::hardware::wifi::supplicant::V1_3::WpaDriverCapabilitiesMask;

class SupplicantStaIfaceHidlTest : public ::testing::VtsHalHidlTargetTestBase {
   public:
@@ -191,3 +192,38 @@ TEST_F(SupplicantStaIfaceHidlTest, GetConnectionCapabilities) {
            EXPECT_EQ(SupplicantStatusCode::SUCCESS, status.code);
        });
}

/*
 * GetWpaDriverCapabilities
 */
TEST_F(SupplicantStaIfaceHidlTest, GetWpaDriverCapabilities) {
    sta_iface_->getWpaDriverCapabilities(
        [&](const SupplicantStatus& status, uint32_t) {
            EXPECT_EQ(SupplicantStatusCode::SUCCESS, status.code);
        });
}

/*
 * SetMboCellularDataStatus
 */
TEST_F(SupplicantStaIfaceHidlTest, SetMboCellularDataStatus) {
    uint32_t driverCapMask = 0;

    // Get MBO support from the device.
    sta_iface_->getWpaDriverCapabilities(
        [&](const SupplicantStatus& status, uint32_t driverCapMaskInternal) {
            EXPECT_EQ(SupplicantStatusCode::SUCCESS, status.code);

            driverCapMask = driverCapMaskInternal;
        });

    SupplicantStatusCode expectedStatusCode =
        (driverCapMask & WpaDriverCapabilitiesMask::MBO)
            ? SupplicantStatusCode::SUCCESS
            : SupplicantStatusCode::FAILURE_UNKNOWN;

    sta_iface_->setMboCellularDataStatus(
        true, [expectedStatusCode](const SupplicantStatus& status) {
            EXPECT_EQ(expectedStatusCode, status.code);
        });
}