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

Commit 02a97247 authored by Phill Hayers's avatar Phill Hayers
Browse files

Add NAN session suspension in shim layer.

Bug: 259950106
Test: m android.hardware.wifi-update-api
Change-Id: Ia3c1aa7e709e4e611bf40757ae712a9e39cc043a
parent 43d9af64
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -134,6 +134,8 @@ class MockNanIfaceEventCallback : public IWifiNanIfaceEventCallback {
                 ndk::ScopedAStatus(char16_t, const NanStatus&, int32_t));
    MOCK_METHOD2(notifyRespondToBootstrappingIndicationResponse,
                 ndk::ScopedAStatus(char16_t, const NanStatus&));
    MOCK_METHOD2(notifySuspendResponse, ndk::ScopedAStatus(char16_t, const NanStatus&));
    MOCK_METHOD2(notifyResumeResponse, ndk::ScopedAStatus(char16_t, const NanStatus&));
};

class WifiNanIfaceTest : public Test {
+16 −0
Original line number Diff line number Diff line
@@ -1559,6 +1559,22 @@ wifi_error WifiLegacyHal::nanDataEnd(const std::string& iface_name, transaction_
    return status;
}

wifi_error WifiLegacyHal::nanSuspendRequest(const std::string& iface_name, transaction_id id,
                                            const NanSuspendRequest& msg) {
    NanSuspendRequest msg_internal(msg);
    wifi_error status = global_func_table_.wifi_nan_suspend_request(id, getIfaceHandle(iface_name),
                                                                    &msg_internal);
    return status;
}

wifi_error WifiLegacyHal::nanResumeRequest(const std::string& iface_name, transaction_id id,
                                           const NanResumeRequest& msg) {
    NanResumeRequest msg_internal(msg);
    wifi_error status = global_func_table_.wifi_nan_resume_request(id, getIfaceHandle(iface_name),
                                                                   &msg_internal);
    return status;
}

wifi_error WifiLegacyHal::setCountryCode(const std::string& iface_name,
                                         const std::array<uint8_t, 2> code) {
    std::string code_str(code.data(), code.data() + code.size());
+6 −0
Original line number Diff line number Diff line
@@ -165,12 +165,14 @@ using ::NanPublishType;
using ::NanRangeReportInd;
using ::NanRangeRequestInd;
using ::NanResponseMsg;
using ::NanResumeRequest;
using ::NanSRFType;
using ::NanStatusType;
using ::NanSubscribeCancelRequest;
using ::NanSubscribeRequest;
using ::NanSubscribeTerminatedInd;
using ::NanSubscribeType;
using ::NanSuspendRequest;
using ::NanTransmitFollowupInd;
using ::NanTransmitFollowupRequest;
using ::NanTxType;
@@ -701,6 +703,10 @@ class WifiLegacyHal {
    wifi_error nanBootstrappingIndicationResponse(const std::string& iface_name, transaction_id id,
                                                  const NanBootstrappingIndicationResponse& msg);
    wifi_error nanDataEnd(const std::string& iface_name, transaction_id id, uint32_t ndpInstanceId);
    wifi_error nanSuspendRequest(const std::string& iface_name, transaction_id id,
                                 const NanSuspendRequest& msg);
    wifi_error nanResumeRequest(const std::string& iface_name, transaction_id id,
                                const NanResumeRequest& msg);
    // AP functions.
    wifi_error setCountryCode(const std::string& iface_name, const std::array<uint8_t, 2> code);

+2 −0
Original line number Diff line number Diff line
@@ -173,6 +173,8 @@ bool initHalFuncTableWithStubs(wifi_hal_fn* hal_fn) {
    populateStubFor(&hal_fn->wifi_get_cached_scan_results);
    populateStubFor(&hal_fn->wifi_get_chip_capabilities);
    populateStubFor(&hal_fn->wifi_enable_sta_channel_for_peer_network);
    populateStubFor(&hal_fn->wifi_nan_suspend_request);
    populateStubFor(&hal_fn->wifi_nan_resume_request);
    return true;
}

+24 −1
Original line number Diff line number Diff line
@@ -756,6 +756,16 @@ ndk::ScopedAStatus WifiNanIface::respondToBootstrappingIndicationRequest(
                           in_msg);
}

ndk::ScopedAStatus WifiNanIface::suspendRequest(char16_t in_cmdId, int8_t in_sessionId) {
    return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
                           &WifiNanIface::suspendRequestInternal, in_cmdId, in_sessionId);
}

ndk::ScopedAStatus WifiNanIface::resumeRequest(char16_t in_cmdId, int8_t in_sessionId) {
    return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
                           &WifiNanIface::resumeRequestInternal, in_cmdId, in_sessionId);
}

std::pair<std::string, ndk::ScopedAStatus> WifiNanIface::getNameInternal() {
    return {ifname_, ndk::ScopedAStatus::ok()};
}
@@ -930,7 +940,20 @@ ndk::ScopedAStatus WifiNanIface::respondToBootstrappingIndicationRequestInternal
            legacy_hal_.lock()->nanBootstrappingIndicationResponse(ifname_, cmd_id, legacy_msg);
    return createWifiStatusFromLegacyError(legacy_status);
}

ndk::ScopedAStatus WifiNanIface::suspendRequestInternal(char16_t cmd_id, int8_t sessionId) {
    legacy_hal::NanSuspendRequest legacy_msg;
    legacy_msg.publish_subscribe_id = sessionId;
    legacy_hal::wifi_error legacy_status =
            legacy_hal_.lock()->nanSuspendRequest(ifname_, cmd_id, legacy_msg);
    return createWifiStatusFromLegacyError(legacy_status);
}
ndk::ScopedAStatus WifiNanIface::resumeRequestInternal(char16_t cmd_id, int8_t sessionId) {
    legacy_hal::NanResumeRequest legacy_msg;
    legacy_msg.publish_subscribe_id = sessionId;
    legacy_hal::wifi_error legacy_status =
            legacy_hal_.lock()->nanResumeRequest(ifname_, cmd_id, legacy_msg);
    return createWifiStatusFromLegacyError(legacy_status);
}
}  // namespace wifi
}  // namespace hardware
}  // namespace android
Loading