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

Commit bd73697c authored by Jong Wook Kim's avatar Jong Wook Kim Committed by android-build-merger
Browse files

Merge "SetMacAddress in Vendor HAL" into pi-dev

am: 5727901a

Change-Id: Ib606874c83c52cb07980958a939f50fcccfbe6c8
parents 0992650e 5727901a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -365,7 +365,7 @@ a0aefa29881235c21e4761d15c55edc35ef85c2e0d9e01d0966176d1dbf5f811 android.hardwar
167af870fdb87e1cbbaa0fa62ef35e1031caad20dd1ba695983dedb1e9993486 android.hardware.wifi@1.2::IWifiChipEventCallback
8c7ef32fc78d5ec6e6956de3784cc2c6f42614b5272d2e461f6d60534ba38ec2 android.hardware.wifi@1.2::IWifiNanIface
1e6074efad9da333803fb7c1acdb719d51c30b2e1e92087b0420341631c30b60 android.hardware.wifi@1.2::IWifiNanIfaceEventCallback
a9d733eb0d555f2a6cb79a212810e81b56ecba0e31a8ffe0916de086a29e4f88 android.hardware.wifi@1.2::IWifiStaIface
f5682dbf19f712bef9cc3faa5fe3dc670b6ffbcb62a147a1d86b9d43574cd83f android.hardware.wifi@1.2::IWifiStaIface
6db2e7d274be2dca9bf3087afd1f774a68c99d2b4dc7eeaf41690e5cebcbef7a android.hardware.wifi@1.2::types
ee08280de21cb41e3ec26d6ed636c701b7f70516e71fb22f4fe60a13e603f406 android.hardware.wifi.hostapd@1.0::IHostapd
b2479cd7a417a1cf4f3a22db4e4579e21bac38fdcaf381e2bf10176d05397e01 android.hardware.wifi.hostapd@1.0::types
+14 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.hardware.wifi@1.2;

import @1.0::WifiStatus;
import @1.0::MacAddress;
import @1.0::IWifiStaIface;

/**
@@ -51,4 +52,17 @@ interface IWifiStaIface extends @1.0::IWifiStaIface {
     * @see installApfPacketFilter()
     */
    readApfPacketFilterData() generates (WifiStatus status, vec<uint8_t> data);

    /**
     * Changes the MAC address of the Sta Interface to the given
     * MAC address.
     *
     * @param mac MAC address to change into.
     * @return status WifiStatus of the operation.
     *         Possible status codes:
     *         |WifiStatusCode.SUCCESS|,
     *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
     *         |WifiStatusCode.ERROR_UNKNOWN|
     */
    setMacAddress(MacAddress mac) generates (WifiStatus status);
};
+27 −0
Original line number Diff line number Diff line
@@ -241,6 +241,13 @@ Return<void> WifiStaIface::getDebugRxPacketFates(
                           hidl_status_cb);
}

Return<void> WifiStaIface::setMacAddress(const hidl_array<uint8_t, 6>& mac,
                                         setMacAddress_cb hidl_status_cb) {
    return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
                           &WifiStaIface::setMacAddressInternal, hidl_status_cb,
                           mac);
}

std::pair<WifiStatus, std::string> WifiStaIface::getNameInternal() {
    return {createWifiStatus(WifiStatusCode::SUCCESS), ifname_};
}
@@ -594,6 +601,26 @@ WifiStaIface::getDebugRxPacketFatesInternal() {
    return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_fates};
}

WifiStatus WifiStaIface::setMacAddressInternal(
    const std::array<uint8_t, 6>& mac) {
    if (!iface_tool_.SetWifiUpState(false)) {
        LOG(ERROR) << "SetWifiUpState(false) failed.";
        return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN);
    }

    if (!iface_tool_.SetMacAddress(ifname_.c_str(), mac)) {
        LOG(ERROR) << "SetMacAddress failed.";
        return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN);
    }

    if (!iface_tool_.SetWifiUpState(true)) {
        LOG(ERROR) << "SetWifiUpState(true) failed.";
        return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN);
    }
    LOG(DEBUG) << "Successfully SetMacAddress.";
    return createWifiStatus(WifiStatusCode::SUCCESS);
}

}  // namespace implementation
}  // namespace V1_2
}  // namespace wifi
+6 −0
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@
#include <android/hardware/wifi/1.0/IWifiStaIfaceEventCallback.h>
#include <android/hardware/wifi/1.2/IWifiStaIface.h>

#include <wifi_system/interface_tool.h>

#include "hidl_callback_util.h"
#include "wifi_legacy_hal.h"

@@ -103,6 +105,8 @@ class WifiStaIface : public V1_2::IWifiStaIface {
        getDebugTxPacketFates_cb hidl_status_cb) override;
    Return<void> getDebugRxPacketFates(
        getDebugRxPacketFates_cb hidl_status_cb) override;
    Return<void> setMacAddress(const hidl_array<uint8_t, 6>& mac,
                               setMacAddress_cb hidl_status_cb) override;

   private:
    // Corresponding worker functions for the HIDL methods.
@@ -146,12 +150,14 @@ class WifiStaIface : public V1_2::IWifiStaIface {
    getDebugTxPacketFatesInternal();
    std::pair<WifiStatus, std::vector<WifiDebugRxPacketFateReport>>
    getDebugRxPacketFatesInternal();
    WifiStatus setMacAddressInternal(const std::array<uint8_t, 6>& mac);

    std::string ifname_;
    std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_;
    bool is_valid_;
    hidl_callback_util::HidlCallbackHandler<IWifiStaIfaceEventCallback>
        event_cb_handler_;
    wifi_system::InterfaceTool iface_tool_;

    DISALLOW_COPY_AND_ASSIGN(WifiStaIface);
};
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ cc_test {
    srcs: [
        "VtsHalWifiV1_2TargetTest.cpp",
        "wifi_chip_hidl_test.cpp",
        "wifi_sta_iface_hidl_test.cpp",
    ],
    static_libs: [
        "VtsHalWifiV1_0TargetTestUtil",
Loading