diff options
author | Haamed Gheibi <haamed@google.com> | 2022-02-04 13:47:26 -0800 |
---|---|---|
committer | Haamed Gheibi <haamed@google.com> | 2022-02-04 13:55:47 -0800 |
commit | f99b35c293439db0b7436b47b939eb8c7bf21b51 (patch) | |
tree | 6cd9b0719554809447c845616317cca5409b93ae /wifi | |
parent | a028272dee9220e6810cbdcfb2328c34f8afe4c2 (diff) | |
parent | 332dead340bb196c6ba3f6978e8fb53966c74bf7 (diff) |
Merge TP1A.220120.003
Change-Id: Ie5eba313ee102e452f5f96942ed2f3a7bb4e8f01
Diffstat (limited to 'wifi')
95 files changed, 4595 insertions, 5785 deletions
diff --git a/wifi/1.5/default/hidl_struct_util.h b/wifi/1.5/default/hidl_struct_util.h deleted file mode 100644 index 352f213664..0000000000 --- a/wifi/1.5/default/hidl_struct_util.h +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef HIDL_STRUCT_UTIL_H_ -#define HIDL_STRUCT_UTIL_H_ - -#include <vector> - -#include <android/hardware/wifi/1.0/IWifiChip.h> -#include <android/hardware/wifi/1.0/types.h> -#include <android/hardware/wifi/1.2/types.h> -#include <android/hardware/wifi/1.3/types.h> -#include <android/hardware/wifi/1.4/IWifiChipEventCallback.h> -#include <android/hardware/wifi/1.4/types.h> -#include <android/hardware/wifi/1.5/IWifiChip.h> -#include <android/hardware/wifi/1.5/types.h> - -#include "wifi_legacy_hal.h" - -/** - * This file contains a bunch of functions to convert structs from the legacy - * HAL to HIDL and vice versa. - * TODO(b/32093047): Add unit tests for these conversion methods in the VTS test - * suite. - */ -namespace android { -namespace hardware { -namespace wifi { -namespace V1_5 { -namespace implementation { -namespace hidl_struct_util { -using namespace android::hardware::wifi::V1_0; - -// Chip conversion methods. -bool convertLegacyFeaturesToHidlChipCapabilities( - uint64_t legacy_feature_set, uint32_t legacy_logger_feature_set, - uint32_t* hidl_caps); -bool convertLegacyDebugRingBufferStatusToHidl( - const legacy_hal::wifi_ring_buffer_status& legacy_status, - WifiDebugRingBufferStatus* hidl_status); -bool convertLegacyVectorOfDebugRingBufferStatusToHidl( - const std::vector<legacy_hal::wifi_ring_buffer_status>& legacy_status_vec, - std::vector<WifiDebugRingBufferStatus>* hidl_status_vec); -bool convertLegacyWakeReasonStatsToHidl( - const legacy_hal::WakeReasonStats& legacy_stats, - WifiDebugHostWakeReasonStats* hidl_stats); -legacy_hal::wifi_power_scenario convertHidlTxPowerScenarioToLegacy( - V1_1::IWifiChip::TxPowerScenario hidl_scenario); -legacy_hal::wifi_latency_mode convertHidlLatencyModeToLegacy( - V1_3::IWifiChip::LatencyMode hidl_latency_mode); -legacy_hal::wifi_power_scenario convertHidlTxPowerScenarioToLegacy_1_2( - V1_2::IWifiChip::TxPowerScenario hidl_scenario); -bool convertLegacyWifiMacInfosToHidl( - const std::vector<legacy_hal::WifiMacInfo>& legacy_mac_infos, - std::vector<V1_4::IWifiChipEventCallback::RadioModeInfo>* - hidl_radio_mode_infos); -legacy_hal::wifi_interface_type convertHidlIfaceTypeToLegacy( - IfaceType hidl_interface_type); -legacy_hal::wifi_multi_sta_use_case convertHidlMultiStaUseCaseToLegacy( - IWifiChip::MultiStaUseCase use_case); -bool convertHidlCoexUnsafeChannelToLegacy( - const IWifiChip::CoexUnsafeChannel& hidl_unsafe_channel, - legacy_hal::wifi_coex_unsafe_channel* legacy_unsafe_channel); -bool convertHidlVectorOfCoexUnsafeChannelToLegacy( - const std::vector<IWifiChip::CoexUnsafeChannel>& hidl_unsafe_channels, - std::vector<legacy_hal::wifi_coex_unsafe_channel>* legacy_unsafe_channels); - -// STA iface conversion methods. -bool convertLegacyFeaturesToHidlStaCapabilities( - uint64_t legacy_feature_set, uint32_t legacy_logger_feature_set, - uint32_t* hidl_caps); -bool convertLegacyApfCapabilitiesToHidl( - const legacy_hal::PacketFilterCapabilities& legacy_caps, - StaApfPacketFilterCapabilities* hidl_caps); -bool convertLegacyGscanCapabilitiesToHidl( - const legacy_hal::wifi_gscan_capabilities& legacy_caps, - StaBackgroundScanCapabilities* hidl_caps); -legacy_hal::wifi_band convertHidlWifiBandToLegacy(V1_0::WifiBand band); -bool convertHidlGscanParamsToLegacy( - const StaBackgroundScanParameters& hidl_scan_params, - legacy_hal::wifi_scan_cmd_params* legacy_scan_params); -// |has_ie_data| indicates whether or not the wifi_scan_result includes 802.11 -// Information Elements (IEs) -bool convertLegacyGscanResultToHidl( - const legacy_hal::wifi_scan_result& legacy_scan_result, bool has_ie_data, - StaScanResult* hidl_scan_result); -// |cached_results| is assumed to not include IEs. -bool convertLegacyVectorOfCachedGscanResultsToHidl( - const std::vector<legacy_hal::wifi_cached_scan_results>& - legacy_cached_scan_results, - std::vector<StaScanData>* hidl_scan_datas); -bool convertLegacyLinkLayerStatsToHidl( - const legacy_hal::LinkLayerStats& legacy_stats, - StaLinkLayerStats* hidl_stats); -bool convertLegacyRoamingCapabilitiesToHidl( - const legacy_hal::wifi_roaming_capabilities& legacy_caps, - StaRoamingCapabilities* hidl_caps); -bool convertHidlRoamingConfigToLegacy( - const StaRoamingConfig& hidl_config, - legacy_hal::wifi_roaming_config* legacy_config); -legacy_hal::fw_roaming_state_t convertHidlRoamingStateToLegacy( - StaRoamingState state); -bool convertLegacyVectorOfDebugTxPacketFateToHidl( - const std::vector<legacy_hal::wifi_tx_report>& legacy_fates, - std::vector<WifiDebugTxPacketFateReport>* hidl_fates); -bool convertLegacyVectorOfDebugRxPacketFateToHidl( - const std::vector<legacy_hal::wifi_rx_report>& legacy_fates, - std::vector<WifiDebugRxPacketFateReport>* hidl_fates); - -// NAN iface conversion methods. -void convertToWifiNanStatus(legacy_hal::NanStatusType type, const char* str, - size_t max_len, WifiNanStatus* wifiNanStatus); -bool convertHidlNanEnableRequestToLegacy( - const V1_4::NanEnableRequest& hidl_request, - legacy_hal::NanEnableRequest* legacy_request); -bool convertHidlNanConfigRequestToLegacy( - const V1_4::NanConfigRequest& hidl_request, - legacy_hal::NanConfigRequest* legacy_request); -bool convertHidlNanEnableRequest_1_4ToLegacy( - const V1_4::NanEnableRequest& hidl_request1, - const NanConfigRequestSupplemental& hidl_request2, - legacy_hal::NanEnableRequest* legacy_request); -bool convertHidlNanConfigRequest_1_4ToLegacy( - const V1_4::NanConfigRequest& hidl_request1, - const NanConfigRequestSupplemental& hidl_request2, - legacy_hal::NanConfigRequest* legacy_request); -bool convertHidlNanEnableRequest_1_5ToLegacy( - const V1_4::NanEnableRequest& hidl_request1, - const NanConfigRequestSupplemental& hidl_request2, - legacy_hal::NanEnableRequest* legacy_request); -bool convertHidlNanConfigRequest_1_5ToLegacy( - const V1_4::NanConfigRequest& hidl_request1, - const NanConfigRequestSupplemental& hidl_request2, - legacy_hal::NanConfigRequest* legacy_request); -bool convertHidlNanPublishRequestToLegacy( - const NanPublishRequest& hidl_request, - legacy_hal::NanPublishRequest* legacy_request); -bool convertHidlNanSubscribeRequestToLegacy( - const NanSubscribeRequest& hidl_request, - legacy_hal::NanSubscribeRequest* legacy_request); -bool convertHidlNanTransmitFollowupRequestToLegacy( - const NanTransmitFollowupRequest& hidl_request, - legacy_hal::NanTransmitFollowupRequest* legacy_request); -bool convertHidlNanDataPathInitiatorRequestToLegacy( - const NanInitiateDataPathRequest& hidl_request, - legacy_hal::NanDataPathInitiatorRequest* legacy_request); -bool convertHidlNanDataPathIndicationResponseToLegacy( - const NanRespondToDataPathIndicationRequest& hidl_response, - legacy_hal::NanDataPathIndicationResponse* legacy_response); -bool convertLegacyNanResponseHeaderToHidl( - const legacy_hal::NanResponseMsg& legacy_response, - WifiNanStatus* wifiNanStatus); -bool convertLegacyNanCapabilitiesResponseToHidl( - const legacy_hal::NanCapabilities& legacy_response, - NanCapabilities* hidl_response); -bool convertLegacyNanMatchIndToHidl(const legacy_hal::NanMatchInd& legacy_ind, - NanMatchInd* hidl_ind); -bool convertLegacyNanFollowupIndToHidl( - const legacy_hal::NanFollowupInd& legacy_ind, - NanFollowupReceivedInd* hidl_ind); -bool convertLegacyNanDataPathRequestIndToHidl( - const legacy_hal::NanDataPathRequestInd& legacy_ind, - NanDataPathRequestInd* hidl_ind); -bool convertLegacyNanDataPathConfirmIndToHidl( - const legacy_hal::NanDataPathConfirmInd& legacy_ind, - V1_2::NanDataPathConfirmInd* hidl_ind); -bool convertLegacyNanDataPathScheduleUpdateIndToHidl( - const legacy_hal::NanDataPathScheduleUpdateInd& legacy_ind, - V1_2::NanDataPathScheduleUpdateInd* hidl_ind); - -// RTT controller conversion methods. -bool convertHidlVectorOfRttConfigToLegacy( - const std::vector<V1_4::RttConfig>& hidl_configs, - std::vector<legacy_hal::wifi_rtt_config>* legacy_configs); -bool convertHidlRttLciInformationToLegacy( - const RttLciInformation& hidl_info, - legacy_hal::wifi_lci_information* legacy_info); -bool convertHidlRttLcrInformationToLegacy( - const RttLcrInformation& hidl_info, - legacy_hal::wifi_lcr_information* legacy_info); -bool convertHidlRttResponderToLegacy( - const V1_4::RttResponder& hidl_responder, - legacy_hal::wifi_rtt_responder* legacy_responder); -bool convertHidlWifiChannelInfoToLegacy( - const WifiChannelInfo& hidl_info, - legacy_hal::wifi_channel_info* legacy_info); -bool convertLegacyRttResponderToHidl( - const legacy_hal::wifi_rtt_responder& legacy_responder, - V1_4::RttResponder* hidl_responder); -bool convertLegacyRttCapabilitiesToHidl( - const legacy_hal::wifi_rtt_capabilities& legacy_capabilities, - V1_4::RttCapabilities* hidl_capabilities); -bool convertLegacyVectorOfRttResultToHidl( - const std::vector<const legacy_hal::wifi_rtt_result*>& legacy_results, - std::vector<V1_4::RttResult>* hidl_results); -uint32_t convertHidlWifiBandToLegacyMacBand(V1_5::WifiBand band); -uint32_t convertHidlWifiIfaceModeToLegacy(uint32_t hidl_iface_mask); -uint32_t convertHidlUsableChannelFilterToLegacy(uint32_t hidl_filter_mask); -bool convertLegacyWifiUsableChannelsToHidl( - const std::vector<legacy_hal::wifi_usable_channel>& legacy_usable_channels, - std::vector<V1_5::WifiUsableChannel>* hidl_usable_channels); -bool convertLegacyPeerInfoStatsToHidl( - const legacy_hal::WifiPeerInfo& legacy_peer_info_stats, - StaPeerInfo* hidl_peer_info_stats); -bool convertLegacyWifiRateInfoToHidl(const legacy_hal::wifi_rate& legacy_rate, - V1_4::WifiRateInfo* hidl_rate); -} // namespace hidl_struct_util -} // namespace implementation -} // namespace V1_5 -} // namespace wifi -} // namespace hardware -} // namespace android - -#endif // HIDL_STRUCT_UTIL_H_ diff --git a/wifi/1.5/default/tests/wifi_nan_iface_unit_tests.cpp b/wifi/1.5/default/tests/wifi_nan_iface_unit_tests.cpp deleted file mode 100644 index 32da55ec2b..0000000000 --- a/wifi/1.5/default/tests/wifi_nan_iface_unit_tests.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (C) 2019, The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <android-base/logging.h> -#include <android-base/macros.h> -#include <cutils/properties.h> -#include <gmock/gmock.h> - -#undef NAN // This is weird, NAN is defined in bionic/libc/include/math.h:38 -#include "wifi_nan_iface.h" - -#include "mock_interface_tool.h" -#include "mock_wifi_feature_flags.h" -#include "mock_wifi_iface_util.h" -#include "mock_wifi_legacy_hal.h" - -using testing::NiceMock; -using testing::Return; -using testing::Test; - -namespace { -constexpr char kIfaceName[] = "mockWlan0"; -} // namespace - -namespace android { -namespace hardware { -namespace wifi { -namespace V1_5 { -namespace implementation { - -using android::hardware::wifi::V1_2::NanDataPathConfirmInd; - -bool CaptureIfaceEventHandlers( - const std::string& /* iface_name*/, - iface_util::IfaceEventHandlers in_iface_event_handlers, - iface_util::IfaceEventHandlers* out_iface_event_handlers) { - *out_iface_event_handlers = in_iface_event_handlers; - return true; -} - -class MockNanIfaceEventCallback : public IWifiNanIfaceEventCallback { - public: - MockNanIfaceEventCallback() = default; - - MOCK_METHOD3( - notifyCapabilitiesResponse, - Return<void>(uint16_t, const WifiNanStatus&, - const android::hardware::wifi::V1_0::NanCapabilities&)); - MOCK_METHOD2(notifyEnableResponse, - Return<void>(uint16_t, const WifiNanStatus&)); - MOCK_METHOD2(notifyConfigResponse, - Return<void>(uint16_t, const WifiNanStatus&)); - MOCK_METHOD2(notifyDisableResponse, - Return<void>(uint16_t, const WifiNanStatus&)); - MOCK_METHOD3(notifyStartPublishResponse, - Return<void>(uint16_t, const WifiNanStatus&, uint8_t)); - MOCK_METHOD2(notifyStopPublishResponse, - Return<void>(uint16_t, const WifiNanStatus&)); - MOCK_METHOD3(notifyStartSubscribeResponse, - Return<void>(uint16_t, const WifiNanStatus&, uint8_t)); - MOCK_METHOD2(notifyStopSubscribeResponse, - Return<void>(uint16_t, const WifiNanStatus&)); - MOCK_METHOD2(notifyTransmitFollowupResponse, - Return<void>(uint16_t, const WifiNanStatus&)); - MOCK_METHOD2(notifyCreateDataInterfaceResponse, - Return<void>(uint16_t, const WifiNanStatus&)); - MOCK_METHOD2(notifyDeleteDataInterfaceResponse, - Return<void>(uint16_t, const WifiNanStatus&)); - MOCK_METHOD3(notifyInitiateDataPathResponse, - Return<void>(uint16_t, const WifiNanStatus&, uint32_t)); - MOCK_METHOD2(notifyRespondToDataPathIndicationResponse, - Return<void>(uint16_t, const WifiNanStatus&)); - MOCK_METHOD2(notifyTerminateDataPathResponse, - Return<void>(uint16_t, const WifiNanStatus&)); - MOCK_METHOD1(eventClusterEvent, Return<void>(const NanClusterEventInd&)); - MOCK_METHOD1(eventDisabled, Return<void>(const WifiNanStatus&)); - MOCK_METHOD2(eventPublishTerminated, - Return<void>(uint8_t, const WifiNanStatus&)); - MOCK_METHOD2(eventSubscribeTerminated, - Return<void>(uint8_t, const WifiNanStatus&)); - MOCK_METHOD1(eventMatch, Return<void>(const NanMatchInd&)); - MOCK_METHOD2(eventMatchExpired, Return<void>(uint8_t, uint32_t)); - MOCK_METHOD1(eventFollowupReceived, - Return<void>(const NanFollowupReceivedInd&)); - MOCK_METHOD2(eventTransmitFollowup, - Return<void>(uint16_t, const WifiNanStatus&)); - MOCK_METHOD1(eventDataPathRequest, - Return<void>(const NanDataPathRequestInd&)); - MOCK_METHOD1( - eventDataPathConfirm, - Return<void>( - const android::hardware::wifi::V1_0::NanDataPathConfirmInd&)); - MOCK_METHOD1(eventDataPathTerminated, Return<void>(uint32_t)); - MOCK_METHOD1(eventDataPathConfirm_1_2, - Return<void>(const NanDataPathConfirmInd&)); - MOCK_METHOD1(eventDataPathScheduleUpdate, - Return<void>(const NanDataPathScheduleUpdateInd&)); - MOCK_METHOD3(notifyCapabilitiesResponse_1_5, - Return<void>(uint16_t, const WifiNanStatus&, - const NanCapabilities&)); -}; - -class WifiNanIfaceTest : public Test { - protected: - legacy_hal::wifi_hal_fn fake_func_table_; - std::shared_ptr<NiceMock<wifi_system::MockInterfaceTool>> iface_tool_{ - new NiceMock<wifi_system::MockInterfaceTool>}; - std::shared_ptr<NiceMock<legacy_hal::MockWifiLegacyHal>> legacy_hal_{ - new NiceMock<legacy_hal::MockWifiLegacyHal>(iface_tool_, - fake_func_table_, true)}; - std::shared_ptr<NiceMock<iface_util::MockWifiIfaceUtil>> iface_util_{ - new NiceMock<iface_util::MockWifiIfaceUtil>(iface_tool_, legacy_hal_)}; -}; - -TEST_F(WifiNanIfaceTest, IfacEventHandlers_OnStateToggleOffOn) { - iface_util::IfaceEventHandlers captured_iface_event_handlers = {}; - EXPECT_CALL(*legacy_hal_, - nanRegisterCallbackHandlers(testing::_, testing::_)) - .WillOnce(testing::Return(legacy_hal::WIFI_SUCCESS)); - EXPECT_CALL(*iface_util_, - registerIfaceEventHandlers(testing::_, testing::_)) - .WillOnce(testing::Invoke( - bind(CaptureIfaceEventHandlers, std::placeholders::_1, - std::placeholders::_2, &captured_iface_event_handlers))); - sp<WifiNanIface> nan_iface = - new WifiNanIface(kIfaceName, false, legacy_hal_, iface_util_); - - // Register a mock nan event callback. - sp<NiceMock<MockNanIfaceEventCallback>> mock_event_callback{ - new NiceMock<MockNanIfaceEventCallback>}; - nan_iface->registerEventCallback( - mock_event_callback, [](const WifiStatus& status) { - ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); - }); - // Ensure that the eventDisabled() function in mock callback will be - // invoked. - WifiNanStatus expected_nan_status = { - NanStatusType::UNSUPPORTED_CONCURRENCY_NAN_DISABLED, ""}; - EXPECT_CALL(*mock_event_callback, eventDisabled(expected_nan_status)) - .Times(1); - - // Trigger the iface state toggle callback. - captured_iface_event_handlers.on_state_toggle_off_on(kIfaceName); -} -} // namespace implementation -} // namespace V1_5 -} // namespace wifi -} // namespace hardware -} // namespace android diff --git a/wifi/1.5/default/wifi_nan_iface.cpp b/wifi/1.5/default/wifi_nan_iface.cpp deleted file mode 100644 index 0cc6cd5fce..0000000000 --- a/wifi/1.5/default/wifi_nan_iface.cpp +++ /dev/null @@ -1,1003 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <android-base/logging.h> - -#include "hidl_return_util.h" -#include "hidl_struct_util.h" -#include "wifi_nan_iface.h" -#include "wifi_status_util.h" - -namespace android { -namespace hardware { -namespace wifi { -namespace V1_5 { -namespace implementation { -using hidl_return_util::validateAndCall; - -WifiNanIface::WifiNanIface( - const std::string& ifname, bool is_dedicated_iface, - const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal, - const std::weak_ptr<iface_util::WifiIfaceUtil> iface_util) - : ifname_(ifname), - is_dedicated_iface_(is_dedicated_iface), - legacy_hal_(legacy_hal), - iface_util_(iface_util), - is_valid_(true) { - if (is_dedicated_iface_) { - // If using a dedicated iface, set the iface up first. - if (!iface_util_.lock()->setUpState(ifname_, true)) { - // Fatal failure, invalidate the iface object. - invalidate(); - return; - } - } - // Register all the callbacks here. these should be valid for the lifetime - // of the object. Whenever the mode changes legacy HAL will remove - // all of these callbacks. - legacy_hal::NanCallbackHandlers callback_handlers; - android::wp<WifiNanIface> weak_ptr_this(this); - - // Callback for response. - callback_handlers - .on_notify_response = [weak_ptr_this]( - legacy_hal::transaction_id id, - const legacy_hal::NanResponseMsg& msg) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - WifiNanStatus wifiNanStatus; - if (!hidl_struct_util::convertLegacyNanResponseHeaderToHidl( - msg, &wifiNanStatus)) { - LOG(ERROR) << "Failed to convert nan response header"; - return; - } - - switch (msg.response_type) { - case legacy_hal::NAN_RESPONSE_ENABLED: { - for (const auto& callback : - shared_ptr_this->getEventCallbacks()) { - if (!callback->notifyEnableResponse(id, wifiNanStatus) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - break; - } - case legacy_hal::NAN_RESPONSE_DISABLED: { - for (const auto& callback : - shared_ptr_this->getEventCallbacks()) { - if (!callback->notifyDisableResponse(id, wifiNanStatus) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - break; - } - case legacy_hal::NAN_RESPONSE_PUBLISH: { - for (const auto& callback : - shared_ptr_this->getEventCallbacks()) { - if (!callback - ->notifyStartPublishResponse( - id, wifiNanStatus, - msg.body.publish_response.publish_id) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - break; - } - case legacy_hal::NAN_RESPONSE_PUBLISH_CANCEL: { - for (const auto& callback : - shared_ptr_this->getEventCallbacks()) { - if (!callback->notifyStopPublishResponse(id, wifiNanStatus) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - break; - } - case legacy_hal::NAN_RESPONSE_TRANSMIT_FOLLOWUP: { - for (const auto& callback : - shared_ptr_this->getEventCallbacks()) { - if (!callback - ->notifyTransmitFollowupResponse(id, wifiNanStatus) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - break; - } - case legacy_hal::NAN_RESPONSE_SUBSCRIBE: { - for (const auto& callback : - shared_ptr_this->getEventCallbacks()) { - if (!callback - ->notifyStartSubscribeResponse( - id, wifiNanStatus, - msg.body.subscribe_response.subscribe_id) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - break; - } - case legacy_hal::NAN_RESPONSE_SUBSCRIBE_CANCEL: { - for (const auto& callback : - shared_ptr_this->getEventCallbacks()) { - if (!callback - ->notifyStopSubscribeResponse(id, wifiNanStatus) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - break; - } - case legacy_hal::NAN_RESPONSE_CONFIG: { - for (const auto& callback : - shared_ptr_this->getEventCallbacks()) { - if (!callback->notifyConfigResponse(id, wifiNanStatus) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - break; - } - case legacy_hal::NAN_GET_CAPABILITIES: { - NanCapabilities hidl_struct; - if (!hidl_struct_util:: - convertLegacyNanCapabilitiesResponseToHidl( - msg.body.nan_capabilities, &hidl_struct)) { - LOG(ERROR) << "Failed to convert nan capabilities response"; - return; - } - for (const auto& callback : - shared_ptr_this->getEventCallbacks_1_5()) { - if (!callback - ->notifyCapabilitiesResponse_1_5(id, wifiNanStatus, - hidl_struct) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - break; - } - case legacy_hal::NAN_DP_INTERFACE_CREATE: { - for (const auto& callback : - shared_ptr_this->getEventCallbacks()) { - if (!callback - ->notifyCreateDataInterfaceResponse(id, - wifiNanStatus) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - break; - } - case legacy_hal::NAN_DP_INTERFACE_DELETE: { - for (const auto& callback : - shared_ptr_this->getEventCallbacks()) { - if (!callback - ->notifyDeleteDataInterfaceResponse(id, - wifiNanStatus) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - break; - } - case legacy_hal::NAN_DP_INITIATOR_RESPONSE: { - for (const auto& callback : - shared_ptr_this->getEventCallbacks()) { - if (!callback - ->notifyInitiateDataPathResponse( - id, wifiNanStatus, - msg.body.data_request_response.ndp_instance_id) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - break; - } - case legacy_hal::NAN_DP_RESPONDER_RESPONSE: { - for (const auto& callback : - shared_ptr_this->getEventCallbacks()) { - if (!callback - ->notifyRespondToDataPathIndicationResponse( - id, wifiNanStatus) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - break; - } - case legacy_hal::NAN_DP_END: { - for (const auto& callback : - shared_ptr_this->getEventCallbacks()) { - if (!callback - ->notifyTerminateDataPathResponse(id, - wifiNanStatus) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - break; - } - case legacy_hal::NAN_RESPONSE_BEACON_SDF_PAYLOAD: - /* fall through */ - case legacy_hal::NAN_RESPONSE_TCA: - /* fall through */ - case legacy_hal::NAN_RESPONSE_STATS: - /* fall through */ - case legacy_hal::NAN_RESPONSE_ERROR: - /* fall through */ - default: - LOG(ERROR) << "Unknown or unhandled response type: " - << msg.response_type; - return; - } - }; - - callback_handlers.on_event_disc_eng_event = - [weak_ptr_this](const legacy_hal::NanDiscEngEventInd& msg) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - NanClusterEventInd hidl_struct; - // event types defined identically - hence can be cast - hidl_struct.eventType = (NanClusterEventType)msg.event_type; - hidl_struct.addr = msg.data.mac_addr.addr; - - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback->eventClusterEvent(hidl_struct).isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - }; - - callback_handlers.on_event_disabled = - [weak_ptr_this](const legacy_hal::NanDisabledInd& msg) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - WifiNanStatus status; - hidl_struct_util::convertToWifiNanStatus( - msg.reason, msg.nan_reason, sizeof(msg.nan_reason), &status); - - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback->eventDisabled(status).isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - }; - - callback_handlers.on_event_publish_terminated = - [weak_ptr_this](const legacy_hal::NanPublishTerminatedInd& msg) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - WifiNanStatus status; - hidl_struct_util::convertToWifiNanStatus( - msg.reason, msg.nan_reason, sizeof(msg.nan_reason), &status); - - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback->eventPublishTerminated(msg.publish_id, status) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - }; - - callback_handlers.on_event_subscribe_terminated = - [weak_ptr_this](const legacy_hal::NanSubscribeTerminatedInd& msg) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - WifiNanStatus status; - hidl_struct_util::convertToWifiNanStatus( - msg.reason, msg.nan_reason, sizeof(msg.nan_reason), &status); - - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback - ->eventSubscribeTerminated(msg.subscribe_id, status) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - }; - - callback_handlers.on_event_match = - [weak_ptr_this](const legacy_hal::NanMatchInd& msg) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - NanMatchInd hidl_struct; - if (!hidl_struct_util::convertLegacyNanMatchIndToHidl( - msg, &hidl_struct)) { - LOG(ERROR) << "Failed to convert nan capabilities response"; - return; - } - - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback->eventMatch(hidl_struct).isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - }; - - callback_handlers.on_event_match_expired = - [weak_ptr_this](const legacy_hal::NanMatchExpiredInd& msg) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback - ->eventMatchExpired(msg.publish_subscribe_id, - msg.requestor_instance_id) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - }; - - callback_handlers.on_event_followup = - [weak_ptr_this](const legacy_hal::NanFollowupInd& msg) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - NanFollowupReceivedInd hidl_struct; - if (!hidl_struct_util::convertLegacyNanFollowupIndToHidl( - msg, &hidl_struct)) { - LOG(ERROR) << "Failed to convert nan capabilities response"; - return; - } - - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback->eventFollowupReceived(hidl_struct).isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - }; - - callback_handlers.on_event_transmit_follow_up = - [weak_ptr_this](const legacy_hal::NanTransmitFollowupInd& msg) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - WifiNanStatus status; - hidl_struct_util::convertToWifiNanStatus( - msg.reason, msg.nan_reason, sizeof(msg.nan_reason), &status); - - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback->eventTransmitFollowup(msg.id, status).isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - }; - - callback_handlers.on_event_data_path_request = - [weak_ptr_this](const legacy_hal::NanDataPathRequestInd& msg) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - NanDataPathRequestInd hidl_struct; - if (!hidl_struct_util::convertLegacyNanDataPathRequestIndToHidl( - msg, &hidl_struct)) { - LOG(ERROR) << "Failed to convert nan capabilities response"; - return; - } - - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback->eventDataPathRequest(hidl_struct).isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - }; - - callback_handlers.on_event_data_path_confirm = - [weak_ptr_this](const legacy_hal::NanDataPathConfirmInd& msg) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - V1_2::NanDataPathConfirmInd hidl_struct; - if (!hidl_struct_util::convertLegacyNanDataPathConfirmIndToHidl( - msg, &hidl_struct)) { - LOG(ERROR) << "Failed to convert nan capabilities response"; - return; - } - - for (const auto& callback : - shared_ptr_this->getEventCallbacks_1_2()) { - if (!callback->eventDataPathConfirm_1_2(hidl_struct).isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - }; - - callback_handlers.on_event_data_path_end = - [weak_ptr_this](const legacy_hal::NanDataPathEndInd& msg) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - for (int i = 0; i < msg.num_ndp_instances; ++i) { - if (!callback - ->eventDataPathTerminated(msg.ndp_instance_id[i]) - .isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - } - }; - - callback_handlers.on_event_beacon_sdf_payload = - [weak_ptr_this](const legacy_hal::NanBeaconSdfPayloadInd& /* msg */) { - LOG(ERROR) << "on_event_beacon_sdf_payload - should not be called"; - }; - - callback_handlers.on_event_range_request = - [weak_ptr_this](const legacy_hal::NanRangeRequestInd& /* msg */) { - LOG(ERROR) << "on_event_range_request - should not be called"; - }; - - callback_handlers.on_event_range_report = - [weak_ptr_this](const legacy_hal::NanRangeReportInd& /* msg */) { - LOG(ERROR) << "on_event_range_report - should not be called"; - }; - - callback_handlers - .on_event_schedule_update = [weak_ptr_this]( - const legacy_hal:: - NanDataPathScheduleUpdateInd& msg) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - V1_2::NanDataPathScheduleUpdateInd hidl_struct; - if (!hidl_struct_util::convertLegacyNanDataPathScheduleUpdateIndToHidl( - msg, &hidl_struct)) { - LOG(ERROR) << "Failed to convert nan capabilities response"; - return; - } - - for (const auto& callback : shared_ptr_this->getEventCallbacks_1_2()) { - if (!callback->eventDataPathScheduleUpdate(hidl_struct).isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - }; - - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->nanRegisterCallbackHandlers(ifname_, - callback_handlers); - if (legacy_status != legacy_hal::WIFI_SUCCESS) { - LOG(ERROR) << "Failed to register nan callbacks. Invalidating object"; - invalidate(); - } - - // Register for iface state toggle events. - iface_util::IfaceEventHandlers event_handlers = {}; - event_handlers.on_state_toggle_off_on = - [weak_ptr_this](const std::string& /* iface_name */) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - // Tell framework that NAN has been disabled. - WifiNanStatus status = { - NanStatusType::UNSUPPORTED_CONCURRENCY_NAN_DISABLED, ""}; - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback->eventDisabled(status).isOk()) { - LOG(ERROR) << "Failed to invoke the callback"; - } - } - }; - iface_util_.lock()->registerIfaceEventHandlers(ifname_, event_handlers); -} - -void WifiNanIface::invalidate() { - if (!isValid()) { - return; - } - // send commands to HAL to actually disable and destroy interfaces - legacy_hal_.lock()->nanDisableRequest(ifname_, 0xFFFF); - legacy_hal_.lock()->nanDataInterfaceDelete(ifname_, 0xFFFE, "aware_data0"); - legacy_hal_.lock()->nanDataInterfaceDelete(ifname_, 0xFFFD, "aware_data1"); - iface_util_.lock()->unregisterIfaceEventHandlers(ifname_); - legacy_hal_.reset(); - event_cb_handler_.invalidate(); - event_cb_handler_1_2_.invalidate(); - event_cb_handler_1_5_.invalidate(); - is_valid_ = false; - if (is_dedicated_iface_) { - // If using a dedicated iface, set the iface down. - iface_util_.lock()->setUpState(ifname_, false); - } -} - -bool WifiNanIface::isValid() { return is_valid_; } - -std::string WifiNanIface::getName() { return ifname_; } - -std::set<sp<V1_0::IWifiNanIfaceEventCallback>> -WifiNanIface::getEventCallbacks() { - return event_cb_handler_.getCallbacks(); -} - -std::set<sp<V1_2::IWifiNanIfaceEventCallback>> -WifiNanIface::getEventCallbacks_1_2() { - return event_cb_handler_1_2_.getCallbacks(); -} - -std::set<sp<IWifiNanIfaceEventCallback>> WifiNanIface::getEventCallbacks_1_5() { - return event_cb_handler_1_5_.getCallbacks(); -} - -Return<void> WifiNanIface::getName(getName_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::getNameInternal, hidl_status_cb); -} - -Return<void> WifiNanIface::getType(getType_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::getTypeInternal, hidl_status_cb); -} - -Return<void> WifiNanIface::registerEventCallback( - const sp<V1_0::IWifiNanIfaceEventCallback>& callback, - registerEventCallback_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::registerEventCallbackInternal, - hidl_status_cb, callback); -} - -Return<void> WifiNanIface::getCapabilitiesRequest( - uint16_t cmd_id, getCapabilitiesRequest_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::getCapabilitiesRequestInternal, - hidl_status_cb, cmd_id); -} - -Return<void> WifiNanIface::enableRequest(uint16_t cmd_id, - const V1_0::NanEnableRequest& msg, - enableRequest_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::enableRequestInternal, hidl_status_cb, - cmd_id, msg); -} - -Return<void> WifiNanIface::configRequest(uint16_t cmd_id, - const V1_0::NanConfigRequest& msg, - configRequest_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::configRequestInternal, hidl_status_cb, - cmd_id, msg); -} - -Return<void> WifiNanIface::disableRequest(uint16_t cmd_id, - disableRequest_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::disableRequestInternal, - hidl_status_cb, cmd_id); -} - -Return<void> WifiNanIface::startPublishRequest( - uint16_t cmd_id, const NanPublishRequest& msg, - startPublishRequest_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::startPublishRequestInternal, - hidl_status_cb, cmd_id, msg); -} - -Return<void> WifiNanIface::stopPublishRequest( - uint16_t cmd_id, uint8_t sessionId, stopPublishRequest_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::stopPublishRequestInternal, - hidl_status_cb, cmd_id, sessionId); -} - -Return<void> WifiNanIface::startSubscribeRequest( - uint16_t cmd_id, const NanSubscribeRequest& msg, - startSubscribeRequest_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::startSubscribeRequestInternal, - hidl_status_cb, cmd_id, msg); -} - -Return<void> WifiNanIface::stopSubscribeRequest( - uint16_t cmd_id, uint8_t sessionId, - stopSubscribeRequest_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::stopSubscribeRequestInternal, - hidl_status_cb, cmd_id, sessionId); -} - -Return<void> WifiNanIface::transmitFollowupRequest( - uint16_t cmd_id, const NanTransmitFollowupRequest& msg, - transmitFollowupRequest_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::transmitFollowupRequestInternal, - hidl_status_cb, cmd_id, msg); -} - -Return<void> WifiNanIface::createDataInterfaceRequest( - uint16_t cmd_id, const hidl_string& iface_name, - createDataInterfaceRequest_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::createDataInterfaceRequestInternal, - hidl_status_cb, cmd_id, iface_name); -} - -Return<void> WifiNanIface::deleteDataInterfaceRequest( - uint16_t cmd_id, const hidl_string& iface_name, - deleteDataInterfaceRequest_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::deleteDataInterfaceRequestInternal, - hidl_status_cb, cmd_id, iface_name); -} - -Return<void> WifiNanIface::initiateDataPathRequest( - uint16_t cmd_id, const NanInitiateDataPathRequest& msg, - initiateDataPathRequest_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::initiateDataPathRequestInternal, - hidl_status_cb, cmd_id, msg); -} - -Return<void> WifiNanIface::respondToDataPathIndicationRequest( - uint16_t cmd_id, const NanRespondToDataPathIndicationRequest& msg, - respondToDataPathIndicationRequest_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::respondToDataPathIndicationRequestInternal, - hidl_status_cb, cmd_id, msg); -} - -Return<void> WifiNanIface::terminateDataPathRequest( - uint16_t cmd_id, uint32_t ndpInstanceId, - terminateDataPathRequest_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::terminateDataPathRequestInternal, - hidl_status_cb, cmd_id, ndpInstanceId); -} - -Return<void> WifiNanIface::registerEventCallback_1_2( - const sp<V1_2::IWifiNanIfaceEventCallback>& callback, - registerEventCallback_1_2_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::registerEventCallback_1_2Internal, - hidl_status_cb, callback); -} - -Return<void> WifiNanIface::enableRequest_1_2( - uint16_t cmd_id, const V1_0::NanEnableRequest& msg1, - const V1_2::NanConfigRequestSupplemental& msg2, - enableRequest_1_2_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::enableRequest_1_2Internal, - hidl_status_cb, cmd_id, msg1, msg2); -} - -Return<void> WifiNanIface::configRequest_1_2( - uint16_t cmd_id, const V1_0::NanConfigRequest& msg1, - const V1_2::NanConfigRequestSupplemental& msg2, - configRequest_1_2_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::configRequest_1_2Internal, - hidl_status_cb, cmd_id, msg1, msg2); -} - -Return<void> WifiNanIface::enableRequest_1_4( - uint16_t cmd_id, const V1_4::NanEnableRequest& msg1, - const V1_2::NanConfigRequestSupplemental& msg2, - enableRequest_1_4_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::enableRequest_1_4Internal, - hidl_status_cb, cmd_id, msg1, msg2); -} - -Return<void> WifiNanIface::configRequest_1_4( - uint16_t cmd_id, const V1_4::NanConfigRequest& msg1, - const V1_2::NanConfigRequestSupplemental& msg2, - configRequest_1_4_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::configRequest_1_4Internal, - hidl_status_cb, cmd_id, msg1, msg2); -} - -Return<void> WifiNanIface::registerEventCallback_1_5( - const sp<IWifiNanIfaceEventCallback>& callback, - registerEventCallback_1_5_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::registerEventCallback_1_5Internal, - hidl_status_cb, callback); -} - -Return<void> WifiNanIface::enableRequest_1_5( - uint16_t cmd_id, const V1_4::NanEnableRequest& msg1, - const NanConfigRequestSupplemental& msg2, - enableRequest_1_5_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::enableRequest_1_5Internal, - hidl_status_cb, cmd_id, msg1, msg2); -} - -Return<void> WifiNanIface::configRequest_1_5( - uint16_t cmd_id, const V1_4::NanConfigRequest& msg1, - const NanConfigRequestSupplemental& msg2, - configRequest_1_5_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::configRequest_1_5Internal, - hidl_status_cb, cmd_id, msg1, msg2); -} - -Return<void> WifiNanIface::getCapabilitiesRequest_1_5( - uint16_t cmd_id, getCapabilitiesRequest_1_5_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiNanIface::getCapabilitiesRequest_1_5Internal, - hidl_status_cb, cmd_id); -} - -std::pair<WifiStatus, std::string> WifiNanIface::getNameInternal() { - return {createWifiStatus(WifiStatusCode::SUCCESS), ifname_}; -} - -std::pair<WifiStatus, IfaceType> WifiNanIface::getTypeInternal() { - return {createWifiStatus(WifiStatusCode::SUCCESS), IfaceType::NAN}; -} - -WifiStatus WifiNanIface::registerEventCallbackInternal( - const sp<V1_0::IWifiNanIfaceEventCallback>& callback) { - if (!event_cb_handler_.addCallback(callback)) { - return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); - } - return createWifiStatus(WifiStatusCode::SUCCESS); -} - -WifiStatus WifiNanIface::getCapabilitiesRequestInternal(uint16_t /* cmd_id */) { - return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); -} - -WifiStatus WifiNanIface::enableRequestInternal( - uint16_t /* cmd_id */, const V1_0::NanEnableRequest& /* msg */) { - return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); -} - -WifiStatus WifiNanIface::configRequestInternal( - uint16_t /* cmd_id */, const V1_0::NanConfigRequest& /* msg */) { - return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); -} - -WifiStatus WifiNanIface::disableRequestInternal(uint16_t cmd_id) { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->nanDisableRequest(ifname_, cmd_id); - return createWifiStatusFromLegacyError(legacy_status); -} - -WifiStatus WifiNanIface::startPublishRequestInternal( - uint16_t cmd_id, const NanPublishRequest& msg) { - legacy_hal::NanPublishRequest legacy_msg; - if (!hidl_struct_util::convertHidlNanPublishRequestToLegacy(msg, - &legacy_msg)) { - return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); - } - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->nanPublishRequest(ifname_, cmd_id, legacy_msg); - return createWifiStatusFromLegacyError(legacy_status); -} - -WifiStatus WifiNanIface::stopPublishRequestInternal(uint16_t cmd_id, - uint8_t sessionId) { - legacy_hal::NanPublishCancelRequest legacy_msg; - legacy_msg.publish_id = sessionId; - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->nanPublishCancelRequest(ifname_, cmd_id, - legacy_msg); - return createWifiStatusFromLegacyError(legacy_status); -} - -WifiStatus WifiNanIface::startSubscribeRequestInternal( - uint16_t cmd_id, const NanSubscribeRequest& msg) { - legacy_hal::NanSubscribeRequest legacy_msg; - if (!hidl_struct_util::convertHidlNanSubscribeRequestToLegacy( - msg, &legacy_msg)) { - return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); - } - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->nanSubscribeRequest(ifname_, cmd_id, legacy_msg); - return createWifiStatusFromLegacyError(legacy_status); -} - -WifiStatus WifiNanIface::stopSubscribeRequestInternal(uint16_t cmd_id, - uint8_t sessionId) { - legacy_hal::NanSubscribeCancelRequest legacy_msg; - legacy_msg.subscribe_id = sessionId; - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->nanSubscribeCancelRequest(ifname_, cmd_id, - legacy_msg); - return createWifiStatusFromLegacyError(legacy_status); -} - -WifiStatus WifiNanIface::transmitFollowupRequestInternal( - uint16_t cmd_id, const NanTransmitFollowupRequest& msg) { - legacy_hal::NanTransmitFollowupRequest legacy_msg; - if (!hidl_struct_util::convertHidlNanTransmitFollowupRequestToLegacy( - msg, &legacy_msg)) { - return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); - } - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->nanTransmitFollowupRequest(ifname_, cmd_id, - legacy_msg); - return createWifiStatusFromLegacyError(legacy_status); -} - -WifiStatus WifiNanIface::createDataInterfaceRequestInternal( - uint16_t cmd_id, const std::string& iface_name) { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->nanDataInterfaceCreate(ifname_, cmd_id, iface_name); - return createWifiStatusFromLegacyError(legacy_status); -} -WifiStatus WifiNanIface::deleteDataInterfaceRequestInternal( - uint16_t cmd_id, const std::string& iface_name) { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->nanDataInterfaceDelete(ifname_, cmd_id, iface_name); - return createWifiStatusFromLegacyError(legacy_status); -} -WifiStatus WifiNanIface::initiateDataPathRequestInternal( - uint16_t cmd_id, const NanInitiateDataPathRequest& msg) { - legacy_hal::NanDataPathInitiatorRequest legacy_msg; - if (!hidl_struct_util::convertHidlNanDataPathInitiatorRequestToLegacy( - msg, &legacy_msg)) { - return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); - } - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->nanDataRequestInitiator(ifname_, cmd_id, - legacy_msg); - return createWifiStatusFromLegacyError(legacy_status); -} -WifiStatus WifiNanIface::respondToDataPathIndicationRequestInternal( - uint16_t cmd_id, const NanRespondToDataPathIndicationRequest& msg) { - legacy_hal::NanDataPathIndicationResponse legacy_msg; - if (!hidl_struct_util::convertHidlNanDataPathIndicationResponseToLegacy( - msg, &legacy_msg)) { - return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); - } - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->nanDataIndicationResponse(ifname_, cmd_id, - legacy_msg); - return createWifiStatusFromLegacyError(legacy_status); -} -WifiStatus WifiNanIface::terminateDataPathRequestInternal( - uint16_t cmd_id, uint32_t ndpInstanceId) { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->nanDataEnd(ifname_, cmd_id, ndpInstanceId); - return createWifiStatusFromLegacyError(legacy_status); -} - -WifiStatus WifiNanIface::registerEventCallback_1_2Internal( - const sp<V1_2::IWifiNanIfaceEventCallback>& callback) { - sp<V1_0::IWifiNanIfaceEventCallback> callback_1_0 = callback; - if (!event_cb_handler_.addCallback(callback_1_0)) { - return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); - } - if (!event_cb_handler_1_2_.addCallback(callback)) { - return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); - } - return createWifiStatus(WifiStatusCode::SUCCESS); -} - -WifiStatus WifiNanIface::enableRequest_1_2Internal( - uint16_t /* cmd_id */, const V1_0::NanEnableRequest& /* msg1 */, - const V1_2::NanConfigRequestSupplemental& /* msg2 */) { - return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); -} - -WifiStatus WifiNanIface::configRequest_1_2Internal( - uint16_t /* cmd_id */, const V1_0::NanConfigRequest& /* msg1 */, - const V1_2::NanConfigRequestSupplemental& /* msg2 */) { - return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); -} - -WifiStatus WifiNanIface::enableRequest_1_4Internal( - uint16_t /* cmd_id */, const V1_4::NanEnableRequest& /* msg1 */, - const V1_2::NanConfigRequestSupplemental& /* msg2 */) { - return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); -} - -WifiStatus WifiNanIface::configRequest_1_4Internal( - uint16_t /* cmd_id */, const V1_4::NanConfigRequest& /* msg1 */, - const V1_2::NanConfigRequestSupplemental& /* msg2 */) { - return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); -} - -WifiStatus WifiNanIface::registerEventCallback_1_5Internal( - const sp<IWifiNanIfaceEventCallback>& callback) { - sp<V1_0::IWifiNanIfaceEventCallback> callback_1_0 = callback; - if (!event_cb_handler_.addCallback(callback_1_0)) { - return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); - } - sp<V1_2::IWifiNanIfaceEventCallback> callback_1_2 = callback; - if (!event_cb_handler_1_2_.addCallback(callback_1_2)) { - return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); - } - if (!event_cb_handler_1_5_.addCallback(callback)) { - return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); - } - return createWifiStatus(WifiStatusCode::SUCCESS); -} - -WifiStatus WifiNanIface::getCapabilitiesRequest_1_5Internal(uint16_t cmd_id) { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->nanGetCapabilities(ifname_, cmd_id); - return createWifiStatusFromLegacyError(legacy_status); -} - -WifiStatus WifiNanIface::enableRequest_1_5Internal( - uint16_t cmd_id, const V1_4::NanEnableRequest& msg1, - const NanConfigRequestSupplemental& msg2) { - legacy_hal::NanEnableRequest legacy_msg; - if (!hidl_struct_util::convertHidlNanEnableRequest_1_5ToLegacy( - msg1, msg2, &legacy_msg)) { - return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); - } - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->nanEnableRequest(ifname_, cmd_id, legacy_msg); - return createWifiStatusFromLegacyError(legacy_status); -} - -WifiStatus WifiNanIface::configRequest_1_5Internal( - uint16_t cmd_id, const V1_4::NanConfigRequest& msg1, - const NanConfigRequestSupplemental& msg2) { - legacy_hal::NanConfigRequest legacy_msg; - if (!hidl_struct_util::convertHidlNanConfigRequest_1_5ToLegacy( - msg1, msg2, &legacy_msg)) { - return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); - } - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->nanConfigRequest(ifname_, cmd_id, legacy_msg); - return createWifiStatusFromLegacyError(legacy_status); -} - -} // namespace implementation -} // namespace V1_5 -} // namespace wifi -} // namespace hardware -} // namespace android diff --git a/wifi/1.5/default/wifi_nan_iface.h b/wifi/1.5/default/wifi_nan_iface.h deleted file mode 100644 index fb9c047ff6..0000000000 --- a/wifi/1.5/default/wifi_nan_iface.h +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WIFI_NAN_IFACE_H_ -#define WIFI_NAN_IFACE_H_ - -#include <android-base/macros.h> -#include <android/hardware/wifi/1.5/IWifiNanIface.h> -#include <android/hardware/wifi/1.5/IWifiNanIfaceEventCallback.h> - -#include "hidl_callback_util.h" -#include "wifi_iface_util.h" -#include "wifi_legacy_hal.h" - -namespace android { -namespace hardware { -namespace wifi { -namespace V1_5 { -namespace implementation { -using namespace android::hardware::wifi::V1_0; -using namespace android::hardware::wifi::V1_2; - -/** - * HIDL interface object used to control a NAN Iface instance. - */ -class WifiNanIface : public V1_5::IWifiNanIface { - public: - WifiNanIface(const std::string& ifname, bool is_dedicated_iface, - const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal, - const std::weak_ptr<iface_util::WifiIfaceUtil> iface_util); - // Refer to |WifiChip::invalidate()|. - void invalidate(); - bool isValid(); - std::string getName(); - - // HIDL methods exposed. - Return<void> getName(getName_cb hidl_status_cb) override; - Return<void> getType(getType_cb hidl_status_cb) override; - Return<void> registerEventCallback( - const sp<V1_0::IWifiNanIfaceEventCallback>& callback, - registerEventCallback_cb hidl_status_cb) override; - Return<void> getCapabilitiesRequest( - uint16_t cmd_id, getCapabilitiesRequest_cb hidl_status_cb) override; - Return<void> enableRequest(uint16_t cmd_id, - const V1_0::NanEnableRequest& msg, - enableRequest_cb hidl_status_cb) override; - Return<void> configRequest(uint16_t cmd_id, - const V1_0::NanConfigRequest& msg, - configRequest_cb hidl_status_cb) override; - Return<void> disableRequest(uint16_t cmd_id, - disableRequest_cb hidl_status_cb) override; - Return<void> startPublishRequest( - uint16_t cmd_id, const NanPublishRequest& msg, - startPublishRequest_cb hidl_status_cb) override; - Return<void> stopPublishRequest( - uint16_t cmd_id, uint8_t sessionId, - stopPublishRequest_cb hidl_status_cb) override; - Return<void> startSubscribeRequest( - uint16_t cmd_id, const NanSubscribeRequest& msg, - startSubscribeRequest_cb hidl_status_cb) override; - Return<void> stopSubscribeRequest( - uint16_t cmd_id, uint8_t sessionId, - stopSubscribeRequest_cb hidl_status_cb) override; - Return<void> transmitFollowupRequest( - uint16_t cmd_id, const NanTransmitFollowupRequest& msg, - transmitFollowupRequest_cb hidl_status_cb) override; - Return<void> createDataInterfaceRequest( - uint16_t cmd_id, const hidl_string& iface_name, - createDataInterfaceRequest_cb hidl_status_cb) override; - Return<void> deleteDataInterfaceRequest( - uint16_t cmd_id, const hidl_string& iface_name, - deleteDataInterfaceRequest_cb hidl_status_cb) override; - Return<void> initiateDataPathRequest( - uint16_t cmd_id, const NanInitiateDataPathRequest& msg, - initiateDataPathRequest_cb hidl_status_cb) override; - Return<void> respondToDataPathIndicationRequest( - uint16_t cmd_id, const NanRespondToDataPathIndicationRequest& msg, - respondToDataPathIndicationRequest_cb hidl_status_cb) override; - Return<void> terminateDataPathRequest( - uint16_t cmd_id, uint32_t ndpInstanceId, - terminateDataPathRequest_cb hidl_status_cb) override; - - Return<void> registerEventCallback_1_2( - const sp<V1_2::IWifiNanIfaceEventCallback>& callback, - registerEventCallback_1_2_cb hidl_status_cb) override; - Return<void> enableRequest_1_2( - uint16_t cmd_id, const V1_0::NanEnableRequest& msg1, - const V1_2::NanConfigRequestSupplemental& msg2, - enableRequest_1_2_cb hidl_status_cb) override; - Return<void> configRequest_1_2( - uint16_t cmd_id, const V1_0::NanConfigRequest& msg1, - const V1_2::NanConfigRequestSupplemental& msg2, - configRequest_1_2_cb hidl_status_cb) override; - Return<void> enableRequest_1_4( - uint16_t cmd_id, const V1_4::NanEnableRequest& msg1, - const V1_2::NanConfigRequestSupplemental& msg2, - enableRequest_1_4_cb hidl_status_cb) override; - Return<void> configRequest_1_4( - uint16_t cmd_id, const V1_4::NanConfigRequest& msg1, - const V1_2::NanConfigRequestSupplemental& msg2, - configRequest_1_4_cb hidl_status_cb) override; - Return<void> registerEventCallback_1_5( - const sp<IWifiNanIfaceEventCallback>& callback, - registerEventCallback_1_5_cb hidl_status_cb) override; - Return<void> enableRequest_1_5( - uint16_t cmd_id, const V1_4::NanEnableRequest& msg1, - const NanConfigRequestSupplemental& msg2, - enableRequest_1_4_cb hidl_status_cb) override; - Return<void> configRequest_1_5( - uint16_t cmd_id, const V1_4::NanConfigRequest& msg1, - const NanConfigRequestSupplemental& msg2, - configRequest_1_4_cb hidl_status_cb) override; - Return<void> getCapabilitiesRequest_1_5( - uint16_t cmd_id, getCapabilitiesRequest_cb hidl_status_cb) override; - - private: - // Corresponding worker functions for the HIDL methods. - std::pair<WifiStatus, std::string> getNameInternal(); - std::pair<WifiStatus, IfaceType> getTypeInternal(); - WifiStatus registerEventCallbackInternal( - const sp<V1_0::IWifiNanIfaceEventCallback>& callback); - WifiStatus getCapabilitiesRequestInternal(uint16_t cmd_id); - WifiStatus enableRequestInternal(uint16_t cmd_id, - const V1_0::NanEnableRequest& msg); - WifiStatus configRequestInternal(uint16_t cmd_id, - const V1_0::NanConfigRequest& msg); - WifiStatus disableRequestInternal(uint16_t cmd_id); - WifiStatus startPublishRequestInternal(uint16_t cmd_id, - const NanPublishRequest& msg); - WifiStatus stopPublishRequestInternal(uint16_t cmd_id, uint8_t sessionId); - WifiStatus startSubscribeRequestInternal(uint16_t cmd_id, - const NanSubscribeRequest& msg); - WifiStatus stopSubscribeRequestInternal(uint16_t cmd_id, uint8_t sessionId); - WifiStatus transmitFollowupRequestInternal( - uint16_t cmd_id, const NanTransmitFollowupRequest& msg); - WifiStatus createDataInterfaceRequestInternal( - uint16_t cmd_id, const std::string& iface_name); - WifiStatus deleteDataInterfaceRequestInternal( - uint16_t cmd_id, const std::string& iface_name); - WifiStatus initiateDataPathRequestInternal( - uint16_t cmd_id, const NanInitiateDataPathRequest& msg); - WifiStatus respondToDataPathIndicationRequestInternal( - uint16_t cmd_id, const NanRespondToDataPathIndicationRequest& msg); - WifiStatus terminateDataPathRequestInternal(uint16_t cmd_id, - uint32_t ndpInstanceId); - - WifiStatus registerEventCallback_1_2Internal( - const sp<V1_2::IWifiNanIfaceEventCallback>& callback); - WifiStatus enableRequest_1_2Internal( - uint16_t cmd_id, const V1_0::NanEnableRequest& msg1, - const V1_2::NanConfigRequestSupplemental& msg2); - WifiStatus configRequest_1_2Internal( - uint16_t cmd_id, const V1_0::NanConfigRequest& msg, - const V1_2::NanConfigRequestSupplemental& msg2); - WifiStatus enableRequest_1_4Internal( - uint16_t cmd_id, const V1_4::NanEnableRequest& msg1, - const V1_2::NanConfigRequestSupplemental& msg2); - WifiStatus configRequest_1_4Internal( - uint16_t cmd_id, const V1_4::NanConfigRequest& msg, - const V1_2::NanConfigRequestSupplemental& msg2); - WifiStatus registerEventCallback_1_5Internal( - const sp<IWifiNanIfaceEventCallback>& callback); - WifiStatus enableRequest_1_5Internal( - uint16_t cmd_id, const V1_4::NanEnableRequest& msg1, - const NanConfigRequestSupplemental& msg2); - WifiStatus configRequest_1_5Internal( - uint16_t cmd_id, const V1_4::NanConfigRequest& msg, - const NanConfigRequestSupplemental& msg2); - WifiStatus getCapabilitiesRequest_1_5Internal(uint16_t cmd_id); - - // all 1_0 and descendant callbacks - std::set<sp<V1_0::IWifiNanIfaceEventCallback>> getEventCallbacks(); - // all 1_2 and descendant callbacks - std::set<sp<V1_2::IWifiNanIfaceEventCallback>> getEventCallbacks_1_2(); - // all 1_5 and descendant callbacks - std::set<sp<IWifiNanIfaceEventCallback>> getEventCallbacks_1_5(); - - std::string ifname_; - bool is_dedicated_iface_; - std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_; - std::weak_ptr<iface_util::WifiIfaceUtil> iface_util_; - bool is_valid_; - hidl_callback_util::HidlCallbackHandler<V1_0::IWifiNanIfaceEventCallback> - event_cb_handler_; - hidl_callback_util::HidlCallbackHandler<V1_2::IWifiNanIfaceEventCallback> - event_cb_handler_1_2_; - hidl_callback_util::HidlCallbackHandler<IWifiNanIfaceEventCallback> - event_cb_handler_1_5_; - - DISALLOW_COPY_AND_ASSIGN(WifiNanIface); -}; - -} // namespace implementation -} // namespace V1_5 -} // namespace wifi -} // namespace hardware -} // namespace android - -#endif // WIFI_NAN_IFACE_H_ diff --git a/wifi/1.5/default/wifi_rtt_controller.cpp b/wifi/1.5/default/wifi_rtt_controller.cpp deleted file mode 100644 index a0f9969033..0000000000 --- a/wifi/1.5/default/wifi_rtt_controller.cpp +++ /dev/null @@ -1,351 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <android-base/logging.h> - -#include "hidl_return_util.h" -#include "hidl_struct_util.h" -#include "wifi_rtt_controller.h" -#include "wifi_status_util.h" - -namespace android { -namespace hardware { -namespace wifi { -namespace V1_5 { -namespace implementation { -using hidl_return_util::validateAndCall; - -WifiRttController::WifiRttController( - const std::string& iface_name, const sp<IWifiIface>& bound_iface, - const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal) - : ifname_(iface_name), - bound_iface_(bound_iface), - legacy_hal_(legacy_hal), - is_valid_(true) {} - -void WifiRttController::invalidate() { - legacy_hal_.reset(); - event_callbacks_.clear(); - is_valid_ = false; -} - -bool WifiRttController::isValid() { return is_valid_; } - -std::vector<sp<V1_4::IWifiRttControllerEventCallback>> -WifiRttController::getEventCallbacks() { - return event_callbacks_; -} - -std::string WifiRttController::getIfaceName() { return ifname_; } - -Return<void> WifiRttController::getBoundIface(getBoundIface_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - &WifiRttController::getBoundIfaceInternal, hidl_status_cb); -} - -Return<void> WifiRttController::registerEventCallback( - const sp<V1_0::IWifiRttControllerEventCallback>& callback, - registerEventCallback_cb hidl_status_cb) { - return validateAndCall(this, - WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - &WifiRttController::registerEventCallbackInternal, - hidl_status_cb, callback); -} - -Return<void> WifiRttController::rangeRequest( - uint32_t cmd_id, const hidl_vec<V1_0::RttConfig>& rtt_configs, - rangeRequest_cb hidl_status_cb) { - return validateAndCall(this, - WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - &WifiRttController::rangeRequestInternal, - hidl_status_cb, cmd_id, rtt_configs); -} - -Return<void> WifiRttController::rangeCancel( - uint32_t cmd_id, const hidl_vec<hidl_array<uint8_t, 6>>& addrs, - rangeCancel_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - &WifiRttController::rangeCancelInternal, hidl_status_cb, cmd_id, addrs); -} - -Return<void> WifiRttController::getCapabilities( - getCapabilities_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - &WifiRttController::getCapabilitiesInternal, hidl_status_cb); -} - -Return<void> WifiRttController::setLci(uint32_t cmd_id, - const RttLciInformation& lci, - setLci_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - &WifiRttController::setLciInternal, hidl_status_cb, cmd_id, lci); -} - -Return<void> WifiRttController::setLcr(uint32_t cmd_id, - const RttLcrInformation& lcr, - setLcr_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - &WifiRttController::setLcrInternal, hidl_status_cb, cmd_id, lcr); -} - -Return<void> WifiRttController::getResponderInfo( - getResponderInfo_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - &WifiRttController::getResponderInfoInternal, hidl_status_cb); -} - -Return<void> WifiRttController::enableResponder( - uint32_t cmd_id, const WifiChannelInfo& channel_hint, - uint32_t max_duration_seconds, const V1_0::RttResponder& info, - enableResponder_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - &WifiRttController::enableResponderInternal, hidl_status_cb, cmd_id, - channel_hint, max_duration_seconds, info); -} - -Return<void> WifiRttController::disableResponder( - uint32_t cmd_id, disableResponder_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - &WifiRttController::disableResponderInternal, hidl_status_cb, cmd_id); -} - -Return<void> WifiRttController::registerEventCallback_1_4( - const sp<V1_4::IWifiRttControllerEventCallback>& callback, - registerEventCallback_1_4_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - &WifiRttController::registerEventCallbackInternal_1_4, hidl_status_cb, - callback); -} - -Return<void> WifiRttController::rangeRequest_1_4( - uint32_t cmd_id, const hidl_vec<V1_4::RttConfig>& rtt_configs, - rangeRequest_1_4_cb hidl_status_cb) { - return validateAndCall(this, - WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - &WifiRttController::rangeRequestInternal_1_4, - hidl_status_cb, cmd_id, rtt_configs); -} - -Return<void> WifiRttController::getCapabilities_1_4( - getCapabilities_1_4_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - &WifiRttController::getCapabilitiesInternal_1_4, hidl_status_cb); -} - -Return<void> WifiRttController::getResponderInfo_1_4( - getResponderInfo_1_4_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - &WifiRttController::getResponderInfoInternal_1_4, hidl_status_cb); -} - -Return<void> WifiRttController::enableResponder_1_4( - uint32_t cmd_id, const WifiChannelInfo& channel_hint, - uint32_t max_duration_seconds, const V1_4::RttResponder& info, - enableResponder_1_4_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - &WifiRttController::enableResponderInternal_1_4, hidl_status_cb, cmd_id, - channel_hint, max_duration_seconds, info); -} - -std::pair<WifiStatus, sp<IWifiIface>> -WifiRttController::getBoundIfaceInternal() { - return {createWifiStatus(WifiStatusCode::SUCCESS), bound_iface_}; -} - -WifiStatus WifiRttController::registerEventCallbackInternal( - const sp<V1_0::IWifiRttControllerEventCallback>& /* callback */) { - // Deprecated support for this api - return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); -} - -WifiStatus WifiRttController::rangeRequestInternal( - uint32_t /* cmd_id */, - const std::vector<V1_0::RttConfig>& /* rtt_configs */) { - // Deprecated support for this api - return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); -} - -WifiStatus WifiRttController::rangeCancelInternal( - uint32_t cmd_id, const std::vector<hidl_array<uint8_t, 6>>& addrs) { - std::vector<std::array<uint8_t, 6>> legacy_addrs; - for (const auto& addr : addrs) { - legacy_addrs.push_back(addr); - } - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->cancelRttRangeRequest(ifname_, cmd_id, - legacy_addrs); - return createWifiStatusFromLegacyError(legacy_status); -} - -std::pair<WifiStatus, V1_0::RttCapabilities> -WifiRttController::getCapabilitiesInternal() { - // Deprecated support for this api - return {createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED), {}}; -} - -WifiStatus WifiRttController::setLciInternal(uint32_t cmd_id, - const RttLciInformation& lci) { - legacy_hal::wifi_lci_information legacy_lci; - if (!hidl_struct_util::convertHidlRttLciInformationToLegacy(lci, - &legacy_lci)) { - return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); - } - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->setRttLci(ifname_, cmd_id, legacy_lci); - return createWifiStatusFromLegacyError(legacy_status); -} - -WifiStatus WifiRttController::setLcrInternal(uint32_t cmd_id, - const RttLcrInformation& lcr) { - legacy_hal::wifi_lcr_information legacy_lcr; - if (!hidl_struct_util::convertHidlRttLcrInformationToLegacy(lcr, - &legacy_lcr)) { - return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); - } - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->setRttLcr(ifname_, cmd_id, legacy_lcr); - return createWifiStatusFromLegacyError(legacy_status); -} - -std::pair<WifiStatus, V1_0::RttResponder> -WifiRttController::getResponderInfoInternal() { - // Deprecated support for this api - return {createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED), {}}; -} - -WifiStatus WifiRttController::enableResponderInternal( - uint32_t /* cmd_id */, const WifiChannelInfo& /* channel_hint */, - uint32_t /* max_duration_seconds */, const V1_0::RttResponder& /* info */) { - // Deprecated support for this api - return {createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED)}; -} - -WifiStatus WifiRttController::disableResponderInternal(uint32_t cmd_id) { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->disableRttResponder(ifname_, cmd_id); - return createWifiStatusFromLegacyError(legacy_status); -} - -WifiStatus WifiRttController::registerEventCallbackInternal_1_4( - const sp<V1_4::IWifiRttControllerEventCallback>& callback) { - // TODO(b/31632518): remove the callback when the client is destroyed - event_callbacks_.emplace_back(callback); - return createWifiStatus(WifiStatusCode::SUCCESS); -} - -WifiStatus WifiRttController::rangeRequestInternal_1_4( - uint32_t cmd_id, const std::vector<V1_4::RttConfig>& rtt_configs) { - std::vector<legacy_hal::wifi_rtt_config> legacy_configs; - if (!hidl_struct_util::convertHidlVectorOfRttConfigToLegacy( - rtt_configs, &legacy_configs)) { - return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); - } - android::wp<WifiRttController> weak_ptr_this(this); - const auto& on_results_callback = - [weak_ptr_this]( - legacy_hal::wifi_request_id id, - const std::vector<const legacy_hal::wifi_rtt_result*>& results) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - std::vector<V1_4::RttResult> hidl_results; - if (!hidl_struct_util::convertLegacyVectorOfRttResultToHidl( - results, &hidl_results)) { - LOG(ERROR) << "Failed to convert rtt results to HIDL structs"; - return; - } - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - callback->onResults_1_4(id, hidl_results); - } - }; - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->startRttRangeRequest( - ifname_, cmd_id, legacy_configs, on_results_callback); - return createWifiStatusFromLegacyError(legacy_status); -} - -std::pair<WifiStatus, V1_4::RttCapabilities> -WifiRttController::getCapabilitiesInternal_1_4() { - legacy_hal::wifi_error legacy_status; - legacy_hal::wifi_rtt_capabilities legacy_caps; - std::tie(legacy_status, legacy_caps) = - legacy_hal_.lock()->getRttCapabilities(ifname_); - if (legacy_status != legacy_hal::WIFI_SUCCESS) { - return {createWifiStatusFromLegacyError(legacy_status), {}}; - } - V1_4::RttCapabilities hidl_caps; - if (!hidl_struct_util::convertLegacyRttCapabilitiesToHidl(legacy_caps, - &hidl_caps)) { - return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), {}}; - } - return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_caps}; -} - -std::pair<WifiStatus, V1_4::RttResponder> -WifiRttController::getResponderInfoInternal_1_4() { - legacy_hal::wifi_error legacy_status; - legacy_hal::wifi_rtt_responder legacy_responder; - std::tie(legacy_status, legacy_responder) = - legacy_hal_.lock()->getRttResponderInfo(ifname_); - if (legacy_status != legacy_hal::WIFI_SUCCESS) { - return {createWifiStatusFromLegacyError(legacy_status), {}}; - } - V1_4::RttResponder hidl_responder; - if (!hidl_struct_util::convertLegacyRttResponderToHidl(legacy_responder, - &hidl_responder)) { - return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), {}}; - } - return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_responder}; -} - -WifiStatus WifiRttController::enableResponderInternal_1_4( - uint32_t cmd_id, const WifiChannelInfo& channel_hint, - uint32_t max_duration_seconds, const V1_4::RttResponder& info) { - legacy_hal::wifi_channel_info legacy_channel_info; - if (!hidl_struct_util::convertHidlWifiChannelInfoToLegacy( - channel_hint, &legacy_channel_info)) { - return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); - } - legacy_hal::wifi_rtt_responder legacy_responder; - if (!hidl_struct_util::convertHidlRttResponderToLegacy(info, - &legacy_responder)) { - return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); - } - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->enableRttResponder( - ifname_, cmd_id, legacy_channel_info, max_duration_seconds, - legacy_responder); - return createWifiStatusFromLegacyError(legacy_status); -} -} // namespace implementation -} // namespace V1_5 -} // namespace wifi -} // namespace hardware -} // namespace android diff --git a/wifi/1.5/default/wifi_sta_iface.h b/wifi/1.5/default/wifi_sta_iface.h deleted file mode 100644 index f9058b8af1..0000000000 --- a/wifi/1.5/default/wifi_sta_iface.h +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WIFI_STA_IFACE_H_ -#define WIFI_STA_IFACE_H_ - -#include <android-base/macros.h> -#include <android/hardware/wifi/1.0/IWifiStaIfaceEventCallback.h> -#include <android/hardware/wifi/1.5/IWifiStaIface.h> - -#include "hidl_callback_util.h" -#include "wifi_iface_util.h" -#include "wifi_legacy_hal.h" - -namespace android { -namespace hardware { -namespace wifi { -namespace V1_5 { -namespace implementation { -using namespace android::hardware::wifi::V1_0; - -/** - * HIDL interface object used to control a STA Iface instance. - */ -class WifiStaIface : public V1_5::IWifiStaIface { - public: - WifiStaIface(const std::string& ifname, - const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal, - const std::weak_ptr<iface_util::WifiIfaceUtil> iface_util); - // Refer to |WifiChip::invalidate()|. - void invalidate(); - bool isValid(); - std::set<sp<IWifiStaIfaceEventCallback>> getEventCallbacks(); - std::string getName(); - - // HIDL methods exposed. - Return<void> getName(getName_cb hidl_status_cb) override; - Return<void> getType(getType_cb hidl_status_cb) override; - Return<void> registerEventCallback( - const sp<IWifiStaIfaceEventCallback>& callback, - registerEventCallback_cb hidl_status_cb) override; - Return<void> getCapabilities(getCapabilities_cb hidl_status_cb) override; - Return<void> getApfPacketFilterCapabilities( - getApfPacketFilterCapabilities_cb hidl_status_cb) override; - Return<void> installApfPacketFilter( - uint32_t cmd_id, const hidl_vec<uint8_t>& program, - installApfPacketFilter_cb hidl_status_cb) override; - Return<void> readApfPacketFilterData( - readApfPacketFilterData_cb hidl_status_cb) override; - Return<void> getBackgroundScanCapabilities( - getBackgroundScanCapabilities_cb hidl_status_cb) override; - Return<void> getValidFrequenciesForBand( - V1_0::WifiBand band, - getValidFrequenciesForBand_cb hidl_status_cb) override; - Return<void> startBackgroundScan( - uint32_t cmd_id, const StaBackgroundScanParameters& params, - startBackgroundScan_cb hidl_status_cb) override; - Return<void> stopBackgroundScan( - uint32_t cmd_id, stopBackgroundScan_cb hidl_status_cb) override; - Return<void> enableLinkLayerStatsCollection( - bool debug, enableLinkLayerStatsCollection_cb hidl_status_cb) override; - Return<void> disableLinkLayerStatsCollection( - disableLinkLayerStatsCollection_cb hidl_status_cb) override; - Return<void> getLinkLayerStats( - getLinkLayerStats_cb hidl_status_cb) override; - Return<void> getLinkLayerStats_1_3( - getLinkLayerStats_1_3_cb hidl_status_cb) override; - Return<void> getLinkLayerStats_1_5( - getLinkLayerStats_1_5_cb hidl_status_cb) override; - Return<void> startRssiMonitoring( - uint32_t cmd_id, int32_t max_rssi, int32_t min_rssi, - startRssiMonitoring_cb hidl_status_cb) override; - Return<void> stopRssiMonitoring( - uint32_t cmd_id, stopRssiMonitoring_cb hidl_status_cb) override; - Return<void> getRoamingCapabilities( - getRoamingCapabilities_cb hidl_status_cb) override; - Return<void> configureRoaming(const StaRoamingConfig& config, - configureRoaming_cb hidl_status_cb) override; - Return<void> setRoamingState(StaRoamingState state, - setRoamingState_cb hidl_status_cb) override; - Return<void> enableNdOffload(bool enable, - enableNdOffload_cb hidl_status_cb) override; - Return<void> startSendingKeepAlivePackets( - uint32_t cmd_id, const hidl_vec<uint8_t>& ip_packet_data, - uint16_t ether_type, const hidl_array<uint8_t, 6>& src_address, - const hidl_array<uint8_t, 6>& dst_address, uint32_t period_in_ms, - startSendingKeepAlivePackets_cb hidl_status_cb) override; - Return<void> stopSendingKeepAlivePackets( - uint32_t cmd_id, - stopSendingKeepAlivePackets_cb hidl_status_cb) override; - Return<void> setScanningMacOui( - const hidl_array<uint8_t, 3>& oui, - setScanningMacOui_cb hidl_status_cb) override; - Return<void> startDebugPacketFateMonitoring( - startDebugPacketFateMonitoring_cb hidl_status_cb) override; - Return<void> getDebugTxPacketFates( - 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; - Return<void> getFactoryMacAddress( - getFactoryMacAddress_cb hidl_status_cb) override; - Return<void> setScanMode(bool enable, - setScanMode_cb hidl_status_cb) override; - - private: - // Corresponding worker functions for the HIDL methods. - std::pair<WifiStatus, std::string> getNameInternal(); - std::pair<WifiStatus, IfaceType> getTypeInternal(); - WifiStatus registerEventCallbackInternal( - const sp<IWifiStaIfaceEventCallback>& callback); - std::pair<WifiStatus, uint32_t> getCapabilitiesInternal(); - std::pair<WifiStatus, StaApfPacketFilterCapabilities> - getApfPacketFilterCapabilitiesInternal(); - WifiStatus installApfPacketFilterInternal( - uint32_t cmd_id, const std::vector<uint8_t>& program); - std::pair<WifiStatus, std::vector<uint8_t>> - readApfPacketFilterDataInternal(); - std::pair<WifiStatus, StaBackgroundScanCapabilities> - getBackgroundScanCapabilitiesInternal(); - std::pair<WifiStatus, std::vector<WifiChannelInMhz>> - getValidFrequenciesForBandInternal(V1_0::WifiBand band); - WifiStatus startBackgroundScanInternal( - uint32_t cmd_id, const StaBackgroundScanParameters& params); - WifiStatus stopBackgroundScanInternal(uint32_t cmd_id); - WifiStatus enableLinkLayerStatsCollectionInternal(bool debug); - WifiStatus disableLinkLayerStatsCollectionInternal(); - std::pair<WifiStatus, V1_0::StaLinkLayerStats> getLinkLayerStatsInternal(); - std::pair<WifiStatus, V1_3::StaLinkLayerStats> - getLinkLayerStatsInternal_1_3(); - std::pair<WifiStatus, V1_5::StaLinkLayerStats> - getLinkLayerStatsInternal_1_5(); - WifiStatus startRssiMonitoringInternal(uint32_t cmd_id, int32_t max_rssi, - int32_t min_rssi); - WifiStatus stopRssiMonitoringInternal(uint32_t cmd_id); - std::pair<WifiStatus, StaRoamingCapabilities> - getRoamingCapabilitiesInternal(); - WifiStatus configureRoamingInternal(const StaRoamingConfig& config); - WifiStatus setRoamingStateInternal(StaRoamingState state); - WifiStatus enableNdOffloadInternal(bool enable); - WifiStatus startSendingKeepAlivePacketsInternal( - uint32_t cmd_id, const std::vector<uint8_t>& ip_packet_data, - uint16_t ether_type, const std::array<uint8_t, 6>& src_address, - const std::array<uint8_t, 6>& dst_address, uint32_t period_in_ms); - WifiStatus stopSendingKeepAlivePacketsInternal(uint32_t cmd_id); - WifiStatus setScanningMacOuiInternal(const std::array<uint8_t, 3>& oui); - WifiStatus startDebugPacketFateMonitoringInternal(); - std::pair<WifiStatus, std::vector<WifiDebugTxPacketFateReport>> - getDebugTxPacketFatesInternal(); - std::pair<WifiStatus, std::vector<WifiDebugRxPacketFateReport>> - getDebugRxPacketFatesInternal(); - WifiStatus setMacAddressInternal(const std::array<uint8_t, 6>& mac); - std::pair<WifiStatus, std::array<uint8_t, 6>> - getFactoryMacAddressInternal(); - WifiStatus setScanModeInternal(bool enable); - - std::string ifname_; - std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_; - std::weak_ptr<iface_util::WifiIfaceUtil> iface_util_; - bool is_valid_; - hidl_callback_util::HidlCallbackHandler<IWifiStaIfaceEventCallback> - event_cb_handler_; - - DISALLOW_COPY_AND_ASSIGN(WifiStaIface); -}; - -} // namespace implementation -} // namespace V1_5 -} // namespace wifi -} // namespace hardware -} // namespace android - -#endif // WIFI_STA_IFACE_H_ diff --git a/wifi/1.6/Android.bp b/wifi/1.6/Android.bp new file mode 100644 index 0000000000..d293c73a79 --- /dev/null +++ b/wifi/1.6/Android.bp @@ -0,0 +1,32 @@ +// This file is autogenerated by hidl-gen -Landroidbp. + +package { + // See: http://go/android-license-faq + // A large-scale-change added 'default_applicable_licenses' to import + // all of the 'license_kinds' from "hardware_interfaces_license" + // to get the below license kinds: + // SPDX-license-identifier-Apache-2.0 + default_applicable_licenses: ["hardware_interfaces_license"], +} + +hidl_interface { + name: "android.hardware.wifi@1.6", + root: "android.hardware", + srcs: [ + "IWifi.hal", + ], + interfaces: [ + "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.hidl.base@1.0", + ], + gen_java: true, + apex_available: [ + "//apex_available:platform", + "com.android.wifi", + ], +} diff --git a/wifi/1.6/IWifi.hal b/wifi/1.6/IWifi.hal new file mode 100644 index 0000000000..0123e6ca83 --- /dev/null +++ b/wifi/1.6/IWifi.hal @@ -0,0 +1,27 @@ +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.hardware.wifi@1.6; + +import @1.5::IWifi; + +/** + * This is the root of the HAL module and is the interface returned when + * loading an implementation of the Wi-Fi HAL. There must be at most one + * module loaded in the system. + * IWifi.getChip() must return @1.5::IWifiChip + */ +interface IWifi extends @1.5::IWifi {}; diff --git a/wifi/1.6/default/Android.bp b/wifi/1.6/default/Android.bp new file mode 100644 index 0000000000..d48d18332f --- /dev/null +++ b/wifi/1.6/default/Android.bp @@ -0,0 +1,107 @@ +// Copyright (C) 2021 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package { + default_applicable_licenses: ["hardware_interfaces_license"], +} + +filegroup { + name: "android.hardware.wifi@1.0-service_srcs", + srcs: ["service.cpp"], +} + +cc_defaults { + name: "android.hardware.wifi@1.0-service_default", + srcs: [":android.hardware.wifi@1.0-service_srcs"], + relative_install_path: "hw", + soc_specific: true, + shared_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@1.6", + "libbase", + "libcutils", + "libhidlbase", + "liblog", + "libnl", + "libutils", + "libwifi-system-iface", + "libxml2", + ], + cppflags: [ + "-Wall", + "-Werror", + "-Wextra", + ], +} + +filegroup { + name: "android.hardware.wifi@1.0-service-lib_srcs", + srcs: [ + "hidl_struct_util.cpp", + "hidl_sync_util.cpp", + "ringbuffer.cpp", + "wifi.cpp", + "wifi_ap_iface.cpp", + "wifi_chip.cpp", + "wifi_feature_flags.cpp", + "wifi_iface_util.cpp", + "wifi_legacy_hal.cpp", + "wifi_legacy_hal_factory.cpp", + "wifi_legacy_hal_stubs.cpp", + "wifi_mode_controller.cpp", + "wifi_nan_iface.cpp", + "wifi_p2p_iface.cpp", + "wifi_rtt_controller.cpp", + "wifi_sta_iface.cpp", + "wifi_status_util.cpp", + ], +} + +cc_defaults { + name: "android.hardware.wifi@1.0-service-lib_defaults", + srcs: [":android.hardware.wifi@1.0-service-lib_srcs"], + relative_install_path: "hw", + soc_specific: true, + shared_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@1.6", + "libbase", + "libcutils", + "libhidlbase", + "liblog", + "libnl", + "libutils", + "libwifi-system-iface", + "libxml2", + ], + // Generated by building android.hardware.wifi@1.0-service-lib and printing LOCAL_CPPFLAGS. + cppflags: [ + "-Wall", + "-Werror", + "-Wextra", + "-DWIFI_HIDL_FEATURE_DUAL_INTERFACE", + ], + export_include_dirs: ["."], + include_dirs: ["external/libxml2/include"], +} diff --git a/wifi/1.5/default/Android.mk b/wifi/1.6/default/Android.mk index edb59bb085..ca1c022db1 100644 --- a/wifi/1.5/default/Android.mk +++ b/wifi/1.6/default/Android.mk @@ -42,12 +42,6 @@ endif ifdef WIFI_AVOID_IFACE_RESET_MAC_CHANGE LOCAL_CPPFLAGS += -DWIFI_AVOID_IFACE_RESET_MAC_CHANGE endif -ifdef QC_WIFI_HIDL_FEATURE_DUAL_AP -LOCAL_CPPFLAGS += -DQC_WIFI_HIDL_FEATURE_DUAL_AP -endif -ifdef QC_WIFI_HIDL_FEATURE_DUAL_STA -LOCAL_CPPFLAGS += -DQC_WIFI_HIDL_FEATURE_DUAL_STA -endif # Allow implicit fallthroughs in wifi_legacy_hal.cpp until they are fixed. LOCAL_CFLAGS += -Wno-error=implicit-fallthrough LOCAL_SRC_FILES := \ @@ -83,7 +77,8 @@ LOCAL_SHARED_LIBRARIES := \ android.hardware.wifi@1.2 \ android.hardware.wifi@1.3 \ android.hardware.wifi@1.4 \ - android.hardware.wifi@1.5 + android.hardware.wifi@1.5 \ + android.hardware.wifi@1.6 LOCAL_C_INCLUDES += $(TOP)/external/libxml2/include LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) include $(BUILD_STATIC_LIBRARY) @@ -100,10 +95,6 @@ LOCAL_VINTF_FRAGMENTS := android.hardware.wifi@1.0-service.xml LOCAL_MODULE_RELATIVE_PATH := hw LOCAL_PROPRIETARY_MODULE := true LOCAL_CPPFLAGS := -Wall -Werror -Wextra -ifeq ($(TARGET_ARCH),arm) - LOCAL_CPPFLAGS += -DARCH_ARM_32 -endif - LOCAL_SRC_FILES := \ service.cpp LOCAL_SHARED_LIBRARIES := \ @@ -113,7 +104,6 @@ LOCAL_SHARED_LIBRARIES := \ liblog \ libnl \ libutils \ - libhwbinder \ libwifi-hal \ libwifi-system-iface \ libxml2 \ @@ -122,7 +112,8 @@ LOCAL_SHARED_LIBRARIES := \ android.hardware.wifi@1.2 \ android.hardware.wifi@1.3 \ android.hardware.wifi@1.4 \ - android.hardware.wifi@1.5 + android.hardware.wifi@1.5 \ + android.hardware.wifi@1.6 LOCAL_STATIC_LIBRARIES := \ android.hardware.wifi@1.0-service-lib LOCAL_INIT_RC := android.hardware.wifi@1.0-service.rc @@ -159,7 +150,8 @@ LOCAL_SHARED_LIBRARIES := \ android.hardware.wifi@1.2 \ android.hardware.wifi@1.3 \ android.hardware.wifi@1.4 \ - android.hardware.wifi@1.5 + android.hardware.wifi@1.5 \ + android.hardware.wifi@1.6 LOCAL_STATIC_LIBRARIES := \ android.hardware.wifi@1.0-service-lib LOCAL_INIT_RC := android.hardware.wifi@1.0-service-lazy.rc @@ -196,6 +188,7 @@ LOCAL_STATIC_LIBRARIES := \ android.hardware.wifi@1.3 \ android.hardware.wifi@1.4 \ android.hardware.wifi@1.5 \ + android.hardware.wifi@1.6 \ android.hardware.wifi@1.0-service-lib LOCAL_SHARED_LIBRARIES := \ libbase \ diff --git a/wifi/1.5/default/OWNERS b/wifi/1.6/default/OWNERS index cf81c79892..cf81c79892 100644 --- a/wifi/1.5/default/OWNERS +++ b/wifi/1.6/default/OWNERS diff --git a/wifi/1.5/default/THREADING.README b/wifi/1.6/default/THREADING.README index 8366ca0201..8366ca0201 100644 --- a/wifi/1.5/default/THREADING.README +++ b/wifi/1.6/default/THREADING.README diff --git a/wifi/1.5/default/android.hardware.wifi@1.0-service-lazy.rc b/wifi/1.6/default/android.hardware.wifi@1.0-service-lazy.rc index bc6bb6a7e6..ee8c818d90 100644 --- a/wifi/1.5/default/android.hardware.wifi@1.0-service-lazy.rc +++ b/wifi/1.6/default/android.hardware.wifi@1.0-service-lazy.rc @@ -5,6 +5,7 @@ service vendor.wifi_hal_legacy /vendor/bin/hw/android.hardware.wifi@1.0-service- interface android.hardware.wifi@1.3::IWifi default interface android.hardware.wifi@1.4::IWifi default interface android.hardware.wifi@1.5::IWifi default + interface android.hardware.wifi@1.6::IWifi default oneshot disabled class hal diff --git a/wifi/1.5/default/android.hardware.wifi@1.0-service.rc b/wifi/1.6/default/android.hardware.wifi@1.0-service.rc index 05706ef4f4..18f40d0bb5 100644 --- a/wifi/1.5/default/android.hardware.wifi@1.0-service.rc +++ b/wifi/1.6/default/android.hardware.wifi@1.0-service.rc @@ -5,6 +5,7 @@ service vendor.wifi_hal_legacy /vendor/bin/hw/android.hardware.wifi@1.0-service interface android.hardware.wifi@1.3::IWifi default interface android.hardware.wifi@1.4::IWifi default interface android.hardware.wifi@1.5::IWifi default + interface android.hardware.wifi@1.6::IWifi default class hal capabilities NET_ADMIN NET_RAW SYS_MODULE user wifi diff --git a/wifi/1.5/default/android.hardware.wifi@1.0-service.xml b/wifi/1.6/default/android.hardware.wifi@1.0-service.xml index 88dd1e3285..771fbaaf42 100644 --- a/wifi/1.5/default/android.hardware.wifi@1.0-service.xml +++ b/wifi/1.6/default/android.hardware.wifi@1.0-service.xml @@ -2,7 +2,7 @@ <hal format="hidl"> <name>android.hardware.wifi</name> <transport>hwbinder</transport> - <version>1.5</version> + <version>1.6</version> <interface> <name>IWifi</name> <instance>default</instance> diff --git a/wifi/1.5/default/hidl_callback_util.h b/wifi/1.6/default/hidl_callback_util.h index d144658750..3ac54c1666 100644 --- a/wifi/1.5/default/hidl_callback_util.h +++ b/wifi/1.6/default/hidl_callback_util.h @@ -29,20 +29,18 @@ using on_death_cb_function = std::function<void(uint64_t)>; // callbacks stored in HidlCallbackHandler. template <typename CallbackType> class HidlDeathHandler : public android::hardware::hidl_death_recipient { - public: + public: HidlDeathHandler(const on_death_cb_function& user_cb_function) : cb_function_(user_cb_function) {} ~HidlDeathHandler() = default; // Death notification for callbacks. - void serviceDied( - uint64_t cookie, - const android::wp<android::hidl::base::V1_0::IBase>& /* who */) - override { + void serviceDied(uint64_t cookie, + const android::wp<android::hidl::base::V1_0::IBase>& /* who */) override { cb_function_(cookie); } - private: + private: on_death_cb_function cb_function_; DISALLOW_COPY_AND_ASSIGN(HidlDeathHandler); @@ -52,18 +50,17 @@ class HidlDeathHandler : public android::hardware::hidl_death_recipient { namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace hidl_callback_util { template <typename CallbackType> // Provides a class to manage callbacks for the various HIDL interfaces and // handle the death of the process hosting each callback. class HidlCallbackHandler { - public: + public: HidlCallbackHandler() : death_handler_(new HidlDeathHandler<CallbackType>( - std::bind(&HidlCallbackHandler::onObjectDeath, this, - std::placeholders::_1))) {} + std::bind(&HidlCallbackHandler::onObjectDeath, this, std::placeholders::_1))) {} ~HidlCallbackHandler() = default; bool addCallback(const sp<CallbackType>& cb) { @@ -83,9 +80,7 @@ class HidlCallbackHandler { return true; } - const std::set<android::sp<CallbackType>>& getCallbacks() { - return cb_set_; - } + const std::set<android::sp<CallbackType>>& getCallbacks() { return cb_set_; } // Death notification for callbacks. void onObjectDeath(uint64_t cookie) { @@ -108,7 +103,7 @@ class HidlCallbackHandler { cb_set_.clear(); } - private: + private: std::set<sp<CallbackType>> cb_set_; sp<HidlDeathHandler<CallbackType>> death_handler_; @@ -117,7 +112,7 @@ class HidlCallbackHandler { } // namespace hidl_callback_util } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/hidl_return_util.h b/wifi/1.6/default/hidl_return_util.h index 4455185283..a0efac2c57 100644 --- a/wifi/1.5/default/hidl_return_util.h +++ b/wifi/1.6/default/hidl_return_util.h @@ -23,7 +23,7 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace hidl_return_util { using namespace android::hardware::wifi::V1_0; @@ -40,9 +40,9 @@ using namespace android::hardware::wifi::V1_0; */ // Use for HIDL methods which return only an instance of WifiStatus. template <typename ObjT, typename WorkFuncT, typename... Args> -Return<void> validateAndCall( - ObjT* obj, WifiStatusCode status_code_if_invalid, WorkFuncT&& work, - const std::function<void(const WifiStatus&)>& hidl_cb, Args&&... args) { +Return<void> validateAndCall(ObjT* obj, WifiStatusCode status_code_if_invalid, WorkFuncT&& work, + const std::function<void(const WifiStatus&)>& hidl_cb, + Args&&... args) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (obj->isValid()) { hidl_cb((obj->*work)(std::forward<Args>(args)...)); @@ -56,9 +56,10 @@ Return<void> validateAndCall( // This version passes the global lock acquired to the body of the method. // Note: Only used by IWifi::stop() currently. template <typename ObjT, typename WorkFuncT, typename... Args> -Return<void> validateAndCallWithLock( - ObjT* obj, WifiStatusCode status_code_if_invalid, WorkFuncT&& work, - const std::function<void(const WifiStatus&)>& hidl_cb, Args&&... args) { +Return<void> validateAndCallWithLock(ObjT* obj, WifiStatusCode status_code_if_invalid, + WorkFuncT&& work, + const std::function<void(const WifiStatus&)>& hidl_cb, + Args&&... args) { auto lock = hidl_sync_util::acquireGlobalLock(); if (obj->isValid()) { hidl_cb((obj->*work)(&lock, std::forward<Args>(args)...)); @@ -71,10 +72,9 @@ Return<void> validateAndCallWithLock( // Use for HIDL methods which return instance of WifiStatus and a single return // value. template <typename ObjT, typename WorkFuncT, typename ReturnT, typename... Args> -Return<void> validateAndCall( - ObjT* obj, WifiStatusCode status_code_if_invalid, WorkFuncT&& work, - const std::function<void(const WifiStatus&, ReturnT)>& hidl_cb, - Args&&... args) { +Return<void> validateAndCall(ObjT* obj, WifiStatusCode status_code_if_invalid, WorkFuncT&& work, + const std::function<void(const WifiStatus&, ReturnT)>& hidl_cb, + Args&&... args) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (obj->isValid()) { const auto& ret_pair = (obj->*work)(std::forward<Args>(args)...); @@ -90,12 +90,10 @@ Return<void> validateAndCall( // Use for HIDL methods which return instance of WifiStatus and 2 return // values. -template <typename ObjT, typename WorkFuncT, typename ReturnT1, - typename ReturnT2, typename... Args> +template <typename ObjT, typename WorkFuncT, typename ReturnT1, typename ReturnT2, typename... Args> Return<void> validateAndCall( - ObjT* obj, WifiStatusCode status_code_if_invalid, WorkFuncT&& work, - const std::function<void(const WifiStatus&, ReturnT1, ReturnT2)>& hidl_cb, - Args&&... args) { + ObjT* obj, WifiStatusCode status_code_if_invalid, WorkFuncT&& work, + const std::function<void(const WifiStatus&, ReturnT1, ReturnT2)>& hidl_cb, Args&&... args) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (obj->isValid()) { const auto& ret_tuple = (obj->*work)(std::forward<Args>(args)...); @@ -113,7 +111,7 @@ Return<void> validateAndCall( } // namespace hidl_return_util } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/hidl_struct_util.cpp b/wifi/1.6/default/hidl_struct_util.cpp index 91974a33d3..3489c9e4d3 100644 --- a/wifi/1.5/default/hidl_struct_util.cpp +++ b/wifi/1.6/default/hidl_struct_util.cpp @@ -22,12 +22,13 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace hidl_struct_util { -WifiChannelWidthInMhz convertLegacyWifiChannelWidthToHidl( - legacy_hal::wifi_channel_width type); +using V1_5::NanConfigRequestSupplemental; + +WifiChannelWidthInMhz convertLegacyWifiChannelWidthToHidl(legacy_hal::wifi_channel_width type); hidl_string safeConvertChar(const char* str, size_t max_len) { const char* c = str; @@ -39,8 +40,7 @@ hidl_string safeConvertChar(const char* str, size_t max_len) { return hidl_string(str, size); } -IWifiChip::ChipCapabilityMask convertLegacyLoggerFeatureToHidlChipCapability( - uint32_t feature) { +IWifiChip::ChipCapabilityMask convertLegacyLoggerFeatureToHidlChipCapability(uint32_t feature) { using HidlChipCaps = IWifiChip::ChipCapabilityMask; switch (feature) { case legacy_hal::WIFI_LOGGER_MEMORY_DUMP_SUPPORTED: @@ -52,14 +52,14 @@ IWifiChip::ChipCapabilityMask convertLegacyLoggerFeatureToHidlChipCapability( case legacy_hal::WIFI_LOGGER_POWER_EVENT_SUPPORTED: return HidlChipCaps::DEBUG_RING_BUFFER_POWER_EVENT; case legacy_hal::WIFI_LOGGER_WAKE_LOCK_SUPPORTED: - return HidlChipCaps::DEBUG_HOST_WAKE_REASON_STATS; + return HidlChipCaps::DEBUG_RING_BUFFER_WAKELOCK_EVENT; }; CHECK(false) << "Unknown legacy feature: " << feature; return {}; } -IWifiStaIface::StaIfaceCapabilityMask -convertLegacyLoggerFeatureToHidlStaIfaceCapability(uint32_t feature) { +IWifiStaIface::StaIfaceCapabilityMask convertLegacyLoggerFeatureToHidlStaIfaceCapability( + uint32_t feature) { using HidlStaIfaceCaps = IWifiStaIface::StaIfaceCapabilityMask; switch (feature) { case legacy_hal::WIFI_LOGGER_PACKET_FATE_SUPPORTED: @@ -69,8 +69,7 @@ convertLegacyLoggerFeatureToHidlStaIfaceCapability(uint32_t feature) { return {}; } -V1_5::IWifiChip::ChipCapabilityMask convertLegacyFeatureToHidlChipCapability( - uint64_t feature) { +V1_5::IWifiChip::ChipCapabilityMask convertLegacyFeatureToHidlChipCapability(uint64_t feature) { using HidlChipCaps = V1_5::IWifiChip::ChipCapabilityMask; switch (feature) { case WIFI_FEATURE_SET_TX_POWER_LIMIT: @@ -92,8 +91,8 @@ V1_5::IWifiChip::ChipCapabilityMask convertLegacyFeatureToHidlChipCapability( return {}; } -IWifiStaIface::StaIfaceCapabilityMask -convertLegacyFeatureToHidlStaIfaceCapability(uint64_t feature) { +IWifiStaIface::StaIfaceCapabilityMask convertLegacyFeatureToHidlStaIfaceCapability( + uint64_t feature) { using HidlStaIfaceCaps = IWifiStaIface::StaIfaceCapabilityMask; switch (feature) { case WIFI_FEATURE_GSCAN: @@ -127,9 +126,9 @@ convertLegacyFeatureToHidlStaIfaceCapability(uint64_t feature) { return {}; } -bool convertLegacyFeaturesToHidlChipCapabilities( - uint64_t legacy_feature_set, uint32_t legacy_logger_feature_set, - uint32_t* hidl_caps) { +bool convertLegacyFeaturesToHidlChipCapabilities(uint64_t legacy_feature_set, + uint32_t legacy_logger_feature_set, + uint32_t* hidl_caps) { if (!hidl_caps) { return false; } @@ -141,8 +140,7 @@ bool convertLegacyFeaturesToHidlChipCapabilities( legacy_hal::WIFI_LOGGER_POWER_EVENT_SUPPORTED, legacy_hal::WIFI_LOGGER_WAKE_LOCK_SUPPORTED}) { if (feature & legacy_logger_feature_set) { - *hidl_caps |= - convertLegacyLoggerFeatureToHidlChipCapability(feature); + *hidl_caps |= convertLegacyLoggerFeatureToHidlChipCapability(feature); } } std::vector<uint64_t> features = {WIFI_FEATURE_SET_TX_POWER_LIMIT, @@ -158,14 +156,15 @@ bool convertLegacyFeaturesToHidlChipCapabilities( } } - // There are no flags for these in the legacy feature set. Adding this to + // There are no flags for these 3 in the legacy feature set. Adding them to // the set because all the current devices support it. + *hidl_caps |= HidlChipCaps::DEBUG_RING_BUFFER_VENDOR_DATA; + *hidl_caps |= HidlChipCaps::DEBUG_HOST_WAKE_REASON_STATS; *hidl_caps |= HidlChipCaps::DEBUG_ERROR_ALERTS; return true; } -WifiDebugRingBufferFlags convertLegacyDebugRingBufferFlagsToHidl( - uint32_t flag) { +WifiDebugRingBufferFlags convertLegacyDebugRingBufferFlagsToHidl(uint32_t flag) { switch (flag) { case WIFI_RING_BUFFER_FLAG_HAS_BINARY_ENTRIES: return WifiDebugRingBufferFlags::HAS_BINARY_ENTRIES; @@ -177,22 +176,20 @@ WifiDebugRingBufferFlags convertLegacyDebugRingBufferFlagsToHidl( } bool convertLegacyDebugRingBufferStatusToHidl( - const legacy_hal::wifi_ring_buffer_status& legacy_status, - WifiDebugRingBufferStatus* hidl_status) { + const legacy_hal::wifi_ring_buffer_status& legacy_status, + WifiDebugRingBufferStatus* hidl_status) { if (!hidl_status) { return false; } *hidl_status = {}; - hidl_status->ringName = - safeConvertChar(reinterpret_cast<const char*>(legacy_status.name), - sizeof(legacy_status.name)); + hidl_status->ringName = safeConvertChar(reinterpret_cast<const char*>(legacy_status.name), + sizeof(legacy_status.name)); hidl_status->flags = 0; - for (const auto flag : {WIFI_RING_BUFFER_FLAG_HAS_BINARY_ENTRIES, - WIFI_RING_BUFFER_FLAG_HAS_ASCII_ENTRIES}) { + for (const auto flag : + {WIFI_RING_BUFFER_FLAG_HAS_BINARY_ENTRIES, WIFI_RING_BUFFER_FLAG_HAS_ASCII_ENTRIES}) { if (flag & legacy_status.flags) { - hidl_status->flags |= static_cast< - std::underlying_type<WifiDebugRingBufferFlags>::type>( - convertLegacyDebugRingBufferFlagsToHidl(flag)); + hidl_status->flags |= static_cast<std::underlying_type<WifiDebugRingBufferFlags>::type>( + convertLegacyDebugRingBufferFlagsToHidl(flag)); } } hidl_status->ringId = legacy_status.ring_id; @@ -200,28 +197,25 @@ bool convertLegacyDebugRingBufferStatusToHidl( // Calculate free size of the ring the buffer. We don't need to send the // exact read/write pointers that were there in the legacy HAL interface. if (legacy_status.written_bytes >= legacy_status.read_bytes) { - hidl_status->freeSizeInBytes = - legacy_status.ring_buffer_byte_size - - (legacy_status.written_bytes - legacy_status.read_bytes); + hidl_status->freeSizeInBytes = legacy_status.ring_buffer_byte_size - + (legacy_status.written_bytes - legacy_status.read_bytes); } else { - hidl_status->freeSizeInBytes = - legacy_status.read_bytes - legacy_status.written_bytes; + hidl_status->freeSizeInBytes = legacy_status.read_bytes - legacy_status.written_bytes; } hidl_status->verboseLevel = legacy_status.verbose_level; return true; } bool convertLegacyVectorOfDebugRingBufferStatusToHidl( - const std::vector<legacy_hal::wifi_ring_buffer_status>& legacy_status_vec, - std::vector<WifiDebugRingBufferStatus>* hidl_status_vec) { + const std::vector<legacy_hal::wifi_ring_buffer_status>& legacy_status_vec, + std::vector<WifiDebugRingBufferStatus>* hidl_status_vec) { if (!hidl_status_vec) { return false; } *hidl_status_vec = {}; for (const auto& legacy_status : legacy_status_vec) { WifiDebugRingBufferStatus hidl_status; - if (!convertLegacyDebugRingBufferStatusToHidl(legacy_status, - &hidl_status)) { + if (!convertLegacyDebugRingBufferStatusToHidl(legacy_status, &hidl_status)) { return false; } hidl_status_vec->push_back(hidl_status); @@ -229,52 +223,44 @@ bool convertLegacyVectorOfDebugRingBufferStatusToHidl( return true; } -bool convertLegacyWakeReasonStatsToHidl( - const legacy_hal::WakeReasonStats& legacy_stats, - WifiDebugHostWakeReasonStats* hidl_stats) { +bool convertLegacyWakeReasonStatsToHidl(const legacy_hal::WakeReasonStats& legacy_stats, + WifiDebugHostWakeReasonStats* hidl_stats) { if (!hidl_stats) { return false; } *hidl_stats = {}; - hidl_stats->totalCmdEventWakeCnt = - legacy_stats.wake_reason_cnt.total_cmd_event_wake; + hidl_stats->totalCmdEventWakeCnt = legacy_stats.wake_reason_cnt.total_cmd_event_wake; hidl_stats->cmdEventWakeCntPerType = legacy_stats.cmd_event_wake_cnt; - hidl_stats->totalDriverFwLocalWakeCnt = - legacy_stats.wake_reason_cnt.total_driver_fw_local_wake; - hidl_stats->driverFwLocalWakeCntPerType = - legacy_stats.driver_fw_local_wake_cnt; - hidl_stats->totalRxPacketWakeCnt = - legacy_stats.wake_reason_cnt.total_rx_data_wake; + hidl_stats->totalDriverFwLocalWakeCnt = legacy_stats.wake_reason_cnt.total_driver_fw_local_wake; + hidl_stats->driverFwLocalWakeCntPerType = legacy_stats.driver_fw_local_wake_cnt; + hidl_stats->totalRxPacketWakeCnt = legacy_stats.wake_reason_cnt.total_rx_data_wake; hidl_stats->rxPktWakeDetails.rxUnicastCnt = - legacy_stats.wake_reason_cnt.rx_wake_details.rx_unicast_cnt; + legacy_stats.wake_reason_cnt.rx_wake_details.rx_unicast_cnt; hidl_stats->rxPktWakeDetails.rxMulticastCnt = - legacy_stats.wake_reason_cnt.rx_wake_details.rx_multicast_cnt; + legacy_stats.wake_reason_cnt.rx_wake_details.rx_multicast_cnt; hidl_stats->rxPktWakeDetails.rxBroadcastCnt = - legacy_stats.wake_reason_cnt.rx_wake_details.rx_broadcast_cnt; + legacy_stats.wake_reason_cnt.rx_wake_details.rx_broadcast_cnt; hidl_stats->rxMulticastPkWakeDetails.ipv4RxMulticastAddrCnt = - legacy_stats.wake_reason_cnt.rx_multicast_wake_pkt_info - .ipv4_rx_multicast_addr_cnt; + legacy_stats.wake_reason_cnt.rx_multicast_wake_pkt_info.ipv4_rx_multicast_addr_cnt; hidl_stats->rxMulticastPkWakeDetails.ipv6RxMulticastAddrCnt = - legacy_stats.wake_reason_cnt.rx_multicast_wake_pkt_info - .ipv6_rx_multicast_addr_cnt; + legacy_stats.wake_reason_cnt.rx_multicast_wake_pkt_info.ipv6_rx_multicast_addr_cnt; hidl_stats->rxMulticastPkWakeDetails.otherRxMulticastAddrCnt = - legacy_stats.wake_reason_cnt.rx_multicast_wake_pkt_info - .other_rx_multicast_addr_cnt; + legacy_stats.wake_reason_cnt.rx_multicast_wake_pkt_info.other_rx_multicast_addr_cnt; hidl_stats->rxIcmpPkWakeDetails.icmpPkt = - legacy_stats.wake_reason_cnt.rx_wake_pkt_classification_info.icmp_pkt; + legacy_stats.wake_reason_cnt.rx_wake_pkt_classification_info.icmp_pkt; hidl_stats->rxIcmpPkWakeDetails.icmp6Pkt = - legacy_stats.wake_reason_cnt.rx_wake_pkt_classification_info.icmp6_pkt; + legacy_stats.wake_reason_cnt.rx_wake_pkt_classification_info.icmp6_pkt; hidl_stats->rxIcmpPkWakeDetails.icmp6Ra = - legacy_stats.wake_reason_cnt.rx_wake_pkt_classification_info.icmp6_ra; + legacy_stats.wake_reason_cnt.rx_wake_pkt_classification_info.icmp6_ra; hidl_stats->rxIcmpPkWakeDetails.icmp6Na = - legacy_stats.wake_reason_cnt.rx_wake_pkt_classification_info.icmp6_na; + legacy_stats.wake_reason_cnt.rx_wake_pkt_classification_info.icmp6_na; hidl_stats->rxIcmpPkWakeDetails.icmp6Ns = - legacy_stats.wake_reason_cnt.rx_wake_pkt_classification_info.icmp6_ns; + legacy_stats.wake_reason_cnt.rx_wake_pkt_classification_info.icmp6_ns; return true; } legacy_hal::wifi_power_scenario convertHidlTxPowerScenarioToLegacy( - V1_1::IWifiChip::TxPowerScenario hidl_scenario) { + V1_1::IWifiChip::TxPowerScenario hidl_scenario) { switch (hidl_scenario) { // This is the only supported scenario for V1_1 case V1_1::IWifiChip::TxPowerScenario::VOICE_CALL: @@ -284,7 +270,7 @@ legacy_hal::wifi_power_scenario convertHidlTxPowerScenarioToLegacy( } legacy_hal::wifi_power_scenario convertHidlTxPowerScenarioToLegacy_1_2( - V1_2::IWifiChip::TxPowerScenario hidl_scenario) { + V1_2::IWifiChip::TxPowerScenario hidl_scenario) { switch (hidl_scenario) { // This is the only supported scenario for V1_1 case V1_2::IWifiChip::TxPowerScenario::VOICE_CALL: @@ -303,7 +289,7 @@ legacy_hal::wifi_power_scenario convertHidlTxPowerScenarioToLegacy_1_2( } legacy_hal::wifi_latency_mode convertHidlLatencyModeToLegacy( - V1_3::IWifiChip::LatencyMode hidl_latency_mode) { + V1_3::IWifiChip::LatencyMode hidl_latency_mode) { switch (hidl_latency_mode) { case V1_3::IWifiChip::LatencyMode::NORMAL: return legacy_hal::WIFI_LATENCY_MODE_NORMAL; @@ -314,8 +300,8 @@ legacy_hal::wifi_latency_mode convertHidlLatencyModeToLegacy( } bool convertLegacyWifiMacInfoToHidl( - const legacy_hal::WifiMacInfo& legacy_mac_info, - V1_4::IWifiChipEventCallback::RadioModeInfo* hidl_radio_mode_info) { + const legacy_hal::WifiMacInfo& legacy_mac_info, + V1_4::IWifiChipEventCallback::RadioModeInfo* hidl_radio_mode_info) { if (!hidl_radio_mode_info) { return false; } @@ -364,24 +350,20 @@ uint32_t convertHidlWifiBandToLegacyMacBand(V1_5::WifiBand hidl_band) { return legacy_hal::WLAN_MAC_5_0_BAND; case V1_5::WifiBand::BAND_24GHZ_5GHZ: case V1_5::WifiBand::BAND_24GHZ_5GHZ_WITH_DFS: - return (legacy_hal::WLAN_MAC_2_4_BAND | - legacy_hal::WLAN_MAC_5_0_BAND); + return (legacy_hal::WLAN_MAC_2_4_BAND | legacy_hal::WLAN_MAC_5_0_BAND); case V1_5::WifiBand::BAND_6GHZ: return legacy_hal::WLAN_MAC_6_0_BAND; case V1_5::WifiBand::BAND_5GHZ_6GHZ: - return (legacy_hal::WLAN_MAC_5_0_BAND | - legacy_hal::WLAN_MAC_6_0_BAND); + return (legacy_hal::WLAN_MAC_5_0_BAND | legacy_hal::WLAN_MAC_6_0_BAND); case V1_5::WifiBand::BAND_24GHZ_5GHZ_6GHZ: case V1_5::WifiBand::BAND_24GHZ_5GHZ_WITH_DFS_6GHZ: - return (legacy_hal::WLAN_MAC_2_4_BAND | - legacy_hal::WLAN_MAC_5_0_BAND | + return (legacy_hal::WLAN_MAC_2_4_BAND | legacy_hal::WLAN_MAC_5_0_BAND | legacy_hal::WLAN_MAC_6_0_BAND); case V1_5::WifiBand::BAND_60GHZ: return legacy_hal::WLAN_MAC_60_0_BAND; default: - return ( - legacy_hal::WLAN_MAC_2_4_BAND | legacy_hal::WLAN_MAC_5_0_BAND | - legacy_hal::WLAN_MAC_6_0_BAND | legacy_hal::WLAN_MAC_60_0_BAND); + return (legacy_hal::WLAN_MAC_2_4_BAND | legacy_hal::WLAN_MAC_5_0_BAND | + legacy_hal::WLAN_MAC_6_0_BAND | legacy_hal::WLAN_MAC_60_0_BAND); } } @@ -445,45 +427,41 @@ uint32_t convertLegacyWifiInterfaceModeToHidl(uint32_t legacy_iface_mask) { uint32_t convertHidlUsableChannelFilterToLegacy(uint32_t hidl_filter_mask) { uint32_t legacy_filter_mask = 0; - if (hidl_filter_mask & - IWifiChip::UsableChannelFilter::CELLULAR_COEXISTENCE) { - legacy_filter_mask |= - legacy_hal::WIFI_USABLE_CHANNEL_FILTER_CELLULAR_COEXISTENCE; + if (hidl_filter_mask & V1_5::IWifiChip::UsableChannelFilter::CELLULAR_COEXISTENCE) { + legacy_filter_mask |= legacy_hal::WIFI_USABLE_CHANNEL_FILTER_CELLULAR_COEXISTENCE; } - if (hidl_filter_mask & IWifiChip::UsableChannelFilter::CONCURRENCY) { - legacy_filter_mask |= - legacy_hal::WIFI_USABLE_CHANNEL_FILTER_CONCURRENCY; + if (hidl_filter_mask & V1_5::IWifiChip::UsableChannelFilter::CONCURRENCY) { + legacy_filter_mask |= legacy_hal::WIFI_USABLE_CHANNEL_FILTER_CONCURRENCY; } return legacy_filter_mask; } bool convertLegacyWifiUsableChannelToHidl( - const legacy_hal::wifi_usable_channel& legacy_usable_channel, - V1_5::WifiUsableChannel* hidl_usable_channel) { + const legacy_hal::wifi_usable_channel& legacy_usable_channel, + V1_5::WifiUsableChannel* hidl_usable_channel) { if (!hidl_usable_channel) { return false; } *hidl_usable_channel = {}; hidl_usable_channel->channel = legacy_usable_channel.freq; hidl_usable_channel->channelBandwidth = - convertLegacyWifiChannelWidthToHidl(legacy_usable_channel.width); - hidl_usable_channel->ifaceModeMask = convertLegacyWifiInterfaceModeToHidl( - legacy_usable_channel.iface_mode_mask); + convertLegacyWifiChannelWidthToHidl(legacy_usable_channel.width); + hidl_usable_channel->ifaceModeMask = + convertLegacyWifiInterfaceModeToHidl(legacy_usable_channel.iface_mode_mask); return true; } bool convertLegacyWifiUsableChannelsToHidl( - const std::vector<legacy_hal::wifi_usable_channel>& legacy_usable_channels, - std::vector<V1_5::WifiUsableChannel>* hidl_usable_channels) { + const std::vector<legacy_hal::wifi_usable_channel>& legacy_usable_channels, + std::vector<V1_5::WifiUsableChannel>* hidl_usable_channels) { if (!hidl_usable_channels) { return false; } *hidl_usable_channels = {}; for (const auto& legacy_usable_channel : legacy_usable_channels) { V1_5::WifiUsableChannel hidl_usable_channel; - if (!convertLegacyWifiUsableChannelToHidl(legacy_usable_channel, - &hidl_usable_channel)) { + if (!convertLegacyWifiUsableChannelToHidl(legacy_usable_channel, &hidl_usable_channel)) { return false; } hidl_usable_channels->push_back(hidl_usable_channel); @@ -492,9 +470,8 @@ bool convertLegacyWifiUsableChannelsToHidl( } bool convertLegacyWifiMacInfosToHidl( - const std::vector<legacy_hal::WifiMacInfo>& legacy_mac_infos, - std::vector<V1_4::IWifiChipEventCallback::RadioModeInfo>* - hidl_radio_mode_infos) { + const std::vector<legacy_hal::WifiMacInfo>& legacy_mac_infos, + std::vector<V1_4::IWifiChipEventCallback::RadioModeInfo>* hidl_radio_mode_infos) { if (!hidl_radio_mode_infos) { return false; } @@ -502,8 +479,7 @@ bool convertLegacyWifiMacInfosToHidl( for (const auto& legacy_mac_info : legacy_mac_infos) { V1_4::IWifiChipEventCallback::RadioModeInfo hidl_radio_mode_info; - if (!convertLegacyWifiMacInfoToHidl(legacy_mac_info, - &hidl_radio_mode_info)) { + if (!convertLegacyWifiMacInfoToHidl(legacy_mac_info, &hidl_radio_mode_info)) { return false; } hidl_radio_mode_infos->push_back(hidl_radio_mode_info); @@ -511,9 +487,9 @@ bool convertLegacyWifiMacInfosToHidl( return true; } -bool convertLegacyFeaturesToHidlStaCapabilities( - uint64_t legacy_feature_set, uint32_t legacy_logger_feature_set, - uint32_t* hidl_caps) { +bool convertLegacyFeaturesToHidlStaCapabilities(uint64_t legacy_feature_set, + uint32_t legacy_logger_feature_set, + uint32_t* hidl_caps) { if (!hidl_caps) { return false; } @@ -521,17 +497,14 @@ bool convertLegacyFeaturesToHidlStaCapabilities( using HidlStaIfaceCaps = IWifiStaIface::StaIfaceCapabilityMask; for (const auto feature : {legacy_hal::WIFI_LOGGER_PACKET_FATE_SUPPORTED}) { if (feature & legacy_logger_feature_set) { - *hidl_caps |= - convertLegacyLoggerFeatureToHidlStaIfaceCapability(feature); + *hidl_caps |= convertLegacyLoggerFeatureToHidlStaIfaceCapability(feature); } } for (const auto feature : - {WIFI_FEATURE_GSCAN, WIFI_FEATURE_LINK_LAYER_STATS, - WIFI_FEATURE_RSSI_MONITOR, WIFI_FEATURE_CONTROL_ROAMING, - WIFI_FEATURE_IE_WHITELIST, WIFI_FEATURE_SCAN_RAND, - WIFI_FEATURE_INFRA_5G, WIFI_FEATURE_HOTSPOT, WIFI_FEATURE_PNO, - WIFI_FEATURE_TDLS, WIFI_FEATURE_TDLS_OFFCHANNEL, - WIFI_FEATURE_CONFIG_NDO, WIFI_FEATURE_MKEEP_ALIVE}) { + {WIFI_FEATURE_GSCAN, WIFI_FEATURE_LINK_LAYER_STATS, WIFI_FEATURE_RSSI_MONITOR, + WIFI_FEATURE_CONTROL_ROAMING, WIFI_FEATURE_IE_WHITELIST, WIFI_FEATURE_SCAN_RAND, + WIFI_FEATURE_INFRA_5G, WIFI_FEATURE_HOTSPOT, WIFI_FEATURE_PNO, WIFI_FEATURE_TDLS, + WIFI_FEATURE_TDLS_OFFCHANNEL, WIFI_FEATURE_CONFIG_NDO, WIFI_FEATURE_MKEEP_ALIVE}) { if (feature & legacy_feature_set) { *hidl_caps |= convertLegacyFeatureToHidlStaIfaceCapability(feature); } @@ -542,9 +515,8 @@ bool convertLegacyFeaturesToHidlStaCapabilities( return true; } -bool convertLegacyApfCapabilitiesToHidl( - const legacy_hal::PacketFilterCapabilities& legacy_caps, - StaApfPacketFilterCapabilities* hidl_caps) { +bool convertLegacyApfCapabilitiesToHidl(const legacy_hal::PacketFilterCapabilities& legacy_caps, + StaApfPacketFilterCapabilities* hidl_caps) { if (!hidl_caps) { return false; } @@ -555,7 +527,7 @@ bool convertLegacyApfCapabilitiesToHidl( } uint8_t convertHidlGscanReportEventFlagToLegacy( - StaBackgroundScanBucketEventReportSchemeMask hidl_flag) { + StaBackgroundScanBucketEventReportSchemeMask hidl_flag) { using HidlFlag = StaBackgroundScanBucketEventReportSchemeMask; switch (hidl_flag) { case HidlFlag::EACH_SCAN: @@ -579,9 +551,8 @@ StaScanDataFlagMask convertLegacyGscanDataFlagToHidl(uint8_t legacy_flag) { return {}; } -bool convertLegacyGscanCapabilitiesToHidl( - const legacy_hal::wifi_gscan_capabilities& legacy_caps, - StaBackgroundScanCapabilities* hidl_caps) { +bool convertLegacyGscanCapabilitiesToHidl(const legacy_hal::wifi_gscan_capabilities& legacy_caps, + StaBackgroundScanCapabilities* hidl_caps) { if (!hidl_caps) { return false; } @@ -613,73 +584,61 @@ legacy_hal::wifi_band convertHidlWifiBandToLegacy(V1_0::WifiBand band) { CHECK(false); } -bool convertHidlGscanParamsToLegacy( - const StaBackgroundScanParameters& hidl_scan_params, - legacy_hal::wifi_scan_cmd_params* legacy_scan_params) { +bool convertHidlGscanParamsToLegacy(const StaBackgroundScanParameters& hidl_scan_params, + legacy_hal::wifi_scan_cmd_params* legacy_scan_params) { if (!legacy_scan_params) { return false; } *legacy_scan_params = {}; legacy_scan_params->base_period = hidl_scan_params.basePeriodInMs; legacy_scan_params->max_ap_per_scan = hidl_scan_params.maxApPerScan; - legacy_scan_params->report_threshold_percent = - hidl_scan_params.reportThresholdPercent; - legacy_scan_params->report_threshold_num_scans = - hidl_scan_params.reportThresholdNumScans; + legacy_scan_params->report_threshold_percent = hidl_scan_params.reportThresholdPercent; + legacy_scan_params->report_threshold_num_scans = hidl_scan_params.reportThresholdNumScans; if (hidl_scan_params.buckets.size() > MAX_BUCKETS) { return false; } legacy_scan_params->num_buckets = hidl_scan_params.buckets.size(); - for (uint32_t bucket_idx = 0; bucket_idx < hidl_scan_params.buckets.size(); - bucket_idx++) { + for (uint32_t bucket_idx = 0; bucket_idx < hidl_scan_params.buckets.size(); bucket_idx++) { const StaBackgroundScanBucketParameters& hidl_bucket_spec = - hidl_scan_params.buckets[bucket_idx]; + hidl_scan_params.buckets[bucket_idx]; legacy_hal::wifi_scan_bucket_spec& legacy_bucket_spec = - legacy_scan_params->buckets[bucket_idx]; + legacy_scan_params->buckets[bucket_idx]; if (hidl_bucket_spec.bucketIdx >= MAX_BUCKETS) { return false; } legacy_bucket_spec.bucket = hidl_bucket_spec.bucketIdx; - legacy_bucket_spec.band = - convertHidlWifiBandToLegacy(hidl_bucket_spec.band); + legacy_bucket_spec.band = convertHidlWifiBandToLegacy(hidl_bucket_spec.band); legacy_bucket_spec.period = hidl_bucket_spec.periodInMs; - legacy_bucket_spec.max_period = - hidl_bucket_spec.exponentialMaxPeriodInMs; + legacy_bucket_spec.max_period = hidl_bucket_spec.exponentialMaxPeriodInMs; legacy_bucket_spec.base = hidl_bucket_spec.exponentialBase; legacy_bucket_spec.step_count = hidl_bucket_spec.exponentialStepCount; legacy_bucket_spec.report_events = 0; using HidlFlag = StaBackgroundScanBucketEventReportSchemeMask; - for (const auto flag : {HidlFlag::EACH_SCAN, HidlFlag::FULL_RESULTS, - HidlFlag::NO_BATCH}) { + for (const auto flag : {HidlFlag::EACH_SCAN, HidlFlag::FULL_RESULTS, HidlFlag::NO_BATCH}) { if (hidl_bucket_spec.eventReportScheme & static_cast<std::underlying_type<HidlFlag>::type>(flag)) { - legacy_bucket_spec.report_events |= - convertHidlGscanReportEventFlagToLegacy(flag); + legacy_bucket_spec.report_events |= convertHidlGscanReportEventFlagToLegacy(flag); } } if (hidl_bucket_spec.frequencies.size() > MAX_CHANNELS) { return false; } legacy_bucket_spec.num_channels = hidl_bucket_spec.frequencies.size(); - for (uint32_t freq_idx = 0; - freq_idx < hidl_bucket_spec.frequencies.size(); freq_idx++) { - legacy_bucket_spec.channels[freq_idx].channel = - hidl_bucket_spec.frequencies[freq_idx]; + for (uint32_t freq_idx = 0; freq_idx < hidl_bucket_spec.frequencies.size(); freq_idx++) { + legacy_bucket_spec.channels[freq_idx].channel = hidl_bucket_spec.frequencies[freq_idx]; } } return true; } -bool convertLegacyIeToHidl( - const legacy_hal::wifi_information_element& legacy_ie, - WifiInformationElement* hidl_ie) { +bool convertLegacyIeToHidl(const legacy_hal::wifi_information_element& legacy_ie, + WifiInformationElement* hidl_ie) { if (!hidl_ie) { return false; } *hidl_ie = {}; hidl_ie->id = legacy_ie.id; - hidl_ie->data = - std::vector<uint8_t>(legacy_ie.data, legacy_ie.data + legacy_ie.len); + hidl_ie->data = std::vector<uint8_t>(legacy_ie.data, legacy_ie.data + legacy_ie.len); return true; } @@ -700,14 +659,12 @@ bool convertLegacyIeBlobToHidl(const uint8_t* ie_blob, uint32_t ie_blob_len, uint32_t curr_ie_len = kIeHeaderLen + legacy_ie.len; if (next_ie + curr_ie_len > ies_end) { LOG(ERROR) << "Error parsing IE blob. Next IE: " << (void*)next_ie - << ", Curr IE len: " << curr_ie_len - << ", IEs End: " << (void*)ies_end; + << ", Curr IE len: " << curr_ie_len << ", IEs End: " << (void*)ies_end; break; } WifiInformationElement hidl_ie; if (!convertLegacyIeToHidl(legacy_ie, &hidl_ie)) { - LOG(ERROR) << "Error converting IE. Id: " << legacy_ie.id - << ", len: " << legacy_ie.len; + LOG(ERROR) << "Error converting IE. Id: " << legacy_ie.id << ", len: " << legacy_ie.len; break; } hidl_ies->push_back(std::move(hidl_ie)); @@ -715,24 +672,23 @@ bool convertLegacyIeBlobToHidl(const uint8_t* ie_blob, uint32_t ie_blob_len, } // Check if the blob has been fully consumed. if (next_ie != ies_end) { - LOG(ERROR) << "Failed to fully parse IE blob. Next IE: " - << (void*)next_ie << ", IEs End: " << (void*)ies_end; + LOG(ERROR) << "Failed to fully parse IE blob. Next IE: " << (void*)next_ie + << ", IEs End: " << (void*)ies_end; } return true; } -bool convertLegacyGscanResultToHidl( - const legacy_hal::wifi_scan_result& legacy_scan_result, bool has_ie_data, - StaScanResult* hidl_scan_result) { +bool convertLegacyGscanResultToHidl(const legacy_hal::wifi_scan_result& legacy_scan_result, + bool has_ie_data, StaScanResult* hidl_scan_result) { if (!hidl_scan_result) { return false; } *hidl_scan_result = {}; hidl_scan_result->timeStampInUs = legacy_scan_result.ts; hidl_scan_result->ssid = std::vector<uint8_t>( - legacy_scan_result.ssid, - legacy_scan_result.ssid + strnlen(legacy_scan_result.ssid, - sizeof(legacy_scan_result.ssid) - 1)); + legacy_scan_result.ssid, + legacy_scan_result.ssid + + strnlen(legacy_scan_result.ssid, sizeof(legacy_scan_result.ssid) - 1)); memcpy(hidl_scan_result->bssid.data(), legacy_scan_result.bssid, hidl_scan_result->bssid.size()); hidl_scan_result->frequency = legacy_scan_result.channel; @@ -741,9 +697,8 @@ bool convertLegacyGscanResultToHidl( hidl_scan_result->capability = legacy_scan_result.capability; if (has_ie_data) { std::vector<WifiInformationElement> ies; - if (!convertLegacyIeBlobToHidl( - reinterpret_cast<const uint8_t*>(legacy_scan_result.ie_data), - legacy_scan_result.ie_length, &ies)) { + if (!convertLegacyIeBlobToHidl(reinterpret_cast<const uint8_t*>(legacy_scan_result.ie_data), + legacy_scan_result.ie_length, &ies)) { return false; } hidl_scan_result->informationElements = std::move(ies); @@ -752,8 +707,8 @@ bool convertLegacyGscanResultToHidl( } bool convertLegacyCachedGscanResultsToHidl( - const legacy_hal::wifi_cached_scan_results& legacy_cached_scan_result, - StaScanData* hidl_scan_data) { + const legacy_hal::wifi_cached_scan_results& legacy_cached_scan_result, + StaScanData* hidl_scan_data) { if (!hidl_scan_data) { return false; } @@ -761,8 +716,7 @@ bool convertLegacyCachedGscanResultsToHidl( hidl_scan_data->flags = 0; for (const auto flag : {legacy_hal::WIFI_SCAN_FLAG_INTERRUPTED}) { if (legacy_cached_scan_result.flags & flag) { - hidl_scan_data->flags |= - static_cast<std::underlying_type<StaScanDataFlagMask>::type>( + hidl_scan_data->flags |= static_cast<std::underlying_type<StaScanDataFlagMask>::type>( convertLegacyGscanDataFlagToHidl(flag)); } } @@ -771,12 +725,10 @@ bool convertLegacyCachedGscanResultsToHidl( CHECK(legacy_cached_scan_result.num_results >= 0 && legacy_cached_scan_result.num_results <= MAX_AP_CACHE_PER_SCAN); std::vector<StaScanResult> hidl_scan_results; - for (int32_t result_idx = 0; - result_idx < legacy_cached_scan_result.num_results; result_idx++) { + for (int32_t result_idx = 0; result_idx < legacy_cached_scan_result.num_results; result_idx++) { StaScanResult hidl_scan_result; - if (!convertLegacyGscanResultToHidl( - legacy_cached_scan_result.results[result_idx], false, - &hidl_scan_result)) { + if (!convertLegacyGscanResultToHidl(legacy_cached_scan_result.results[result_idx], false, + &hidl_scan_result)) { return false; } hidl_scan_results.push_back(hidl_scan_result); @@ -786,17 +738,15 @@ bool convertLegacyCachedGscanResultsToHidl( } bool convertLegacyVectorOfCachedGscanResultsToHidl( - const std::vector<legacy_hal::wifi_cached_scan_results>& - legacy_cached_scan_results, - std::vector<StaScanData>* hidl_scan_datas) { + const std::vector<legacy_hal::wifi_cached_scan_results>& legacy_cached_scan_results, + std::vector<StaScanData>* hidl_scan_datas) { if (!hidl_scan_datas) { return false; } *hidl_scan_datas = {}; for (const auto& legacy_cached_scan_result : legacy_cached_scan_results) { StaScanData hidl_scan_data; - if (!convertLegacyCachedGscanResultsToHidl(legacy_cached_scan_result, - &hidl_scan_data)) { + if (!convertLegacyCachedGscanResultsToHidl(legacy_cached_scan_result, &hidl_scan_data)) { return false; } hidl_scan_datas->push_back(hidl_scan_data); @@ -804,8 +754,7 @@ bool convertLegacyVectorOfCachedGscanResultsToHidl( return true; } -WifiDebugTxPacketFate convertLegacyDebugTxPacketFateToHidl( - legacy_hal::wifi_tx_packet_fate fate) { +WifiDebugTxPacketFate convertLegacyDebugTxPacketFateToHidl(legacy_hal::wifi_tx_packet_fate fate) { switch (fate) { case legacy_hal::TX_PKT_FATE_ACKED: return WifiDebugTxPacketFate::ACKED; @@ -831,8 +780,7 @@ WifiDebugTxPacketFate convertLegacyDebugTxPacketFateToHidl( CHECK(false) << "Unknown legacy fate type: " << fate; } -WifiDebugRxPacketFate convertLegacyDebugRxPacketFateToHidl( - legacy_hal::wifi_rx_packet_fate fate) { +WifiDebugRxPacketFate convertLegacyDebugRxPacketFateToHidl(legacy_hal::wifi_rx_packet_fate fate) { switch (fate) { case legacy_hal::RX_PKT_FATE_SUCCESS: return WifiDebugRxPacketFate::SUCCESS; @@ -861,7 +809,7 @@ WifiDebugRxPacketFate convertLegacyDebugRxPacketFateToHidl( } WifiDebugPacketFateFrameType convertLegacyDebugPacketFateFrameTypeToHidl( - legacy_hal::frame_type type) { + legacy_hal::frame_type type) { switch (type) { case legacy_hal::FRAME_TYPE_UNKNOWN: return WifiDebugPacketFateFrameType::UNKNOWN; @@ -873,40 +821,36 @@ WifiDebugPacketFateFrameType convertLegacyDebugPacketFateFrameTypeToHidl( CHECK(false) << "Unknown legacy frame type: " << type; } -bool convertLegacyDebugPacketFateFrameToHidl( - const legacy_hal::frame_info& legacy_frame, - WifiDebugPacketFateFrameInfo* hidl_frame) { +bool convertLegacyDebugPacketFateFrameToHidl(const legacy_hal::frame_info& legacy_frame, + WifiDebugPacketFateFrameInfo* hidl_frame) { if (!hidl_frame) { return false; } *hidl_frame = {}; - hidl_frame->frameType = - convertLegacyDebugPacketFateFrameTypeToHidl(legacy_frame.payload_type); + hidl_frame->frameType = convertLegacyDebugPacketFateFrameTypeToHidl(legacy_frame.payload_type); hidl_frame->frameLen = legacy_frame.frame_len; hidl_frame->driverTimestampUsec = legacy_frame.driver_timestamp_usec; hidl_frame->firmwareTimestampUsec = legacy_frame.firmware_timestamp_usec; - const uint8_t* frame_begin = reinterpret_cast<const uint8_t*>( - legacy_frame.frame_content.ethernet_ii_bytes); + const uint8_t* frame_begin = + reinterpret_cast<const uint8_t*>(legacy_frame.frame_content.ethernet_ii_bytes); hidl_frame->frameContent = - std::vector<uint8_t>(frame_begin, frame_begin + legacy_frame.frame_len); + std::vector<uint8_t>(frame_begin, frame_begin + legacy_frame.frame_len); return true; } -bool convertLegacyDebugTxPacketFateToHidl( - const legacy_hal::wifi_tx_report& legacy_fate, - WifiDebugTxPacketFateReport* hidl_fate) { +bool convertLegacyDebugTxPacketFateToHidl(const legacy_hal::wifi_tx_report& legacy_fate, + WifiDebugTxPacketFateReport* hidl_fate) { if (!hidl_fate) { return false; } *hidl_fate = {}; hidl_fate->fate = convertLegacyDebugTxPacketFateToHidl(legacy_fate.fate); - return convertLegacyDebugPacketFateFrameToHidl(legacy_fate.frame_inf, - &hidl_fate->frameInfo); + return convertLegacyDebugPacketFateFrameToHidl(legacy_fate.frame_inf, &hidl_fate->frameInfo); } bool convertLegacyVectorOfDebugTxPacketFateToHidl( - const std::vector<legacy_hal::wifi_tx_report>& legacy_fates, - std::vector<WifiDebugTxPacketFateReport>* hidl_fates) { + const std::vector<legacy_hal::wifi_tx_report>& legacy_fates, + std::vector<WifiDebugTxPacketFateReport>* hidl_fates) { if (!hidl_fates) { return false; } @@ -921,21 +865,19 @@ bool convertLegacyVectorOfDebugTxPacketFateToHidl( return true; } -bool convertLegacyDebugRxPacketFateToHidl( - const legacy_hal::wifi_rx_report& legacy_fate, - WifiDebugRxPacketFateReport* hidl_fate) { +bool convertLegacyDebugRxPacketFateToHidl(const legacy_hal::wifi_rx_report& legacy_fate, + WifiDebugRxPacketFateReport* hidl_fate) { if (!hidl_fate) { return false; } *hidl_fate = {}; hidl_fate->fate = convertLegacyDebugRxPacketFateToHidl(legacy_fate.fate); - return convertLegacyDebugPacketFateFrameToHidl(legacy_fate.frame_inf, - &hidl_fate->frameInfo); + return convertLegacyDebugPacketFateFrameToHidl(legacy_fate.frame_inf, &hidl_fate->frameInfo); } bool convertLegacyVectorOfDebugRxPacketFateToHidl( - const std::vector<legacy_hal::wifi_rx_report>& legacy_fates, - std::vector<WifiDebugRxPacketFateReport>* hidl_fates) { + const std::vector<legacy_hal::wifi_rx_report>& legacy_fates, + std::vector<WifiDebugRxPacketFateReport>* hidl_fates) { if (!hidl_fates) { return false; } @@ -951,8 +893,8 @@ bool convertLegacyVectorOfDebugRxPacketFateToHidl( } bool convertLegacyLinkLayerRadioStatsToHidl( - const legacy_hal::LinkLayerRadioStats& legacy_radio_stat, - V1_5::StaLinkLayerRadioStats* hidl_radio_stat) { + const legacy_hal::LinkLayerRadioStats& legacy_radio_stat, + V1_5::StaLinkLayerRadioStats* hidl_radio_stat) { if (!hidl_radio_stat) { return false; } @@ -962,20 +904,13 @@ bool convertLegacyLinkLayerRadioStatsToHidl( hidl_radio_stat->V1_3.V1_0.onTimeInMs = legacy_radio_stat.stats.on_time; hidl_radio_stat->V1_3.V1_0.txTimeInMs = legacy_radio_stat.stats.tx_time; hidl_radio_stat->V1_3.V1_0.rxTimeInMs = legacy_radio_stat.stats.rx_time; - hidl_radio_stat->V1_3.V1_0.onTimeInMsForScan = - legacy_radio_stat.stats.on_time_scan; - hidl_radio_stat->V1_3.V1_0.txTimeInMsPerLevel = - legacy_radio_stat.tx_time_per_levels; - hidl_radio_stat->V1_3.onTimeInMsForNanScan = - legacy_radio_stat.stats.on_time_nbd; - hidl_radio_stat->V1_3.onTimeInMsForBgScan = - legacy_radio_stat.stats.on_time_gscan; - hidl_radio_stat->V1_3.onTimeInMsForRoamScan = - legacy_radio_stat.stats.on_time_roam_scan; - hidl_radio_stat->V1_3.onTimeInMsForPnoScan = - legacy_radio_stat.stats.on_time_pno_scan; - hidl_radio_stat->V1_3.onTimeInMsForHs20Scan = - legacy_radio_stat.stats.on_time_hs20; + hidl_radio_stat->V1_3.V1_0.onTimeInMsForScan = legacy_radio_stat.stats.on_time_scan; + hidl_radio_stat->V1_3.V1_0.txTimeInMsPerLevel = legacy_radio_stat.tx_time_per_levels; + hidl_radio_stat->V1_3.onTimeInMsForNanScan = legacy_radio_stat.stats.on_time_nbd; + hidl_radio_stat->V1_3.onTimeInMsForBgScan = legacy_radio_stat.stats.on_time_gscan; + hidl_radio_stat->V1_3.onTimeInMsForRoamScan = legacy_radio_stat.stats.on_time_roam_scan; + hidl_radio_stat->V1_3.onTimeInMsForPnoScan = legacy_radio_stat.stats.on_time_pno_scan; + hidl_radio_stat->V1_3.onTimeInMsForHs20Scan = legacy_radio_stat.stats.on_time_hs20; std::vector<V1_3::WifiChannelStats> hidl_channel_stats; @@ -989,10 +924,8 @@ bool convertLegacyLinkLayerRadioStatsToHidl( */ hidl_channel_stat.channel.width = WifiChannelWidthInMhz::WIDTH_20; hidl_channel_stat.channel.centerFreq = channel_stat.channel.center_freq; - hidl_channel_stat.channel.centerFreq0 = - channel_stat.channel.center_freq0; - hidl_channel_stat.channel.centerFreq1 = - channel_stat.channel.center_freq1; + hidl_channel_stat.channel.centerFreq0 = channel_stat.channel.center_freq0; + hidl_channel_stat.channel.centerFreq1 = channel_stat.channel.center_freq1; hidl_channel_stats.push_back(hidl_channel_stat); } @@ -1001,9 +934,8 @@ bool convertLegacyLinkLayerRadioStatsToHidl( return true; } -bool convertLegacyLinkLayerStatsToHidl( - const legacy_hal::LinkLayerStats& legacy_stats, - StaLinkLayerStats* hidl_stats) { +bool convertLegacyLinkLayerStatsToHidl(const legacy_hal::LinkLayerStats& legacy_stats, + V1_5::StaLinkLayerStats* hidl_stats) { if (!hidl_stats) { return false; } @@ -1012,77 +944,76 @@ bool convertLegacyLinkLayerStatsToHidl( hidl_stats->iface.V1_0.beaconRx = legacy_stats.iface.beacon_rx; hidl_stats->iface.V1_0.avgRssiMgmt = legacy_stats.iface.rssi_mgmt; hidl_stats->iface.V1_0.wmeBePktStats.rxMpdu = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].rx_mpdu; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].rx_mpdu; hidl_stats->iface.V1_0.wmeBePktStats.txMpdu = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].tx_mpdu; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].tx_mpdu; hidl_stats->iface.V1_0.wmeBePktStats.lostMpdu = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].mpdu_lost; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].mpdu_lost; hidl_stats->iface.V1_0.wmeBePktStats.retries = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].retries; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].retries; hidl_stats->iface.wmeBeContentionTimeStats.contentionTimeMinInUsec = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_min; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_min; hidl_stats->iface.wmeBeContentionTimeStats.contentionTimeMaxInUsec = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_max; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_max; hidl_stats->iface.wmeBeContentionTimeStats.contentionTimeAvgInUsec = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_avg; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_avg; hidl_stats->iface.wmeBeContentionTimeStats.contentionNumSamples = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_num_samples; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_num_samples; hidl_stats->iface.V1_0.wmeBkPktStats.rxMpdu = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].rx_mpdu; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].rx_mpdu; hidl_stats->iface.V1_0.wmeBkPktStats.txMpdu = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].tx_mpdu; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].tx_mpdu; hidl_stats->iface.V1_0.wmeBkPktStats.lostMpdu = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].mpdu_lost; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].mpdu_lost; hidl_stats->iface.V1_0.wmeBkPktStats.retries = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].retries; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].retries; hidl_stats->iface.wmeBkContentionTimeStats.contentionTimeMinInUsec = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_min; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_min; hidl_stats->iface.wmeBkContentionTimeStats.contentionTimeMaxInUsec = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_max; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_max; hidl_stats->iface.wmeBkContentionTimeStats.contentionTimeAvgInUsec = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_avg; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_avg; hidl_stats->iface.wmeBkContentionTimeStats.contentionNumSamples = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_num_samples; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_num_samples; hidl_stats->iface.V1_0.wmeViPktStats.rxMpdu = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].rx_mpdu; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].rx_mpdu; hidl_stats->iface.V1_0.wmeViPktStats.txMpdu = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].tx_mpdu; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].tx_mpdu; hidl_stats->iface.V1_0.wmeViPktStats.lostMpdu = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].mpdu_lost; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].mpdu_lost; hidl_stats->iface.V1_0.wmeViPktStats.retries = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].retries; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].retries; hidl_stats->iface.wmeViContentionTimeStats.contentionTimeMinInUsec = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_min; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_min; hidl_stats->iface.wmeViContentionTimeStats.contentionTimeMaxInUsec = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_max; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_max; hidl_stats->iface.wmeViContentionTimeStats.contentionTimeAvgInUsec = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_avg; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_avg; hidl_stats->iface.wmeViContentionTimeStats.contentionNumSamples = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_num_samples; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_num_samples; hidl_stats->iface.V1_0.wmeVoPktStats.rxMpdu = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].rx_mpdu; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].rx_mpdu; hidl_stats->iface.V1_0.wmeVoPktStats.txMpdu = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].tx_mpdu; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].tx_mpdu; hidl_stats->iface.V1_0.wmeVoPktStats.lostMpdu = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].mpdu_lost; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].mpdu_lost; hidl_stats->iface.V1_0.wmeVoPktStats.retries = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].retries; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].retries; hidl_stats->iface.wmeVoContentionTimeStats.contentionTimeMinInUsec = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_min; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_min; hidl_stats->iface.wmeVoContentionTimeStats.contentionTimeMaxInUsec = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_max; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_max; hidl_stats->iface.wmeVoContentionTimeStats.contentionTimeAvgInUsec = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_avg; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_avg; hidl_stats->iface.wmeVoContentionTimeStats.contentionNumSamples = - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_num_samples; + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_num_samples; hidl_stats->iface.timeSliceDutyCycleInPercent = - legacy_stats.iface.info.time_slicing_duty_cycle_percent; + legacy_stats.iface.info.time_slicing_duty_cycle_percent; // peer info legacy_stats conversion. - std::vector<StaPeerInfo> hidl_peers_info_stats; + std::vector<V1_5::StaPeerInfo> hidl_peers_info_stats; for (const auto& legacy_peer_info_stats : legacy_stats.peers) { - StaPeerInfo hidl_peer_info_stats; - if (!convertLegacyPeerInfoStatsToHidl(legacy_peer_info_stats, - &hidl_peer_info_stats)) { + V1_5::StaPeerInfo hidl_peer_info_stats; + if (!convertLegacyPeerInfoStatsToHidl(legacy_peer_info_stats, &hidl_peer_info_stats)) { return false; } hidl_peers_info_stats.push_back(hidl_peer_info_stats); @@ -1092,8 +1023,7 @@ bool convertLegacyLinkLayerStatsToHidl( std::vector<V1_5::StaLinkLayerRadioStats> hidl_radios_stats; for (const auto& legacy_radio_stats : legacy_stats.radios) { V1_5::StaLinkLayerRadioStats hidl_radio_stats; - if (!convertLegacyLinkLayerRadioStatsToHidl(legacy_radio_stats, - &hidl_radio_stats)) { + if (!convertLegacyLinkLayerRadioStatsToHidl(legacy_radio_stats, &hidl_radio_stats)) { return false; } hidl_radios_stats.push_back(hidl_radio_stats); @@ -1105,23 +1035,19 @@ bool convertLegacyLinkLayerStatsToHidl( return true; } -bool convertLegacyPeerInfoStatsToHidl( - const legacy_hal::WifiPeerInfo& legacy_peer_info_stats, - StaPeerInfo* hidl_peer_info_stats) { +bool convertLegacyPeerInfoStatsToHidl(const legacy_hal::WifiPeerInfo& legacy_peer_info_stats, + V1_5::StaPeerInfo* hidl_peer_info_stats) { if (!hidl_peer_info_stats) { return false; } *hidl_peer_info_stats = {}; - hidl_peer_info_stats->staCount = - legacy_peer_info_stats.peer_info.bssload.sta_count; - hidl_peer_info_stats->chanUtil = - legacy_peer_info_stats.peer_info.bssload.chan_util; + hidl_peer_info_stats->staCount = legacy_peer_info_stats.peer_info.bssload.sta_count; + hidl_peer_info_stats->chanUtil = legacy_peer_info_stats.peer_info.bssload.chan_util; - std::vector<StaRateStat> hidlRateStats; + std::vector<V1_5::StaRateStat> hidlRateStats; for (const auto& legacy_rate_stats : legacy_peer_info_stats.rate_stats) { - StaRateStat rateStat; - if (!convertLegacyWifiRateInfoToHidl(legacy_rate_stats.rate, - &rateStat.rateInfo)) { + V1_5::StaRateStat rateStat; + if (!convertLegacyWifiRateInfoToHidl(legacy_rate_stats.rate, &rateStat.rateInfo)) { return false; } rateStat.txMpdu = legacy_rate_stats.tx_mpdu; @@ -1135,8 +1061,8 @@ bool convertLegacyPeerInfoStatsToHidl( } bool convertLegacyRoamingCapabilitiesToHidl( - const legacy_hal::wifi_roaming_capabilities& legacy_caps, - StaRoamingCapabilities* hidl_caps) { + const legacy_hal::wifi_roaming_capabilities& legacy_caps, + StaRoamingCapabilities* hidl_caps) { if (!hidl_caps) { return false; } @@ -1146,9 +1072,8 @@ bool convertLegacyRoamingCapabilitiesToHidl( return true; } -bool convertHidlRoamingConfigToLegacy( - const StaRoamingConfig& hidl_config, - legacy_hal::wifi_roaming_config* legacy_config) { +bool convertHidlRoamingConfigToLegacy(const StaRoamingConfig& hidl_config, + legacy_hal::wifi_roaming_config* legacy_config) { if (!legacy_config) { return false; } @@ -1168,15 +1093,13 @@ bool convertHidlRoamingConfigToLegacy( for (const auto& ssid : hidl_config.ssidWhitelist) { CHECK(ssid.size() <= sizeof(legacy_hal::ssid_t::ssid_str)); legacy_config->whitelist_ssid[i].length = ssid.size(); - memcpy(legacy_config->whitelist_ssid[i].ssid_str, ssid.data(), - ssid.size()); + memcpy(legacy_config->whitelist_ssid[i].ssid_str, ssid.data(), ssid.size()); i++; } return true; } -legacy_hal::fw_roaming_state_t convertHidlRoamingStateToLegacy( - StaRoamingState state) { +legacy_hal::fw_roaming_state_t convertHidlRoamingStateToLegacy(StaRoamingState state) { switch (state) { case StaRoamingState::ENABLED: return legacy_hal::ROAMING_ENABLE; @@ -1198,8 +1121,7 @@ legacy_hal::NanMatchAlg convertHidlNanMatchAlgToLegacy(NanMatchAlg type) { CHECK(false); } -legacy_hal::NanPublishType convertHidlNanPublishTypeToLegacy( - NanPublishType type) { +legacy_hal::NanPublishType convertHidlNanPublishTypeToLegacy(NanPublishType type) { switch (type) { case NanPublishType::UNSOLICITED: return legacy_hal::NAN_PUBLISH_TYPE_UNSOLICITED; @@ -1221,8 +1143,7 @@ legacy_hal::NanTxType convertHidlNanTxTypeToLegacy(NanTxType type) { CHECK(false); } -legacy_hal::NanSubscribeType convertHidlNanSubscribeTypeToLegacy( - NanSubscribeType type) { +legacy_hal::NanSubscribeType convertHidlNanSubscribeTypeToLegacy(NanSubscribeType type) { switch (type) { case NanSubscribeType::PASSIVE: return legacy_hal::NAN_SUBSCRIBE_TYPE_PASSIVE; @@ -1243,7 +1164,7 @@ legacy_hal::NanSRFType convertHidlNanSrfTypeToLegacy(NanSrfType type) { } legacy_hal::NanDataPathChannelCfg convertHidlNanDataPathChannelCfgToLegacy( - NanDataPathChannelCfg type) { + NanDataPathChannelCfg type) { switch (type) { case NanDataPathChannelCfg::CHANNEL_NOT_REQUESTED: return legacy_hal::NAN_DP_CHANNEL_NOT_REQUESTED; @@ -1287,39 +1208,36 @@ NanStatusType convertLegacyNanStatusTypeToHidl(legacy_hal::NanStatusType type) { CHECK(false); } -void convertToWifiNanStatus(legacy_hal::NanStatusType type, const char* str, - size_t max_len, WifiNanStatus* wifiNanStatus) { +void convertToWifiNanStatus(legacy_hal::NanStatusType type, const char* str, size_t max_len, + WifiNanStatus* wifiNanStatus) { wifiNanStatus->status = convertLegacyNanStatusTypeToHidl(type); wifiNanStatus->description = safeConvertChar(str, max_len); } -bool convertHidlNanEnableRequestToLegacy( - const V1_4::NanEnableRequest& hidl_request, - legacy_hal::NanEnableRequest* legacy_request) { +bool convertHidlNanEnableRequestToLegacy(const V1_4::NanEnableRequest& hidl_request, + legacy_hal::NanEnableRequest* legacy_request) { if (!legacy_request) { - LOG(ERROR) - << "convertHidlNanEnableRequestToLegacy: null legacy_request"; + LOG(ERROR) << "convertHidlNanEnableRequestToLegacy: null legacy_request"; return false; } *legacy_request = {}; legacy_request->config_2dot4g_support = 1; legacy_request->support_2dot4g_val = - hidl_request.operateInBand[(size_t)NanBandIndex::NAN_BAND_24GHZ]; + hidl_request.operateInBand[(size_t)NanBandIndex::NAN_BAND_24GHZ]; legacy_request->config_support_5g = 1; legacy_request->support_5g_val = - hidl_request.operateInBand[(size_t)NanBandIndex::NAN_BAND_5GHZ]; + hidl_request.operateInBand[(size_t)NanBandIndex::NAN_BAND_5GHZ]; legacy_request->config_hop_count_limit = 1; legacy_request->hop_count_limit_val = hidl_request.hopCountMax; legacy_request->master_pref = hidl_request.configParams.masterPref; legacy_request->discovery_indication_cfg = 0; legacy_request->discovery_indication_cfg |= - hidl_request.configParams.disableDiscoveryAddressChangeIndication ? 0x1 - : 0x0; + hidl_request.configParams.disableDiscoveryAddressChangeIndication ? 0x1 : 0x0; legacy_request->discovery_indication_cfg |= - hidl_request.configParams.disableStartedClusterIndication ? 0x2 : 0x0; + hidl_request.configParams.disableStartedClusterIndication ? 0x2 : 0x0; legacy_request->discovery_indication_cfg |= - hidl_request.configParams.disableJoinedClusterIndication ? 0x4 : 0x0; + hidl_request.configParams.disableJoinedClusterIndication ? 0x4 : 0x0; legacy_request->config_sid_beacon = 1; if (hidl_request.configParams.numberOfPublishServiceIdsInBeacon > 127) { LOG(ERROR) << "convertHidlNanEnableRequestToLegacy: " @@ -1327,9 +1245,8 @@ bool convertHidlNanEnableRequestToLegacy( return false; } legacy_request->sid_beacon_val = - (hidl_request.configParams.includePublishServiceIdsInBeacon ? 0x1 - : 0x0) | - (hidl_request.configParams.numberOfPublishServiceIdsInBeacon << 1); + (hidl_request.configParams.includePublishServiceIdsInBeacon ? 0x1 : 0x0) | + (hidl_request.configParams.numberOfPublishServiceIdsInBeacon << 1); legacy_request->config_subscribe_sid_beacon = 1; if (hidl_request.configParams.numberOfSubscribeServiceIdsInBeacon > 127) { LOG(ERROR) << "convertHidlNanEnableRequestToLegacy: " @@ -1337,15 +1254,13 @@ bool convertHidlNanEnableRequestToLegacy( return false; } legacy_request->subscribe_sid_beacon_val = - (hidl_request.configParams.includeSubscribeServiceIdsInBeacon ? 0x1 - : 0x0) | - (hidl_request.configParams.numberOfSubscribeServiceIdsInBeacon << 1); + (hidl_request.configParams.includeSubscribeServiceIdsInBeacon ? 0x1 : 0x0) | + (hidl_request.configParams.numberOfSubscribeServiceIdsInBeacon << 1); legacy_request->config_rssi_window_size = 1; - legacy_request->rssi_window_size_val = - hidl_request.configParams.rssiWindowSize; + legacy_request->rssi_window_size_val = hidl_request.configParams.rssiWindowSize; legacy_request->config_disc_mac_addr_randomization = 1; legacy_request->disc_mac_addr_rand_interval_sec = - hidl_request.configParams.macAddressRandomizationIntervalSec; + hidl_request.configParams.macAddressRandomizationIntervalSec; legacy_request->config_2dot4g_rssi_close = 1; if (hidl_request.configParams.bandSpecificConfig.size() != 3) { LOG(ERROR) << "convertHidlNanEnableRequestToLegacy: " @@ -1353,134 +1268,93 @@ bool convertHidlNanEnableRequestToLegacy( return false; } legacy_request->rssi_close_2dot4g_val = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] - .rssiClose; + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] + .rssiClose; legacy_request->config_2dot4g_rssi_middle = 1; legacy_request->rssi_middle_2dot4g_val = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] - .rssiMiddle; + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] + .rssiMiddle; legacy_request->config_2dot4g_rssi_proximity = 1; legacy_request->rssi_proximity_2dot4g_val = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] - .rssiCloseProximity; + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] + .rssiCloseProximity; legacy_request->config_scan_params = 1; - legacy_request->scan_params_val - .dwell_time[legacy_hal::NAN_CHANNEL_24G_BAND] = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] - .dwellTimeMs; - legacy_request->scan_params_val - .scan_period[legacy_hal::NAN_CHANNEL_24G_BAND] = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] - .scanPeriodSec; + legacy_request->scan_params_val.dwell_time[legacy_hal::NAN_CHANNEL_24G_BAND] = + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] + .dwellTimeMs; + legacy_request->scan_params_val.scan_period[legacy_hal::NAN_CHANNEL_24G_BAND] = + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] + .scanPeriodSec; legacy_request->config_dw.config_2dot4g_dw_band = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] - .validDiscoveryWindowIntervalVal; + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] + .validDiscoveryWindowIntervalVal; legacy_request->config_dw.dw_2dot4g_interval_val = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] - .discoveryWindowIntervalVal; + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] + .discoveryWindowIntervalVal; legacy_request->config_5g_rssi_close = 1; legacy_request->rssi_close_5g_val = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .rssiClose; + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] + .rssiClose; legacy_request->config_5g_rssi_middle = 1; legacy_request->rssi_middle_5g_val = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .rssiMiddle; + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] + .rssiMiddle; legacy_request->config_5g_rssi_close_proximity = 1; legacy_request->rssi_close_proximity_5g_val = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .rssiCloseProximity; - legacy_request->scan_params_val - .dwell_time[legacy_hal::NAN_CHANNEL_5G_BAND_LOW] = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .dwellTimeMs; - legacy_request->scan_params_val - .scan_period[legacy_hal::NAN_CHANNEL_5G_BAND_LOW] = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .scanPeriodSec; - legacy_request->scan_params_val - .dwell_time[legacy_hal::NAN_CHANNEL_5G_BAND_HIGH] = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .dwellTimeMs; - legacy_request->scan_params_val - .scan_period[legacy_hal::NAN_CHANNEL_5G_BAND_HIGH] = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .scanPeriodSec; + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] + .rssiCloseProximity; + legacy_request->scan_params_val.dwell_time[legacy_hal::NAN_CHANNEL_5G_BAND_LOW] = + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] + .dwellTimeMs; + legacy_request->scan_params_val.scan_period[legacy_hal::NAN_CHANNEL_5G_BAND_LOW] = + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] + .scanPeriodSec; + legacy_request->scan_params_val.dwell_time[legacy_hal::NAN_CHANNEL_5G_BAND_HIGH] = + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] + .dwellTimeMs; + legacy_request->scan_params_val.scan_period[legacy_hal::NAN_CHANNEL_5G_BAND_HIGH] = + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] + .scanPeriodSec; legacy_request->config_dw.config_5g_dw_band = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .validDiscoveryWindowIntervalVal; + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] + .validDiscoveryWindowIntervalVal; legacy_request->config_dw.dw_5g_interval_val = - hidl_request.configParams - .bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .discoveryWindowIntervalVal; + hidl_request.configParams.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] + .discoveryWindowIntervalVal; if (hidl_request.debugConfigs.validClusterIdVals) { - legacy_request->cluster_low = - hidl_request.debugConfigs.clusterIdBottomRangeVal; - legacy_request->cluster_high = - hidl_request.debugConfigs.clusterIdTopRangeVal; + legacy_request->cluster_low = hidl_request.debugConfigs.clusterIdBottomRangeVal; + legacy_request->cluster_high = hidl_request.debugConfigs.clusterIdTopRangeVal; } else { // need 'else' since not configurable in legacy HAL legacy_request->cluster_low = 0x0000; legacy_request->cluster_high = 0xFFFF; } - legacy_request->config_intf_addr = - hidl_request.debugConfigs.validIntfAddrVal; - memcpy(legacy_request->intf_addr_val, - hidl_request.debugConfigs.intfAddrVal.data(), 6); + legacy_request->config_intf_addr = hidl_request.debugConfigs.validIntfAddrVal; + memcpy(legacy_request->intf_addr_val, hidl_request.debugConfigs.intfAddrVal.data(), 6); legacy_request->config_oui = hidl_request.debugConfigs.validOuiVal; legacy_request->oui_val = hidl_request.debugConfigs.ouiVal; legacy_request->config_random_factor_force = - hidl_request.debugConfigs.validRandomFactorForceVal; - legacy_request->random_factor_force_val = - hidl_request.debugConfigs.randomFactorForceVal; - legacy_request->config_hop_count_force = - hidl_request.debugConfigs.validHopCountForceVal; - legacy_request->hop_count_force_val = - hidl_request.debugConfigs.hopCountForceVal; - legacy_request->config_24g_channel = - hidl_request.debugConfigs.validDiscoveryChannelVal; + hidl_request.debugConfigs.validRandomFactorForceVal; + legacy_request->random_factor_force_val = hidl_request.debugConfigs.randomFactorForceVal; + legacy_request->config_hop_count_force = hidl_request.debugConfigs.validHopCountForceVal; + legacy_request->hop_count_force_val = hidl_request.debugConfigs.hopCountForceVal; + legacy_request->config_24g_channel = hidl_request.debugConfigs.validDiscoveryChannelVal; legacy_request->channel_24g_val = - hidl_request.debugConfigs - .discoveryChannelMhzVal[(size_t)NanBandIndex::NAN_BAND_24GHZ]; - legacy_request->config_5g_channel = - hidl_request.debugConfigs.validDiscoveryChannelVal; + hidl_request.debugConfigs.discoveryChannelMhzVal[(size_t)NanBandIndex::NAN_BAND_24GHZ]; + legacy_request->config_5g_channel = hidl_request.debugConfigs.validDiscoveryChannelVal; legacy_request->channel_5g_val = - hidl_request.debugConfigs - .discoveryChannelMhzVal[(size_t)NanBandIndex::NAN_BAND_5GHZ]; - legacy_request->config_2dot4g_beacons = - hidl_request.debugConfigs.validUseBeaconsInBandVal; + hidl_request.debugConfigs.discoveryChannelMhzVal[(size_t)NanBandIndex::NAN_BAND_5GHZ]; + legacy_request->config_2dot4g_beacons = hidl_request.debugConfigs.validUseBeaconsInBandVal; legacy_request->beacon_2dot4g_val = - hidl_request.debugConfigs - .useBeaconsInBandVal[(size_t)NanBandIndex::NAN_BAND_24GHZ]; - legacy_request->config_5g_beacons = - hidl_request.debugConfigs.validUseBeaconsInBandVal; + hidl_request.debugConfigs.useBeaconsInBandVal[(size_t)NanBandIndex::NAN_BAND_24GHZ]; + legacy_request->config_5g_beacons = hidl_request.debugConfigs.validUseBeaconsInBandVal; legacy_request->beacon_5g_val = - hidl_request.debugConfigs - .useBeaconsInBandVal[(size_t)NanBandIndex::NAN_BAND_5GHZ]; - legacy_request->config_2dot4g_sdf = - hidl_request.debugConfigs.validUseSdfInBandVal; + hidl_request.debugConfigs.useBeaconsInBandVal[(size_t)NanBandIndex::NAN_BAND_5GHZ]; + legacy_request->config_2dot4g_sdf = hidl_request.debugConfigs.validUseSdfInBandVal; legacy_request->sdf_2dot4g_val = - hidl_request.debugConfigs - .useSdfInBandVal[(size_t)NanBandIndex::NAN_BAND_24GHZ]; - legacy_request->config_5g_sdf = - hidl_request.debugConfigs.validUseSdfInBandVal; + hidl_request.debugConfigs.useSdfInBandVal[(size_t)NanBandIndex::NAN_BAND_24GHZ]; + legacy_request->config_5g_sdf = hidl_request.debugConfigs.validUseSdfInBandVal; legacy_request->sdf_5g_val = - hidl_request.debugConfigs - .useSdfInBandVal[(size_t)NanBandIndex::NAN_BAND_5GHZ]; + hidl_request.debugConfigs.useSdfInBandVal[(size_t)NanBandIndex::NAN_BAND_5GHZ]; /* TODO: b/145609058 * Missing updates needed to legacy_hal::NanEnableRequest and conversion to @@ -1489,13 +1363,11 @@ bool convertHidlNanEnableRequestToLegacy( return true; } -bool convertHidlNanEnableRequest_1_4ToLegacy( - const V1_4::NanEnableRequest& hidl_request1, - const NanConfigRequestSupplemental& hidl_request2, - legacy_hal::NanEnableRequest* legacy_request) { +bool convertHidlNanEnableRequest_1_4ToLegacy(const V1_4::NanEnableRequest& hidl_request1, + const NanConfigRequestSupplemental& hidl_request2, + legacy_hal::NanEnableRequest* legacy_request) { if (!legacy_request) { - LOG(ERROR) - << "convertHidlNanEnableRequest_1_4ToLegacy: null legacy_request"; + LOG(ERROR) << "convertHidlNanEnableRequest_1_4ToLegacy: null legacy_request"; return false; } @@ -1505,71 +1377,60 @@ bool convertHidlNanEnableRequest_1_4ToLegacy( } legacy_request->config_discovery_beacon_int = 1; - legacy_request->discovery_beacon_interval = - hidl_request2.V1_2.discoveryBeaconIntervalMs; + legacy_request->discovery_beacon_interval = hidl_request2.V1_2.discoveryBeaconIntervalMs; legacy_request->config_nss = 1; legacy_request->nss = hidl_request2.V1_2.numberOfSpatialStreamsInDiscovery; legacy_request->config_dw_early_termination = 1; legacy_request->enable_dw_termination = - hidl_request2.V1_2.enableDiscoveryWindowEarlyTermination; + hidl_request2.V1_2.enableDiscoveryWindowEarlyTermination; legacy_request->config_enable_ranging = 1; legacy_request->enable_ranging = hidl_request2.V1_2.enableRanging; return true; } -bool convertHidlNanEnableRequest_1_5ToLegacy( - const V1_4::NanEnableRequest& hidl_request1, - const NanConfigRequestSupplemental& hidl_request2, - legacy_hal::NanEnableRequest* legacy_request) { +bool convertHidlNanEnableRequest_1_5ToLegacy(const V1_4::NanEnableRequest& hidl_request1, + const NanConfigRequestSupplemental& hidl_request2, + legacy_hal::NanEnableRequest* legacy_request) { if (!legacy_request) { - LOG(ERROR) - << "convertHidlNanEnableRequest_1_5ToLegacy: null legacy_request"; + LOG(ERROR) << "convertHidlNanEnableRequest_1_5ToLegacy: null legacy_request"; return false; } *legacy_request = {}; - if (!convertHidlNanEnableRequest_1_4ToLegacy(hidl_request1, hidl_request2, - legacy_request)) { + if (!convertHidlNanEnableRequest_1_4ToLegacy(hidl_request1, hidl_request2, legacy_request)) { return false; } legacy_request->config_enable_instant_mode = 1; - legacy_request->enable_instant_mode = - hidl_request2.enableInstantCommunicationMode; + legacy_request->enable_instant_mode = hidl_request2.enableInstantCommunicationMode; return true; } -bool convertHidlNanConfigRequest_1_5ToLegacy( - const V1_4::NanConfigRequest& hidl_request1, - const NanConfigRequestSupplemental& hidl_request2, - legacy_hal::NanConfigRequest* legacy_request) { +bool convertHidlNanConfigRequest_1_5ToLegacy(const V1_4::NanConfigRequest& hidl_request1, + const NanConfigRequestSupplemental& hidl_request2, + legacy_hal::NanConfigRequest* legacy_request) { if (!legacy_request) { - LOG(ERROR) - << "convertHidlNanConfigRequest_1_5ToLegacy: null legacy_request"; + LOG(ERROR) << "convertHidlNanConfigRequest_1_5ToLegacy: null legacy_request"; return false; } *legacy_request = {}; - if (!convertHidlNanConfigRequest_1_4ToLegacy(hidl_request1, hidl_request2, - legacy_request)) { + if (!convertHidlNanConfigRequest_1_4ToLegacy(hidl_request1, hidl_request2, legacy_request)) { return false; } legacy_request->config_enable_instant_mode = 1; - legacy_request->enable_instant_mode = - hidl_request2.enableInstantCommunicationMode; + legacy_request->enable_instant_mode = hidl_request2.enableInstantCommunicationMode; return true; } -bool convertHidlNanPublishRequestToLegacy( - const NanPublishRequest& hidl_request, - legacy_hal::NanPublishRequest* legacy_request) { +bool convertHidlNanPublishRequestToLegacy(const NanPublishRequest& hidl_request, + legacy_hal::NanPublishRequest* legacy_request) { if (!legacy_request) { - LOG(ERROR) - << "convertHidlNanPublishRequestToLegacy: null legacy_request"; + LOG(ERROR) << "convertHidlNanPublishRequestToLegacy: null legacy_request"; return false; } *legacy_request = {}; @@ -1578,22 +1439,18 @@ bool convertHidlNanPublishRequestToLegacy( legacy_request->ttl = hidl_request.baseConfigs.ttlSec; legacy_request->period = hidl_request.baseConfigs.discoveryWindowPeriod; legacy_request->publish_count = hidl_request.baseConfigs.discoveryCount; - legacy_request->service_name_len = - hidl_request.baseConfigs.serviceName.size(); + legacy_request->service_name_len = hidl_request.baseConfigs.serviceName.size(); if (legacy_request->service_name_len > NAN_MAX_SERVICE_NAME_LEN) { LOG(ERROR) << "convertHidlNanPublishRequestToLegacy: service_name_len " "too large"; return false; } - memcpy(legacy_request->service_name, - hidl_request.baseConfigs.serviceName.data(), + memcpy(legacy_request->service_name, hidl_request.baseConfigs.serviceName.data(), legacy_request->service_name_len); - legacy_request->publish_match_indicator = convertHidlNanMatchAlgToLegacy( - hidl_request.baseConfigs.discoveryMatchIndicator); - legacy_request->service_specific_info_len = - hidl_request.baseConfigs.serviceSpecificInfo.size(); - if (legacy_request->service_specific_info_len > - NAN_MAX_SERVICE_SPECIFIC_INFO_LEN) { + legacy_request->publish_match_indicator = + convertHidlNanMatchAlgToLegacy(hidl_request.baseConfigs.discoveryMatchIndicator); + legacy_request->service_specific_info_len = hidl_request.baseConfigs.serviceSpecificInfo.size(); + if (legacy_request->service_specific_info_len > NAN_MAX_SERVICE_SPECIFIC_INFO_LEN) { LOG(ERROR) << "convertHidlNanPublishRequestToLegacy: " "service_specific_info_len too large"; return false; @@ -1602,9 +1459,8 @@ bool convertHidlNanPublishRequestToLegacy( hidl_request.baseConfigs.serviceSpecificInfo.data(), legacy_request->service_specific_info_len); legacy_request->sdea_service_specific_info_len = - hidl_request.baseConfigs.extendedServiceSpecificInfo.size(); - if (legacy_request->sdea_service_specific_info_len > - NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN) { + hidl_request.baseConfigs.extendedServiceSpecificInfo.size(); + if (legacy_request->sdea_service_specific_info_len > NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN) { LOG(ERROR) << "convertHidlNanPublishRequestToLegacy: " "sdea_service_specific_info_len too large"; return false; @@ -1612,49 +1468,38 @@ bool convertHidlNanPublishRequestToLegacy( memcpy(legacy_request->sdea_service_specific_info, hidl_request.baseConfigs.extendedServiceSpecificInfo.data(), legacy_request->sdea_service_specific_info_len); - legacy_request->rx_match_filter_len = - hidl_request.baseConfigs.rxMatchFilter.size(); + legacy_request->rx_match_filter_len = hidl_request.baseConfigs.rxMatchFilter.size(); if (legacy_request->rx_match_filter_len > NAN_MAX_MATCH_FILTER_LEN) { LOG(ERROR) << "convertHidlNanPublishRequestToLegacy: " "rx_match_filter_len too large"; return false; } - memcpy(legacy_request->rx_match_filter, - hidl_request.baseConfigs.rxMatchFilter.data(), + memcpy(legacy_request->rx_match_filter, hidl_request.baseConfigs.rxMatchFilter.data(), legacy_request->rx_match_filter_len); - legacy_request->tx_match_filter_len = - hidl_request.baseConfigs.txMatchFilter.size(); + legacy_request->tx_match_filter_len = hidl_request.baseConfigs.txMatchFilter.size(); if (legacy_request->tx_match_filter_len > NAN_MAX_MATCH_FILTER_LEN) { LOG(ERROR) << "convertHidlNanPublishRequestToLegacy: " "tx_match_filter_len too large"; return false; } - memcpy(legacy_request->tx_match_filter, - hidl_request.baseConfigs.txMatchFilter.data(), + memcpy(legacy_request->tx_match_filter, hidl_request.baseConfigs.txMatchFilter.data(), legacy_request->tx_match_filter_len); - legacy_request->rssi_threshold_flag = - hidl_request.baseConfigs.useRssiThreshold; + legacy_request->rssi_threshold_flag = hidl_request.baseConfigs.useRssiThreshold; legacy_request->recv_indication_cfg = 0; legacy_request->recv_indication_cfg |= - hidl_request.baseConfigs.disableDiscoveryTerminationIndication ? 0x1 - : 0x0; + hidl_request.baseConfigs.disableDiscoveryTerminationIndication ? 0x1 : 0x0; legacy_request->recv_indication_cfg |= - hidl_request.baseConfigs.disableMatchExpirationIndication ? 0x2 : 0x0; + hidl_request.baseConfigs.disableMatchExpirationIndication ? 0x2 : 0x0; legacy_request->recv_indication_cfg |= - hidl_request.baseConfigs.disableFollowupReceivedIndication ? 0x4 : 0x0; + hidl_request.baseConfigs.disableFollowupReceivedIndication ? 0x4 : 0x0; legacy_request->recv_indication_cfg |= 0x8; - legacy_request->cipher_type = - (unsigned int)hidl_request.baseConfigs.securityConfig.cipherType; - if (hidl_request.baseConfigs.securityConfig.securityType == - NanDataPathSecurityType::PMK) { - legacy_request->key_info.key_type = - legacy_hal::NAN_SECURITY_KEY_INPUT_PMK; + legacy_request->cipher_type = (unsigned int)hidl_request.baseConfigs.securityConfig.cipherType; + if (hidl_request.baseConfigs.securityConfig.securityType == NanDataPathSecurityType::PMK) { + legacy_request->key_info.key_type = legacy_hal::NAN_SECURITY_KEY_INPUT_PMK; legacy_request->key_info.body.pmk_info.pmk_len = - hidl_request.baseConfigs.securityConfig.pmk.size(); - if (legacy_request->key_info.body.pmk_info.pmk_len != - NAN_PMK_INFO_LEN) { - LOG(ERROR) - << "convertHidlNanPublishRequestToLegacy: invalid pmk_len"; + hidl_request.baseConfigs.securityConfig.pmk.size(); + if (legacy_request->key_info.body.pmk_info.pmk_len != NAN_PMK_INFO_LEN) { + LOG(ERROR) << "convertHidlNanPublishRequestToLegacy: invalid pmk_len"; return false; } memcpy(legacy_request->key_info.body.pmk_info.pmk, @@ -1663,10 +1508,9 @@ bool convertHidlNanPublishRequestToLegacy( } if (hidl_request.baseConfigs.securityConfig.securityType == NanDataPathSecurityType::PASSPHRASE) { - legacy_request->key_info.key_type = - legacy_hal::NAN_SECURITY_KEY_INPUT_PASSPHRASE; + legacy_request->key_info.key_type = legacy_hal::NAN_SECURITY_KEY_INPUT_PASSPHRASE; legacy_request->key_info.body.passphrase_info.passphrase_len = - hidl_request.baseConfigs.securityConfig.passphrase.size(); + hidl_request.baseConfigs.securityConfig.passphrase.size(); if (legacy_request->key_info.body.passphrase_info.passphrase_len < NAN_SECURITY_MIN_PASSPHRASE_LEN) { LOG(ERROR) << "convertHidlNanPublishRequestToLegacy: " @@ -1684,45 +1528,36 @@ bool convertHidlNanPublishRequestToLegacy( legacy_request->key_info.body.passphrase_info.passphrase_len); } legacy_request->sdea_params.security_cfg = - (hidl_request.baseConfigs.securityConfig.securityType != - NanDataPathSecurityType::OPEN) - ? legacy_hal::NAN_DP_CONFIG_SECURITY - : legacy_hal::NAN_DP_CONFIG_NO_SECURITY; - legacy_request->sdea_params.ranging_state = - hidl_request.baseConfigs.rangingRequired - ? legacy_hal::NAN_RANGING_ENABLE - : legacy_hal::NAN_RANGING_DISABLE; + (hidl_request.baseConfigs.securityConfig.securityType != NanDataPathSecurityType::OPEN) + ? legacy_hal::NAN_DP_CONFIG_SECURITY + : legacy_hal::NAN_DP_CONFIG_NO_SECURITY; + legacy_request->sdea_params.ranging_state = hidl_request.baseConfigs.rangingRequired + ? legacy_hal::NAN_RANGING_ENABLE + : legacy_hal::NAN_RANGING_DISABLE; legacy_request->ranging_cfg.ranging_interval_msec = - hidl_request.baseConfigs.rangingIntervalMsec; + hidl_request.baseConfigs.rangingIntervalMsec; legacy_request->ranging_cfg.config_ranging_indications = - hidl_request.baseConfigs.configRangingIndications; + hidl_request.baseConfigs.configRangingIndications; legacy_request->ranging_cfg.distance_ingress_mm = - hidl_request.baseConfigs.distanceIngressCm * 10; - legacy_request->ranging_cfg.distance_egress_mm = - hidl_request.baseConfigs.distanceEgressCm * 10; - legacy_request->ranging_auto_response = - hidl_request.baseConfigs.rangingRequired - ? legacy_hal::NAN_RANGING_AUTO_RESPONSE_ENABLE - : legacy_hal::NAN_RANGING_AUTO_RESPONSE_DISABLE; - legacy_request->sdea_params.range_report = - legacy_hal::NAN_DISABLE_RANGE_REPORT; - legacy_request->publish_type = - convertHidlNanPublishTypeToLegacy(hidl_request.publishType); + hidl_request.baseConfigs.distanceIngressCm * 10; + legacy_request->ranging_cfg.distance_egress_mm = hidl_request.baseConfigs.distanceEgressCm * 10; + legacy_request->ranging_auto_response = hidl_request.baseConfigs.rangingRequired + ? legacy_hal::NAN_RANGING_AUTO_RESPONSE_ENABLE + : legacy_hal::NAN_RANGING_AUTO_RESPONSE_DISABLE; + legacy_request->sdea_params.range_report = legacy_hal::NAN_DISABLE_RANGE_REPORT; + legacy_request->publish_type = convertHidlNanPublishTypeToLegacy(hidl_request.publishType); legacy_request->tx_type = convertHidlNanTxTypeToLegacy(hidl_request.txType); - legacy_request->service_responder_policy = - hidl_request.autoAcceptDataPathRequests - ? legacy_hal::NAN_SERVICE_ACCEPT_POLICY_ALL - : legacy_hal::NAN_SERVICE_ACCEPT_POLICY_NONE; + legacy_request->service_responder_policy = hidl_request.autoAcceptDataPathRequests + ? legacy_hal::NAN_SERVICE_ACCEPT_POLICY_ALL + : legacy_hal::NAN_SERVICE_ACCEPT_POLICY_NONE; return true; } -bool convertHidlNanSubscribeRequestToLegacy( - const NanSubscribeRequest& hidl_request, - legacy_hal::NanSubscribeRequest* legacy_request) { +bool convertHidlNanSubscribeRequestToLegacy(const NanSubscribeRequest& hidl_request, + legacy_hal::NanSubscribeRequest* legacy_request) { if (!legacy_request) { - LOG(ERROR) - << "convertHidlNanSubscribeRequestToLegacy: legacy_request is null"; + LOG(ERROR) << "convertHidlNanSubscribeRequestToLegacy: legacy_request is null"; return false; } *legacy_request = {}; @@ -1731,22 +1566,18 @@ bool convertHidlNanSubscribeRequestToLegacy( legacy_request->ttl = hidl_request.baseConfigs.ttlSec; legacy_request->period = hidl_request.baseConfigs.discoveryWindowPeriod; legacy_request->subscribe_count = hidl_request.baseConfigs.discoveryCount; - legacy_request->service_name_len = - hidl_request.baseConfigs.serviceName.size(); + legacy_request->service_name_len = hidl_request.baseConfigs.serviceName.size(); if (legacy_request->service_name_len > NAN_MAX_SERVICE_NAME_LEN) { LOG(ERROR) << "convertHidlNanSubscribeRequestToLegacy: " "service_name_len too large"; return false; } - memcpy(legacy_request->service_name, - hidl_request.baseConfigs.serviceName.data(), + memcpy(legacy_request->service_name, hidl_request.baseConfigs.serviceName.data(), legacy_request->service_name_len); - legacy_request->subscribe_match_indicator = convertHidlNanMatchAlgToLegacy( - hidl_request.baseConfigs.discoveryMatchIndicator); - legacy_request->service_specific_info_len = - hidl_request.baseConfigs.serviceSpecificInfo.size(); - if (legacy_request->service_specific_info_len > - NAN_MAX_SERVICE_SPECIFIC_INFO_LEN) { + legacy_request->subscribe_match_indicator = + convertHidlNanMatchAlgToLegacy(hidl_request.baseConfigs.discoveryMatchIndicator); + legacy_request->service_specific_info_len = hidl_request.baseConfigs.serviceSpecificInfo.size(); + if (legacy_request->service_specific_info_len > NAN_MAX_SERVICE_SPECIFIC_INFO_LEN) { LOG(ERROR) << "convertHidlNanSubscribeRequestToLegacy: " "service_specific_info_len too large"; return false; @@ -1755,9 +1586,8 @@ bool convertHidlNanSubscribeRequestToLegacy( hidl_request.baseConfigs.serviceSpecificInfo.data(), legacy_request->service_specific_info_len); legacy_request->sdea_service_specific_info_len = - hidl_request.baseConfigs.extendedServiceSpecificInfo.size(); - if (legacy_request->sdea_service_specific_info_len > - NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN) { + hidl_request.baseConfigs.extendedServiceSpecificInfo.size(); + if (legacy_request->sdea_service_specific_info_len > NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN) { LOG(ERROR) << "convertHidlNanSubscribeRequestToLegacy: " "sdea_service_specific_info_len too large"; return false; @@ -1765,48 +1595,37 @@ bool convertHidlNanSubscribeRequestToLegacy( memcpy(legacy_request->sdea_service_specific_info, hidl_request.baseConfigs.extendedServiceSpecificInfo.data(), legacy_request->sdea_service_specific_info_len); - legacy_request->rx_match_filter_len = - hidl_request.baseConfigs.rxMatchFilter.size(); + legacy_request->rx_match_filter_len = hidl_request.baseConfigs.rxMatchFilter.size(); if (legacy_request->rx_match_filter_len > NAN_MAX_MATCH_FILTER_LEN) { LOG(ERROR) << "convertHidlNanSubscribeRequestToLegacy: " "rx_match_filter_len too large"; return false; } - memcpy(legacy_request->rx_match_filter, - hidl_request.baseConfigs.rxMatchFilter.data(), + memcpy(legacy_request->rx_match_filter, hidl_request.baseConfigs.rxMatchFilter.data(), legacy_request->rx_match_filter_len); - legacy_request->tx_match_filter_len = - hidl_request.baseConfigs.txMatchFilter.size(); + legacy_request->tx_match_filter_len = hidl_request.baseConfigs.txMatchFilter.size(); if (legacy_request->tx_match_filter_len > NAN_MAX_MATCH_FILTER_LEN) { LOG(ERROR) << "convertHidlNanSubscribeRequestToLegacy: " "tx_match_filter_len too large"; return false; } - memcpy(legacy_request->tx_match_filter, - hidl_request.baseConfigs.txMatchFilter.data(), + memcpy(legacy_request->tx_match_filter, hidl_request.baseConfigs.txMatchFilter.data(), legacy_request->tx_match_filter_len); - legacy_request->rssi_threshold_flag = - hidl_request.baseConfigs.useRssiThreshold; + legacy_request->rssi_threshold_flag = hidl_request.baseConfigs.useRssiThreshold; legacy_request->recv_indication_cfg = 0; legacy_request->recv_indication_cfg |= - hidl_request.baseConfigs.disableDiscoveryTerminationIndication ? 0x1 - : 0x0; + hidl_request.baseConfigs.disableDiscoveryTerminationIndication ? 0x1 : 0x0; legacy_request->recv_indication_cfg |= - hidl_request.baseConfigs.disableMatchExpirationIndication ? 0x2 : 0x0; + hidl_request.baseConfigs.disableMatchExpirationIndication ? 0x2 : 0x0; legacy_request->recv_indication_cfg |= - hidl_request.baseConfigs.disableFollowupReceivedIndication ? 0x4 : 0x0; - legacy_request->cipher_type = - (unsigned int)hidl_request.baseConfigs.securityConfig.cipherType; - if (hidl_request.baseConfigs.securityConfig.securityType == - NanDataPathSecurityType::PMK) { - legacy_request->key_info.key_type = - legacy_hal::NAN_SECURITY_KEY_INPUT_PMK; + hidl_request.baseConfigs.disableFollowupReceivedIndication ? 0x4 : 0x0; + legacy_request->cipher_type = (unsigned int)hidl_request.baseConfigs.securityConfig.cipherType; + if (hidl_request.baseConfigs.securityConfig.securityType == NanDataPathSecurityType::PMK) { + legacy_request->key_info.key_type = legacy_hal::NAN_SECURITY_KEY_INPUT_PMK; legacy_request->key_info.body.pmk_info.pmk_len = - hidl_request.baseConfigs.securityConfig.pmk.size(); - if (legacy_request->key_info.body.pmk_info.pmk_len != - NAN_PMK_INFO_LEN) { - LOG(ERROR) - << "convertHidlNanSubscribeRequestToLegacy: invalid pmk_len"; + hidl_request.baseConfigs.securityConfig.pmk.size(); + if (legacy_request->key_info.body.pmk_info.pmk_len != NAN_PMK_INFO_LEN) { + LOG(ERROR) << "convertHidlNanSubscribeRequestToLegacy: invalid pmk_len"; return false; } memcpy(legacy_request->key_info.body.pmk_info.pmk, @@ -1815,10 +1634,9 @@ bool convertHidlNanSubscribeRequestToLegacy( } if (hidl_request.baseConfigs.securityConfig.securityType == NanDataPathSecurityType::PASSPHRASE) { - legacy_request->key_info.key_type = - legacy_hal::NAN_SECURITY_KEY_INPUT_PASSPHRASE; + legacy_request->key_info.key_type = legacy_hal::NAN_SECURITY_KEY_INPUT_PASSPHRASE; legacy_request->key_info.body.passphrase_info.passphrase_len = - hidl_request.baseConfigs.securityConfig.passphrase.size(); + hidl_request.baseConfigs.securityConfig.passphrase.size(); if (legacy_request->key_info.body.passphrase_info.passphrase_len < NAN_SECURITY_MIN_PASSPHRASE_LEN) { LOG(ERROR) << "convertHidlNanSubscribeRequestToLegacy: " @@ -1836,43 +1654,34 @@ bool convertHidlNanSubscribeRequestToLegacy( legacy_request->key_info.body.passphrase_info.passphrase_len); } legacy_request->sdea_params.security_cfg = - (hidl_request.baseConfigs.securityConfig.securityType != - NanDataPathSecurityType::OPEN) - ? legacy_hal::NAN_DP_CONFIG_SECURITY - : legacy_hal::NAN_DP_CONFIG_NO_SECURITY; - legacy_request->sdea_params.ranging_state = - hidl_request.baseConfigs.rangingRequired - ? legacy_hal::NAN_RANGING_ENABLE - : legacy_hal::NAN_RANGING_DISABLE; + (hidl_request.baseConfigs.securityConfig.securityType != NanDataPathSecurityType::OPEN) + ? legacy_hal::NAN_DP_CONFIG_SECURITY + : legacy_hal::NAN_DP_CONFIG_NO_SECURITY; + legacy_request->sdea_params.ranging_state = hidl_request.baseConfigs.rangingRequired + ? legacy_hal::NAN_RANGING_ENABLE + : legacy_hal::NAN_RANGING_DISABLE; legacy_request->ranging_cfg.ranging_interval_msec = - hidl_request.baseConfigs.rangingIntervalMsec; + hidl_request.baseConfigs.rangingIntervalMsec; legacy_request->ranging_cfg.config_ranging_indications = - hidl_request.baseConfigs.configRangingIndications; + hidl_request.baseConfigs.configRangingIndications; legacy_request->ranging_cfg.distance_ingress_mm = - hidl_request.baseConfigs.distanceIngressCm * 10; - legacy_request->ranging_cfg.distance_egress_mm = - hidl_request.baseConfigs.distanceEgressCm * 10; - legacy_request->ranging_auto_response = - hidl_request.baseConfigs.rangingRequired - ? legacy_hal::NAN_RANGING_AUTO_RESPONSE_ENABLE - : legacy_hal::NAN_RANGING_AUTO_RESPONSE_DISABLE; - legacy_request->sdea_params.range_report = - legacy_hal::NAN_DISABLE_RANGE_REPORT; + hidl_request.baseConfigs.distanceIngressCm * 10; + legacy_request->ranging_cfg.distance_egress_mm = hidl_request.baseConfigs.distanceEgressCm * 10; + legacy_request->ranging_auto_response = hidl_request.baseConfigs.rangingRequired + ? legacy_hal::NAN_RANGING_AUTO_RESPONSE_ENABLE + : legacy_hal::NAN_RANGING_AUTO_RESPONSE_DISABLE; + legacy_request->sdea_params.range_report = legacy_hal::NAN_DISABLE_RANGE_REPORT; legacy_request->subscribe_type = - convertHidlNanSubscribeTypeToLegacy(hidl_request.subscribeType); - legacy_request->serviceResponseFilter = - convertHidlNanSrfTypeToLegacy(hidl_request.srfType); - legacy_request->serviceResponseInclude = - hidl_request.srfRespondIfInAddressSet - ? legacy_hal::NAN_SRF_INCLUDE_RESPOND - : legacy_hal::NAN_SRF_INCLUDE_DO_NOT_RESPOND; + convertHidlNanSubscribeTypeToLegacy(hidl_request.subscribeType); + legacy_request->serviceResponseFilter = convertHidlNanSrfTypeToLegacy(hidl_request.srfType); + legacy_request->serviceResponseInclude = hidl_request.srfRespondIfInAddressSet + ? legacy_hal::NAN_SRF_INCLUDE_RESPOND + : legacy_hal::NAN_SRF_INCLUDE_DO_NOT_RESPOND; legacy_request->useServiceResponseFilter = - hidl_request.shouldUseSrf ? legacy_hal::NAN_USE_SRF - : legacy_hal::NAN_DO_NOT_USE_SRF; + hidl_request.shouldUseSrf ? legacy_hal::NAN_USE_SRF : legacy_hal::NAN_DO_NOT_USE_SRF; legacy_request->ssiRequiredForMatchIndication = - hidl_request.isSsiRequiredForMatch - ? legacy_hal::NAN_SSI_REQUIRED_IN_MATCH_IND - : legacy_hal::NAN_SSI_NOT_REQUIRED_IN_MATCH_IND; + hidl_request.isSsiRequiredForMatch ? legacy_hal::NAN_SSI_REQUIRED_IN_MATCH_IND + : legacy_hal::NAN_SSI_NOT_REQUIRED_IN_MATCH_IND; legacy_request->num_intf_addr_present = hidl_request.intfAddr.size(); if (legacy_request->num_intf_addr_present > NAN_MAX_SUBSCRIBE_MAX_ADDRESS) { LOG(ERROR) << "convertHidlNanSubscribeRequestToLegacy: " @@ -1880,16 +1689,15 @@ bool convertHidlNanSubscribeRequestToLegacy( return false; } for (int i = 0; i < legacy_request->num_intf_addr_present; i++) { - memcpy(legacy_request->intf_addr[i], hidl_request.intfAddr[i].data(), - 6); + memcpy(legacy_request->intf_addr[i], hidl_request.intfAddr[i].data(), 6); } return true; } bool convertHidlNanTransmitFollowupRequestToLegacy( - const NanTransmitFollowupRequest& hidl_request, - legacy_hal::NanTransmitFollowupRequest* legacy_request) { + const NanTransmitFollowupRequest& hidl_request, + legacy_hal::NanTransmitFollowupRequest* legacy_request) { if (!legacy_request) { LOG(ERROR) << "convertHidlNanTransmitFollowupRequestToLegacy: " "legacy_request is null"; @@ -1900,27 +1708,22 @@ bool convertHidlNanTransmitFollowupRequestToLegacy( legacy_request->publish_subscribe_id = hidl_request.discoverySessionId; legacy_request->requestor_instance_id = hidl_request.peerId; memcpy(legacy_request->addr, hidl_request.addr.data(), 6); - legacy_request->priority = hidl_request.isHighPriority - ? legacy_hal::NAN_TX_PRIORITY_HIGH - : legacy_hal::NAN_TX_PRIORITY_NORMAL; + legacy_request->priority = hidl_request.isHighPriority ? legacy_hal::NAN_TX_PRIORITY_HIGH + : legacy_hal::NAN_TX_PRIORITY_NORMAL; legacy_request->dw_or_faw = hidl_request.shouldUseDiscoveryWindow - ? legacy_hal::NAN_TRANSMIT_IN_DW - : legacy_hal::NAN_TRANSMIT_IN_FAW; - legacy_request->service_specific_info_len = - hidl_request.serviceSpecificInfo.size(); - if (legacy_request->service_specific_info_len > - NAN_MAX_SERVICE_SPECIFIC_INFO_LEN) { + ? legacy_hal::NAN_TRANSMIT_IN_DW + : legacy_hal::NAN_TRANSMIT_IN_FAW; + legacy_request->service_specific_info_len = hidl_request.serviceSpecificInfo.size(); + if (legacy_request->service_specific_info_len > NAN_MAX_SERVICE_SPECIFIC_INFO_LEN) { LOG(ERROR) << "convertHidlNanTransmitFollowupRequestToLegacy: " "service_specific_info_len too large"; return false; } - memcpy(legacy_request->service_specific_info, - hidl_request.serviceSpecificInfo.data(), + memcpy(legacy_request->service_specific_info, hidl_request.serviceSpecificInfo.data(), legacy_request->service_specific_info_len); legacy_request->sdea_service_specific_info_len = - hidl_request.extendedServiceSpecificInfo.size(); - if (legacy_request->sdea_service_specific_info_len > - NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN) { + hidl_request.extendedServiceSpecificInfo.size(); + if (legacy_request->sdea_service_specific_info_len > NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN) { LOG(ERROR) << "convertHidlNanTransmitFollowupRequestToLegacy: " "sdea_service_specific_info_len too large"; return false; @@ -1928,18 +1731,15 @@ bool convertHidlNanTransmitFollowupRequestToLegacy( memcpy(legacy_request->sdea_service_specific_info, hidl_request.extendedServiceSpecificInfo.data(), legacy_request->sdea_service_specific_info_len); - legacy_request->recv_indication_cfg = - hidl_request.disableFollowupResultIndication ? 0x1 : 0x0; + legacy_request->recv_indication_cfg = hidl_request.disableFollowupResultIndication ? 0x1 : 0x0; return true; } -bool convertHidlNanConfigRequestToLegacy( - const V1_4::NanConfigRequest& hidl_request, - legacy_hal::NanConfigRequest* legacy_request) { +bool convertHidlNanConfigRequestToLegacy(const V1_4::NanConfigRequest& hidl_request, + legacy_hal::NanConfigRequest* legacy_request) { if (!legacy_request) { - LOG(ERROR) - << "convertHidlNanConfigRequestToLegacy: legacy_request is null"; + LOG(ERROR) << "convertHidlNanConfigRequestToLegacy: legacy_request is null"; return false; } *legacy_request = {}; @@ -1949,20 +1749,19 @@ bool convertHidlNanConfigRequestToLegacy( legacy_request->master_pref = hidl_request.masterPref; legacy_request->discovery_indication_cfg = 0; legacy_request->discovery_indication_cfg |= - hidl_request.disableDiscoveryAddressChangeIndication ? 0x1 : 0x0; + hidl_request.disableDiscoveryAddressChangeIndication ? 0x1 : 0x0; legacy_request->discovery_indication_cfg |= - hidl_request.disableStartedClusterIndication ? 0x2 : 0x0; + hidl_request.disableStartedClusterIndication ? 0x2 : 0x0; legacy_request->discovery_indication_cfg |= - hidl_request.disableJoinedClusterIndication ? 0x4 : 0x0; + hidl_request.disableJoinedClusterIndication ? 0x4 : 0x0; legacy_request->config_sid_beacon = 1; if (hidl_request.numberOfPublishServiceIdsInBeacon > 127) { LOG(ERROR) << "convertHidlNanConfigRequestToLegacy: " "numberOfPublishServiceIdsInBeacon > 127"; return false; } - legacy_request->sid_beacon = - (hidl_request.includePublishServiceIdsInBeacon ? 0x1 : 0x0) | - (hidl_request.numberOfPublishServiceIdsInBeacon << 1); + legacy_request->sid_beacon = (hidl_request.includePublishServiceIdsInBeacon ? 0x1 : 0x0) | + (hidl_request.numberOfPublishServiceIdsInBeacon << 1); legacy_request->config_subscribe_sid_beacon = 1; if (hidl_request.numberOfSubscribeServiceIdsInBeacon > 127) { LOG(ERROR) << "convertHidlNanConfigRequestToLegacy: " @@ -1970,13 +1769,13 @@ bool convertHidlNanConfigRequestToLegacy( return false; } legacy_request->subscribe_sid_beacon_val = - (hidl_request.includeSubscribeServiceIdsInBeacon ? 0x1 : 0x0) | - (hidl_request.numberOfSubscribeServiceIdsInBeacon << 1); + (hidl_request.includeSubscribeServiceIdsInBeacon ? 0x1 : 0x0) | + (hidl_request.numberOfSubscribeServiceIdsInBeacon << 1); legacy_request->config_rssi_window_size = 1; legacy_request->rssi_window_size_val = hidl_request.rssiWindowSize; legacy_request->config_disc_mac_addr_randomization = 1; legacy_request->disc_mac_addr_rand_interval_sec = - hidl_request.macAddressRandomizationIntervalSec; + hidl_request.macAddressRandomizationIntervalSec; /* TODO : missing legacy_request->config_2dot4g_rssi_close = 1; legacy_request->rssi_close_2dot4g_val = @@ -1992,20 +1791,16 @@ bool convertHidlNanConfigRequestToLegacy( (size_t) NanBandIndex::NAN_BAND_24GHZ].rssiCloseProximity; */ legacy_request->config_scan_params = 1; - legacy_request->scan_params_val - .dwell_time[legacy_hal::NAN_CHANNEL_24G_BAND] = - hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] - .dwellTimeMs; - legacy_request->scan_params_val - .scan_period[legacy_hal::NAN_CHANNEL_24G_BAND] = - hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] - .scanPeriodSec; + legacy_request->scan_params_val.dwell_time[legacy_hal::NAN_CHANNEL_24G_BAND] = + hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ].dwellTimeMs; + legacy_request->scan_params_val.scan_period[legacy_hal::NAN_CHANNEL_24G_BAND] = + hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ].scanPeriodSec; legacy_request->config_dw.config_2dot4g_dw_band = - hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] - .validDiscoveryWindowIntervalVal; + hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] + .validDiscoveryWindowIntervalVal; legacy_request->config_dw.dw_2dot4g_interval_val = - hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] - .discoveryWindowIntervalVal; + hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_24GHZ] + .discoveryWindowIntervalVal; /* TODO: missing legacy_request->config_5g_rssi_close = 1; legacy_request->rssi_close_5g_val = @@ -2018,30 +1813,21 @@ bool convertHidlNanConfigRequestToLegacy( */ legacy_request->config_5g_rssi_close_proximity = 1; legacy_request->rssi_close_proximity_5g_val = - hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .rssiCloseProximity; - legacy_request->scan_params_val - .dwell_time[legacy_hal::NAN_CHANNEL_5G_BAND_LOW] = - hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .dwellTimeMs; - legacy_request->scan_params_val - .scan_period[legacy_hal::NAN_CHANNEL_5G_BAND_LOW] = - hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .scanPeriodSec; - legacy_request->scan_params_val - .dwell_time[legacy_hal::NAN_CHANNEL_5G_BAND_HIGH] = - hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .dwellTimeMs; - legacy_request->scan_params_val - .scan_period[legacy_hal::NAN_CHANNEL_5G_BAND_HIGH] = - hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .scanPeriodSec; + hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ].rssiCloseProximity; + legacy_request->scan_params_val.dwell_time[legacy_hal::NAN_CHANNEL_5G_BAND_LOW] = + hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ].dwellTimeMs; + legacy_request->scan_params_val.scan_period[legacy_hal::NAN_CHANNEL_5G_BAND_LOW] = + hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ].scanPeriodSec; + legacy_request->scan_params_val.dwell_time[legacy_hal::NAN_CHANNEL_5G_BAND_HIGH] = + hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ].dwellTimeMs; + legacy_request->scan_params_val.scan_period[legacy_hal::NAN_CHANNEL_5G_BAND_HIGH] = + hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ].scanPeriodSec; legacy_request->config_dw.config_5g_dw_band = - hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .validDiscoveryWindowIntervalVal; + hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] + .validDiscoveryWindowIntervalVal; legacy_request->config_dw.dw_5g_interval_val = - hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] - .discoveryWindowIntervalVal; + hidl_request.bandSpecificConfig[(size_t)NanBandIndex::NAN_BAND_5GHZ] + .discoveryWindowIntervalVal; /* TODO: b/145609058 * Missing updates needed to legacy_hal::NanConfigRequest and conversion to * it for 6GHz band */ @@ -2049,10 +1835,9 @@ bool convertHidlNanConfigRequestToLegacy( return true; } -bool convertHidlNanConfigRequest_1_4ToLegacy( - const V1_4::NanConfigRequest& hidl_request1, - const NanConfigRequestSupplemental& hidl_request2, - legacy_hal::NanConfigRequest* legacy_request) { +bool convertHidlNanConfigRequest_1_4ToLegacy(const V1_4::NanConfigRequest& hidl_request1, + const NanConfigRequestSupplemental& hidl_request2, + legacy_hal::NanConfigRequest* legacy_request) { if (!legacy_request) { LOG(ERROR) << "convertHidlNanConfigRequest_1_4ToLegacy: legacy_request " "is null"; @@ -2065,13 +1850,12 @@ bool convertHidlNanConfigRequest_1_4ToLegacy( } legacy_request->config_discovery_beacon_int = 1; - legacy_request->discovery_beacon_interval = - hidl_request2.V1_2.discoveryBeaconIntervalMs; + legacy_request->discovery_beacon_interval = hidl_request2.V1_2.discoveryBeaconIntervalMs; legacy_request->config_nss = 1; legacy_request->nss = hidl_request2.V1_2.numberOfSpatialStreamsInDiscovery; legacy_request->config_dw_early_termination = 1; legacy_request->enable_dw_termination = - hidl_request2.V1_2.enableDiscoveryWindowEarlyTermination; + hidl_request2.V1_2.enableDiscoveryWindowEarlyTermination; legacy_request->config_enable_ranging = 1; legacy_request->enable_ranging = hidl_request2.V1_2.enableRanging; @@ -2079,8 +1863,8 @@ bool convertHidlNanConfigRequest_1_4ToLegacy( } bool convertHidlNanDataPathInitiatorRequestToLegacy( - const NanInitiateDataPathRequest& hidl_request, - legacy_hal::NanDataPathInitiatorRequest* legacy_request) { + const NanInitiateDataPathRequest& hidl_request, + legacy_hal::NanDataPathInitiatorRequest* legacy_request) { if (!legacy_request) { LOG(ERROR) << "convertHidlNanDataPathInitiatorRequestToLegacy: " "legacy_request is null"; @@ -2089,24 +1873,20 @@ bool convertHidlNanDataPathInitiatorRequestToLegacy( *legacy_request = {}; legacy_request->requestor_instance_id = hidl_request.peerId; - memcpy(legacy_request->peer_disc_mac_addr, - hidl_request.peerDiscMacAddr.data(), 6); + memcpy(legacy_request->peer_disc_mac_addr, hidl_request.peerDiscMacAddr.data(), 6); legacy_request->channel_request_type = - convertHidlNanDataPathChannelCfgToLegacy( - hidl_request.channelRequestType); + convertHidlNanDataPathChannelCfgToLegacy(hidl_request.channelRequestType); legacy_request->channel = hidl_request.channel; if (strnlen(hidl_request.ifaceName.c_str(), IFNAMSIZ + 1) == IFNAMSIZ + 1) { LOG(ERROR) << "convertHidlNanDataPathInitiatorRequestToLegacy: " "ifaceName too long"; return false; } - strncpy(legacy_request->ndp_iface, hidl_request.ifaceName.c_str(), - IFNAMSIZ + 1); + strncpy(legacy_request->ndp_iface, hidl_request.ifaceName.c_str(), IFNAMSIZ + 1); legacy_request->ndp_cfg.security_cfg = - (hidl_request.securityConfig.securityType != - NanDataPathSecurityType::OPEN) - ? legacy_hal::NAN_DP_CONFIG_SECURITY - : legacy_hal::NAN_DP_CONFIG_NO_SECURITY; + (hidl_request.securityConfig.securityType != NanDataPathSecurityType::OPEN) + ? legacy_hal::NAN_DP_CONFIG_SECURITY + : legacy_hal::NAN_DP_CONFIG_NO_SECURITY; legacy_request->app_info.ndp_app_info_len = hidl_request.appInfo.size(); if (legacy_request->app_info.ndp_app_info_len > NAN_DP_MAX_APP_INFO_LEN) { LOG(ERROR) << "convertHidlNanDataPathInitiatorRequestToLegacy: " @@ -2115,30 +1895,22 @@ bool convertHidlNanDataPathInitiatorRequestToLegacy( } memcpy(legacy_request->app_info.ndp_app_info, hidl_request.appInfo.data(), legacy_request->app_info.ndp_app_info_len); - legacy_request->cipher_type = - (unsigned int)hidl_request.securityConfig.cipherType; - if (hidl_request.securityConfig.securityType == - NanDataPathSecurityType::PMK) { - legacy_request->key_info.key_type = - legacy_hal::NAN_SECURITY_KEY_INPUT_PMK; - legacy_request->key_info.body.pmk_info.pmk_len = - hidl_request.securityConfig.pmk.size(); - if (legacy_request->key_info.body.pmk_info.pmk_len != - NAN_PMK_INFO_LEN) { + legacy_request->cipher_type = (unsigned int)hidl_request.securityConfig.cipherType; + if (hidl_request.securityConfig.securityType == NanDataPathSecurityType::PMK) { + legacy_request->key_info.key_type = legacy_hal::NAN_SECURITY_KEY_INPUT_PMK; + legacy_request->key_info.body.pmk_info.pmk_len = hidl_request.securityConfig.pmk.size(); + if (legacy_request->key_info.body.pmk_info.pmk_len != NAN_PMK_INFO_LEN) { LOG(ERROR) << "convertHidlNanDataPathInitiatorRequestToLegacy: " "invalid pmk_len"; return false; } - memcpy(legacy_request->key_info.body.pmk_info.pmk, - hidl_request.securityConfig.pmk.data(), + memcpy(legacy_request->key_info.body.pmk_info.pmk, hidl_request.securityConfig.pmk.data(), legacy_request->key_info.body.pmk_info.pmk_len); } - if (hidl_request.securityConfig.securityType == - NanDataPathSecurityType::PASSPHRASE) { - legacy_request->key_info.key_type = - legacy_hal::NAN_SECURITY_KEY_INPUT_PASSPHRASE; + if (hidl_request.securityConfig.securityType == NanDataPathSecurityType::PASSPHRASE) { + legacy_request->key_info.key_type = legacy_hal::NAN_SECURITY_KEY_INPUT_PASSPHRASE; legacy_request->key_info.body.passphrase_info.passphrase_len = - hidl_request.securityConfig.passphrase.size(); + hidl_request.securityConfig.passphrase.size(); if (legacy_request->key_info.body.passphrase_info.passphrase_len < NAN_SECURITY_MIN_PASSPHRASE_LEN) { LOG(ERROR) << "convertHidlNanDataPathInitiatorRequestToLegacy: " @@ -2161,16 +1933,15 @@ bool convertHidlNanDataPathInitiatorRequestToLegacy( "service_name_len too large"; return false; } - memcpy(legacy_request->service_name, - hidl_request.serviceNameOutOfBand.data(), + memcpy(legacy_request->service_name, hidl_request.serviceNameOutOfBand.data(), legacy_request->service_name_len); return true; } bool convertHidlNanDataPathIndicationResponseToLegacy( - const NanRespondToDataPathIndicationRequest& hidl_request, - legacy_hal::NanDataPathIndicationResponse* legacy_request) { + const NanRespondToDataPathIndicationRequest& hidl_request, + legacy_hal::NanDataPathIndicationResponse* legacy_request) { if (!legacy_request) { LOG(ERROR) << "convertHidlNanDataPathIndicationResponseToLegacy: " "legacy_request is null"; @@ -2178,22 +1949,19 @@ bool convertHidlNanDataPathIndicationResponseToLegacy( } *legacy_request = {}; - legacy_request->rsp_code = hidl_request.acceptRequest - ? legacy_hal::NAN_DP_REQUEST_ACCEPT - : legacy_hal::NAN_DP_REQUEST_REJECT; + legacy_request->rsp_code = hidl_request.acceptRequest ? legacy_hal::NAN_DP_REQUEST_ACCEPT + : legacy_hal::NAN_DP_REQUEST_REJECT; legacy_request->ndp_instance_id = hidl_request.ndpInstanceId; if (strnlen(hidl_request.ifaceName.c_str(), IFNAMSIZ + 1) == IFNAMSIZ + 1) { LOG(ERROR) << "convertHidlNanDataPathIndicationResponseToLegacy: " "ifaceName too long"; return false; } - strncpy(legacy_request->ndp_iface, hidl_request.ifaceName.c_str(), - IFNAMSIZ + 1); + strncpy(legacy_request->ndp_iface, hidl_request.ifaceName.c_str(), IFNAMSIZ + 1); legacy_request->ndp_cfg.security_cfg = - (hidl_request.securityConfig.securityType != - NanDataPathSecurityType::OPEN) - ? legacy_hal::NAN_DP_CONFIG_SECURITY - : legacy_hal::NAN_DP_CONFIG_NO_SECURITY; + (hidl_request.securityConfig.securityType != NanDataPathSecurityType::OPEN) + ? legacy_hal::NAN_DP_CONFIG_SECURITY + : legacy_hal::NAN_DP_CONFIG_NO_SECURITY; legacy_request->app_info.ndp_app_info_len = hidl_request.appInfo.size(); if (legacy_request->app_info.ndp_app_info_len > NAN_DP_MAX_APP_INFO_LEN) { LOG(ERROR) << "convertHidlNanDataPathIndicationResponseToLegacy: " @@ -2202,30 +1970,22 @@ bool convertHidlNanDataPathIndicationResponseToLegacy( } memcpy(legacy_request->app_info.ndp_app_info, hidl_request.appInfo.data(), legacy_request->app_info.ndp_app_info_len); - legacy_request->cipher_type = - (unsigned int)hidl_request.securityConfig.cipherType; - if (hidl_request.securityConfig.securityType == - NanDataPathSecurityType::PMK) { - legacy_request->key_info.key_type = - legacy_hal::NAN_SECURITY_KEY_INPUT_PMK; - legacy_request->key_info.body.pmk_info.pmk_len = - hidl_request.securityConfig.pmk.size(); - if (legacy_request->key_info.body.pmk_info.pmk_len != - NAN_PMK_INFO_LEN) { + legacy_request->cipher_type = (unsigned int)hidl_request.securityConfig.cipherType; + if (hidl_request.securityConfig.securityType == NanDataPathSecurityType::PMK) { + legacy_request->key_info.key_type = legacy_hal::NAN_SECURITY_KEY_INPUT_PMK; + legacy_request->key_info.body.pmk_info.pmk_len = hidl_request.securityConfig.pmk.size(); + if (legacy_request->key_info.body.pmk_info.pmk_len != NAN_PMK_INFO_LEN) { LOG(ERROR) << "convertHidlNanDataPathIndicationResponseToLegacy: " "invalid pmk_len"; return false; } - memcpy(legacy_request->key_info.body.pmk_info.pmk, - hidl_request.securityConfig.pmk.data(), + memcpy(legacy_request->key_info.body.pmk_info.pmk, hidl_request.securityConfig.pmk.data(), legacy_request->key_info.body.pmk_info.pmk_len); } - if (hidl_request.securityConfig.securityType == - NanDataPathSecurityType::PASSPHRASE) { - legacy_request->key_info.key_type = - legacy_hal::NAN_SECURITY_KEY_INPUT_PASSPHRASE; + if (hidl_request.securityConfig.securityType == NanDataPathSecurityType::PASSPHRASE) { + legacy_request->key_info.key_type = legacy_hal::NAN_SECURITY_KEY_INPUT_PASSPHRASE; legacy_request->key_info.body.passphrase_info.passphrase_len = - hidl_request.securityConfig.passphrase.size(); + hidl_request.securityConfig.passphrase.size(); if (legacy_request->key_info.body.passphrase_info.passphrase_len < NAN_SECURITY_MIN_PASSPHRASE_LEN) { LOG(ERROR) << "convertHidlNanDataPathIndicationResponseToLegacy: " @@ -2248,19 +2008,16 @@ bool convertHidlNanDataPathIndicationResponseToLegacy( "service_name_len too large"; return false; } - memcpy(legacy_request->service_name, - hidl_request.serviceNameOutOfBand.data(), + memcpy(legacy_request->service_name, hidl_request.serviceNameOutOfBand.data(), legacy_request->service_name_len); return true; } -bool convertLegacyNanResponseHeaderToHidl( - const legacy_hal::NanResponseMsg& legacy_response, - WifiNanStatus* wifiNanStatus) { +bool convertLegacyNanResponseHeaderToHidl(const legacy_hal::NanResponseMsg& legacy_response, + WifiNanStatus* wifiNanStatus) { if (!wifiNanStatus) { - LOG(ERROR) - << "convertLegacyNanResponseHeaderToHidl: wifiNanStatus is null"; + LOG(ERROR) << "convertLegacyNanResponseHeaderToHidl: wifiNanStatus is null"; return false; } *wifiNanStatus = {}; @@ -2270,9 +2027,8 @@ bool convertLegacyNanResponseHeaderToHidl( return true; } -bool convertLegacyNanCapabilitiesResponseToHidl( - const legacy_hal::NanCapabilities& legacy_response, - NanCapabilities* hidl_response) { +bool convertLegacyNanCapabilitiesResponseToHidl(const legacy_hal::NanCapabilities& legacy_response, + V1_5::NanCapabilities* hidl_response) { if (!hidl_response) { LOG(ERROR) << "convertLegacyNanCapabilitiesResponseToHidl: " "hidl_response is null"; @@ -2280,31 +2036,23 @@ bool convertLegacyNanCapabilitiesResponseToHidl( } *hidl_response = {}; - hidl_response->V1_0.maxConcurrentClusters = - legacy_response.max_concurrent_nan_clusters; + hidl_response->V1_0.maxConcurrentClusters = legacy_response.max_concurrent_nan_clusters; hidl_response->V1_0.maxPublishes = legacy_response.max_publishes; hidl_response->V1_0.maxSubscribes = legacy_response.max_subscribes; - hidl_response->V1_0.maxServiceNameLen = - legacy_response.max_service_name_len; - hidl_response->V1_0.maxMatchFilterLen = - legacy_response.max_match_filter_len; - hidl_response->V1_0.maxTotalMatchFilterLen = - legacy_response.max_total_match_filter_len; - hidl_response->V1_0.maxServiceSpecificInfoLen = - legacy_response.max_service_specific_info_len; + hidl_response->V1_0.maxServiceNameLen = legacy_response.max_service_name_len; + hidl_response->V1_0.maxMatchFilterLen = legacy_response.max_match_filter_len; + hidl_response->V1_0.maxTotalMatchFilterLen = legacy_response.max_total_match_filter_len; + hidl_response->V1_0.maxServiceSpecificInfoLen = legacy_response.max_service_specific_info_len; hidl_response->V1_0.maxExtendedServiceSpecificInfoLen = - legacy_response.max_sdea_service_specific_info_len; + legacy_response.max_sdea_service_specific_info_len; hidl_response->V1_0.maxNdiInterfaces = legacy_response.max_ndi_interfaces; hidl_response->V1_0.maxNdpSessions = legacy_response.max_ndp_sessions; hidl_response->V1_0.maxAppInfoLen = legacy_response.max_app_info_len; hidl_response->V1_0.maxQueuedTransmitFollowupMsgs = - legacy_response.max_queued_transmit_followup_msgs; - hidl_response->V1_0.maxSubscribeInterfaceAddresses = - legacy_response.max_subscribe_address; - hidl_response->V1_0.supportedCipherSuites = - legacy_response.cipher_suites_supported; - hidl_response->instantCommunicationModeSupportFlag = - legacy_response.is_instant_mode_supported; + legacy_response.max_queued_transmit_followup_msgs; + hidl_response->V1_0.maxSubscribeInterfaceAddresses = legacy_response.max_subscribe_address; + hidl_response->V1_0.supportedCipherSuites = legacy_response.cipher_suites_supported; + hidl_response->instantCommunicationModeSupportFlag = legacy_response.is_instant_mode_supported; return true; } @@ -2320,36 +2068,31 @@ bool convertLegacyNanMatchIndToHidl(const legacy_hal::NanMatchInd& legacy_ind, hidl_ind->discoverySessionId = legacy_ind.publish_subscribe_id; hidl_ind->peerId = legacy_ind.requestor_instance_id; hidl_ind->addr = hidl_array<uint8_t, 6>(legacy_ind.addr); - hidl_ind->serviceSpecificInfo = - std::vector<uint8_t>(legacy_ind.service_specific_info, - legacy_ind.service_specific_info + - legacy_ind.service_specific_info_len); - hidl_ind->extendedServiceSpecificInfo = - std::vector<uint8_t>(legacy_ind.sdea_service_specific_info, - legacy_ind.sdea_service_specific_info + - legacy_ind.sdea_service_specific_info_len); - hidl_ind->matchFilter = std::vector<uint8_t>( - legacy_ind.sdf_match_filter, - legacy_ind.sdf_match_filter + legacy_ind.sdf_match_filter_len); + hidl_ind->serviceSpecificInfo = std::vector<uint8_t>( + legacy_ind.service_specific_info, + legacy_ind.service_specific_info + legacy_ind.service_specific_info_len); + hidl_ind->extendedServiceSpecificInfo = std::vector<uint8_t>( + legacy_ind.sdea_service_specific_info, + legacy_ind.sdea_service_specific_info + legacy_ind.sdea_service_specific_info_len); + hidl_ind->matchFilter = + std::vector<uint8_t>(legacy_ind.sdf_match_filter, + legacy_ind.sdf_match_filter + legacy_ind.sdf_match_filter_len); hidl_ind->matchOccuredInBeaconFlag = legacy_ind.match_occured_flag == 1; hidl_ind->outOfResourceFlag = legacy_ind.out_of_resource_flag == 1; hidl_ind->rssiValue = legacy_ind.rssi_value; hidl_ind->peerCipherType = (NanCipherSuiteType)legacy_ind.peer_cipher_type; hidl_ind->peerRequiresSecurityEnabledInNdp = - legacy_ind.peer_sdea_params.security_cfg == - legacy_hal::NAN_DP_CONFIG_SECURITY; - hidl_ind->peerRequiresRanging = legacy_ind.peer_sdea_params.ranging_state == - legacy_hal::NAN_RANGING_ENABLE; - hidl_ind->rangingMeasurementInCm = - legacy_ind.range_info.range_measurement_mm / 10; + legacy_ind.peer_sdea_params.security_cfg == legacy_hal::NAN_DP_CONFIG_SECURITY; + hidl_ind->peerRequiresRanging = + legacy_ind.peer_sdea_params.ranging_state == legacy_hal::NAN_RANGING_ENABLE; + hidl_ind->rangingMeasurementInCm = legacy_ind.range_info.range_measurement_mm / 10; hidl_ind->rangingIndicationType = legacy_ind.range_info.ranging_event_type; return true; } -bool convertLegacyNanFollowupIndToHidl( - const legacy_hal::NanFollowupInd& legacy_ind, - NanFollowupReceivedInd* hidl_ind) { +bool convertLegacyNanFollowupIndToHidl(const legacy_hal::NanFollowupInd& legacy_ind, + NanFollowupReceivedInd* hidl_ind) { if (!hidl_ind) { LOG(ERROR) << "convertLegacyNanFollowupIndToHidl: hidl_ind is null"; return false; @@ -2360,45 +2103,38 @@ bool convertLegacyNanFollowupIndToHidl( hidl_ind->peerId = legacy_ind.requestor_instance_id; hidl_ind->addr = hidl_array<uint8_t, 6>(legacy_ind.addr); hidl_ind->receivedInFaw = legacy_ind.dw_or_faw == 1; - hidl_ind->serviceSpecificInfo = - std::vector<uint8_t>(legacy_ind.service_specific_info, - legacy_ind.service_specific_info + - legacy_ind.service_specific_info_len); - hidl_ind->extendedServiceSpecificInfo = - std::vector<uint8_t>(legacy_ind.sdea_service_specific_info, - legacy_ind.sdea_service_specific_info + - legacy_ind.sdea_service_specific_info_len); + hidl_ind->serviceSpecificInfo = std::vector<uint8_t>( + legacy_ind.service_specific_info, + legacy_ind.service_specific_info + legacy_ind.service_specific_info_len); + hidl_ind->extendedServiceSpecificInfo = std::vector<uint8_t>( + legacy_ind.sdea_service_specific_info, + legacy_ind.sdea_service_specific_info + legacy_ind.sdea_service_specific_info_len); return true; } -bool convertLegacyNanDataPathRequestIndToHidl( - const legacy_hal::NanDataPathRequestInd& legacy_ind, - NanDataPathRequestInd* hidl_ind) { +bool convertLegacyNanDataPathRequestIndToHidl(const legacy_hal::NanDataPathRequestInd& legacy_ind, + NanDataPathRequestInd* hidl_ind) { if (!hidl_ind) { - LOG(ERROR) - << "convertLegacyNanDataPathRequestIndToHidl: hidl_ind is null"; + LOG(ERROR) << "convertLegacyNanDataPathRequestIndToHidl: hidl_ind is null"; return false; } *hidl_ind = {}; hidl_ind->discoverySessionId = legacy_ind.service_instance_id; - hidl_ind->peerDiscMacAddr = - hidl_array<uint8_t, 6>(legacy_ind.peer_disc_mac_addr); + hidl_ind->peerDiscMacAddr = hidl_array<uint8_t, 6>(legacy_ind.peer_disc_mac_addr); hidl_ind->ndpInstanceId = legacy_ind.ndp_instance_id; hidl_ind->securityRequired = - legacy_ind.ndp_cfg.security_cfg == legacy_hal::NAN_DP_CONFIG_SECURITY; - hidl_ind->appInfo = - std::vector<uint8_t>(legacy_ind.app_info.ndp_app_info, - legacy_ind.app_info.ndp_app_info + - legacy_ind.app_info.ndp_app_info_len); + legacy_ind.ndp_cfg.security_cfg == legacy_hal::NAN_DP_CONFIG_SECURITY; + hidl_ind->appInfo = std::vector<uint8_t>( + legacy_ind.app_info.ndp_app_info, + legacy_ind.app_info.ndp_app_info + legacy_ind.app_info.ndp_app_info_len); return true; } -bool convertLegacyNdpChannelInfoToHidl( - const legacy_hal::NanChannelInfo& legacy_struct, - V1_2::NanDataPathChannelInfo* hidl_struct) { +bool convertLegacyNdpChannelInfoToHidl(const legacy_hal::NanChannelInfo& legacy_struct, + V1_2::NanDataPathChannelInfo* hidl_struct) { if (!hidl_struct) { LOG(ERROR) << "convertLegacyNdpChannelInfoToHidl: hidl_struct is null"; return false; @@ -2407,40 +2143,33 @@ bool convertLegacyNdpChannelInfoToHidl( hidl_struct->channelFreq = legacy_struct.channel; hidl_struct->channelBandwidth = convertLegacyWifiChannelWidthToHidl( - (legacy_hal::wifi_channel_width)legacy_struct.bandwidth); + (legacy_hal::wifi_channel_width)legacy_struct.bandwidth); hidl_struct->numSpatialStreams = legacy_struct.nss; return true; } -bool convertLegacyNanDataPathConfirmIndToHidl( - const legacy_hal::NanDataPathConfirmInd& legacy_ind, - V1_2::NanDataPathConfirmInd* hidl_ind) { +bool convertLegacyNanDataPathConfirmIndToHidl(const legacy_hal::NanDataPathConfirmInd& legacy_ind, + V1_2::NanDataPathConfirmInd* hidl_ind) { if (!hidl_ind) { - LOG(ERROR) - << "convertLegacyNanDataPathConfirmIndToHidl: hidl_ind is null"; + LOG(ERROR) << "convertLegacyNanDataPathConfirmIndToHidl: hidl_ind is null"; return false; } *hidl_ind = {}; hidl_ind->V1_0.ndpInstanceId = legacy_ind.ndp_instance_id; - hidl_ind->V1_0.dataPathSetupSuccess = - legacy_ind.rsp_code == legacy_hal::NAN_DP_REQUEST_ACCEPT; - hidl_ind->V1_0.peerNdiMacAddr = - hidl_array<uint8_t, 6>(legacy_ind.peer_ndi_mac_addr); - hidl_ind->V1_0.appInfo = - std::vector<uint8_t>(legacy_ind.app_info.ndp_app_info, - legacy_ind.app_info.ndp_app_info + - legacy_ind.app_info.ndp_app_info_len); - hidl_ind->V1_0.status.status = - convertLegacyNanStatusTypeToHidl(legacy_ind.reason_code); + hidl_ind->V1_0.dataPathSetupSuccess = legacy_ind.rsp_code == legacy_hal::NAN_DP_REQUEST_ACCEPT; + hidl_ind->V1_0.peerNdiMacAddr = hidl_array<uint8_t, 6>(legacy_ind.peer_ndi_mac_addr); + hidl_ind->V1_0.appInfo = std::vector<uint8_t>( + legacy_ind.app_info.ndp_app_info, + legacy_ind.app_info.ndp_app_info + legacy_ind.app_info.ndp_app_info_len); + hidl_ind->V1_0.status.status = convertLegacyNanStatusTypeToHidl(legacy_ind.reason_code); hidl_ind->V1_0.status.description = ""; // TODO: b/34059183 std::vector<V1_2::NanDataPathChannelInfo> channelInfo; for (unsigned int i = 0; i < legacy_ind.num_channels; ++i) { V1_2::NanDataPathChannelInfo hidl_struct; - if (!convertLegacyNdpChannelInfoToHidl(legacy_ind.channel_info[i], - &hidl_struct)) { + if (!convertLegacyNdpChannelInfoToHidl(legacy_ind.channel_info[i], &hidl_struct)) { return false; } channelInfo.push_back(hidl_struct); @@ -2451,8 +2180,8 @@ bool convertLegacyNanDataPathConfirmIndToHidl( } bool convertLegacyNanDataPathScheduleUpdateIndToHidl( - const legacy_hal::NanDataPathScheduleUpdateInd& legacy_ind, - V1_2::NanDataPathScheduleUpdateInd* hidl_ind) { + const legacy_hal::NanDataPathScheduleUpdateInd& legacy_ind, + V1_2::NanDataPathScheduleUpdateInd* hidl_ind) { if (!hidl_ind) { LOG(ERROR) << "convertLegacyNanDataPathScheduleUpdateIndToHidl: " "hidl_ind is null"; @@ -2460,13 +2189,11 @@ bool convertLegacyNanDataPathScheduleUpdateIndToHidl( } *hidl_ind = {}; - hidl_ind->peerDiscoveryAddress = - hidl_array<uint8_t, 6>(legacy_ind.peer_mac_addr); + hidl_ind->peerDiscoveryAddress = hidl_array<uint8_t, 6>(legacy_ind.peer_mac_addr); std::vector<V1_2::NanDataPathChannelInfo> channelInfo; for (unsigned int i = 0; i < legacy_ind.num_channels; ++i) { V1_2::NanDataPathChannelInfo hidl_struct; - if (!convertLegacyNdpChannelInfoToHidl(legacy_ind.channel_info[i], - &hidl_struct)) { + if (!convertLegacyNdpChannelInfoToHidl(legacy_ind.channel_info[i], &hidl_struct)) { return false; } channelInfo.push_back(hidl_struct); @@ -2517,8 +2244,7 @@ legacy_hal::rtt_peer_type convertHidlRttPeerTypeToLegacy(RttPeerType type) { CHECK(false); } -legacy_hal::wifi_channel_width convertHidlWifiChannelWidthToLegacy( - WifiChannelWidthInMhz type) { +legacy_hal::wifi_channel_width convertHidlWifiChannelWidthToLegacy(WifiChannelWidthInMhz type) { switch (type) { case WifiChannelWidthInMhz::WIDTH_20: return legacy_hal::WIFI_CHAN_WIDTH_20; @@ -2540,8 +2266,7 @@ legacy_hal::wifi_channel_width convertHidlWifiChannelWidthToLegacy( CHECK(false); } -WifiChannelWidthInMhz convertLegacyWifiChannelWidthToHidl( - legacy_hal::wifi_channel_width type) { +WifiChannelWidthInMhz convertLegacyWifiChannelWidthToHidl(legacy_hal::wifi_channel_width type) { switch (type) { case legacy_hal::WIFI_CHAN_WIDTH_20: return WifiChannelWidthInMhz::WIDTH_20; @@ -2562,8 +2287,7 @@ WifiChannelWidthInMhz convertLegacyWifiChannelWidthToHidl( }; } -legacy_hal::wifi_rtt_preamble convertHidlRttPreambleToLegacy( - V1_4::RttPreamble type) { +legacy_hal::wifi_rtt_preamble convertHidlRttPreambleToLegacy(V1_4::RttPreamble type) { switch (type) { case V1_4::RttPreamble::LEGACY: return legacy_hal::WIFI_RTT_PREAMBLE_LEGACY; @@ -2577,8 +2301,7 @@ legacy_hal::wifi_rtt_preamble convertHidlRttPreambleToLegacy( CHECK(false); } -V1_4::RttPreamble convertLegacyRttPreambleToHidl( - legacy_hal::wifi_rtt_preamble type) { +V1_4::RttPreamble convertLegacyRttPreambleToHidl(legacy_hal::wifi_rtt_preamble type) { switch (type) { case legacy_hal::WIFI_RTT_PREAMBLE_LEGACY: return V1_4::RttPreamble::LEGACY; @@ -2628,8 +2351,7 @@ RttBw convertLegacyRttBwToHidl(legacy_hal::wifi_rtt_bw type) { CHECK(false) << "Unknown legacy type: " << type; } -legacy_hal::wifi_motion_pattern convertHidlRttMotionPatternToLegacy( - RttMotionPattern type) { +legacy_hal::wifi_motion_pattern convertHidlRttMotionPatternToLegacy(RttMotionPattern type) { switch (type) { case RttMotionPattern::NOT_EXPECTED: return legacy_hal::WIFI_MOTION_NOT_EXPECTED; @@ -2716,9 +2438,8 @@ RttStatus convertLegacyRttStatusToHidl(legacy_hal::wifi_rtt_status status) { CHECK(false) << "Unknown legacy status: " << status; } -bool convertHidlWifiChannelInfoToLegacy( - const WifiChannelInfo& hidl_info, - legacy_hal::wifi_channel_info* legacy_info) { +bool convertHidlWifiChannelInfoToLegacy(const WifiChannelInfo& hidl_info, + legacy_hal::wifi_channel_info* legacy_info) { if (!legacy_info) { return false; } @@ -2730,9 +2451,8 @@ bool convertHidlWifiChannelInfoToLegacy( return true; } -bool convertLegacyWifiChannelInfoToHidl( - const legacy_hal::wifi_channel_info& legacy_info, - WifiChannelInfo* hidl_info) { +bool convertLegacyWifiChannelInfoToHidl(const legacy_hal::wifi_channel_info& legacy_info, + WifiChannelInfo* hidl_info) { if (!hidl_info) { return false; } @@ -2751,32 +2471,28 @@ bool convertHidlRttConfigToLegacy(const V1_4::RttConfig& hidl_config, } *legacy_config = {}; CHECK(hidl_config.addr.size() == sizeof(legacy_config->addr)); - memcpy(legacy_config->addr, hidl_config.addr.data(), - hidl_config.addr.size()); + memcpy(legacy_config->addr, hidl_config.addr.data(), hidl_config.addr.size()); legacy_config->type = convertHidlRttTypeToLegacy(hidl_config.type); legacy_config->peer = convertHidlRttPeerTypeToLegacy(hidl_config.peer); - if (!convertHidlWifiChannelInfoToLegacy(hidl_config.channel, - &legacy_config->channel)) { + if (!convertHidlWifiChannelInfoToLegacy(hidl_config.channel, &legacy_config->channel)) { return false; } legacy_config->burst_period = hidl_config.burstPeriod; legacy_config->num_burst = hidl_config.numBurst; legacy_config->num_frames_per_burst = hidl_config.numFramesPerBurst; - legacy_config->num_retries_per_rtt_frame = - hidl_config.numRetriesPerRttFrame; + legacy_config->num_retries_per_rtt_frame = hidl_config.numRetriesPerRttFrame; legacy_config->num_retries_per_ftmr = hidl_config.numRetriesPerFtmr; legacy_config->LCI_request = hidl_config.mustRequestLci; legacy_config->LCR_request = hidl_config.mustRequestLcr; legacy_config->burst_duration = hidl_config.burstDuration; - legacy_config->preamble = - convertHidlRttPreambleToLegacy(hidl_config.preamble); + legacy_config->preamble = convertHidlRttPreambleToLegacy(hidl_config.preamble); legacy_config->bw = convertHidlRttBwToLegacy(hidl_config.bw); return true; } bool convertHidlVectorOfRttConfigToLegacy( - const std::vector<V1_4::RttConfig>& hidl_configs, - std::vector<legacy_hal::wifi_rtt_config>* legacy_configs) { + const std::vector<V1_4::RttConfig>& hidl_configs, + std::vector<legacy_hal::wifi_rtt_config>* legacy_configs) { if (!legacy_configs) { return false; } @@ -2791,9 +2507,8 @@ bool convertHidlVectorOfRttConfigToLegacy( return true; } -bool convertHidlRttLciInformationToLegacy( - const RttLciInformation& hidl_info, - legacy_hal::wifi_lci_information* legacy_info) { +bool convertHidlRttLciInformationToLegacy(const RttLciInformation& hidl_info, + legacy_hal::wifi_lci_information* legacy_info) { if (!legacy_info) { return false; } @@ -2804,99 +2519,83 @@ bool convertHidlRttLciInformationToLegacy( legacy_info->latitude_unc = hidl_info.latitudeUnc; legacy_info->longitude_unc = hidl_info.longitudeUnc; legacy_info->altitude_unc = hidl_info.altitudeUnc; - legacy_info->motion_pattern = - convertHidlRttMotionPatternToLegacy(hidl_info.motionPattern); + legacy_info->motion_pattern = convertHidlRttMotionPatternToLegacy(hidl_info.motionPattern); legacy_info->floor = hidl_info.floor; legacy_info->height_above_floor = hidl_info.heightAboveFloor; legacy_info->height_unc = hidl_info.heightUnc; return true; } -bool convertHidlRttLcrInformationToLegacy( - const RttLcrInformation& hidl_info, - legacy_hal::wifi_lcr_information* legacy_info) { +bool convertHidlRttLcrInformationToLegacy(const RttLcrInformation& hidl_info, + legacy_hal::wifi_lcr_information* legacy_info) { if (!legacy_info) { return false; } *legacy_info = {}; CHECK(hidl_info.countryCode.size() == sizeof(legacy_info->country_code)); - memcpy(legacy_info->country_code, hidl_info.countryCode.data(), - hidl_info.countryCode.size()); + memcpy(legacy_info->country_code, hidl_info.countryCode.data(), hidl_info.countryCode.size()); if (hidl_info.civicInfo.size() > sizeof(legacy_info->civic_info)) { return false; } legacy_info->length = hidl_info.civicInfo.size(); - memcpy(legacy_info->civic_info, hidl_info.civicInfo.c_str(), - hidl_info.civicInfo.size()); + memcpy(legacy_info->civic_info, hidl_info.civicInfo.c_str(), hidl_info.civicInfo.size()); return true; } -bool convertHidlRttResponderToLegacy( - const V1_4::RttResponder& hidl_responder, - legacy_hal::wifi_rtt_responder* legacy_responder) { +bool convertHidlRttResponderToLegacy(const V1_4::RttResponder& hidl_responder, + legacy_hal::wifi_rtt_responder* legacy_responder) { if (!legacy_responder) { return false; } *legacy_responder = {}; - if (!convertHidlWifiChannelInfoToLegacy(hidl_responder.channel, - &legacy_responder->channel)) { + if (!convertHidlWifiChannelInfoToLegacy(hidl_responder.channel, &legacy_responder->channel)) { return false; } - legacy_responder->preamble = - convertHidlRttPreambleToLegacy(hidl_responder.preamble); + legacy_responder->preamble = convertHidlRttPreambleToLegacy(hidl_responder.preamble); return true; } -bool convertLegacyRttResponderToHidl( - const legacy_hal::wifi_rtt_responder& legacy_responder, - V1_4::RttResponder* hidl_responder) { +bool convertLegacyRttResponderToHidl(const legacy_hal::wifi_rtt_responder& legacy_responder, + V1_4::RttResponder* hidl_responder) { if (!hidl_responder) { return false; } *hidl_responder = {}; - if (!convertLegacyWifiChannelInfoToHidl(legacy_responder.channel, - &hidl_responder->channel)) { + if (!convertLegacyWifiChannelInfoToHidl(legacy_responder.channel, &hidl_responder->channel)) { return false; } - hidl_responder->preamble = - convertLegacyRttPreambleToHidl(legacy_responder.preamble); + hidl_responder->preamble = convertLegacyRttPreambleToHidl(legacy_responder.preamble); return true; } bool convertLegacyRttCapabilitiesToHidl( - const legacy_hal::wifi_rtt_capabilities& legacy_capabilities, - V1_4::RttCapabilities* hidl_capabilities) { + const legacy_hal::wifi_rtt_capabilities& legacy_capabilities, + V1_4::RttCapabilities* hidl_capabilities) { if (!hidl_capabilities) { return false; } *hidl_capabilities = {}; - hidl_capabilities->rttOneSidedSupported = - legacy_capabilities.rtt_one_sided_supported; + hidl_capabilities->rttOneSidedSupported = legacy_capabilities.rtt_one_sided_supported; hidl_capabilities->rttFtmSupported = legacy_capabilities.rtt_ftm_supported; hidl_capabilities->lciSupported = legacy_capabilities.lci_support; hidl_capabilities->lcrSupported = legacy_capabilities.lcr_support; - hidl_capabilities->responderSupported = - legacy_capabilities.responder_supported; + hidl_capabilities->responderSupported = legacy_capabilities.responder_supported; hidl_capabilities->preambleSupport = 0; - for (const auto flag : - {legacy_hal::WIFI_RTT_PREAMBLE_LEGACY, - legacy_hal::WIFI_RTT_PREAMBLE_HT, legacy_hal::WIFI_RTT_PREAMBLE_VHT, - legacy_hal::WIFI_RTT_PREAMBLE_HE}) { + for (const auto flag : {legacy_hal::WIFI_RTT_PREAMBLE_LEGACY, legacy_hal::WIFI_RTT_PREAMBLE_HT, + legacy_hal::WIFI_RTT_PREAMBLE_VHT, legacy_hal::WIFI_RTT_PREAMBLE_HE}) { if (legacy_capabilities.preamble_support & flag) { hidl_capabilities->preambleSupport |= - static_cast<std::underlying_type<V1_4::RttPreamble>::type>( - convertLegacyRttPreambleToHidl(flag)); + static_cast<std::underlying_type<V1_4::RttPreamble>::type>( + convertLegacyRttPreambleToHidl(flag)); } } hidl_capabilities->bwSupport = 0; for (const auto flag : - {legacy_hal::WIFI_RTT_BW_5, legacy_hal::WIFI_RTT_BW_10, - legacy_hal::WIFI_RTT_BW_20, legacy_hal::WIFI_RTT_BW_40, - legacy_hal::WIFI_RTT_BW_80, legacy_hal::WIFI_RTT_BW_160}) { + {legacy_hal::WIFI_RTT_BW_5, legacy_hal::WIFI_RTT_BW_10, legacy_hal::WIFI_RTT_BW_20, + legacy_hal::WIFI_RTT_BW_40, legacy_hal::WIFI_RTT_BW_80, legacy_hal::WIFI_RTT_BW_160}) { if (legacy_capabilities.bw_support & flag) { hidl_capabilities->bwSupport |= - static_cast<std::underlying_type<RttBw>::type>( - convertLegacyRttBwToHidl(flag)); + static_cast<std::underlying_type<RttBw>::type>(convertLegacyRttBwToHidl(flag)); } } hidl_capabilities->mcVersion = legacy_capabilities.mc_version; @@ -2909,26 +2608,23 @@ bool convertLegacyWifiRateInfoToHidl(const legacy_hal::wifi_rate& legacy_rate, return false; } *hidl_rate = {}; - hidl_rate->preamble = - convertLegacyWifiRatePreambleToHidl(legacy_rate.preamble); + hidl_rate->preamble = convertLegacyWifiRatePreambleToHidl(legacy_rate.preamble); hidl_rate->nss = convertLegacyWifiRateNssToHidl(legacy_rate.nss); hidl_rate->bw = convertLegacyWifiChannelWidthToHidl( - static_cast<legacy_hal::wifi_channel_width>(legacy_rate.bw)); + static_cast<legacy_hal::wifi_channel_width>(legacy_rate.bw)); hidl_rate->rateMcsIdx = legacy_rate.rateMcsIdx; hidl_rate->bitRateInKbps = legacy_rate.bitrate; return true; } -bool convertLegacyRttResultToHidl( - const legacy_hal::wifi_rtt_result& legacy_result, - V1_4::RttResult* hidl_result) { +bool convertLegacyRttResultToHidl(const legacy_hal::wifi_rtt_result& legacy_result, + V1_4::RttResult* hidl_result) { if (!hidl_result) { return false; } *hidl_result = {}; CHECK(sizeof(legacy_result.addr) == hidl_result->addr.size()); - memcpy(hidl_result->addr.data(), legacy_result.addr, - sizeof(legacy_result.addr)); + memcpy(hidl_result->addr.data(), legacy_result.addr, sizeof(legacy_result.addr)); hidl_result->burstNum = legacy_result.burst_num; hidl_result->measurementNumber = legacy_result.measurement_number; hidl_result->successNumber = legacy_result.success_number; @@ -2938,12 +2634,10 @@ bool convertLegacyRttResultToHidl( hidl_result->type = convertLegacyRttTypeToHidl(legacy_result.type); hidl_result->rssi = legacy_result.rssi; hidl_result->rssiSpread = legacy_result.rssi_spread; - if (!convertLegacyWifiRateInfoToHidl(legacy_result.tx_rate, - &hidl_result->txRate)) { + if (!convertLegacyWifiRateInfoToHidl(legacy_result.tx_rate, &hidl_result->txRate)) { return false; } - if (!convertLegacyWifiRateInfoToHidl(legacy_result.rx_rate, - &hidl_result->rxRate)) { + if (!convertLegacyWifiRateInfoToHidl(legacy_result.rx_rate, &hidl_result->rxRate)) { return false; } hidl_result->rtt = legacy_result.rtt; @@ -2955,20 +2649,18 @@ bool convertLegacyRttResultToHidl( hidl_result->timeStampInUs = legacy_result.ts; hidl_result->burstDurationInMs = legacy_result.burst_duration; hidl_result->negotiatedBurstNum = legacy_result.negotiated_burst_num; - if (legacy_result.LCI && - !convertLegacyIeToHidl(*legacy_result.LCI, &hidl_result->lci)) { + if (legacy_result.LCI && !convertLegacyIeToHidl(*legacy_result.LCI, &hidl_result->lci)) { return false; } - if (legacy_result.LCR && - !convertLegacyIeToHidl(*legacy_result.LCR, &hidl_result->lcr)) { + if (legacy_result.LCR && !convertLegacyIeToHidl(*legacy_result.LCR, &hidl_result->lcr)) { return false; } return true; } bool convertLegacyVectorOfRttResultToHidl( - const std::vector<const legacy_hal::wifi_rtt_result*>& legacy_results, - std::vector<V1_4::RttResult>* hidl_results) { + const std::vector<const legacy_hal::wifi_rtt_result*>& legacy_results, + std::vector<V1_4::RttResult>* hidl_results) { if (!hidl_results) { return false; } @@ -2983,8 +2675,7 @@ bool convertLegacyVectorOfRttResultToHidl( return true; } -legacy_hal::wifi_interface_type convertHidlIfaceTypeToLegacy( - IfaceType hidl_interface_type) { +legacy_hal::wifi_interface_type convertHidlIfaceTypeToLegacy(IfaceType hidl_interface_type) { switch (hidl_interface_type) { case IfaceType::STA: return legacy_hal::WIFI_INTERFACE_TYPE_STA; @@ -2999,28 +2690,28 @@ legacy_hal::wifi_interface_type convertHidlIfaceTypeToLegacy( } legacy_hal::wifi_multi_sta_use_case convertHidlMultiStaUseCaseToLegacy( - IWifiChip::MultiStaUseCase use_case) { + V1_5::IWifiChip::MultiStaUseCase use_case) { switch (use_case) { - case IWifiChip::MultiStaUseCase::DUAL_STA_TRANSIENT_PREFER_PRIMARY: + case V1_5::IWifiChip::MultiStaUseCase::DUAL_STA_TRANSIENT_PREFER_PRIMARY: return legacy_hal::WIFI_DUAL_STA_TRANSIENT_PREFER_PRIMARY; - case IWifiChip::MultiStaUseCase::DUAL_STA_NON_TRANSIENT_UNBIASED: + case V1_5::IWifiChip::MultiStaUseCase::DUAL_STA_NON_TRANSIENT_UNBIASED: return legacy_hal::WIFI_DUAL_STA_NON_TRANSIENT_UNBIASED; } CHECK(false); } bool convertHidlCoexUnsafeChannelToLegacy( - const IWifiChip::CoexUnsafeChannel& hidl_unsafe_channel, - legacy_hal::wifi_coex_unsafe_channel* legacy_unsafe_channel) { + const V1_5::IWifiChip::CoexUnsafeChannel& hidl_unsafe_channel, + legacy_hal::wifi_coex_unsafe_channel* legacy_unsafe_channel) { if (!legacy_unsafe_channel) { return false; } *legacy_unsafe_channel = {}; switch (hidl_unsafe_channel.band) { - case WifiBand::BAND_24GHZ: + case V1_5::WifiBand::BAND_24GHZ: legacy_unsafe_channel->band = legacy_hal::WLAN_MAC_2_4_BAND; break; - case WifiBand::BAND_5GHZ: + case V1_5::WifiBand::BAND_5GHZ: legacy_unsafe_channel->band = legacy_hal::WLAN_MAC_5_0_BAND; break; default: @@ -3032,16 +2723,16 @@ bool convertHidlCoexUnsafeChannelToLegacy( } bool convertHidlVectorOfCoexUnsafeChannelToLegacy( - const std::vector<IWifiChip::CoexUnsafeChannel>& hidl_unsafe_channels, - std::vector<legacy_hal::wifi_coex_unsafe_channel>* legacy_unsafe_channels) { + const std::vector<V1_5::IWifiChip::CoexUnsafeChannel>& hidl_unsafe_channels, + std::vector<legacy_hal::wifi_coex_unsafe_channel>* legacy_unsafe_channels) { if (!legacy_unsafe_channels) { return false; } *legacy_unsafe_channels = {}; for (const auto& hidl_unsafe_channel : hidl_unsafe_channels) { legacy_hal::wifi_coex_unsafe_channel legacy_unsafe_channel; - if (!hidl_struct_util::convertHidlCoexUnsafeChannelToLegacy( - hidl_unsafe_channel, &legacy_unsafe_channel)) { + if (!hidl_struct_util::convertHidlCoexUnsafeChannelToLegacy(hidl_unsafe_channel, + &legacy_unsafe_channel)) { return false; } legacy_unsafe_channels->push_back(legacy_unsafe_channel); @@ -3051,7 +2742,7 @@ bool convertHidlVectorOfCoexUnsafeChannelToLegacy( } // namespace hidl_struct_util } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.6/default/hidl_struct_util.h b/wifi/1.6/default/hidl_struct_util.h new file mode 100644 index 0000000000..15a3205847 --- /dev/null +++ b/wifi/1.6/default/hidl_struct_util.h @@ -0,0 +1,200 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef HIDL_STRUCT_UTIL_H_ +#define HIDL_STRUCT_UTIL_H_ + +#include <vector> + +#include <android/hardware/wifi/1.0/IWifiChip.h> +#include <android/hardware/wifi/1.0/types.h> +#include <android/hardware/wifi/1.2/types.h> +#include <android/hardware/wifi/1.3/types.h> +#include <android/hardware/wifi/1.4/IWifiChipEventCallback.h> +#include <android/hardware/wifi/1.4/types.h> +#include <android/hardware/wifi/1.5/IWifiChip.h> +#include <android/hardware/wifi/1.5/types.h> + +#include "wifi_legacy_hal.h" + +/** + * This file contains a bunch of functions to convert structs from the legacy + * HAL to HIDL and vice versa. + * TODO(b/32093047): Add unit tests for these conversion methods in the VTS test + * suite. + */ +namespace android { +namespace hardware { +namespace wifi { +namespace V1_6 { +namespace implementation { +namespace hidl_struct_util { +using namespace android::hardware::wifi::V1_0; + +// Chip conversion methods. +bool convertLegacyFeaturesToHidlChipCapabilities(uint64_t legacy_feature_set, + uint32_t legacy_logger_feature_set, + uint32_t* hidl_caps); +bool convertLegacyDebugRingBufferStatusToHidl( + const legacy_hal::wifi_ring_buffer_status& legacy_status, + WifiDebugRingBufferStatus* hidl_status); +bool convertLegacyVectorOfDebugRingBufferStatusToHidl( + const std::vector<legacy_hal::wifi_ring_buffer_status>& legacy_status_vec, + std::vector<WifiDebugRingBufferStatus>* hidl_status_vec); +bool convertLegacyWakeReasonStatsToHidl(const legacy_hal::WakeReasonStats& legacy_stats, + WifiDebugHostWakeReasonStats* hidl_stats); +legacy_hal::wifi_power_scenario convertHidlTxPowerScenarioToLegacy( + V1_1::IWifiChip::TxPowerScenario hidl_scenario); +legacy_hal::wifi_latency_mode convertHidlLatencyModeToLegacy( + V1_3::IWifiChip::LatencyMode hidl_latency_mode); +legacy_hal::wifi_power_scenario convertHidlTxPowerScenarioToLegacy_1_2( + V1_2::IWifiChip::TxPowerScenario hidl_scenario); +bool convertLegacyWifiMacInfosToHidl( + const std::vector<legacy_hal::WifiMacInfo>& legacy_mac_infos, + std::vector<V1_4::IWifiChipEventCallback::RadioModeInfo>* hidl_radio_mode_infos); +legacy_hal::wifi_interface_type convertHidlIfaceTypeToLegacy(IfaceType hidl_interface_type); +legacy_hal::wifi_multi_sta_use_case convertHidlMultiStaUseCaseToLegacy( + V1_5::IWifiChip::MultiStaUseCase use_case); +bool convertHidlCoexUnsafeChannelToLegacy( + const V1_5::IWifiChip::CoexUnsafeChannel& hidl_unsafe_channel, + legacy_hal::wifi_coex_unsafe_channel* legacy_unsafe_channel); +bool convertHidlVectorOfCoexUnsafeChannelToLegacy( + const std::vector<V1_5::IWifiChip::CoexUnsafeChannel>& hidl_unsafe_channels, + std::vector<legacy_hal::wifi_coex_unsafe_channel>* legacy_unsafe_channels); + +// STA iface conversion methods. +bool convertLegacyFeaturesToHidlStaCapabilities(uint64_t legacy_feature_set, + uint32_t legacy_logger_feature_set, + uint32_t* hidl_caps); +bool convertLegacyApfCapabilitiesToHidl(const legacy_hal::PacketFilterCapabilities& legacy_caps, + StaApfPacketFilterCapabilities* hidl_caps); +bool convertLegacyGscanCapabilitiesToHidl(const legacy_hal::wifi_gscan_capabilities& legacy_caps, + StaBackgroundScanCapabilities* hidl_caps); +legacy_hal::wifi_band convertHidlWifiBandToLegacy(V1_0::WifiBand band); +bool convertHidlGscanParamsToLegacy(const StaBackgroundScanParameters& hidl_scan_params, + legacy_hal::wifi_scan_cmd_params* legacy_scan_params); +// |has_ie_data| indicates whether or not the wifi_scan_result includes 802.11 +// Information Elements (IEs) +bool convertLegacyGscanResultToHidl(const legacy_hal::wifi_scan_result& legacy_scan_result, + bool has_ie_data, StaScanResult* hidl_scan_result); +// |cached_results| is assumed to not include IEs. +bool convertLegacyVectorOfCachedGscanResultsToHidl( + const std::vector<legacy_hal::wifi_cached_scan_results>& legacy_cached_scan_results, + std::vector<StaScanData>* hidl_scan_datas); +bool convertLegacyLinkLayerStatsToHidl(const legacy_hal::LinkLayerStats& legacy_stats, + V1_5::StaLinkLayerStats* hidl_stats); +bool convertLegacyRoamingCapabilitiesToHidl( + const legacy_hal::wifi_roaming_capabilities& legacy_caps, + StaRoamingCapabilities* hidl_caps); +bool convertHidlRoamingConfigToLegacy(const StaRoamingConfig& hidl_config, + legacy_hal::wifi_roaming_config* legacy_config); +legacy_hal::fw_roaming_state_t convertHidlRoamingStateToLegacy(StaRoamingState state); +bool convertLegacyVectorOfDebugTxPacketFateToHidl( + const std::vector<legacy_hal::wifi_tx_report>& legacy_fates, + std::vector<WifiDebugTxPacketFateReport>* hidl_fates); +bool convertLegacyVectorOfDebugRxPacketFateToHidl( + const std::vector<legacy_hal::wifi_rx_report>& legacy_fates, + std::vector<WifiDebugRxPacketFateReport>* hidl_fates); + +// NAN iface conversion methods. +void convertToWifiNanStatus(legacy_hal::NanStatusType type, const char* str, size_t max_len, + WifiNanStatus* wifiNanStatus); +bool convertHidlNanEnableRequestToLegacy(const V1_4::NanEnableRequest& hidl_request, + legacy_hal::NanEnableRequest* legacy_request); +bool convertHidlNanConfigRequestToLegacy(const V1_4::NanConfigRequest& hidl_request, + legacy_hal::NanConfigRequest* legacy_request); +bool convertHidlNanEnableRequest_1_4ToLegacy( + const V1_4::NanEnableRequest& hidl_request1, + const V1_5::NanConfigRequestSupplemental& hidl_request2, + legacy_hal::NanEnableRequest* legacy_request); +bool convertHidlNanConfigRequest_1_4ToLegacy( + const V1_4::NanConfigRequest& hidl_request1, + const V1_5::NanConfigRequestSupplemental& hidl_request2, + legacy_hal::NanConfigRequest* legacy_request); +bool convertHidlNanEnableRequest_1_5ToLegacy( + const V1_4::NanEnableRequest& hidl_request1, + const V1_5::NanConfigRequestSupplemental& hidl_request2, + legacy_hal::NanEnableRequest* legacy_request); +bool convertHidlNanConfigRequest_1_5ToLegacy( + const V1_4::NanConfigRequest& hidl_request1, + const V1_5::NanConfigRequestSupplemental& hidl_request2, + legacy_hal::NanConfigRequest* legacy_request); +bool convertHidlNanPublishRequestToLegacy(const NanPublishRequest& hidl_request, + legacy_hal::NanPublishRequest* legacy_request); +bool convertHidlNanSubscribeRequestToLegacy(const NanSubscribeRequest& hidl_request, + legacy_hal::NanSubscribeRequest* legacy_request); +bool convertHidlNanTransmitFollowupRequestToLegacy( + const NanTransmitFollowupRequest& hidl_request, + legacy_hal::NanTransmitFollowupRequest* legacy_request); +bool convertHidlNanDataPathInitiatorRequestToLegacy( + const NanInitiateDataPathRequest& hidl_request, + legacy_hal::NanDataPathInitiatorRequest* legacy_request); +bool convertHidlNanDataPathIndicationResponseToLegacy( + const NanRespondToDataPathIndicationRequest& hidl_response, + legacy_hal::NanDataPathIndicationResponse* legacy_response); +bool convertLegacyNanResponseHeaderToHidl(const legacy_hal::NanResponseMsg& legacy_response, + WifiNanStatus* wifiNanStatus); +bool convertLegacyNanCapabilitiesResponseToHidl(const legacy_hal::NanCapabilities& legacy_response, + V1_5::NanCapabilities* hidl_response); +bool convertLegacyNanMatchIndToHidl(const legacy_hal::NanMatchInd& legacy_ind, + NanMatchInd* hidl_ind); +bool convertLegacyNanFollowupIndToHidl(const legacy_hal::NanFollowupInd& legacy_ind, + NanFollowupReceivedInd* hidl_ind); +bool convertLegacyNanDataPathRequestIndToHidl(const legacy_hal::NanDataPathRequestInd& legacy_ind, + NanDataPathRequestInd* hidl_ind); +bool convertLegacyNanDataPathConfirmIndToHidl(const legacy_hal::NanDataPathConfirmInd& legacy_ind, + V1_2::NanDataPathConfirmInd* hidl_ind); +bool convertLegacyNanDataPathScheduleUpdateIndToHidl( + const legacy_hal::NanDataPathScheduleUpdateInd& legacy_ind, + V1_2::NanDataPathScheduleUpdateInd* hidl_ind); + +// RTT controller conversion methods. +bool convertHidlVectorOfRttConfigToLegacy(const std::vector<V1_4::RttConfig>& hidl_configs, + std::vector<legacy_hal::wifi_rtt_config>* legacy_configs); +bool convertHidlRttLciInformationToLegacy(const RttLciInformation& hidl_info, + legacy_hal::wifi_lci_information* legacy_info); +bool convertHidlRttLcrInformationToLegacy(const RttLcrInformation& hidl_info, + legacy_hal::wifi_lcr_information* legacy_info); +bool convertHidlRttResponderToLegacy(const V1_4::RttResponder& hidl_responder, + legacy_hal::wifi_rtt_responder* legacy_responder); +bool convertHidlWifiChannelInfoToLegacy(const WifiChannelInfo& hidl_info, + legacy_hal::wifi_channel_info* legacy_info); +bool convertLegacyRttResponderToHidl(const legacy_hal::wifi_rtt_responder& legacy_responder, + V1_4::RttResponder* hidl_responder); +bool convertLegacyRttCapabilitiesToHidl( + const legacy_hal::wifi_rtt_capabilities& legacy_capabilities, + V1_4::RttCapabilities* hidl_capabilities); +bool convertLegacyVectorOfRttResultToHidl( + const std::vector<const legacy_hal::wifi_rtt_result*>& legacy_results, + std::vector<V1_4::RttResult>* hidl_results); +uint32_t convertHidlWifiBandToLegacyMacBand(V1_5::WifiBand band); +uint32_t convertHidlWifiIfaceModeToLegacy(uint32_t hidl_iface_mask); +uint32_t convertHidlUsableChannelFilterToLegacy(uint32_t hidl_filter_mask); +bool convertLegacyWifiUsableChannelsToHidl( + const std::vector<legacy_hal::wifi_usable_channel>& legacy_usable_channels, + std::vector<V1_5::WifiUsableChannel>* hidl_usable_channels); +bool convertLegacyPeerInfoStatsToHidl(const legacy_hal::WifiPeerInfo& legacy_peer_info_stats, + V1_5::StaPeerInfo* hidl_peer_info_stats); +bool convertLegacyWifiRateInfoToHidl(const legacy_hal::wifi_rate& legacy_rate, + V1_4::WifiRateInfo* hidl_rate); +} // namespace hidl_struct_util +} // namespace implementation +} // namespace V1_6 +} // namespace wifi +} // namespace hardware +} // namespace android + +#endif // HIDL_STRUCT_UTIL_H_ diff --git a/wifi/1.5/default/hidl_sync_util.cpp b/wifi/1.6/default/hidl_sync_util.cpp index 93eefe9560..358d95e668 100644 --- a/wifi/1.5/default/hidl_sync_util.cpp +++ b/wifi/1.6/default/hidl_sync_util.cpp @@ -23,7 +23,7 @@ std::recursive_mutex g_mutex; namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace hidl_sync_util { @@ -33,7 +33,7 @@ std::unique_lock<std::recursive_mutex> acquireGlobalLock() { } // namespace hidl_sync_util } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/hidl_sync_util.h b/wifi/1.6/default/hidl_sync_util.h index e706f4cd87..2c1c37b0ad 100644 --- a/wifi/1.5/default/hidl_sync_util.h +++ b/wifi/1.6/default/hidl_sync_util.h @@ -24,13 +24,13 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace hidl_sync_util { std::unique_lock<std::recursive_mutex> acquireGlobalLock(); } // namespace hidl_sync_util } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/ringbuffer.cpp b/wifi/1.6/default/ringbuffer.cpp index f554111e61..6d4ed843c3 100644 --- a/wifi/1.5/default/ringbuffer.cpp +++ b/wifi/1.6/default/ringbuffer.cpp @@ -21,7 +21,7 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { Ringbuffer::Ringbuffer(size_t maxSize) : size_(0), maxSize_(maxSize) {} @@ -31,8 +31,7 @@ void Ringbuffer::append(const std::vector<uint8_t>& input) { return; } if (input.size() > maxSize_) { - LOG(INFO) << "Oversized message of " << input.size() - << " bytes is dropped"; + LOG(INFO) << "Oversized message of " << input.size() << " bytes is dropped"; return; } data_.push_back(input); @@ -53,7 +52,7 @@ void Ringbuffer::clear() { } } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/ringbuffer.h b/wifi/1.6/default/ringbuffer.h index 03fb37a6a2..8571a9f3d4 100644 --- a/wifi/1.5/default/ringbuffer.h +++ b/wifi/1.6/default/ringbuffer.h @@ -23,14 +23,14 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { /** * Ringbuffer object used to store debug data. */ class Ringbuffer { - public: + public: explicit Ringbuffer(size_t maxSize); // Appends the data buffer and deletes from the front until buffer is @@ -39,14 +39,14 @@ class Ringbuffer { const std::list<std::vector<uint8_t>>& getData() const; void clear(); - private: + private: std::list<std::vector<uint8_t>> data_; size_t size_; size_t maxSize_; }; } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/service.cpp b/wifi/1.6/default/service.cpp index 4c089d86ea..c874d8b199 100644 --- a/wifi/1.5/default/service.cpp +++ b/wifi/1.6/default/service.cpp @@ -20,8 +20,6 @@ #include <signal.h> #include <utils/Looper.h> #include <utils/StrongPointer.h> -#include <hwbinder/ProcessState.h> -#include <cutils/properties.h> #include "wifi.h" #include "wifi_feature_flags.h" @@ -32,24 +30,10 @@ using android::hardware::configureRpcThreadpool; using android::hardware::joinRpcThreadpool; using android::hardware::LazyServiceRegistrar; -using android::hardware::wifi::V1_5::implementation::feature_flags:: - WifiFeatureFlags; -using android::hardware::wifi::V1_5::implementation::legacy_hal::WifiLegacyHal; -using android::hardware::wifi::V1_5::implementation::legacy_hal:: - WifiLegacyHalFactory; -using android::hardware::wifi::V1_5::implementation::mode_controller:: - WifiModeController; - -#ifdef ARCH_ARM_32 -#define DEFAULT_WIFIHAL_HW_BINDER_SIZE_KB 16 -size_t getHWBinderMmapSize() { - size_t value = 0; - value = property_get_int32("persist.vendor.wifi.wifihal.hw.binder.size", DEFAULT_WIFIHAL_HW_BINDER_SIZE_KB); - if (!value) value = DEFAULT_WIFIHAL_HW_BINDER_SIZE_KB; // deafult to 1 page of 4 Kb - - return 1024 * value; -} -#endif /* ARCH_ARM_32 */ +using android::hardware::wifi::V1_6::implementation::feature_flags::WifiFeatureFlags; +using android::hardware::wifi::V1_6::implementation::legacy_hal::WifiLegacyHal; +using android::hardware::wifi::V1_6::implementation::legacy_hal::WifiLegacyHalFactory; +using android::hardware::wifi::V1_6::implementation::mode_controller::WifiModeController; #ifdef LAZY_SERVICE const bool kLazyService = true; @@ -59,33 +43,25 @@ const bool kLazyService = false; int main(int /*argc*/, char** argv) { signal(SIGPIPE, SIG_IGN); -#ifdef ARCH_ARM_32 - android::hardware::ProcessState::initWithMmapSize(getHWBinderMmapSize()); -#endif /* ARCH_ARM_32 */ - android::base::InitLogging( - argv, android::base::LogdLogger(android::base::SYSTEM)); + android::base::InitLogging(argv, android::base::LogdLogger(android::base::SYSTEM)); LOG(INFO) << "Wifi Hal is booting up..."; configureRpcThreadpool(1, true /* callerWillJoin */); - const auto iface_tool = - std::make_shared<android::wifi_system::InterfaceTool>(); - const auto legacy_hal_factory = - std::make_shared<WifiLegacyHalFactory>(iface_tool); + const auto iface_tool = std::make_shared<android::wifi_system::InterfaceTool>(); + const auto legacy_hal_factory = std::make_shared<WifiLegacyHalFactory>(iface_tool); // Setup hwbinder service - android::sp<android::hardware::wifi::V1_5::IWifi> service = - new android::hardware::wifi::V1_5::implementation::Wifi( - iface_tool, legacy_hal_factory, - std::make_shared<WifiModeController>(), - std::make_shared<WifiFeatureFlags>()); + android::sp<android::hardware::wifi::V1_6::IWifi> service = + new android::hardware::wifi::V1_6::implementation::Wifi( + iface_tool, legacy_hal_factory, std::make_shared<WifiModeController>(), + std::make_shared<WifiFeatureFlags>()); if (kLazyService) { auto registrar = LazyServiceRegistrar::getInstance(); CHECK_EQ(registrar.registerService(service), android::NO_ERROR) - << "Failed to register wifi HAL"; + << "Failed to register wifi HAL"; } else { - CHECK_EQ(service->registerAsService(), android::NO_ERROR) - << "Failed to register wifi HAL"; + CHECK_EQ(service->registerAsService(), android::NO_ERROR) << "Failed to register wifi HAL"; } joinRpcThreadpool(); diff --git a/wifi/1.5/default/tests/hidl_struct_util_unit_tests.cpp b/wifi/1.6/default/tests/hidl_struct_util_unit_tests.cpp index 4b4ebd6138..1182a58dbd 100644 --- a/wifi/1.5/default/tests/hidl_struct_util_unit_tests.cpp +++ b/wifi/1.6/default/tests/hidl_struct_util_unit_tests.cpp @@ -34,7 +34,7 @@ constexpr char kIfaceName2[] = "wlan1"; namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { using namespace android::hardware::wifi::V1_0; using ::android::hardware::wifi::V1_0::WifiChannelWidthInMhz; @@ -44,21 +44,17 @@ class HidlStructUtilTest : public Test {}; TEST_F(HidlStructUtilTest, CanConvertLegacyWifiMacInfosToHidlWithOneMac) { std::vector<legacy_hal::WifiMacInfo> legacy_mac_infos; legacy_hal::WifiMacInfo legacy_mac_info1 = { - .wlan_mac_id = kMacId1, - .mac_band = - legacy_hal::WLAN_MAC_5_0_BAND | legacy_hal::WLAN_MAC_2_4_BAND}; - legacy_hal::WifiIfaceInfo legacy_iface_info1 = {.name = kIfaceName1, - .channel = kIfaceChannel1}; - legacy_hal::WifiIfaceInfo legacy_iface_info2 = {.name = kIfaceName2, - .channel = kIfaceChannel2}; + .wlan_mac_id = kMacId1, + .mac_band = legacy_hal::WLAN_MAC_5_0_BAND | legacy_hal::WLAN_MAC_2_4_BAND}; + legacy_hal::WifiIfaceInfo legacy_iface_info1 = {.name = kIfaceName1, .channel = kIfaceChannel1}; + legacy_hal::WifiIfaceInfo legacy_iface_info2 = {.name = kIfaceName2, .channel = kIfaceChannel2}; legacy_mac_info1.iface_infos.push_back(legacy_iface_info1); legacy_mac_info1.iface_infos.push_back(legacy_iface_info2); legacy_mac_infos.push_back(legacy_mac_info1); - std::vector<V1_4::IWifiChipEventCallback::RadioModeInfo> - hidl_radio_mode_infos; - ASSERT_TRUE(hidl_struct_util::convertLegacyWifiMacInfosToHidl( - legacy_mac_infos, &hidl_radio_mode_infos)); + std::vector<V1_4::IWifiChipEventCallback::RadioModeInfo> hidl_radio_mode_infos; + ASSERT_TRUE(hidl_struct_util::convertLegacyWifiMacInfosToHidl(legacy_mac_infos, + &hidl_radio_mode_infos)); ASSERT_EQ(1u, hidl_radio_mode_infos.size()); auto hidl_radio_mode_info1 = hidl_radio_mode_infos[0]; @@ -67,65 +63,56 @@ TEST_F(HidlStructUtilTest, CanConvertLegacyWifiMacInfosToHidlWithOneMac) { ASSERT_EQ(2u, hidl_radio_mode_info1.ifaceInfos.size()); auto hidl_iface_info1 = hidl_radio_mode_info1.ifaceInfos[0]; EXPECT_EQ(legacy_iface_info1.name, hidl_iface_info1.name); - EXPECT_EQ(static_cast<uint32_t>(legacy_iface_info1.channel), - hidl_iface_info1.channel); + EXPECT_EQ(static_cast<uint32_t>(legacy_iface_info1.channel), hidl_iface_info1.channel); auto hidl_iface_info2 = hidl_radio_mode_info1.ifaceInfos[1]; EXPECT_EQ(legacy_iface_info2.name, hidl_iface_info2.name); - EXPECT_EQ(static_cast<uint32_t>(legacy_iface_info2.channel), - hidl_iface_info2.channel); + EXPECT_EQ(static_cast<uint32_t>(legacy_iface_info2.channel), hidl_iface_info2.channel); } TEST_F(HidlStructUtilTest, CanConvertLegacyWifiMacInfosToHidlWithTwoMac) { std::vector<legacy_hal::WifiMacInfo> legacy_mac_infos; - legacy_hal::WifiMacInfo legacy_mac_info1 = { - .wlan_mac_id = kMacId1, .mac_band = legacy_hal::WLAN_MAC_5_0_BAND}; - legacy_hal::WifiIfaceInfo legacy_iface_info1 = {.name = kIfaceName1, - .channel = kIfaceChannel1}; - legacy_hal::WifiMacInfo legacy_mac_info2 = { - .wlan_mac_id = kMacId2, .mac_band = legacy_hal::WLAN_MAC_2_4_BAND}; - legacy_hal::WifiIfaceInfo legacy_iface_info2 = {.name = kIfaceName2, - .channel = kIfaceChannel2}; + legacy_hal::WifiMacInfo legacy_mac_info1 = {.wlan_mac_id = kMacId1, + .mac_band = legacy_hal::WLAN_MAC_5_0_BAND}; + legacy_hal::WifiIfaceInfo legacy_iface_info1 = {.name = kIfaceName1, .channel = kIfaceChannel1}; + legacy_hal::WifiMacInfo legacy_mac_info2 = {.wlan_mac_id = kMacId2, + .mac_band = legacy_hal::WLAN_MAC_2_4_BAND}; + legacy_hal::WifiIfaceInfo legacy_iface_info2 = {.name = kIfaceName2, .channel = kIfaceChannel2}; legacy_mac_info1.iface_infos.push_back(legacy_iface_info1); legacy_mac_infos.push_back(legacy_mac_info1); legacy_mac_info2.iface_infos.push_back(legacy_iface_info2); legacy_mac_infos.push_back(legacy_mac_info2); - std::vector<V1_4::IWifiChipEventCallback::RadioModeInfo> - hidl_radio_mode_infos; - ASSERT_TRUE(hidl_struct_util::convertLegacyWifiMacInfosToHidl( - legacy_mac_infos, &hidl_radio_mode_infos)); + std::vector<V1_4::IWifiChipEventCallback::RadioModeInfo> hidl_radio_mode_infos; + ASSERT_TRUE(hidl_struct_util::convertLegacyWifiMacInfosToHidl(legacy_mac_infos, + &hidl_radio_mode_infos)); ASSERT_EQ(2u, hidl_radio_mode_infos.size()); // Find mac info 1. const auto hidl_radio_mode_info1 = - std::find_if(hidl_radio_mode_infos.begin(), hidl_radio_mode_infos.end(), - [&legacy_mac_info1]( - const V1_4::IWifiChipEventCallback::RadioModeInfo& x) { - return x.radioId == legacy_mac_info1.wlan_mac_id; - }); + std::find_if(hidl_radio_mode_infos.begin(), hidl_radio_mode_infos.end(), + [&legacy_mac_info1](const V1_4::IWifiChipEventCallback::RadioModeInfo& x) { + return x.radioId == legacy_mac_info1.wlan_mac_id; + }); ASSERT_NE(hidl_radio_mode_infos.end(), hidl_radio_mode_info1); EXPECT_EQ(V1_4::WifiBand::BAND_5GHZ, hidl_radio_mode_info1->bandInfo); ASSERT_EQ(1u, hidl_radio_mode_info1->ifaceInfos.size()); auto hidl_iface_info1 = hidl_radio_mode_info1->ifaceInfos[0]; EXPECT_EQ(legacy_iface_info1.name, hidl_iface_info1.name); - EXPECT_EQ(static_cast<uint32_t>(legacy_iface_info1.channel), - hidl_iface_info1.channel); + EXPECT_EQ(static_cast<uint32_t>(legacy_iface_info1.channel), hidl_iface_info1.channel); // Find mac info 2. const auto hidl_radio_mode_info2 = - std::find_if(hidl_radio_mode_infos.begin(), hidl_radio_mode_infos.end(), - [&legacy_mac_info2]( - const V1_4::IWifiChipEventCallback::RadioModeInfo& x) { - return x.radioId == legacy_mac_info2.wlan_mac_id; - }); + std::find_if(hidl_radio_mode_infos.begin(), hidl_radio_mode_infos.end(), + [&legacy_mac_info2](const V1_4::IWifiChipEventCallback::RadioModeInfo& x) { + return x.radioId == legacy_mac_info2.wlan_mac_id; + }); ASSERT_NE(hidl_radio_mode_infos.end(), hidl_radio_mode_info2); EXPECT_EQ(V1_4::WifiBand::BAND_24GHZ, hidl_radio_mode_info2->bandInfo); ASSERT_EQ(1u, hidl_radio_mode_info2->ifaceInfos.size()); auto hidl_iface_info2 = hidl_radio_mode_info2->ifaceInfos[0]; EXPECT_EQ(legacy_iface_info2.name, hidl_iface_info2.name); - EXPECT_EQ(static_cast<uint32_t>(legacy_iface_info2.channel), - hidl_iface_info2.channel); + EXPECT_EQ(static_cast<uint32_t>(legacy_iface_info2.channel), hidl_iface_info2.channel); } TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { @@ -143,8 +130,7 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_min = rand(); legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_max = rand(); legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_avg = rand(); - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_num_samples = - rand(); + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_num_samples = rand(); legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].rx_mpdu = rand(); legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].tx_mpdu = rand(); @@ -153,8 +139,7 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_min = rand(); legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_max = rand(); legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_avg = rand(); - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_num_samples = - rand(); + legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_num_samples = rand(); legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].rx_mpdu = rand(); legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].tx_mpdu = rand(); @@ -163,8 +148,7 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_min = rand(); legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_max = rand(); legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_avg = rand(); - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_num_samples = - rand(); + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_num_samples = rand(); legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].rx_mpdu = rand(); legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].tx_mpdu = rand(); @@ -173,8 +157,7 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_min = rand(); legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_max = rand(); legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_avg = rand(); - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_num_samples = - rand(); + legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_num_samples = rand(); legacy_stats.iface.info.time_slicing_duty_cycle_percent = rand(); legacy_stats.iface.num_peers = 1; @@ -195,14 +178,14 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { } legacy_hal::wifi_channel_stat channel_stat1 = { - .channel = {legacy_hal::WIFI_CHAN_WIDTH_20, 2437, 2437, 0}, - .on_time = 0x1111, - .cca_busy_time = 0x55, + .channel = {legacy_hal::WIFI_CHAN_WIDTH_20, 2437, 2437, 0}, + .on_time = 0x1111, + .cca_busy_time = 0x55, }; legacy_hal::wifi_channel_stat channel_stat2 = { - .channel = {legacy_hal::WIFI_CHAN_WIDTH_20, 5180, 5180, 0}, - .on_time = 0x2222, - .cca_busy_time = 0x66, + .channel = {legacy_hal::WIFI_CHAN_WIDTH_20, 5180, 5180, 0}, + .on_time = 0x2222, + .cca_busy_time = 0x66, }; radio.channel_stats.push_back(channel_stat1); radio.channel_stats.push_back(channel_stat2); @@ -212,30 +195,29 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { peer.peer_info.bssload.sta_count = rand(); peer.peer_info.bssload.chan_util = rand(); wifi_rate_stat rate_stat1 = { - .rate = {3, 1, 2, 5, 0, 0}, - .tx_mpdu = 0, - .rx_mpdu = 1, - .mpdu_lost = 2, - .retries = 3, - .retries_short = 4, - .retries_long = 5, + .rate = {3, 1, 2, 5, 0, 0}, + .tx_mpdu = 0, + .rx_mpdu = 1, + .mpdu_lost = 2, + .retries = 3, + .retries_short = 4, + .retries_long = 5, }; wifi_rate_stat rate_stat2 = { - .rate = {2, 2, 1, 6, 0, 1}, - .tx_mpdu = 6, - .rx_mpdu = 7, - .mpdu_lost = 8, - .retries = 9, - .retries_short = 10, - .retries_long = 11, + .rate = {2, 2, 1, 6, 0, 1}, + .tx_mpdu = 6, + .rx_mpdu = 7, + .mpdu_lost = 8, + .retries = 9, + .retries_short = 10, + .retries_long = 11, }; peer.rate_stats.push_back(rate_stat1); peer.rate_stats.push_back(rate_stat2); } V1_5::StaLinkLayerStats converted{}; - hidl_struct_util::convertLegacyLinkLayerStatsToHidl(legacy_stats, - &converted); + hidl_struct_util::convertLegacyLinkLayerStatsToHidl(legacy_stats, &converted); EXPECT_EQ(legacy_stats.iface.beacon_rx, converted.iface.V1_0.beaconRx); EXPECT_EQ(legacy_stats.iface.rssi_mgmt, converted.iface.V1_0.avgRssiMgmt); EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].rx_mpdu, @@ -252,9 +234,8 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { converted.iface.wmeBeContentionTimeStats.contentionTimeMaxInUsec); EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_avg, converted.iface.wmeBeContentionTimeStats.contentionTimeAvgInUsec); - EXPECT_EQ( - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_num_samples, - converted.iface.wmeBeContentionTimeStats.contentionNumSamples); + EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_num_samples, + converted.iface.wmeBeContentionTimeStats.contentionNumSamples); EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].rx_mpdu, converted.iface.V1_0.wmeBkPktStats.rxMpdu); @@ -270,9 +251,8 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { converted.iface.wmeBkContentionTimeStats.contentionTimeMaxInUsec); EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_avg, converted.iface.wmeBkContentionTimeStats.contentionTimeAvgInUsec); - EXPECT_EQ( - legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_num_samples, - converted.iface.wmeBkContentionTimeStats.contentionNumSamples); + EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_num_samples, + converted.iface.wmeBkContentionTimeStats.contentionNumSamples); EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].rx_mpdu, converted.iface.V1_0.wmeViPktStats.rxMpdu); @@ -288,9 +268,8 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { converted.iface.wmeViContentionTimeStats.contentionTimeMaxInUsec); EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_avg, converted.iface.wmeViContentionTimeStats.contentionTimeAvgInUsec); - EXPECT_EQ( - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_num_samples, - converted.iface.wmeViContentionTimeStats.contentionNumSamples); + EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_num_samples, + converted.iface.wmeViContentionTimeStats.contentionNumSamples); EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].rx_mpdu, converted.iface.V1_0.wmeVoPktStats.rxMpdu); @@ -306,29 +285,23 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { converted.iface.wmeVoContentionTimeStats.contentionTimeMaxInUsec); EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_avg, converted.iface.wmeVoContentionTimeStats.contentionTimeAvgInUsec); - EXPECT_EQ( - legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_num_samples, - converted.iface.wmeVoContentionTimeStats.contentionNumSamples); + EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_num_samples, + converted.iface.wmeVoContentionTimeStats.contentionNumSamples); EXPECT_EQ(legacy_stats.iface.info.time_slicing_duty_cycle_percent, converted.iface.timeSliceDutyCycleInPercent); EXPECT_EQ(legacy_stats.radios.size(), converted.radios.size()); for (size_t i = 0; i < legacy_stats.radios.size(); i++) { - EXPECT_EQ(legacy_stats.radios[i].stats.radio, - converted.radios[i].radioId); - EXPECT_EQ(legacy_stats.radios[i].stats.on_time, - converted.radios[i].V1_3.V1_0.onTimeInMs); - EXPECT_EQ(legacy_stats.radios[i].stats.tx_time, - converted.radios[i].V1_3.V1_0.txTimeInMs); - EXPECT_EQ(legacy_stats.radios[i].stats.rx_time, - converted.radios[i].V1_3.V1_0.rxTimeInMs); + EXPECT_EQ(legacy_stats.radios[i].stats.radio, converted.radios[i].radioId); + EXPECT_EQ(legacy_stats.radios[i].stats.on_time, converted.radios[i].V1_3.V1_0.onTimeInMs); + EXPECT_EQ(legacy_stats.radios[i].stats.tx_time, converted.radios[i].V1_3.V1_0.txTimeInMs); + EXPECT_EQ(legacy_stats.radios[i].stats.rx_time, converted.radios[i].V1_3.V1_0.rxTimeInMs); EXPECT_EQ(legacy_stats.radios[i].stats.on_time_scan, converted.radios[i].V1_3.V1_0.onTimeInMsForScan); EXPECT_EQ(legacy_stats.radios[i].tx_time_per_levels.size(), converted.radios[i].V1_3.V1_0.txTimeInMsPerLevel.size()); - for (size_t j = 0; j < legacy_stats.radios[i].tx_time_per_levels.size(); - j++) { + for (size_t j = 0; j < legacy_stats.radios[i].tx_time_per_levels.size(); j++) { EXPECT_EQ(legacy_stats.radios[i].tx_time_per_levels[j], converted.radios[i].V1_3.V1_0.txTimeInMsPerLevel[j]); } @@ -344,20 +317,16 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { converted.radios[i].V1_3.onTimeInMsForHs20Scan); EXPECT_EQ(legacy_stats.radios[i].channel_stats.size(), converted.radios[i].V1_3.channelStats.size()); - for (size_t k = 0; k < legacy_stats.radios[i].channel_stats.size(); - k++) { + for (size_t k = 0; k < legacy_stats.radios[i].channel_stats.size(); k++) { auto& legacy_channel_st = legacy_stats.radios[i].channel_stats[k]; EXPECT_EQ(WifiChannelWidthInMhz::WIDTH_20, converted.radios[i].V1_3.channelStats[k].channel.width); - EXPECT_EQ( - WifiChannelInMhz(legacy_channel_st.channel.center_freq), - converted.radios[i].V1_3.channelStats[k].channel.centerFreq); - EXPECT_EQ( - WifiChannelInMhz(legacy_channel_st.channel.center_freq0), - converted.radios[i].V1_3.channelStats[k].channel.centerFreq0); - EXPECT_EQ( - WifiChannelInMhz(legacy_channel_st.channel.center_freq1), - converted.radios[i].V1_3.channelStats[k].channel.centerFreq1); + EXPECT_EQ(WifiChannelInMhz(legacy_channel_st.channel.center_freq), + converted.radios[i].V1_3.channelStats[k].channel.centerFreq); + EXPECT_EQ(WifiChannelInMhz(legacy_channel_st.channel.center_freq0), + converted.radios[i].V1_3.channelStats[k].channel.centerFreq0); + EXPECT_EQ(WifiChannelInMhz(legacy_channel_st.channel.center_freq1), + converted.radios[i].V1_3.channelStats[k].channel.centerFreq1); EXPECT_EQ(legacy_channel_st.cca_busy_time, converted.radios[i].V1_3.channelStats[k].ccaBusyTimeInMs); EXPECT_EQ(legacy_channel_st.on_time, @@ -373,18 +342,13 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { converted.iface.peers[i].chanUtil); for (size_t j = 0; j < legacy_stats.peers[i].rate_stats.size(); j++) { EXPECT_EQ(legacy_stats.peers[i].rate_stats[j].rate.preamble, - (uint32_t)converted.iface.peers[i] - .rateStats[j] - .rateInfo.preamble); - EXPECT_EQ( - legacy_stats.peers[i].rate_stats[j].rate.nss, - (uint32_t)converted.iface.peers[i].rateStats[j].rateInfo.nss); - EXPECT_EQ( - legacy_stats.peers[i].rate_stats[j].rate.bw, - (uint32_t)converted.iface.peers[i].rateStats[j].rateInfo.bw); - EXPECT_EQ( - legacy_stats.peers[i].rate_stats[j].rate.rateMcsIdx, - converted.iface.peers[i].rateStats[j].rateInfo.rateMcsIdx); + (uint32_t)converted.iface.peers[i].rateStats[j].rateInfo.preamble); + EXPECT_EQ(legacy_stats.peers[i].rate_stats[j].rate.nss, + (uint32_t)converted.iface.peers[i].rateStats[j].rateInfo.nss); + EXPECT_EQ(legacy_stats.peers[i].rate_stats[j].rate.bw, + (uint32_t)converted.iface.peers[i].rateStats[j].rateInfo.bw); + EXPECT_EQ(legacy_stats.peers[i].rate_stats[j].rate.rateMcsIdx, + converted.iface.peers[i].rateStats[j].rateInfo.rateMcsIdx); EXPECT_EQ(legacy_stats.peers[i].rate_stats[j].tx_mpdu, converted.iface.peers[i].rateStats[j].txMpdu); EXPECT_EQ(legacy_stats.peers[i].rate_stats[j].rx_mpdu, @@ -402,23 +366,20 @@ TEST_F(HidlStructUtilTest, CanConvertLegacyFeaturesToHidl) { uint32_t hidle_caps; - uint32_t legacy_feature_set = - WIFI_FEATURE_D2D_RTT | WIFI_FEATURE_SET_LATENCY_MODE; - uint32_t legacy_logger_feature_set = - legacy_hal::WIFI_LOGGER_DRIVER_DUMP_SUPPORTED; + uint32_t legacy_feature_set = WIFI_FEATURE_D2D_RTT | WIFI_FEATURE_SET_LATENCY_MODE; + uint32_t legacy_logger_feature_set = legacy_hal::WIFI_LOGGER_DRIVER_DUMP_SUPPORTED; ASSERT_TRUE(hidl_struct_util::convertLegacyFeaturesToHidlChipCapabilities( - legacy_feature_set, legacy_logger_feature_set, &hidle_caps)); + legacy_feature_set, legacy_logger_feature_set, &hidle_caps)); EXPECT_EQ(HidlChipCaps::DEBUG_RING_BUFFER_VENDOR_DATA | - HidlChipCaps::DEBUG_HOST_WAKE_REASON_STATS | - HidlChipCaps::DEBUG_ERROR_ALERTS | HidlChipCaps::D2D_RTT | - HidlChipCaps::SET_LATENCY_MODE | - HidlChipCaps::DEBUG_MEMORY_DRIVER_DUMP, + HidlChipCaps::DEBUG_HOST_WAKE_REASON_STATS | + HidlChipCaps::DEBUG_ERROR_ALERTS | HidlChipCaps::D2D_RTT | + HidlChipCaps::SET_LATENCY_MODE | HidlChipCaps::DEBUG_MEMORY_DRIVER_DUMP, hidle_caps); } } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/tests/main.cpp b/wifi/1.6/default/tests/main.cpp index 9aac837242..9aac837242 100644 --- a/wifi/1.5/default/tests/main.cpp +++ b/wifi/1.6/default/tests/main.cpp diff --git a/wifi/1.5/default/tests/mock_interface_tool.cpp b/wifi/1.6/default/tests/mock_interface_tool.cpp index b99a16446c..b99a16446c 100644 --- a/wifi/1.5/default/tests/mock_interface_tool.cpp +++ b/wifi/1.6/default/tests/mock_interface_tool.cpp diff --git a/wifi/1.5/default/tests/mock_interface_tool.h b/wifi/1.6/default/tests/mock_interface_tool.h index 0f17551f96..7ce3992c7e 100644 --- a/wifi/1.5/default/tests/mock_interface_tool.h +++ b/wifi/1.6/default/tests/mock_interface_tool.h @@ -24,17 +24,15 @@ namespace android { namespace wifi_system { class MockInterfaceTool : public InterfaceTool { - public: + public: MockInterfaceTool(); MOCK_METHOD1(GetUpState, bool(const char* if_name)); MOCK_METHOD2(SetUpState, bool(const char* if_name, bool request_up)); MOCK_METHOD1(SetWifiUpState, bool(bool request_up)); MOCK_METHOD2(SetMacAddress, - bool(const char* if_name, - const std::array<uint8_t, ETH_ALEN>& address)); - MOCK_METHOD1(GetFactoryMacAddress, - std::array<uint8_t, ETH_ALEN>(const char* if_name)); + bool(const char* if_name, const std::array<uint8_t, ETH_ALEN>& address)); + MOCK_METHOD1(GetFactoryMacAddress, std::array<uint8_t, ETH_ALEN>(const char* if_name)); }; // class MockInterfaceTool diff --git a/wifi/1.5/default/tests/mock_wifi_feature_flags.cpp b/wifi/1.6/default/tests/mock_wifi_feature_flags.cpp index 2f66ba121b..d10b74c3a0 100644 --- a/wifi/1.5/default/tests/mock_wifi_feature_flags.cpp +++ b/wifi/1.6/default/tests/mock_wifi_feature_flags.cpp @@ -21,7 +21,7 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace feature_flags { @@ -29,7 +29,7 @@ MockWifiFeatureFlags::MockWifiFeatureFlags() {} } // namespace feature_flags } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/tests/mock_wifi_feature_flags.h b/wifi/1.6/default/tests/mock_wifi_feature_flags.h index c3877edd60..fa3600a4b1 100644 --- a/wifi/1.5/default/tests/mock_wifi_feature_flags.h +++ b/wifi/1.6/default/tests/mock_wifi_feature_flags.h @@ -25,22 +25,21 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace feature_flags { class MockWifiFeatureFlags : public WifiFeatureFlags { - public: + public: MockWifiFeatureFlags(); - MOCK_METHOD1(getChipModes, - std::vector<V1_0::IWifiChip::ChipMode>(bool is_primary)); + MOCK_METHOD1(getChipModes, std::vector<V1_0::IWifiChip::ChipMode>(bool is_primary)); MOCK_METHOD0(isApMacRandomizationDisabled, bool()); }; } // namespace feature_flags } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/tests/mock_wifi_iface_util.cpp b/wifi/1.6/default/tests/mock_wifi_iface_util.cpp index b101c4ac34..24b16cb469 100644 --- a/wifi/1.5/default/tests/mock_wifi_iface_util.cpp +++ b/wifi/1.6/default/tests/mock_wifi_iface_util.cpp @@ -24,17 +24,16 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace iface_util { -MockWifiIfaceUtil::MockWifiIfaceUtil( - const std::weak_ptr<wifi_system::InterfaceTool> iface_tool, - const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal) +MockWifiIfaceUtil::MockWifiIfaceUtil(const std::weak_ptr<wifi_system::InterfaceTool> iface_tool, + const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal) : WifiIfaceUtil(iface_tool, legacy_hal) {} } // namespace iface_util } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/tests/mock_wifi_iface_util.h b/wifi/1.6/default/tests/mock_wifi_iface_util.h index 6d5f59ce53..2701c36d76 100644 --- a/wifi/1.5/default/tests/mock_wifi_iface_util.h +++ b/wifi/1.6/default/tests/mock_wifi_iface_util.h @@ -24,29 +24,25 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace iface_util { class MockWifiIfaceUtil : public WifiIfaceUtil { - public: - MockWifiIfaceUtil( - const std::weak_ptr<wifi_system::InterfaceTool> iface_tool, - const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal); - MOCK_METHOD1(getFactoryMacAddress, - std::array<uint8_t, 6>(const std::string&)); - MOCK_METHOD2(setMacAddress, - bool(const std::string&, const std::array<uint8_t, 6>&)); + public: + MockWifiIfaceUtil(const std::weak_ptr<wifi_system::InterfaceTool> iface_tool, + const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal); + MOCK_METHOD1(getFactoryMacAddress, std::array<uint8_t, 6>(const std::string&)); + MOCK_METHOD2(setMacAddress, bool(const std::string&, const std::array<uint8_t, 6>&)); MOCK_METHOD0(getOrCreateRandomMacAddress, std::array<uint8_t, 6>()); - MOCK_METHOD2(registerIfaceEventHandlers, - void(const std::string&, IfaceEventHandlers)); + MOCK_METHOD2(registerIfaceEventHandlers, void(const std::string&, IfaceEventHandlers)); MOCK_METHOD1(unregisterIfaceEventHandlers, void(const std::string&)); MOCK_METHOD2(setUpState, bool(const std::string&, bool)); MOCK_METHOD1(ifNameToIndex, unsigned(const std::string&)); }; } // namespace iface_util } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/tests/mock_wifi_legacy_hal.cpp b/wifi/1.6/default/tests/mock_wifi_legacy_hal.cpp index d13c5568b3..2c558612e3 100644 --- a/wifi/1.5/default/tests/mock_wifi_legacy_hal.cpp +++ b/wifi/1.6/default/tests/mock_wifi_legacy_hal.cpp @@ -24,17 +24,16 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace legacy_hal { -MockWifiLegacyHal::MockWifiLegacyHal( - const std::weak_ptr<wifi_system::InterfaceTool> iface_tool, - const wifi_hal_fn& fn, bool is_primary) +MockWifiLegacyHal::MockWifiLegacyHal(const std::weak_ptr<wifi_system::InterfaceTool> iface_tool, + const wifi_hal_fn& fn, bool is_primary) : WifiLegacyHal(iface_tool, fn, is_primary) {} } // namespace legacy_hal } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/tests/mock_wifi_legacy_hal.h b/wifi/1.6/default/tests/mock_wifi_legacy_hal.h index 826b35f8dd..b1f53273ba 100644 --- a/wifi/1.5/default/tests/mock_wifi_legacy_hal.h +++ b/wifi/1.6/default/tests/mock_wifi_legacy_hal.h @@ -24,49 +24,42 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace legacy_hal { class MockWifiLegacyHal : public WifiLegacyHal { - public: - MockWifiLegacyHal( - const std::weak_ptr<wifi_system::InterfaceTool> iface_tool, - const wifi_hal_fn& fn, bool is_primary); + public: + MockWifiLegacyHal(const std::weak_ptr<wifi_system::InterfaceTool> iface_tool, + const wifi_hal_fn& fn, bool is_primary); MOCK_METHOD0(initialize, wifi_error()); MOCK_METHOD0(start, wifi_error()); - MOCK_METHOD2(stop, wifi_error(std::unique_lock<std::recursive_mutex>*, - const std::function<void()>&)); + MOCK_METHOD2(stop, + wifi_error(std::unique_lock<std::recursive_mutex>*, const std::function<void()>&)); MOCK_METHOD2(setDfsFlag, wifi_error(const std::string&, bool)); MOCK_METHOD2(registerRadioModeChangeCallbackHandler, - wifi_error(const std::string&, - const on_radio_mode_change_callback&)); - MOCK_METHOD1(getFirmwareVersion, std::pair<wifi_error, std::string>( - const std::string& iface_name)); - MOCK_METHOD1(getDriverVersion, std::pair<wifi_error, std::string>( - const std::string& iface_name)); + wifi_error(const std::string&, const on_radio_mode_change_callback&)); + MOCK_METHOD1(getFirmwareVersion, + std::pair<wifi_error, std::string>(const std::string& iface_name)); + MOCK_METHOD1(getDriverVersion, + std::pair<wifi_error, std::string>(const std::string& iface_name)); MOCK_METHOD2(selectTxPowerScenario, - wifi_error(const std::string& iface_name, - wifi_power_scenario scenario)); - MOCK_METHOD1(resetTxPowerScenario, - wifi_error(const std::string& iface_name)); + wifi_error(const std::string& iface_name, wifi_power_scenario scenario)); + MOCK_METHOD1(resetTxPowerScenario, wifi_error(const std::string& iface_name)); MOCK_METHOD2(nanRegisterCallbackHandlers, wifi_error(const std::string&, const NanCallbackHandlers&)); - MOCK_METHOD2(nanDisableRequest, - wifi_error(const std::string&, transaction_id)); + MOCK_METHOD2(nanDisableRequest, wifi_error(const std::string&, transaction_id)); MOCK_METHOD3(nanDataInterfaceDelete, - wifi_error(const std::string&, transaction_id, - const std::string&)); + wifi_error(const std::string&, transaction_id, const std::string&)); MOCK_METHOD2(createVirtualInterface, - wifi_error(const std::string& ifname, - wifi_interface_type iftype)); + wifi_error(const std::string& ifname, wifi_interface_type iftype)); MOCK_METHOD1(deleteVirtualInterface, wifi_error(const std::string& ifname)); MOCK_METHOD0(waitForDriverReady, wifi_error()); }; } // namespace legacy_hal } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/tests/mock_wifi_mode_controller.cpp b/wifi/1.6/default/tests/mock_wifi_mode_controller.cpp index e7ab22a01b..446f8296f8 100644 --- a/wifi/1.5/default/tests/mock_wifi_mode_controller.cpp +++ b/wifi/1.6/default/tests/mock_wifi_mode_controller.cpp @@ -24,14 +24,14 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace mode_controller { MockWifiModeController::MockWifiModeController() : WifiModeController() {} } // namespace mode_controller } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/tests/mock_wifi_mode_controller.h b/wifi/1.6/default/tests/mock_wifi_mode_controller.h index b9151f18b4..addcc81591 100644 --- a/wifi/1.5/default/tests/mock_wifi_mode_controller.h +++ b/wifi/1.6/default/tests/mock_wifi_mode_controller.h @@ -24,12 +24,12 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace mode_controller { class MockWifiModeController : public WifiModeController { - public: + public: MockWifiModeController(); MOCK_METHOD0(initialize, bool()); MOCK_METHOD1(changeFirmwareMode, bool(IfaceType)); @@ -38,7 +38,7 @@ class MockWifiModeController : public WifiModeController { }; } // namespace mode_controller } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/tests/ringbuffer_unit_tests.cpp b/wifi/1.6/default/tests/ringbuffer_unit_tests.cpp index 6fd34ee29c..eb86194ff0 100644 --- a/wifi/1.5/default/tests/ringbuffer_unit_tests.cpp +++ b/wifi/1.6/default/tests/ringbuffer_unit_tests.cpp @@ -24,11 +24,11 @@ using testing::Test; namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { class RingbufferTest : public Test { - public: + public: const uint32_t maxBufferSize_ = 10; Ringbuffer buffer_{maxBufferSize_}; }; @@ -91,7 +91,7 @@ TEST_F(RingbufferTest, OversizedAppendDoesNotDropExistingData) { EXPECT_EQ(input, buffer_.getData().front()); } } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/tests/runtests.sh b/wifi/1.6/default/tests/runtests.sh index 6bce3ef8c4..6bce3ef8c4 100755 --- a/wifi/1.5/default/tests/runtests.sh +++ b/wifi/1.6/default/tests/runtests.sh diff --git a/wifi/1.5/default/tests/wifi_chip_unit_tests.cpp b/wifi/1.6/default/tests/wifi_chip_unit_tests.cpp index 0ad6f3e821..53904116cf 100644 --- a/wifi/1.5/default/tests/wifi_chip_unit_tests.cpp +++ b/wifi/1.6/default/tests/wifi_chip_unit_tests.cpp @@ -41,11 +41,11 @@ constexpr ChipId kFakeChipId = 5; namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { class WifiChipTest : public Test { - protected: + protected: void setupV1IfaceCombination() { // clang-format off const hidl_vec<V1_0::IWifiChip::ChipIfaceCombination> combinationsSta = { @@ -59,8 +59,7 @@ class WifiChipTest : public Test { {feature_flags::chip_mode_ids::kV1Ap, combinationsAp} }; // clang-format on - EXPECT_CALL(*feature_flags_, getChipModes(true)) - .WillRepeatedly(testing::Return(modes)); + EXPECT_CALL(*feature_flags_, getChipModes(true)).WillRepeatedly(testing::Return(modes)); } void setupV1_AwareIfaceCombination() { @@ -76,8 +75,7 @@ class WifiChipTest : public Test { {feature_flags::chip_mode_ids::kV1Ap, combinationsAp} }; // clang-format on - EXPECT_CALL(*feature_flags_, getChipModes(true)) - .WillRepeatedly(testing::Return(modes)); + EXPECT_CALL(*feature_flags_, getChipModes(true)).WillRepeatedly(testing::Return(modes)); } void setupV1_AwareDisabledApIfaceCombination() { @@ -89,8 +87,7 @@ class WifiChipTest : public Test { {feature_flags::chip_mode_ids::kV1Sta, combinationsSta} }; // clang-format on - EXPECT_CALL(*feature_flags_, getChipModes(true)) - .WillRepeatedly(testing::Return(modes)); + EXPECT_CALL(*feature_flags_, getChipModes(true)).WillRepeatedly(testing::Return(modes)); } void setupV2_AwareIfaceCombination() { @@ -103,8 +100,7 @@ class WifiChipTest : public Test { {feature_flags::chip_mode_ids::kV3, combinations} }; // clang-format on - EXPECT_CALL(*feature_flags_, getChipModes(true)) - .WillRepeatedly(testing::Return(modes)); + EXPECT_CALL(*feature_flags_, getChipModes(true)).WillRepeatedly(testing::Return(modes)); } void setupV2_AwareDisabledApIfaceCombination() { @@ -116,8 +112,7 @@ class WifiChipTest : public Test { {feature_flags::chip_mode_ids::kV3, combinations} }; // clang-format on - EXPECT_CALL(*feature_flags_, getChipModes(true)) - .WillRepeatedly(testing::Return(modes)); + EXPECT_CALL(*feature_flags_, getChipModes(true)).WillRepeatedly(testing::Return(modes)); } void setup_MultiIfaceCombination() { @@ -129,39 +124,35 @@ class WifiChipTest : public Test { {feature_flags::chip_mode_ids::kV3, combinations} }; // clang-format on - EXPECT_CALL(*feature_flags_, getChipModes(true)) - .WillRepeatedly(testing::Return(modes)); + EXPECT_CALL(*feature_flags_, getChipModes(true)).WillRepeatedly(testing::Return(modes)); } void assertNumberOfModes(uint32_t num_modes) { - chip_->getAvailableModes( - [num_modes](const WifiStatus& status, - const std::vector<WifiChip::ChipMode>& modes) { - ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); - // V2_Aware has 1 mode of operation. - ASSERT_EQ(num_modes, modes.size()); - }); + chip_->getAvailableModes([num_modes](const WifiStatus& status, + const std::vector<WifiChip::ChipMode>& modes) { + ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); + // V2_Aware has 1 mode of operation. + ASSERT_EQ(num_modes, modes.size()); + }); } void findModeAndConfigureForIfaceType(const IfaceType& type) { // This should be aligned with kInvalidModeId in wifi_chip.cpp. ChipModeId mode_id = UINT32_MAX; - chip_->getAvailableModes( - [&mode_id, &type](const WifiStatus& status, - const std::vector<WifiChip::ChipMode>& modes) { - ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); - for (const auto& mode : modes) { - for (const auto& combination : mode.availableCombinations) { - for (const auto& limit : combination.limits) { - if (limit.types.end() != - std::find(limit.types.begin(), - limit.types.end(), type)) { - mode_id = mode.id; - } + chip_->getAvailableModes([&mode_id, &type](const WifiStatus& status, + const std::vector<WifiChip::ChipMode>& modes) { + ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); + for (const auto& mode : modes) { + for (const auto& combination : mode.availableCombinations) { + for (const auto& limit : combination.limits) { + if (limit.types.end() != + std::find(limit.types.begin(), limit.types.end(), type)) { + mode_id = mode.id; } } } - }); + } + }); ASSERT_NE(UINT32_MAX, mode_id); chip_->configureChip(mode_id, [](const WifiStatus& status) { @@ -174,58 +165,53 @@ class WifiChipTest : public Test { std::string iface_name; if (type == IfaceType::AP) { chip_->createApIface( - [&iface_name](const WifiStatus& status, - const sp<V1_0::IWifiApIface>& iface) { - if (WifiStatusCode::SUCCESS == status.code) { - ASSERT_NE(iface.get(), nullptr); - iface->getName([&iface_name](const WifiStatus& status, - const hidl_string& name) { - ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); - iface_name = name.c_str(); - }); - } - }); + [&iface_name](const WifiStatus& status, const sp<V1_0::IWifiApIface>& iface) { + if (WifiStatusCode::SUCCESS == status.code) { + ASSERT_NE(iface.get(), nullptr); + iface->getName([&iface_name](const WifiStatus& status, + const hidl_string& name) { + ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); + iface_name = name.c_str(); + }); + } + }); } else if (type == IfaceType::NAN) { chip_->createNanIface( - [&iface_name]( - const WifiStatus& status, - const sp<android::hardware::wifi::V1_0::IWifiNanIface>& - iface) { - if (WifiStatusCode::SUCCESS == status.code) { - ASSERT_NE(iface.get(), nullptr); - iface->getName([&iface_name](const WifiStatus& status, - const hidl_string& name) { - ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); - iface_name = name.c_str(); - }); - } - }); + [&iface_name](const WifiStatus& status, + const sp<android::hardware::wifi::V1_0::IWifiNanIface>& iface) { + if (WifiStatusCode::SUCCESS == status.code) { + ASSERT_NE(iface.get(), nullptr); + iface->getName([&iface_name](const WifiStatus& status, + const hidl_string& name) { + ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); + iface_name = name.c_str(); + }); + } + }); } else if (type == IfaceType::P2P) { chip_->createP2pIface( - [&iface_name](const WifiStatus& status, - const sp<IWifiP2pIface>& iface) { - if (WifiStatusCode::SUCCESS == status.code) { - ASSERT_NE(iface.get(), nullptr); - iface->getName([&iface_name](const WifiStatus& status, - const hidl_string& name) { - ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); - iface_name = name.c_str(); - }); - } - }); + [&iface_name](const WifiStatus& status, const sp<IWifiP2pIface>& iface) { + if (WifiStatusCode::SUCCESS == status.code) { + ASSERT_NE(iface.get(), nullptr); + iface->getName([&iface_name](const WifiStatus& status, + const hidl_string& name) { + ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); + iface_name = name.c_str(); + }); + } + }); } else if (type == IfaceType::STA) { chip_->createStaIface( - [&iface_name](const WifiStatus& status, - const sp<V1_0::IWifiStaIface>& iface) { - if (WifiStatusCode::SUCCESS == status.code) { - ASSERT_NE(iface.get(), nullptr); - iface->getName([&iface_name](const WifiStatus& status, - const hidl_string& name) { - ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); - iface_name = name.c_str(); - }); - } - }); + [&iface_name](const WifiStatus& status, const sp<V1_0::IWifiStaIface>& iface) { + if (WifiStatusCode::SUCCESS == status.code) { + ASSERT_NE(iface.get(), nullptr); + iface->getName([&iface_name](const WifiStatus& status, + const hidl_string& name) { + ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); + iface_name = name.c_str(); + }); + } + }); } return iface_name; } @@ -253,13 +239,12 @@ class WifiChipTest : public Test { bool createRttController() { bool success = false; chip_->createRttController_1_4( - NULL, [&success](const WifiStatus& status, - const sp<IWifiRttController>& rtt) { - if (WifiStatusCode::SUCCESS == status.code) { - ASSERT_NE(rtt.get(), nullptr); - success = true; - } - }); + NULL, [&success](const WifiStatus& status, const sp<IWifiRttController>& rtt) { + if (WifiStatusCode::SUCCESS == status.code) { + ASSERT_NE(rtt.get(), nullptr); + success = true; + } + }); return success; } @@ -269,27 +254,25 @@ class WifiChipTest : public Test { ChipId chip_id_ = kFakeChipId; legacy_hal::wifi_hal_fn fake_func_table_; std::shared_ptr<NiceMock<wifi_system::MockInterfaceTool>> iface_tool_{ - new NiceMock<wifi_system::MockInterfaceTool>}; + new NiceMock<wifi_system::MockInterfaceTool>}; std::shared_ptr<NiceMock<legacy_hal::MockWifiLegacyHal>> legacy_hal_{ - new NiceMock<legacy_hal::MockWifiLegacyHal>(iface_tool_, - fake_func_table_, true)}; - std::shared_ptr<NiceMock<mode_controller::MockWifiModeController>> - mode_controller_{new NiceMock<mode_controller::MockWifiModeController>}; + new NiceMock<legacy_hal::MockWifiLegacyHal>(iface_tool_, fake_func_table_, true)}; + std::shared_ptr<NiceMock<mode_controller::MockWifiModeController>> mode_controller_{ + new NiceMock<mode_controller::MockWifiModeController>}; std::shared_ptr<NiceMock<iface_util::MockWifiIfaceUtil>> iface_util_{ - new NiceMock<iface_util::MockWifiIfaceUtil>(iface_tool_, legacy_hal_)}; - std::shared_ptr<NiceMock<feature_flags::MockWifiFeatureFlags>> - feature_flags_{new NiceMock<feature_flags::MockWifiFeatureFlags>}; + new NiceMock<iface_util::MockWifiIfaceUtil>(iface_tool_, legacy_hal_)}; + std::shared_ptr<NiceMock<feature_flags::MockWifiFeatureFlags>> feature_flags_{ + new NiceMock<feature_flags::MockWifiFeatureFlags>}; - public: + public: void SetUp() override { - chip_ = - new WifiChip(chip_id_, true, legacy_hal_, mode_controller_, - iface_util_, feature_flags_, subsystemRestartHandler); + chip_ = new WifiChip(chip_id_, true, legacy_hal_, mode_controller_, iface_util_, + feature_flags_, subsystemRestartHandler); EXPECT_CALL(*mode_controller_, changeFirmwareMode(testing::_)) - .WillRepeatedly(testing::Return(true)); + .WillRepeatedly(testing::Return(true)); EXPECT_CALL(*legacy_hal_, start()) - .WillRepeatedly(testing::Return(legacy_hal::WIFI_SUCCESS)); + .WillRepeatedly(testing::Return(legacy_hal::WIFI_SUCCESS)); } void TearDown() override { @@ -305,7 +288,7 @@ class WifiChipTest : public Test { // Mode 1 - STA + P2P // Mode 2 - AP class WifiChipV1IfaceCombinationTest : public WifiChipTest { - public: + public: void SetUp() override { setupV1IfaceCombination(); WifiChipTest::SetUp(); @@ -364,7 +347,7 @@ TEST_F(WifiChipV1IfaceCombinationTest, ApMode_CreateNan_ShouldFail) { // Mode 1 - STA + P2P/NAN // Mode 2 - AP class WifiChipV1_AwareIfaceCombinationTest : public WifiChipTest { - public: + public: void SetUp() override { setupV1_AwareIfaceCombination(); WifiChipTest::SetUp(); @@ -393,30 +376,26 @@ TEST_F(WifiChipV1_AwareIfaceCombinationTest, StaMode_CreateAp_ShouldFail) { ASSERT_TRUE(createIface(IfaceType::AP).empty()); } -TEST_F(WifiChipV1_AwareIfaceCombinationTest, - StaMode_CreateStaP2p_ShouldSucceed) { +TEST_F(WifiChipV1_AwareIfaceCombinationTest, StaMode_CreateStaP2p_ShouldSucceed) { findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_FALSE(createIface(IfaceType::STA).empty()); ASSERT_FALSE(createIface(IfaceType::P2P).empty()); } -TEST_F(WifiChipV1_AwareIfaceCombinationTest, - StaMode_CreateStaNan_ShouldSucceed) { +TEST_F(WifiChipV1_AwareIfaceCombinationTest, StaMode_CreateStaNan_ShouldSucceed) { findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_FALSE(createIface(IfaceType::STA).empty()); ASSERT_FALSE(createIface(IfaceType::NAN).empty()); } -TEST_F(WifiChipV1_AwareIfaceCombinationTest, - StaMode_CreateStaP2PNan_ShouldFail) { +TEST_F(WifiChipV1_AwareIfaceCombinationTest, StaMode_CreateStaP2PNan_ShouldFail) { findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_FALSE(createIface(IfaceType::STA).empty()); ASSERT_FALSE(createIface(IfaceType::P2P).empty()); ASSERT_TRUE(createIface(IfaceType::NAN).empty()); } -TEST_F(WifiChipV1_AwareIfaceCombinationTest, - StaMode_CreateStaNan_AfterP2pRemove_ShouldSucceed) { +TEST_F(WifiChipV1_AwareIfaceCombinationTest, StaMode_CreateStaNan_AfterP2pRemove_ShouldSucceed) { findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_FALSE(createIface(IfaceType::STA).empty()); const auto p2p_iface_name = createIface(IfaceType::P2P); @@ -428,8 +407,7 @@ TEST_F(WifiChipV1_AwareIfaceCombinationTest, ASSERT_FALSE(createIface(IfaceType::NAN).empty()); } -TEST_F(WifiChipV1_AwareIfaceCombinationTest, - StaMode_CreateStaP2p_AfterNanRemove_ShouldSucceed) { +TEST_F(WifiChipV1_AwareIfaceCombinationTest, StaMode_CreateStaP2p_AfterNanRemove_ShouldSucceed) { findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_FALSE(createIface(IfaceType::STA).empty()); const auto nan_iface_name = createIface(IfaceType::NAN); @@ -488,31 +466,27 @@ TEST_F(WifiChipV1_AwareIfaceCombinationTest, SelectTxScenarioWithOnlySta) { findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_EQ(createIface(IfaceType::STA), "wlan0"); EXPECT_CALL(*legacy_hal_, selectTxPowerScenario("wlan0", testing::_)) - .WillOnce(testing::Return(legacy_hal::WIFI_SUCCESS)); + .WillOnce(testing::Return(legacy_hal::WIFI_SUCCESS)); chip_->selectTxPowerScenario_1_2( - V1_2::IWifiChip::TxPowerScenario::ON_HEAD_CELL_OFF, - [](const WifiStatus& status) { - ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); - }); + V1_2::IWifiChip::TxPowerScenario::ON_HEAD_CELL_OFF, + [](const WifiStatus& status) { ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); }); } TEST_F(WifiChipV1_AwareIfaceCombinationTest, SelectTxScenarioWithOnlyAp) { findModeAndConfigureForIfaceType(IfaceType::AP); ASSERT_EQ(createIface(IfaceType::AP), "wlan0"); EXPECT_CALL(*legacy_hal_, selectTxPowerScenario("wlan0", testing::_)) - .WillOnce(testing::Return(legacy_hal::WIFI_SUCCESS)); + .WillOnce(testing::Return(legacy_hal::WIFI_SUCCESS)); chip_->selectTxPowerScenario_1_2( - V1_2::IWifiChip::TxPowerScenario::ON_HEAD_CELL_OFF, - [](const WifiStatus& status) { - ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); - }); + V1_2::IWifiChip::TxPowerScenario::ON_HEAD_CELL_OFF, + [](const WifiStatus& status) { ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); }); } ////////// V2 + Aware Iface Combinations //////////// // Mode 1 - STA + STA/AP // - STA + P2P/NAN class WifiChipV2_AwareIfaceCombinationTest : public WifiChipTest { - public: + public: void SetUp() override { setupV2_AwareIfaceCombination(); WifiChipTest::SetUp(); @@ -559,8 +533,7 @@ TEST_F(WifiChipV2_AwareIfaceCombinationTest, CreateApSta_ShouldSucceed) { ASSERT_EQ(createIface(IfaceType::STA), "wlan0"); } -TEST_F(WifiChipV2_AwareIfaceCombinationTest, - CreateSta_AfterStaApRemove_ShouldSucceed) { +TEST_F(WifiChipV2_AwareIfaceCombinationTest, CreateSta_AfterStaApRemove_ShouldSucceed) { findModeAndConfigureForIfaceType(IfaceType::STA); const auto sta_iface_name = createIface(IfaceType::STA); ASSERT_FALSE(sta_iface_name.empty()); @@ -594,8 +567,7 @@ TEST_F(WifiChipV2_AwareIfaceCombinationTest, CreateStaP2PNan_ShouldFail) { ASSERT_TRUE(createIface(IfaceType::NAN).empty()); } -TEST_F(WifiChipV2_AwareIfaceCombinationTest, - CreateStaNan_AfterP2pRemove_ShouldSucceed) { +TEST_F(WifiChipV2_AwareIfaceCombinationTest, CreateStaNan_AfterP2pRemove_ShouldSucceed) { findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_FALSE(createIface(IfaceType::STA).empty()); const auto p2p_iface_name = createIface(IfaceType::P2P); @@ -607,8 +579,7 @@ TEST_F(WifiChipV2_AwareIfaceCombinationTest, ASSERT_FALSE(createIface(IfaceType::NAN).empty()); } -TEST_F(WifiChipV2_AwareIfaceCombinationTest, - CreateStaP2p_AfterNanRemove_ShouldSucceed) { +TEST_F(WifiChipV2_AwareIfaceCombinationTest, CreateStaP2p_AfterNanRemove_ShouldSucceed) { findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_FALSE(createIface(IfaceType::STA).empty()); const auto nan_iface_name = createIface(IfaceType::NAN); @@ -632,8 +603,7 @@ TEST_F(WifiChipV2_AwareIfaceCombinationTest, CreateApP2p_ShouldFail) { ASSERT_TRUE(createIface(IfaceType::P2P).empty()); } -TEST_F(WifiChipV2_AwareIfaceCombinationTest, - StaMode_CreateStaNan_AfterP2pRemove_ShouldSucceed) { +TEST_F(WifiChipV2_AwareIfaceCombinationTest, StaMode_CreateStaNan_AfterP2pRemove_ShouldSucceed) { findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_FALSE(createIface(IfaceType::STA).empty()); const auto p2p_iface_name = createIface(IfaceType::P2P); @@ -645,8 +615,7 @@ TEST_F(WifiChipV2_AwareIfaceCombinationTest, ASSERT_FALSE(createIface(IfaceType::NAN).empty()); } -TEST_F(WifiChipV2_AwareIfaceCombinationTest, - StaMode_CreateStaP2p_AfterNanRemove_ShouldSucceed) { +TEST_F(WifiChipV2_AwareIfaceCombinationTest, StaMode_CreateStaP2p_AfterNanRemove_ShouldSucceed) { findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_FALSE(createIface(IfaceType::STA).empty()); const auto nan_iface_name = createIface(IfaceType::NAN); @@ -658,8 +627,7 @@ TEST_F(WifiChipV2_AwareIfaceCombinationTest, ASSERT_FALSE(createIface(IfaceType::P2P).empty()); } -TEST_F(WifiChipV2_AwareIfaceCombinationTest, - CreateStaAp_EnsureDifferentIfaceNames) { +TEST_F(WifiChipV2_AwareIfaceCombinationTest, CreateStaAp_EnsureDifferentIfaceNames) { findModeAndConfigureForIfaceType(IfaceType::AP); const auto sta_iface_name = createIface(IfaceType::STA); const auto ap_iface_name = createIface(IfaceType::AP); @@ -690,28 +658,23 @@ TEST_F(WifiChipV2_AwareIfaceCombinationTest, SelectTxScenarioWithOnlySta) { findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_EQ(createIface(IfaceType::STA), "wlan0"); EXPECT_CALL(*legacy_hal_, selectTxPowerScenario("wlan0", testing::_)) - .WillOnce(testing::Return(legacy_hal::WIFI_SUCCESS)); + .WillOnce(testing::Return(legacy_hal::WIFI_SUCCESS)); chip_->selectTxPowerScenario_1_2( - V1_2::IWifiChip::TxPowerScenario::ON_HEAD_CELL_OFF, - [](const WifiStatus& status) { - ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); - }); + V1_2::IWifiChip::TxPowerScenario::ON_HEAD_CELL_OFF, + [](const WifiStatus& status) { ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); }); } TEST_F(WifiChipV2_AwareIfaceCombinationTest, SelectTxScenarioWithOnlyAp) { findModeAndConfigureForIfaceType(IfaceType::AP); ASSERT_EQ(createIface(IfaceType::AP), "wlan1"); EXPECT_CALL(*legacy_hal_, selectTxPowerScenario("wlan1", testing::_)) - .WillOnce(testing::Return(legacy_hal::WIFI_SUCCESS)); + .WillOnce(testing::Return(legacy_hal::WIFI_SUCCESS)); chip_->selectTxPowerScenario_1_2( - V1_2::IWifiChip::TxPowerScenario::ON_HEAD_CELL_OFF, - [](const WifiStatus& status) { - ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); - }); + V1_2::IWifiChip::TxPowerScenario::ON_HEAD_CELL_OFF, + [](const WifiStatus& status) { ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); }); } -TEST_F(WifiChipV2_AwareIfaceCombinationTest, - InvalidateAndRemoveNanOnStaRemove) { +TEST_F(WifiChipV2_AwareIfaceCombinationTest, InvalidateAndRemoveNanOnStaRemove) { findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_EQ(createIface(IfaceType::STA), "wlan0"); @@ -719,64 +682,55 @@ TEST_F(WifiChipV2_AwareIfaceCombinationTest, ASSERT_EQ(createIface(IfaceType::NAN), "wlan0"); // We should have 1 nan iface. - chip_->getNanIfaceNames( - [](const WifiStatus& status, const hidl_vec<hidl_string>& iface_names) { - ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); - ASSERT_EQ(iface_names.size(), 1u); - ASSERT_EQ(iface_names[0], "wlan0"); - }); + chip_->getNanIfaceNames([](const WifiStatus& status, const hidl_vec<hidl_string>& iface_names) { + ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); + ASSERT_EQ(iface_names.size(), 1u); + ASSERT_EQ(iface_names[0], "wlan0"); + }); // Retrieve the exact iface object. sp<android::hardware::wifi::V1_0::IWifiNanIface> nan_iface; - chip_->getNanIface( - "wlan0", - [&nan_iface]( - const WifiStatus& status, - const sp<android::hardware::wifi::V1_0::IWifiNanIface>& iface) { - ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); - ASSERT_NE(iface.get(), nullptr); - nan_iface = iface; - }); + chip_->getNanIface("wlan0", + [&nan_iface](const WifiStatus& status, + const sp<android::hardware::wifi::V1_0::IWifiNanIface>& iface) { + ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); + ASSERT_NE(iface.get(), nullptr); + nan_iface = iface; + }); // Remove the STA iface. removeIface(IfaceType::STA, "wlan0"); // We should have 0 nan iface now. - chip_->getNanIfaceNames( - [](const WifiStatus& status, const hidl_vec<hidl_string>& iface_names) { - ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); - ASSERT_EQ(iface_names.size(), 0u); - }); + chip_->getNanIfaceNames([](const WifiStatus& status, const hidl_vec<hidl_string>& iface_names) { + ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); + ASSERT_EQ(iface_names.size(), 0u); + }); // Any operation on the nan iface object should return error now. - nan_iface->getName( - [](const WifiStatus& status, const std::string& /* iface_name */) { - ASSERT_EQ(WifiStatusCode::ERROR_WIFI_IFACE_INVALID, status.code); - }); + nan_iface->getName([](const WifiStatus& status, const std::string& /* iface_name */) { + ASSERT_EQ(WifiStatusCode::ERROR_WIFI_IFACE_INVALID, status.code); + }); } -TEST_F(WifiChipV2_AwareIfaceCombinationTest, - InvalidateAndRemoveRttControllerOnStaRemove) { +TEST_F(WifiChipV2_AwareIfaceCombinationTest, InvalidateAndRemoveRttControllerOnStaRemove) { findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_EQ(createIface(IfaceType::STA), "wlan0"); // Create RTT controller sp<IWifiRttController> rtt_controller; chip_->createRttController_1_4( - NULL, [&rtt_controller](const WifiStatus& status, - const sp<IWifiRttController>& rtt) { - if (WifiStatusCode::SUCCESS == status.code) { - ASSERT_NE(rtt.get(), nullptr); - rtt_controller = rtt; - } - }); + NULL, [&rtt_controller](const WifiStatus& status, const sp<IWifiRttController>& rtt) { + if (WifiStatusCode::SUCCESS == status.code) { + ASSERT_NE(rtt.get(), nullptr); + rtt_controller = rtt; + } + }); // Remove the STA iface. removeIface(IfaceType::STA, "wlan0"); // Any operation on the rtt controller object should return error now. - rtt_controller->getBoundIface( - [](const WifiStatus& status, const sp<IWifiIface>& /* iface */) { - ASSERT_EQ(WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, - status.code); - }); + rtt_controller->getBoundIface([](const WifiStatus& status, const sp<IWifiIface>& /* iface */) { + ASSERT_EQ(WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, status.code); + }); } TEST_F(WifiChipV2_AwareIfaceCombinationTest, CreateNanWithSharedNanIface) { @@ -792,28 +746,24 @@ TEST_F(WifiChipV2_AwareIfaceCombinationTest, CreateNanWithDedicatedNanIface) { property_set("wifi.aware.interface", "aware0"); findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_EQ(createIface(IfaceType::STA), "wlan0"); - EXPECT_CALL(*iface_util_, ifNameToIndex("aware0")) - .WillOnce(testing::Return(4)); - EXPECT_CALL(*iface_util_, setUpState("aware0", true)) - .WillOnce(testing::Return(true)); + EXPECT_CALL(*iface_util_, ifNameToIndex("aware0")).WillOnce(testing::Return(4)); + EXPECT_CALL(*iface_util_, setUpState("aware0", true)).WillOnce(testing::Return(true)); ASSERT_EQ(createIface(IfaceType::NAN), "aware0"); - EXPECT_CALL(*iface_util_, setUpState("aware0", false)) - .WillOnce(testing::Return(true)); + EXPECT_CALL(*iface_util_, setUpState("aware0", false)).WillOnce(testing::Return(true)); removeIface(IfaceType::NAN, "aware0"); } ////////// V1 Iface Combinations when AP creation is disabled ////////// class WifiChipV1_AwareDisabledApIfaceCombinationTest : public WifiChipTest { - public: + public: void SetUp() override { setupV1_AwareDisabledApIfaceCombination(); WifiChipTest::SetUp(); } }; -TEST_F(WifiChipV1_AwareDisabledApIfaceCombinationTest, - StaMode_CreateSta_ShouldSucceed) { +TEST_F(WifiChipV1_AwareDisabledApIfaceCombinationTest, StaMode_CreateSta_ShouldSucceed) { findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_FALSE(createIface(IfaceType::STA).empty()); ASSERT_TRUE(createIface(IfaceType::AP).empty()); @@ -821,15 +771,14 @@ TEST_F(WifiChipV1_AwareDisabledApIfaceCombinationTest, ////////// V2 Iface Combinations when AP creation is disabled ////////// class WifiChipV2_AwareDisabledApIfaceCombinationTest : public WifiChipTest { - public: + public: void SetUp() override { setupV2_AwareDisabledApIfaceCombination(); WifiChipTest::SetUp(); } }; -TEST_F(WifiChipV2_AwareDisabledApIfaceCombinationTest, - CreateSta_ShouldSucceed) { +TEST_F(WifiChipV2_AwareDisabledApIfaceCombinationTest, CreateSta_ShouldSucceed) { findModeAndConfigureForIfaceType(IfaceType::STA); ASSERT_FALSE(createIface(IfaceType::STA).empty()); ASSERT_TRUE(createIface(IfaceType::AP).empty()); @@ -837,7 +786,7 @@ TEST_F(WifiChipV2_AwareDisabledApIfaceCombinationTest, ////////// Hypothetical Iface Combination with multiple ifaces ////////// class WifiChip_MultiIfaceTest : public WifiChipTest { - public: + public: void SetUp() override { setup_MultiIfaceCombination(); WifiChipTest::SetUp(); @@ -899,7 +848,7 @@ TEST_F(WifiChip_MultiIfaceTest, CreateApStartsWithIdx1) { ASSERT_EQ(createIface(IfaceType::STA), "wlan3"); } } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/tests/wifi_iface_util_unit_tests.cpp b/wifi/1.6/default/tests/wifi_iface_util_unit_tests.cpp index 8b67bb80c8..cc9a3340a5 100644 --- a/wifi/1.5/default/tests/wifi_iface_util_unit_tests.cpp +++ b/wifi/1.6/default/tests/wifi_iface_util_unit_tests.cpp @@ -32,8 +32,7 @@ constexpr uint8_t kValidUnicastLocallyAssignedMacAddressMask = 0x02; constexpr uint8_t kMacAddress[] = {0x02, 0x12, 0x45, 0x56, 0xab, 0xcc}; constexpr char kIfaceName[] = "test-wlan0"; -bool isValidUnicastLocallyAssignedMacAddress( - const std::array<uint8_t, 6>& mac_address) { +bool isValidUnicastLocallyAssignedMacAddress(const std::array<uint8_t, 6>& mac_address) { uint8_t first_byte = mac_address[0]; return (first_byte & 0x3) == kValidUnicastLocallyAssignedMacAddressMask; } @@ -42,17 +41,16 @@ bool isValidUnicastLocallyAssignedMacAddress( namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace iface_util { class WifiIfaceUtilTest : public Test { - protected: + protected: std::shared_ptr<NiceMock<wifi_system::MockInterfaceTool>> iface_tool_{ - new NiceMock<wifi_system::MockInterfaceTool>}; + new NiceMock<wifi_system::MockInterfaceTool>}; legacy_hal::wifi_hal_fn fake_func_table_; std::shared_ptr<NiceMock<legacy_hal::MockWifiLegacyHal>> legacy_hal_{ - new NiceMock<legacy_hal::MockWifiLegacyHal>(iface_tool_, - fake_func_table_, true)}; + new NiceMock<legacy_hal::MockWifiLegacyHal>(iface_tool_, fake_func_table_, true)}; WifiIfaceUtil* iface_util_ = new WifiIfaceUtil(iface_tool_, legacy_hal_); }; @@ -67,20 +65,17 @@ TEST_F(WifiIfaceUtilTest, GetOrCreateRandomMacAddress) { TEST_F(WifiIfaceUtilTest, IfaceEventHandlers_SetMacAddress) { std::array<uint8_t, 6> mac_address = {}; - std::copy(std::begin(kMacAddress), std::end(kMacAddress), - std::begin(mac_address)); + std::copy(std::begin(kMacAddress), std::end(kMacAddress), std::begin(mac_address)); EXPECT_CALL(*iface_tool_, SetMacAddress(testing::_, testing::_)) - .WillRepeatedly(testing::Return(true)); + .WillRepeatedly(testing::Return(true)); EXPECT_CALL(*iface_tool_, SetUpState(testing::_, testing::_)) - .WillRepeatedly(testing::Return(true)); + .WillRepeatedly(testing::Return(true)); // Register for iface state toggle events. bool callback_invoked = false; iface_util::IfaceEventHandlers event_handlers = {}; event_handlers.on_state_toggle_off_on = - [&callback_invoked](const std::string& /* iface_name */) { - callback_invoked = true; - }; + [&callback_invoked](const std::string& /* iface_name */) { callback_invoked = true; }; iface_util_->registerIfaceEventHandlers(kIfaceName, event_handlers); // Invoke setMacAddress and ensure that the cb is invoked. ASSERT_TRUE(iface_util_->setMacAddress(kIfaceName, mac_address)); @@ -95,7 +90,7 @@ TEST_F(WifiIfaceUtilTest, IfaceEventHandlers_SetMacAddress) { } } // namespace iface_util } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.6/default/tests/wifi_nan_iface_unit_tests.cpp b/wifi/1.6/default/tests/wifi_nan_iface_unit_tests.cpp new file mode 100644 index 0000000000..c7c566bec1 --- /dev/null +++ b/wifi/1.6/default/tests/wifi_nan_iface_unit_tests.cpp @@ -0,0 +1,132 @@ +/* + * Copyright (C) 2019, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <android-base/logging.h> +#include <android-base/macros.h> +#include <cutils/properties.h> +#include <gmock/gmock.h> + +#undef NAN // This is weird, NAN is defined in bionic/libc/include/math.h:38 +#include "wifi_nan_iface.h" + +#include "mock_interface_tool.h" +#include "mock_wifi_feature_flags.h" +#include "mock_wifi_iface_util.h" +#include "mock_wifi_legacy_hal.h" + +using testing::NiceMock; +using testing::Return; +using testing::Test; + +namespace { +constexpr char kIfaceName[] = "mockWlan0"; +} // namespace + +namespace android { +namespace hardware { +namespace wifi { +namespace V1_6 { +namespace implementation { + +using android::hardware::wifi::V1_2::NanDataPathConfirmInd; + +bool CaptureIfaceEventHandlers(const std::string& /* iface_name*/, + iface_util::IfaceEventHandlers in_iface_event_handlers, + iface_util::IfaceEventHandlers* out_iface_event_handlers) { + *out_iface_event_handlers = in_iface_event_handlers; + return true; +} + +class MockNanIfaceEventCallback : public V1_5::IWifiNanIfaceEventCallback { + public: + MockNanIfaceEventCallback() = default; + + MOCK_METHOD3(notifyCapabilitiesResponse, + Return<void>(uint16_t, const WifiNanStatus&, + const android::hardware::wifi::V1_0::NanCapabilities&)); + MOCK_METHOD2(notifyEnableResponse, Return<void>(uint16_t, const WifiNanStatus&)); + MOCK_METHOD2(notifyConfigResponse, Return<void>(uint16_t, const WifiNanStatus&)); + MOCK_METHOD2(notifyDisableResponse, Return<void>(uint16_t, const WifiNanStatus&)); + MOCK_METHOD3(notifyStartPublishResponse, Return<void>(uint16_t, const WifiNanStatus&, uint8_t)); + MOCK_METHOD2(notifyStopPublishResponse, Return<void>(uint16_t, const WifiNanStatus&)); + MOCK_METHOD3(notifyStartSubscribeResponse, + Return<void>(uint16_t, const WifiNanStatus&, uint8_t)); + MOCK_METHOD2(notifyStopSubscribeResponse, Return<void>(uint16_t, const WifiNanStatus&)); + MOCK_METHOD2(notifyTransmitFollowupResponse, Return<void>(uint16_t, const WifiNanStatus&)); + MOCK_METHOD2(notifyCreateDataInterfaceResponse, Return<void>(uint16_t, const WifiNanStatus&)); + MOCK_METHOD2(notifyDeleteDataInterfaceResponse, Return<void>(uint16_t, const WifiNanStatus&)); + MOCK_METHOD3(notifyInitiateDataPathResponse, + Return<void>(uint16_t, const WifiNanStatus&, uint32_t)); + MOCK_METHOD2(notifyRespondToDataPathIndicationResponse, + Return<void>(uint16_t, const WifiNanStatus&)); + MOCK_METHOD2(notifyTerminateDataPathResponse, Return<void>(uint16_t, const WifiNanStatus&)); + MOCK_METHOD1(eventClusterEvent, Return<void>(const NanClusterEventInd&)); + MOCK_METHOD1(eventDisabled, Return<void>(const WifiNanStatus&)); + MOCK_METHOD2(eventPublishTerminated, Return<void>(uint8_t, const WifiNanStatus&)); + MOCK_METHOD2(eventSubscribeTerminated, Return<void>(uint8_t, const WifiNanStatus&)); + MOCK_METHOD1(eventMatch, Return<void>(const NanMatchInd&)); + MOCK_METHOD2(eventMatchExpired, Return<void>(uint8_t, uint32_t)); + MOCK_METHOD1(eventFollowupReceived, Return<void>(const NanFollowupReceivedInd&)); + MOCK_METHOD2(eventTransmitFollowup, Return<void>(uint16_t, const WifiNanStatus&)); + MOCK_METHOD1(eventDataPathRequest, Return<void>(const NanDataPathRequestInd&)); + MOCK_METHOD1(eventDataPathConfirm, + Return<void>(const android::hardware::wifi::V1_0::NanDataPathConfirmInd&)); + MOCK_METHOD1(eventDataPathTerminated, Return<void>(uint32_t)); + MOCK_METHOD1(eventDataPathConfirm_1_2, Return<void>(const NanDataPathConfirmInd&)); + MOCK_METHOD1(eventDataPathScheduleUpdate, Return<void>(const NanDataPathScheduleUpdateInd&)); + MOCK_METHOD3(notifyCapabilitiesResponse_1_5, + Return<void>(uint16_t, const WifiNanStatus&, const V1_5::NanCapabilities&)); +}; + +class WifiNanIfaceTest : public Test { + protected: + legacy_hal::wifi_hal_fn fake_func_table_; + std::shared_ptr<NiceMock<wifi_system::MockInterfaceTool>> iface_tool_{ + new NiceMock<wifi_system::MockInterfaceTool>}; + std::shared_ptr<NiceMock<legacy_hal::MockWifiLegacyHal>> legacy_hal_{ + new NiceMock<legacy_hal::MockWifiLegacyHal>(iface_tool_, fake_func_table_, true)}; + std::shared_ptr<NiceMock<iface_util::MockWifiIfaceUtil>> iface_util_{ + new NiceMock<iface_util::MockWifiIfaceUtil>(iface_tool_, legacy_hal_)}; +}; + +TEST_F(WifiNanIfaceTest, IfacEventHandlers_OnStateToggleOffOn) { + iface_util::IfaceEventHandlers captured_iface_event_handlers = {}; + EXPECT_CALL(*legacy_hal_, nanRegisterCallbackHandlers(testing::_, testing::_)) + .WillOnce(testing::Return(legacy_hal::WIFI_SUCCESS)); + EXPECT_CALL(*iface_util_, registerIfaceEventHandlers(testing::_, testing::_)) + .WillOnce(testing::Invoke(bind(CaptureIfaceEventHandlers, std::placeholders::_1, + std::placeholders::_2, &captured_iface_event_handlers))); + sp<WifiNanIface> nan_iface = new WifiNanIface(kIfaceName, false, legacy_hal_, iface_util_); + + // Register a mock nan event callback. + sp<NiceMock<MockNanIfaceEventCallback>> mock_event_callback{ + new NiceMock<MockNanIfaceEventCallback>}; + nan_iface->registerEventCallback(mock_event_callback, [](const WifiStatus& status) { + ASSERT_EQ(WifiStatusCode::SUCCESS, status.code); + }); + // Ensure that the eventDisabled() function in mock callback will be + // invoked. + WifiNanStatus expected_nan_status = {NanStatusType::UNSUPPORTED_CONCURRENCY_NAN_DISABLED, ""}; + EXPECT_CALL(*mock_event_callback, eventDisabled(expected_nan_status)).Times(1); + + // Trigger the iface state toggle callback. + captured_iface_event_handlers.on_state_toggle_off_on(kIfaceName); +} +} // namespace implementation +} // namespace V1_6 +} // namespace wifi +} // namespace hardware +} // namespace android diff --git a/wifi/1.5/default/wifi.cpp b/wifi/1.6/default/wifi.cpp index a85b242a8a..c302ce2434 100644 --- a/wifi/1.5/default/wifi.cpp +++ b/wifi/1.6/default/wifi.cpp @@ -28,16 +28,15 @@ static constexpr android::hardware::wifi::V1_0::ChipId kPrimaryChipId = 0; namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { using hidl_return_util::validateAndCall; using hidl_return_util::validateAndCallWithLock; -Wifi::Wifi( - const std::shared_ptr<wifi_system::InterfaceTool> iface_tool, - const std::shared_ptr<legacy_hal::WifiLegacyHalFactory> legacy_hal_factory, - const std::shared_ptr<mode_controller::WifiModeController> mode_controller, - const std::shared_ptr<feature_flags::WifiFeatureFlags> feature_flags) +Wifi::Wifi(const std::shared_ptr<wifi_system::InterfaceTool> iface_tool, + const std::shared_ptr<legacy_hal::WifiLegacyHalFactory> legacy_hal_factory, + const std::shared_ptr<mode_controller::WifiModeController> mode_controller, + const std::shared_ptr<feature_flags::WifiFeatureFlags> feature_flags) : iface_tool_(iface_tool), legacy_hal_factory_(legacy_hal_factory), mode_controller_(mode_controller), @@ -49,46 +48,44 @@ bool Wifi::isValid() { return true; } -Return<void> Wifi::registerEventCallback( - const sp<V1_0::IWifiEventCallback>& event_callback, - registerEventCallback_cb hidl_status_cb) { +Return<void> Wifi::registerEventCallback(const sp<V1_0::IWifiEventCallback>& event_callback, + registerEventCallback_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_UNKNOWN, - &Wifi::registerEventCallbackInternal, hidl_status_cb, - event_callback); + &Wifi::registerEventCallbackInternal, hidl_status_cb, event_callback); } -Return<void> Wifi::registerEventCallback_1_5( - const sp<V1_5::IWifiEventCallback>& event_callback, - registerEventCallback_1_5_cb hidl_status_cb) { +Return<void> Wifi::registerEventCallback_1_5(const sp<V1_5::IWifiEventCallback>& event_callback, + registerEventCallback_1_5_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_UNKNOWN, - &Wifi::registerEventCallbackInternal_1_5, - hidl_status_cb, event_callback); + &Wifi::registerEventCallbackInternal_1_5, hidl_status_cb, + event_callback); } -Return<bool> Wifi::isStarted() { return run_state_ != RunState::STOPPED; } +Return<bool> Wifi::isStarted() { + return run_state_ != RunState::STOPPED; +} Return<void> Wifi::start(start_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_UNKNOWN, - &Wifi::startInternal, hidl_status_cb); + return validateAndCall(this, WifiStatusCode::ERROR_UNKNOWN, &Wifi::startInternal, + hidl_status_cb); } Return<void> Wifi::stop(stop_cb hidl_status_cb) { - return validateAndCallWithLock(this, WifiStatusCode::ERROR_UNKNOWN, - &Wifi::stopInternal, hidl_status_cb); + return validateAndCallWithLock(this, WifiStatusCode::ERROR_UNKNOWN, &Wifi::stopInternal, + hidl_status_cb); } Return<void> Wifi::getChipIds(getChipIds_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_UNKNOWN, - &Wifi::getChipIdsInternal, hidl_status_cb); + return validateAndCall(this, WifiStatusCode::ERROR_UNKNOWN, &Wifi::getChipIdsInternal, + hidl_status_cb); } Return<void> Wifi::getChip(ChipId chip_id, getChip_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_UNKNOWN, - &Wifi::getChipInternal, hidl_status_cb, chip_id); + return validateAndCall(this, WifiStatusCode::ERROR_UNKNOWN, &Wifi::getChipInternal, + hidl_status_cb, chip_id); } -Return<void> Wifi::debug(const hidl_handle& handle, - const hidl_vec<hidl_string>&) { +Return<void> Wifi::debug(const hidl_handle& handle, const hidl_vec<hidl_string>&) { LOG(INFO) << "-----------Debug is called----------------"; if (chips_.size() == 0) { return Void(); @@ -103,13 +100,13 @@ Return<void> Wifi::debug(const hidl_handle& handle, } WifiStatus Wifi::registerEventCallbackInternal( - const sp<V1_0::IWifiEventCallback>& event_callback __unused) { + const sp<V1_0::IWifiEventCallback>& event_callback __unused) { // Deprecated support for this callback. return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); } WifiStatus Wifi::registerEventCallbackInternal_1_5( - const sp<V1_5::IWifiEventCallback>& event_callback) { + const sp<V1_5::IWifiEventCallback>& event_callback) { if (!event_cb_handler_.addCallback(event_callback)) { return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); } @@ -120,36 +117,32 @@ WifiStatus Wifi::startInternal() { if (run_state_ == RunState::STARTED) { return createWifiStatus(WifiStatusCode::SUCCESS); } else if (run_state_ == RunState::STOPPING) { - return createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE, - "HAL is stopping"); + return createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE, "HAL is stopping"); } WifiStatus wifi_status = initializeModeControllerAndLegacyHal(); if (wifi_status.code == WifiStatusCode::SUCCESS) { // Register the callback for subsystem restart - const auto& on_subsystem_restart_callback = - [this](const std::string& error) { - WifiStatus wifi_status = - createWifiStatus(WifiStatusCode::ERROR_UNKNOWN, error); - for (const auto& callback : event_cb_handler_.getCallbacks()) { - LOG(INFO) << "Attempting to invoke onSubsystemRestart " + const auto& on_subsystem_restart_callback = [this](const std::string& error) { + WifiStatus wifi_status = createWifiStatus(WifiStatusCode::ERROR_UNKNOWN, error); + for (const auto& callback : event_cb_handler_.getCallbacks()) { + LOG(INFO) << "Attempting to invoke onSubsystemRestart " + "callback"; + if (!callback->onSubsystemRestart(wifi_status).isOk()) { + LOG(ERROR) << "Failed to invoke onSubsystemRestart callback"; + } else { + LOG(INFO) << "Succeeded to invoke onSubsystemRestart " "callback"; - if (!callback->onSubsystemRestart(wifi_status).isOk()) { - LOG(ERROR) - << "Failed to invoke onSubsystemRestart callback"; - } else { - LOG(INFO) << "Succeeded to invoke onSubsystemRestart " - "callback"; - } } - }; + } + }; // Create the chip instance once the HAL is started. android::hardware::wifi::V1_0::ChipId chipId = kPrimaryChipId; for (auto& hal : legacy_hals_) { - chips_.push_back(new WifiChip( - chipId, chipId == kPrimaryChipId, hal, mode_controller_, - std::make_shared<iface_util::WifiIfaceUtil>(iface_tool_, hal), - feature_flags_, on_subsystem_restart_callback)); + chips_.push_back( + new WifiChip(chipId, chipId == kPrimaryChipId, hal, mode_controller_, + std::make_shared<iface_util::WifiIfaceUtil>(iface_tool_, hal), + feature_flags_, on_subsystem_restart_callback)); chipId++; } run_state_ = RunState::STARTED; @@ -173,12 +166,11 @@ WifiStatus Wifi::startInternal() { } WifiStatus Wifi::stopInternal( - /* NONNULL */ std::unique_lock<std::recursive_mutex>* lock) { + /* NONNULL */ std::unique_lock<std::recursive_mutex>* lock) { if (run_state_ == RunState::STOPPED) { return createWifiStatus(WifiStatusCode::SUCCESS); } else if (run_state_ == RunState::STOPPING) { - return createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE, - "HAL is stopping"); + return createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE, "HAL is stopping"); } // Clear the chip object and its child objects since the HAL is now // stopped. @@ -220,8 +212,7 @@ std::pair<WifiStatus, std::vector<ChipId>> Wifi::getChipIdsInternal() { return {createWifiStatus(WifiStatusCode::SUCCESS), std::move(chip_ids)}; } -std::pair<WifiStatus, sp<V1_4::IWifiChip>> Wifi::getChipInternal( - ChipId chip_id) { +std::pair<WifiStatus, sp<V1_4::IWifiChip>> Wifi::getChipInternal(ChipId chip_id) { for (auto& chip : chips_) { ChipId cand_id = getChipIdFromWifiChip(chip); if ((cand_id != UINT32_MAX) && (cand_id == chip_id)) @@ -238,8 +229,7 @@ WifiStatus Wifi::initializeModeControllerAndLegacyHal() { } legacy_hals_ = legacy_hal_factory_->getHals(); - if (legacy_hals_.empty()) - return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); + if (legacy_hals_.empty()) return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); int index = 0; // for failure log for (auto& hal : legacy_hals_) { legacy_hal::wifi_error legacy_status = hal->initialize(); @@ -258,7 +248,7 @@ WifiStatus Wifi::initializeModeControllerAndLegacyHal() { } WifiStatus Wifi::stopLegacyHalAndDeinitializeModeController( - /* NONNULL */ std::unique_lock<std::recursive_mutex>* lock) { + /* NONNULL */ std::unique_lock<std::recursive_mutex>* lock) { legacy_hal::wifi_error legacy_status = legacy_hal::WIFI_SUCCESS; int index = 0; @@ -298,7 +288,7 @@ ChipId Wifi::getChipIdFromWifiChip(sp<WifiChip>& chip) { return chip_id; } } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi.h b/wifi/1.6/default/wifi.h index c94ef3f4cf..435358e797 100644 --- a/wifi/1.5/default/wifi.h +++ b/wifi/1.6/default/wifi.h @@ -21,7 +21,7 @@ // headers. This wifi HAL uses an enum called NAN, which does not compile when // the macro is defined. Undefine NAN to work around it. #undef NAN -#include <android/hardware/wifi/1.5/IWifi.h> +#include <android/hardware/wifi/1.6/IWifi.h> #include <android-base/macros.h> #include <utils/Looper.h> @@ -37,46 +37,41 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { /** * Root HIDL interface object used to control the Wifi HAL. */ -class Wifi : public V1_5::IWifi { - public: +class Wifi : public V1_6::IWifi { + public: Wifi(const std::shared_ptr<wifi_system::InterfaceTool> iface_tool, - const std::shared_ptr<legacy_hal::WifiLegacyHalFactory> - legacy_hal_factory, - const std::shared_ptr<mode_controller::WifiModeController> - mode_controller, + const std::shared_ptr<legacy_hal::WifiLegacyHalFactory> legacy_hal_factory, + const std::shared_ptr<mode_controller::WifiModeController> mode_controller, const std::shared_ptr<feature_flags::WifiFeatureFlags> feature_flags); bool isValid(); // HIDL methods exposed. - Return<void> registerEventCallback( - const sp<V1_0::IWifiEventCallback>& event_callback, - registerEventCallback_cb hidl_status_cb) override; - Return<void> registerEventCallback_1_5( - const sp<V1_5::IWifiEventCallback>& event_callback, - registerEventCallback_1_5_cb hidl_status_cb) override; + Return<void> registerEventCallback(const sp<V1_0::IWifiEventCallback>& event_callback, + registerEventCallback_cb hidl_status_cb) override; + Return<void> registerEventCallback_1_5(const sp<V1_5::IWifiEventCallback>& event_callback, + registerEventCallback_1_5_cb hidl_status_cb) override; Return<bool> isStarted() override; Return<void> start(start_cb hidl_status_cb) override; Return<void> stop(stop_cb hidl_status_cb) override; Return<void> getChipIds(getChipIds_cb hidl_status_cb) override; Return<void> getChip(ChipId chip_id, getChip_cb hidl_status_cb) override; - Return<void> debug(const hidl_handle& handle, - const hidl_vec<hidl_string>& options) override; + Return<void> debug(const hidl_handle& handle, const hidl_vec<hidl_string>& options) override; - private: + private: enum class RunState { STOPPED, STARTED, STOPPING }; // Corresponding worker functions for the HIDL methods. WifiStatus registerEventCallbackInternal( - const sp<V1_0::IWifiEventCallback>& event_callback __unused); + const sp<V1_0::IWifiEventCallback>& event_callback __unused); WifiStatus registerEventCallbackInternal_1_5( - const sp<V1_5::IWifiEventCallback>& event_callback); + const sp<V1_5::IWifiEventCallback>& event_callback); WifiStatus startInternal(); WifiStatus stopInternal(std::unique_lock<std::recursive_mutex>* lock); std::pair<WifiStatus, std::vector<ChipId>> getChipIdsInternal(); @@ -84,7 +79,7 @@ class Wifi : public V1_5::IWifi { WifiStatus initializeModeControllerAndLegacyHal(); WifiStatus stopLegacyHalAndDeinitializeModeController( - std::unique_lock<std::recursive_mutex>* lock); + std::unique_lock<std::recursive_mutex>* lock); ChipId getChipIdFromWifiChip(sp<WifiChip>& chip); // Instance is created in this root level |IWifi| HIDL interface object @@ -96,14 +91,13 @@ class Wifi : public V1_5::IWifi { std::shared_ptr<feature_flags::WifiFeatureFlags> feature_flags_; RunState run_state_; std::vector<sp<WifiChip>> chips_; - hidl_callback_util::HidlCallbackHandler<V1_5::IWifiEventCallback> - event_cb_handler_; + hidl_callback_util::HidlCallbackHandler<V1_5::IWifiEventCallback> event_cb_handler_; DISALLOW_COPY_AND_ASSIGN(Wifi); }; } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_ap_iface.cpp b/wifi/1.6/default/wifi_ap_iface.cpp index 1ae7905f74..b2957db13f 100644 --- a/wifi/1.5/default/wifi_ap_iface.cpp +++ b/wifi/1.6/default/wifi_ap_iface.cpp @@ -24,14 +24,13 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { using hidl_return_util::validateAndCall; -WifiApIface::WifiApIface( - const std::string& ifname, const std::vector<std::string>& instances, - const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal, - const std::weak_ptr<iface_util::WifiIfaceUtil> iface_util) +WifiApIface::WifiApIface(const std::string& ifname, const std::vector<std::string>& instances, + const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal, + const std::weak_ptr<iface_util::WifiIfaceUtil> iface_util) : ifname_(ifname), instances_(instances), legacy_hal_(legacy_hal), @@ -43,14 +42,16 @@ void WifiApIface::invalidate() { is_valid_ = false; } -bool WifiApIface::isValid() { return is_valid_; } +bool WifiApIface::isValid() { + return is_valid_; +} -std::string WifiApIface::getName() { return ifname_; } +std::string WifiApIface::getName() { + return ifname_; +} void WifiApIface::removeInstance(std::string instance) { - instances_.erase( - std::remove(instances_.begin(), instances_.end(), instance), - instances_.end()); + instances_.erase(std::remove(instances_.begin(), instances_.end(), instance), instances_.end()); } Return<void> WifiApIface::getName(getName_cb hidl_status_cb) { @@ -66,44 +67,35 @@ Return<void> WifiApIface::getType(getType_cb hidl_status_cb) { Return<void> WifiApIface::setCountryCode(const hidl_array<int8_t, 2>& code, setCountryCode_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiApIface::setCountryCodeInternal, hidl_status_cb, - code); + &WifiApIface::setCountryCodeInternal, hidl_status_cb, code); } -Return<void> WifiApIface::getValidFrequenciesForBand( - V1_0::WifiBand band, getValidFrequenciesForBand_cb hidl_status_cb) { +Return<void> WifiApIface::getValidFrequenciesForBand(V1_0::WifiBand band, + getValidFrequenciesForBand_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiApIface::getValidFrequenciesForBandInternal, - hidl_status_cb, band); + &WifiApIface::getValidFrequenciesForBandInternal, hidl_status_cb, band); } Return<void> WifiApIface::setMacAddress(const hidl_array<uint8_t, 6>& mac, setMacAddress_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiApIface::setMacAddressInternal, hidl_status_cb, - mac); + &WifiApIface::setMacAddressInternal, hidl_status_cb, mac); } -Return<void> WifiApIface::getFactoryMacAddress( - getFactoryMacAddress_cb hidl_status_cb) { +Return<void> WifiApIface::getFactoryMacAddress(getFactoryMacAddress_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiApIface::getFactoryMacAddressInternal, - hidl_status_cb, + &WifiApIface::getFactoryMacAddressInternal, hidl_status_cb, instances_.size() > 0 ? instances_[0] : ifname_); } -Return<void> WifiApIface::resetToFactoryMacAddress( - resetToFactoryMacAddress_cb hidl_status_cb) { +Return<void> WifiApIface::resetToFactoryMacAddress(resetToFactoryMacAddress_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiApIface::resetToFactoryMacAddressInternal, - hidl_status_cb); + &WifiApIface::resetToFactoryMacAddressInternal, hidl_status_cb); } -Return<void> WifiApIface::getBridgedInstances( - getBridgedInstances_cb hidl_status_cb) { +Return<void> WifiApIface::getBridgedInstances(getBridgedInstances_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiApIface::getBridgedInstancesInternal, - hidl_status_cb); + &WifiApIface::getBridgedInstancesInternal, hidl_status_cb); } std::pair<WifiStatus, std::string> WifiApIface::getNameInternal() { @@ -114,28 +106,24 @@ std::pair<WifiStatus, IfaceType> WifiApIface::getTypeInternal() { return {createWifiStatus(WifiStatusCode::SUCCESS), IfaceType::AP}; } -WifiStatus WifiApIface::setCountryCodeInternal( - const std::array<int8_t, 2>& code) { +WifiStatus WifiApIface::setCountryCodeInternal(const std::array<int8_t, 2>& code) { legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->setCountryCode( - instances_.size() > 0 ? instances_[0] : ifname_, code); + instances_.size() > 0 ? instances_[0] : ifname_, code); return createWifiStatusFromLegacyError(legacy_status); } std::pair<WifiStatus, std::vector<WifiChannelInMhz>> WifiApIface::getValidFrequenciesForBandInternal(V1_0::WifiBand band) { - static_assert(sizeof(WifiChannelInMhz) == sizeof(uint32_t), - "Size mismatch"); + static_assert(sizeof(WifiChannelInMhz) == sizeof(uint32_t), "Size mismatch"); legacy_hal::wifi_error legacy_status; std::vector<uint32_t> valid_frequencies; - std::tie(legacy_status, valid_frequencies) = - legacy_hal_.lock()->getValidFrequenciesForBand( + std::tie(legacy_status, valid_frequencies) = legacy_hal_.lock()->getValidFrequenciesForBand( instances_.size() > 0 ? instances_[0] : ifname_, hidl_struct_util::convertHidlWifiBandToLegacy(band)); return {createWifiStatusFromLegacyError(legacy_status), valid_frequencies}; } -WifiStatus WifiApIface::setMacAddressInternal( - const std::array<uint8_t, 6>& mac) { +WifiStatus WifiApIface::setMacAddressInternal(const std::array<uint8_t, 6>& mac) { // Support random MAC up to 2 interfaces if (instances_.size() == 2) { int rbyte = 1; @@ -160,12 +148,10 @@ WifiStatus WifiApIface::setMacAddressInternal( return createWifiStatus(WifiStatusCode::SUCCESS); } -std::pair<WifiStatus, std::array<uint8_t, 6>> -WifiApIface::getFactoryMacAddressInternal(const std::string& ifaceName) { - std::array<uint8_t, 6> mac = - iface_util_.lock()->getFactoryMacAddress(ifaceName); - if (mac[0] == 0 && mac[1] == 0 && mac[2] == 0 && mac[3] == 0 && - mac[4] == 0 && mac[5] == 0) { +std::pair<WifiStatus, std::array<uint8_t, 6>> WifiApIface::getFactoryMacAddressInternal( + const std::string& ifaceName) { + std::array<uint8_t, 6> mac = iface_util_.lock()->getFactoryMacAddress(ifaceName); + if (mac[0] == 0 && mac[1] == 0 && mac[2] == 0 && mac[3] == 0 && mac[4] == 0 && mac[5] == 0) { return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), mac}; } return {createWifiStatus(WifiStatusCode::SUCCESS), mac}; @@ -188,10 +174,9 @@ WifiStatus WifiApIface::resetToFactoryMacAddressInternal() { // bridged interface even if we got the request to reset the Factory // MAC. Since the bridged interface is an internal interface for the // operation of bpf and others networking operation. - if (!iface_util_.lock()->setMacAddress( - ifname_, iface_util_.lock()->createRandomMacAddress())) { - LOG(ERROR) << "Fail to config MAC for bridged interface " - << ifname_; + if (!iface_util_.lock()->setMacAddress(ifname_, + iface_util_.lock()->createRandomMacAddress())) { + LOG(ERROR) << "Fail to config MAC for bridged interface " << ifname_; return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); } } else { @@ -205,8 +190,7 @@ WifiStatus WifiApIface::resetToFactoryMacAddressInternal() { return createWifiStatus(WifiStatusCode::SUCCESS); } -std::pair<WifiStatus, std::vector<hidl_string>> -WifiApIface::getBridgedInstancesInternal() { +std::pair<WifiStatus, std::vector<hidl_string>> WifiApIface::getBridgedInstancesInternal() { std::vector<hidl_string> instances; for (const auto& instance_name : instances_) { instances.push_back(instance_name); @@ -214,7 +198,7 @@ WifiApIface::getBridgedInstancesInternal() { return {createWifiStatus(WifiStatusCode::SUCCESS), instances}; } } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_ap_iface.h b/wifi/1.6/default/wifi_ap_iface.h index 8f8387deae..d1c06424df 100644 --- a/wifi/1.5/default/wifi_ap_iface.h +++ b/wifi/1.6/default/wifi_ap_iface.h @@ -26,7 +26,7 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { using namespace android::hardware::wifi::V1_0; @@ -34,9 +34,8 @@ using namespace android::hardware::wifi::V1_0; * HIDL interface object used to control a AP Iface instance. */ class WifiApIface : public V1_5::IWifiApIface { - public: - WifiApIface(const std::string& ifname, - const std::vector<std::string>& instances, + public: + WifiApIface(const std::string& ifname, const std::vector<std::string>& instances, const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal, const std::weak_ptr<iface_util::WifiIfaceUtil> iface_util); // Refer to |WifiChip::invalidate()|. @@ -50,32 +49,27 @@ class WifiApIface : public V1_5::IWifiApIface { Return<void> getType(getType_cb hidl_status_cb) override; Return<void> setCountryCode(const hidl_array<int8_t, 2>& code, setCountryCode_cb hidl_status_cb) override; - Return<void> getValidFrequenciesForBand( - V1_0::WifiBand band, - getValidFrequenciesForBand_cb hidl_status_cb) override; + Return<void> getValidFrequenciesForBand(V1_0::WifiBand band, + getValidFrequenciesForBand_cb hidl_status_cb) override; Return<void> setMacAddress(const hidl_array<uint8_t, 6>& mac, setMacAddress_cb hidl_status_cb) override; - Return<void> getFactoryMacAddress( - getFactoryMacAddress_cb hidl_status_cb) override; - Return<void> resetToFactoryMacAddress( - resetToFactoryMacAddress_cb hidl_status_cb) override; + Return<void> getFactoryMacAddress(getFactoryMacAddress_cb hidl_status_cb) override; + Return<void> resetToFactoryMacAddress(resetToFactoryMacAddress_cb hidl_status_cb) override; - Return<void> getBridgedInstances( - getBridgedInstances_cb hidl_status_cb) override; + Return<void> getBridgedInstances(getBridgedInstances_cb hidl_status_cb) override; - private: + private: // Corresponding worker functions for the HIDL methods. std::pair<WifiStatus, std::string> getNameInternal(); std::pair<WifiStatus, IfaceType> getTypeInternal(); WifiStatus setCountryCodeInternal(const std::array<int8_t, 2>& code); - std::pair<WifiStatus, std::vector<WifiChannelInMhz>> - getValidFrequenciesForBandInternal(V1_0::WifiBand band); + std::pair<WifiStatus, std::vector<WifiChannelInMhz>> getValidFrequenciesForBandInternal( + V1_0::WifiBand band); WifiStatus setMacAddressInternal(const std::array<uint8_t, 6>& mac); std::pair<WifiStatus, std::array<uint8_t, 6>> getFactoryMacAddressInternal( - const std::string& ifaceName); + const std::string& ifaceName); WifiStatus resetToFactoryMacAddressInternal(); - std::pair<WifiStatus, std::vector<hidl_string>> - getBridgedInstancesInternal(); + std::pair<WifiStatus, std::vector<hidl_string>> getBridgedInstancesInternal(); std::string ifname_; std::vector<std::string> instances_; @@ -87,7 +81,7 @@ class WifiApIface : public V1_5::IWifiApIface { }; } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_chip.cpp b/wifi/1.6/default/wifi_chip.cpp index def8bb8226..c1ce766a4f 100644 --- a/wifi/1.5/default/wifi_chip.cpp +++ b/wifi/1.6/default/wifi_chip.cpp @@ -22,7 +22,6 @@ #include <net/if.h> #include <sys/stat.h> #include <sys/sysmacros.h> -#include <net/if.h> #include "hidl_return_util.h" #include "hidl_struct_util.h" @@ -53,8 +52,7 @@ constexpr char kApBridgeIfacePrefix[] = "ap_br_"; template <typename Iface> void invalidateAndClear(std::vector<sp<Iface>>& ifaces, sp<Iface> iface) { iface->invalidate(); - ifaces.erase(std::remove(ifaces.begin(), ifaces.end(), iface), - ifaces.end()); + ifaces.erase(std::remove(ifaces.begin(), ifaces.end(), iface), ifaces.end()); } template <typename Iface> @@ -75,8 +73,7 @@ std::vector<hidl_string> getNames(std::vector<sp<Iface>>& ifaces) { } template <typename Iface> -sp<Iface> findUsingName(std::vector<sp<Iface>>& ifaces, - const std::string& name) { +sp<Iface> findUsingName(std::vector<sp<Iface>>& ifaces, const std::string& name) { std::vector<hidl_string> names; for (const auto& iface : ifaces) { if (name == iface->getName()) { @@ -94,8 +91,7 @@ std::string getWlanIfaceName(unsigned idx) { std::array<char, PROPERTY_VALUE_MAX> buffer; if (idx == 0 || idx == 1) { - const char* altPropName = - (idx == 0) ? "wifi.interface" : "wifi.concurrent.interface"; + const char* altPropName = (idx == 0) ? "wifi.interface" : "wifi.concurrent.interface"; auto res = property_get(altPropName, buffer.data(), nullptr); if (res > 0) return buffer.data(); } @@ -112,15 +108,13 @@ std::vector<std::string> getPredefinedApIfaceNames(bool is_bridged) { std::vector<std::string> ifnames; std::array<char, PROPERTY_VALUE_MAX> buffer; buffer.fill(0); - if (property_get("ro.vendor.wifi.sap.interface", buffer.data(), nullptr) == - 0) { + if (property_get("ro.vendor.wifi.sap.interface", buffer.data(), nullptr) == 0) { return ifnames; } ifnames.push_back(buffer.data()); if (is_bridged) { buffer.fill(0); - if (property_get("ro.vendor.wifi.sap.concurrent.iface", buffer.data(), - nullptr) == 0) { + if (property_get("ro.vendor.wifi.sap.concurrent.iface", buffer.data(), nullptr) == 0) { return ifnames; } ifnames.push_back(buffer.data()); @@ -134,29 +128,25 @@ std::string getPredefinedP2pIfaceName() { std::string p2pDevIfName = ""; std::array<char, PROPERTY_VALUE_MAX> buffer; property_get("wifi.direct.interface", buffer.data(), "p2p0"); - if (strncmp(buffer.data(), P2P_MGMT_DEVICE_PREFIX, - strlen(P2P_MGMT_DEVICE_PREFIX)) == 0) { + if (strncmp(buffer.data(), P2P_MGMT_DEVICE_PREFIX, strlen(P2P_MGMT_DEVICE_PREFIX)) == 0) { /* Get the p2p parent interface name from p2p device interface name set * in property */ strncpy(p2pParentIfname, buffer.data() + strlen(P2P_MGMT_DEVICE_PREFIX), strlen(buffer.data()) - strlen(P2P_MGMT_DEVICE_PREFIX)); - if (property_get(kActiveWlanIfaceNameProperty, primaryIfaceName.data(), - nullptr) == 0) { + if (property_get(kActiveWlanIfaceNameProperty, primaryIfaceName.data(), nullptr) == 0) { return buffer.data(); } /* Check if the parent interface derived from p2p device interface name * is active */ if (strncmp(p2pParentIfname, primaryIfaceName.data(), - strlen(buffer.data()) - strlen(P2P_MGMT_DEVICE_PREFIX)) != - 0) { + strlen(buffer.data()) - strlen(P2P_MGMT_DEVICE_PREFIX)) != 0) { /* * Update the predefined p2p device interface parent interface name * with current active wlan interface */ p2pDevIfName += P2P_MGMT_DEVICE_PREFIX; p2pDevIfName += primaryIfaceName.data(); - LOG(INFO) << "update the p2p device interface name to " - << p2pDevIfName.c_str(); + LOG(INFO) << "update the p2p device interface name to " << p2pDevIfName.c_str(); return p2pDevIfName; } } @@ -185,8 +175,7 @@ void setActiveWlanIfaceNameProperty(const std::string& ifname) { bool removeOldFilesInternal() { time_t now = time(0); const time_t delete_files_before = now - kMaxRingBufferFileAgeSeconds; - std::unique_ptr<DIR, decltype(&closedir)> dir_dump( - opendir(kTombstoneFolderPath), closedir); + std::unique_ptr<DIR, decltype(&closedir)> dir_dump(opendir(kTombstoneFolderPath), closedir); if (!dir_dump) { PLOG(ERROR) << "Failed to open directory"; return false; @@ -207,15 +196,13 @@ bool removeOldFilesInternal() { continue; } const time_t cur_file_time = cur_file_stat.st_mtime; - valid_files.push_back( - std::pair<const time_t, std::string>(cur_file_time, cur_file_path)); + valid_files.push_back(std::pair<const time_t, std::string>(cur_file_time, cur_file_path)); } valid_files.sort(); // sort the list of files by last modified time from // small to big. uint32_t cur_file_count = valid_files.size(); for (auto cur_file : valid_files) { - if (cur_file_count > kMaxRingBufferFileNum || - cur_file.first < delete_files_before) { + if (cur_file_count > kMaxRingBufferFileNum || cur_file.first < delete_files_before) { if (unlink(cur_file.second.c_str()) != 0) { PLOG(ERROR) << "Error deleting file"; success = false; @@ -229,17 +216,14 @@ bool removeOldFilesInternal() { } // Helper function for |cpioArchiveFilesInDir| -bool cpioWriteHeader(int out_fd, struct stat& st, const char* file_name, - size_t file_name_len) { +bool cpioWriteHeader(int out_fd, struct stat& st, const char* file_name, size_t file_name_len) { std::array<char, 32 * 1024> read_buf; ssize_t llen = - sprintf(read_buf.data(), - "%s%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X", - kCpioMagic, static_cast<int>(st.st_ino), st.st_mode, st.st_uid, - st.st_gid, static_cast<int>(st.st_nlink), - static_cast<int>(st.st_mtime), static_cast<int>(st.st_size), - major(st.st_dev), minor(st.st_dev), major(st.st_rdev), - minor(st.st_rdev), static_cast<uint32_t>(file_name_len), 0); + sprintf(read_buf.data(), "%s%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X", + kCpioMagic, static_cast<int>(st.st_ino), st.st_mode, st.st_uid, st.st_gid, + static_cast<int>(st.st_nlink), static_cast<int>(st.st_mtime), + static_cast<int>(st.st_size), major(st.st_dev), minor(st.st_dev), + major(st.st_rdev), minor(st.st_rdev), static_cast<uint32_t>(file_name_len), 0); if (write(out_fd, read_buf.data(), llen) == -1) { PLOG(ERROR) << "Error writing cpio header to file " << file_name; return false; @@ -301,9 +285,7 @@ bool cpioWriteFileTrailer(int out_fd) { std::array<char, 4096> read_buf; read_buf.fill(0); if (write(out_fd, read_buf.data(), - sprintf(read_buf.data(), "070701%040X%056X%08XTRAILER!!!", 1, - 0x0b, 0) + - 4) == -1) { + sprintf(read_buf.data(), "070701%040X%056X%08XTRAILER!!!", 1, 0x0b, 0) + 4) == -1) { PLOG(ERROR) << "Error writing trailing bytes"; return false; } @@ -316,8 +298,7 @@ bool cpioWriteFileTrailer(int out_fd) { size_t cpioArchiveFilesInDir(int out_fd, const char* input_dir) { struct dirent* dp; size_t n_error = 0; - std::unique_ptr<DIR, decltype(&closedir)> dir_dump(opendir(input_dir), - closedir); + std::unique_ptr<DIR, decltype(&closedir)> dir_dump(opendir(input_dir), closedir); if (!dir_dump) { PLOG(ERROR) << "Failed to open directory"; return ++n_error; @@ -341,14 +322,12 @@ size_t cpioArchiveFilesInDir(int out_fd, const char* input_dir) { continue; } std::string file_name_with_last_modified_time = - cur_file_name + "-" + std::to_string(st.st_mtime); + cur_file_name + "-" + std::to_string(st.st_mtime); // string.size() does not include the null terminator. The cpio FreeBSD // file header expects the null character to be included in the length. - const size_t file_name_len = - file_name_with_last_modified_time.size() + 1; + const size_t file_name_len = file_name_with_last_modified_time.size() + 1; unique_fd file_auto_closer(fd_read); - if (!cpioWriteHeader(out_fd, st, - file_name_with_last_modified_time.c_str(), + if (!cpioWriteHeader(out_fd, st, file_name_with_last_modified_time.c_str(), file_name_len)) { return ++n_error; } @@ -376,18 +355,17 @@ std::vector<char> makeCharVec(const std::string& str) { namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { using hidl_return_util::validateAndCall; using hidl_return_util::validateAndCallWithLock; -WifiChip::WifiChip( - ChipId chip_id, bool is_primary, - const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal, - const std::weak_ptr<mode_controller::WifiModeController> mode_controller, - const std::shared_ptr<iface_util::WifiIfaceUtil> iface_util, - const std::weak_ptr<feature_flags::WifiFeatureFlags> feature_flags, - const std::function<void(const std::string&)>& handler) +WifiChip::WifiChip(ChipId chip_id, bool is_primary, + const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal, + const std::weak_ptr<mode_controller::WifiModeController> mode_controller, + const std::shared_ptr<iface_util::WifiIfaceUtil> iface_util, + const std::weak_ptr<feature_flags::WifiFeatureFlags> feature_flags, + const std::function<void(const std::string&)>& handler) : chip_id_(chip_id), legacy_hal_(legacy_hal), mode_controller_(mode_controller), @@ -411,24 +389,25 @@ void WifiChip::invalidate() { is_valid_ = false; } -bool WifiChip::isValid() { return is_valid_; } +bool WifiChip::isValid() { + return is_valid_; +} std::set<sp<V1_4::IWifiChipEventCallback>> WifiChip::getEventCallbacks() { return event_cb_handler_.getCallbacks(); } Return<void> WifiChip::getId(getId_cb hidl_status_cb) { - return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::getIdInternal, hidl_status_cb); + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, &WifiChip::getIdInternal, + hidl_status_cb); } // Deprecated support for this callback -Return<void> WifiChip::registerEventCallback( - const sp<V1_0::IWifiChipEventCallback>& event_callback, - registerEventCallback_cb hidl_status_cb) { +Return<void> WifiChip::registerEventCallback(const sp<V1_0::IWifiChipEventCallback>& event_callback, + registerEventCallback_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::registerEventCallbackInternal, - hidl_status_cb, event_callback); + &WifiChip::registerEventCallbackInternal, hidl_status_cb, + event_callback); } Return<void> WifiChip::getCapabilities(getCapabilities_cb hidl_status_cb) { @@ -438,15 +417,12 @@ Return<void> WifiChip::getCapabilities(getCapabilities_cb hidl_status_cb) { Return<void> WifiChip::getAvailableModes(getAvailableModes_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::getAvailableModesInternal, - hidl_status_cb); + &WifiChip::getAvailableModesInternal, hidl_status_cb); } -Return<void> WifiChip::configureChip(ChipModeId mode_id, - configureChip_cb hidl_status_cb) { - return validateAndCallWithLock( - this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::configureChipInternal, hidl_status_cb, mode_id); +Return<void> WifiChip::configureChip(ChipModeId mode_id, configureChip_cb hidl_status_cb) { + return validateAndCallWithLock(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, + &WifiChip::configureChipInternal, hidl_status_cb, mode_id); } Return<void> WifiChip::getMode(getMode_cb hidl_status_cb) { @@ -454,25 +430,19 @@ Return<void> WifiChip::getMode(getMode_cb hidl_status_cb) { &WifiChip::getModeInternal, hidl_status_cb); } -Return<void> WifiChip::requestChipDebugInfo( - requestChipDebugInfo_cb hidl_status_cb) { +Return<void> WifiChip::requestChipDebugInfo(requestChipDebugInfo_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::requestChipDebugInfoInternal, - hidl_status_cb); + &WifiChip::requestChipDebugInfoInternal, hidl_status_cb); } -Return<void> WifiChip::requestDriverDebugDump( - requestDriverDebugDump_cb hidl_status_cb) { +Return<void> WifiChip::requestDriverDebugDump(requestDriverDebugDump_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::requestDriverDebugDumpInternal, - hidl_status_cb); + &WifiChip::requestDriverDebugDumpInternal, hidl_status_cb); } -Return<void> WifiChip::requestFirmwareDebugDump( - requestFirmwareDebugDump_cb hidl_status_cb) { +Return<void> WifiChip::requestFirmwareDebugDump(requestFirmwareDebugDump_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::requestFirmwareDebugDumpInternal, - hidl_status_cb); + &WifiChip::requestFirmwareDebugDumpInternal, hidl_status_cb); } Return<void> WifiChip::createApIface(createApIface_cb hidl_status_cb) { @@ -480,11 +450,9 @@ Return<void> WifiChip::createApIface(createApIface_cb hidl_status_cb) { &WifiChip::createApIfaceInternal, hidl_status_cb); } -Return<void> WifiChip::createBridgedApIface( - createBridgedApIface_cb hidl_status_cb) { +Return<void> WifiChip::createBridgedApIface(createBridgedApIface_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::createBridgedApIfaceInternal, - hidl_status_cb); + &WifiChip::createBridgedApIfaceInternal, hidl_status_cb); } Return<void> WifiChip::getApIfaceNames(getApIfaceNames_cb hidl_status_cb) { @@ -492,27 +460,22 @@ Return<void> WifiChip::getApIfaceNames(getApIfaceNames_cb hidl_status_cb) { &WifiChip::getApIfaceNamesInternal, hidl_status_cb); } -Return<void> WifiChip::getApIface(const hidl_string& ifname, - getApIface_cb hidl_status_cb) { +Return<void> WifiChip::getApIface(const hidl_string& ifname, getApIface_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::getApIfaceInternal, hidl_status_cb, - ifname); + &WifiChip::getApIfaceInternal, hidl_status_cb, ifname); } -Return<void> WifiChip::removeApIface(const hidl_string& ifname, - removeApIface_cb hidl_status_cb) { +Return<void> WifiChip::removeApIface(const hidl_string& ifname, removeApIface_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::removeApIfaceInternal, hidl_status_cb, - ifname); + &WifiChip::removeApIfaceInternal, hidl_status_cb, ifname); } Return<void> WifiChip::removeIfaceInstanceFromBridgedApIface( - const hidl_string& ifname, const hidl_string& ifInstanceName, - removeIfaceInstanceFromBridgedApIface_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::removeIfaceInstanceFromBridgedApIfaceInternal, - hidl_status_cb, ifname, ifInstanceName); + const hidl_string& ifname, const hidl_string& ifInstanceName, + removeIfaceInstanceFromBridgedApIface_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, + &WifiChip::removeIfaceInstanceFromBridgedApIfaceInternal, hidl_status_cb, + ifname, ifInstanceName); } Return<void> WifiChip::createNanIface(createNanIface_cb hidl_status_cb) { @@ -525,18 +488,14 @@ Return<void> WifiChip::getNanIfaceNames(getNanIfaceNames_cb hidl_status_cb) { &WifiChip::getNanIfaceNamesInternal, hidl_status_cb); } -Return<void> WifiChip::getNanIface(const hidl_string& ifname, - getNanIface_cb hidl_status_cb) { +Return<void> WifiChip::getNanIface(const hidl_string& ifname, getNanIface_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::getNanIfaceInternal, hidl_status_cb, - ifname); + &WifiChip::getNanIfaceInternal, hidl_status_cb, ifname); } -Return<void> WifiChip::removeNanIface(const hidl_string& ifname, - removeNanIface_cb hidl_status_cb) { +Return<void> WifiChip::removeNanIface(const hidl_string& ifname, removeNanIface_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::removeNanIfaceInternal, hidl_status_cb, - ifname); + &WifiChip::removeNanIfaceInternal, hidl_status_cb, ifname); } Return<void> WifiChip::createP2pIface(createP2pIface_cb hidl_status_cb) { @@ -549,18 +508,14 @@ Return<void> WifiChip::getP2pIfaceNames(getP2pIfaceNames_cb hidl_status_cb) { &WifiChip::getP2pIfaceNamesInternal, hidl_status_cb); } -Return<void> WifiChip::getP2pIface(const hidl_string& ifname, - getP2pIface_cb hidl_status_cb) { +Return<void> WifiChip::getP2pIface(const hidl_string& ifname, getP2pIface_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::getP2pIfaceInternal, hidl_status_cb, - ifname); + &WifiChip::getP2pIfaceInternal, hidl_status_cb, ifname); } -Return<void> WifiChip::removeP2pIface(const hidl_string& ifname, - removeP2pIface_cb hidl_status_cb) { +Return<void> WifiChip::removeP2pIface(const hidl_string& ifname, removeP2pIface_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::removeP2pIfaceInternal, hidl_status_cb, - ifname); + &WifiChip::removeP2pIfaceInternal, hidl_status_cb, ifname); } Return<void> WifiChip::createStaIface(createStaIface_cb hidl_status_cb) { @@ -573,132 +528,106 @@ Return<void> WifiChip::getStaIfaceNames(getStaIfaceNames_cb hidl_status_cb) { &WifiChip::getStaIfaceNamesInternal, hidl_status_cb); } -Return<void> WifiChip::getStaIface(const hidl_string& ifname, - getStaIface_cb hidl_status_cb) { +Return<void> WifiChip::getStaIface(const hidl_string& ifname, getStaIface_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::getStaIfaceInternal, hidl_status_cb, - ifname); + &WifiChip::getStaIfaceInternal, hidl_status_cb, ifname); } -Return<void> WifiChip::removeStaIface(const hidl_string& ifname, - removeStaIface_cb hidl_status_cb) { +Return<void> WifiChip::removeStaIface(const hidl_string& ifname, removeStaIface_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::removeStaIfaceInternal, hidl_status_cb, - ifname); + &WifiChip::removeStaIfaceInternal, hidl_status_cb, ifname); } -Return<void> WifiChip::createRttController( - const sp<IWifiIface>& bound_iface, createRttController_cb hidl_status_cb) { +Return<void> WifiChip::createRttController(const sp<IWifiIface>& bound_iface, + createRttController_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::createRttControllerInternal, - hidl_status_cb, bound_iface); + &WifiChip::createRttControllerInternal, hidl_status_cb, bound_iface); } -Return<void> WifiChip::getDebugRingBuffersStatus( - getDebugRingBuffersStatus_cb hidl_status_cb) { +Return<void> WifiChip::getDebugRingBuffersStatus(getDebugRingBuffersStatus_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::getDebugRingBuffersStatusInternal, - hidl_status_cb); + &WifiChip::getDebugRingBuffersStatusInternal, hidl_status_cb); } Return<void> WifiChip::startLoggingToDebugRingBuffer( - const hidl_string& ring_name, WifiDebugRingBufferVerboseLevel verbose_level, - uint32_t max_interval_in_sec, uint32_t min_data_size_in_bytes, - startLoggingToDebugRingBuffer_cb hidl_status_cb) { + const hidl_string& ring_name, WifiDebugRingBufferVerboseLevel verbose_level, + uint32_t max_interval_in_sec, uint32_t min_data_size_in_bytes, + startLoggingToDebugRingBuffer_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::startLoggingToDebugRingBufferInternal, - hidl_status_cb, ring_name, verbose_level, - max_interval_in_sec, min_data_size_in_bytes); + &WifiChip::startLoggingToDebugRingBufferInternal, hidl_status_cb, + ring_name, verbose_level, max_interval_in_sec, min_data_size_in_bytes); } -Return<void> WifiChip::forceDumpToDebugRingBuffer( - const hidl_string& ring_name, - forceDumpToDebugRingBuffer_cb hidl_status_cb) { +Return<void> WifiChip::forceDumpToDebugRingBuffer(const hidl_string& ring_name, + forceDumpToDebugRingBuffer_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::forceDumpToDebugRingBufferInternal, - hidl_status_cb, ring_name); + &WifiChip::forceDumpToDebugRingBufferInternal, hidl_status_cb, + ring_name); } -Return<void> WifiChip::flushRingBufferToFile( - flushRingBufferToFile_cb hidl_status_cb) { +Return<void> WifiChip::flushRingBufferToFile(flushRingBufferToFile_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::flushRingBufferToFileInternal, - hidl_status_cb); + &WifiChip::flushRingBufferToFileInternal, hidl_status_cb); } Return<void> WifiChip::stopLoggingToDebugRingBuffer( - stopLoggingToDebugRingBuffer_cb hidl_status_cb) { + stopLoggingToDebugRingBuffer_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::stopLoggingToDebugRingBufferInternal, - hidl_status_cb); + &WifiChip::stopLoggingToDebugRingBufferInternal, hidl_status_cb); } -Return<void> WifiChip::getDebugHostWakeReasonStats( - getDebugHostWakeReasonStats_cb hidl_status_cb) { +Return<void> WifiChip::getDebugHostWakeReasonStats(getDebugHostWakeReasonStats_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::getDebugHostWakeReasonStatsInternal, - hidl_status_cb); + &WifiChip::getDebugHostWakeReasonStatsInternal, hidl_status_cb); } -Return<void> WifiChip::enableDebugErrorAlerts( - bool enable, enableDebugErrorAlerts_cb hidl_status_cb) { +Return<void> WifiChip::enableDebugErrorAlerts(bool enable, + enableDebugErrorAlerts_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::enableDebugErrorAlertsInternal, - hidl_status_cb, enable); + &WifiChip::enableDebugErrorAlertsInternal, hidl_status_cb, enable); } -Return<void> WifiChip::selectTxPowerScenario( - V1_1::IWifiChip::TxPowerScenario scenario, - selectTxPowerScenario_cb hidl_status_cb) { +Return<void> WifiChip::selectTxPowerScenario(V1_1::IWifiChip::TxPowerScenario scenario, + selectTxPowerScenario_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::selectTxPowerScenarioInternal, - hidl_status_cb, scenario); + &WifiChip::selectTxPowerScenarioInternal, hidl_status_cb, scenario); } -Return<void> WifiChip::resetTxPowerScenario( - resetTxPowerScenario_cb hidl_status_cb) { +Return<void> WifiChip::resetTxPowerScenario(resetTxPowerScenario_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::resetTxPowerScenarioInternal, - hidl_status_cb); + &WifiChip::resetTxPowerScenarioInternal, hidl_status_cb); } -Return<void> WifiChip::setLatencyMode(LatencyMode mode, - setLatencyMode_cb hidl_status_cb) { +Return<void> WifiChip::setLatencyMode(LatencyMode mode, setLatencyMode_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::setLatencyModeInternal, hidl_status_cb, - mode); + &WifiChip::setLatencyModeInternal, hidl_status_cb, mode); } Return<void> WifiChip::registerEventCallback_1_2( - const sp<V1_2::IWifiChipEventCallback>& event_callback, - registerEventCallback_cb hidl_status_cb) { + const sp<V1_2::IWifiChipEventCallback>& event_callback, + registerEventCallback_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::registerEventCallbackInternal_1_2, - hidl_status_cb, event_callback); + &WifiChip::registerEventCallbackInternal_1_2, hidl_status_cb, + event_callback); } -Return<void> WifiChip::selectTxPowerScenario_1_2( - TxPowerScenario scenario, selectTxPowerScenario_cb hidl_status_cb) { +Return<void> WifiChip::selectTxPowerScenario_1_2(TxPowerScenario scenario, + selectTxPowerScenario_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::selectTxPowerScenarioInternal_1_2, - hidl_status_cb, scenario); + &WifiChip::selectTxPowerScenarioInternal_1_2, hidl_status_cb, scenario); } Return<void> WifiChip::getCapabilities_1_3(getCapabilities_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::getCapabilitiesInternal_1_3, - hidl_status_cb); + &WifiChip::getCapabilitiesInternal_1_3, hidl_status_cb); } -Return<void> WifiChip::getCapabilities_1_5( - getCapabilities_1_5_cb hidl_status_cb) { +Return<void> WifiChip::getCapabilities_1_5(getCapabilities_1_5_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::getCapabilitiesInternal_1_5, - hidl_status_cb); + &WifiChip::getCapabilitiesInternal_1_5, hidl_status_cb); } -Return<void> WifiChip::debug(const hidl_handle& handle, - const hidl_vec<hidl_string>&) { +Return<void> WifiChip::debug(const hidl_handle& handle, const hidl_vec<hidl_string>&) { if (handle != nullptr && handle->numFds >= 1) { { std::unique_lock<std::mutex> lk(lock_t); @@ -724,98 +653,61 @@ Return<void> WifiChip::debug(const hidl_handle& handle, return Void(); } -Return<void> WifiChip::createRttController_1_4( - const sp<IWifiIface>& bound_iface, - createRttController_1_4_cb hidl_status_cb) { +Return<void> WifiChip::createRttController_1_4(const sp<IWifiIface>& bound_iface, + createRttController_1_4_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::createRttControllerInternal_1_4, - hidl_status_cb, bound_iface); + &WifiChip::createRttControllerInternal_1_4, hidl_status_cb, bound_iface); } Return<void> WifiChip::registerEventCallback_1_4( - const sp<V1_4::IWifiChipEventCallback>& event_callback, - registerEventCallback_cb hidl_status_cb) { + const sp<V1_4::IWifiChipEventCallback>& event_callback, + registerEventCallback_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::registerEventCallbackInternal_1_4, - hidl_status_cb, event_callback); + &WifiChip::registerEventCallbackInternal_1_4, hidl_status_cb, + event_callback); } Return<void> WifiChip::setMultiStaPrimaryConnection( - const hidl_string& ifname, setMultiStaPrimaryConnection_cb hidl_status_cb) { + const hidl_string& ifname, setMultiStaPrimaryConnection_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::setMultiStaPrimaryConnectionInternal, - hidl_status_cb, ifname); + &WifiChip::setMultiStaPrimaryConnectionInternal, hidl_status_cb, ifname); } -Return<void> WifiChip::setMultiStaUseCase( - MultiStaUseCase use_case, setMultiStaUseCase_cb hidl_status_cb) { +Return<void> WifiChip::setMultiStaUseCase(MultiStaUseCase use_case, + setMultiStaUseCase_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::setMultiStaUseCaseInternal, - hidl_status_cb, use_case); + &WifiChip::setMultiStaUseCaseInternal, hidl_status_cb, use_case); } -Return<void> WifiChip::setCoexUnsafeChannels( - const hidl_vec<CoexUnsafeChannel>& unsafeChannels, - hidl_bitfield<CoexRestriction> restrictions, - setCoexUnsafeChannels_cb hidl_status_cb) { +Return<void> WifiChip::setCoexUnsafeChannels(const hidl_vec<CoexUnsafeChannel>& unsafeChannels, + hidl_bitfield<CoexRestriction> restrictions, + setCoexUnsafeChannels_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::setCoexUnsafeChannelsInternal, - hidl_status_cb, unsafeChannels, restrictions); + &WifiChip::setCoexUnsafeChannelsInternal, hidl_status_cb, unsafeChannels, + restrictions); } Return<void> WifiChip::setCountryCode(const hidl_array<int8_t, 2>& code, setCountryCode_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiChip::setCountryCodeInternal, hidl_status_cb, - code); + &WifiChip::setCountryCodeInternal, hidl_status_cb, code); } Return<void> WifiChip::getUsableChannels( - WifiBand band, hidl_bitfield<WifiIfaceMode> ifaceModeMask, - hidl_bitfield<UsableChannelFilter> filterMask, - getUsableChannels_cb _hidl_cb) { + WifiBand band, hidl_bitfield<V1_5::WifiIfaceMode> ifaceModeMask, + hidl_bitfield<V1_5::IWifiChip::UsableChannelFilter> filterMask, + getUsableChannels_cb _hidl_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::getUsableChannelsInternal, _hidl_cb, band, - ifaceModeMask, filterMask); + &WifiChip::getUsableChannelsInternal, _hidl_cb, band, ifaceModeMask, + filterMask); } -Return<void> WifiChip::triggerSubsystemRestart( - triggerSubsystemRestart_cb hidl_status_cb) { +Return<void> WifiChip::triggerSubsystemRestart(triggerSubsystemRestart_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, - &WifiChip::triggerSubsystemRestartInternal, - hidl_status_cb); -} - -void WifiChip::QcRemoveAndClearDynamicIfaces() { - for (const auto& iface : created_ap_ifaces_) { - std::string ifname = iface->getName(); - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->deleteVirtualInterface(ifname); - if (legacy_status != legacy_hal::WIFI_SUCCESS) { - LOG(ERROR) << "Failed to remove interface: " << ifname << " " - << legacyErrorToString(legacy_status); - } - } - - for (const auto& iface : created_sta_ifaces_) { - std::string ifname = iface->getName(); - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->deleteVirtualInterface(ifname); - if (legacy_status != legacy_hal::WIFI_SUCCESS) { - LOG(ERROR) << "Failed to remove interface: " << ifname << " " - << legacyErrorToString(legacy_status); - } - } - - // created_ap/sta_ifaces are also part of sta/ap_ifaces. - // Do no invalidate here. - - created_ap_ifaces_.clear(); - created_sta_ifaces_.clear(); + &WifiChip::triggerSubsystemRestartInternal, hidl_status_cb); } void WifiChip::invalidateAndRemoveAllIfaces() { - QcRemoveAndClearDynamicIfaces(); invalidateAndClearBridgedApAll(); invalidateAndClearAll(ap_ifaces_); invalidateAndClearAll(nan_ifaces_); @@ -829,16 +721,13 @@ void WifiChip::invalidateAndRemoveAllIfaces() { rtt_controllers_.clear(); } -void WifiChip::invalidateAndRemoveDependencies( - const std::string& removed_iface_name) { +void WifiChip::invalidateAndRemoveDependencies(const std::string& removed_iface_name) { for (auto it = nan_ifaces_.begin(); it != nan_ifaces_.end();) { auto nan_iface = *it; if (nan_iface->getName() == removed_iface_name) { nan_iface->invalidate(); for (const auto& callback : event_cb_handler_.getCallbacks()) { - if (!callback - ->onIfaceRemoved(IfaceType::NAN, removed_iface_name) - .isOk()) { + if (!callback->onIfaceRemoved(IfaceType::NAN, removed_iface_name).isOk()) { LOG(ERROR) << "Failed to invoke onIfaceRemoved callback"; } } @@ -864,7 +753,7 @@ std::pair<WifiStatus, ChipId> WifiChip::getIdInternal() { } WifiStatus WifiChip::registerEventCallbackInternal( - const sp<V1_0::IWifiChipEventCallback>& /* event_callback */) { + const sp<V1_0::IWifiChipEventCallback>& /* event_callback */) { // Deprecated support for this callback. return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); } @@ -880,8 +769,7 @@ WifiChip::getAvailableModesInternal() { } WifiStatus WifiChip::configureChipInternal( - /* NONNULL */ std::unique_lock<std::recursive_mutex>* lock, - ChipModeId mode_id) { + /* NONNULL */ std::unique_lock<std::recursive_mutex>* lock, ChipModeId mode_id) { if (!isValidModeId(mode_id)) { return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); } @@ -893,8 +781,7 @@ WifiStatus WifiChip::configureChipInternal( if (status.code != WifiStatusCode::SUCCESS) { for (const auto& callback : event_cb_handler_.getCallbacks()) { if (!callback->onChipReconfigureFailure(status).isOk()) { - LOG(ERROR) - << "Failed to invoke onChipReconfigureFailure callback"; + LOG(ERROR) << "Failed to invoke onChipReconfigureFailure callback"; } } return status; @@ -908,45 +795,38 @@ WifiStatus WifiChip::configureChipInternal( LOG(INFO) << "Configured chip in mode " << mode_id; setActiveWlanIfaceNameProperty(getFirstActiveWlanIfaceName()); - legacy_hal_.lock()->registerSubsystemRestartCallbackHandler( - subsystemCallbackHandler_); + legacy_hal_.lock()->registerSubsystemRestartCallbackHandler(subsystemCallbackHandler_); return status; } std::pair<WifiStatus, uint32_t> WifiChip::getModeInternal() { if (!isValidModeId(current_mode_id_)) { - return {createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE), - current_mode_id_}; + return {createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE), current_mode_id_}; } return {createWifiStatus(WifiStatusCode::SUCCESS), current_mode_id_}; } -std::pair<WifiStatus, V1_4::IWifiChip::ChipDebugInfo> -WifiChip::requestChipDebugInfoInternal() { +std::pair<WifiStatus, V1_4::IWifiChip::ChipDebugInfo> WifiChip::requestChipDebugInfoInternal() { V1_4::IWifiChip::ChipDebugInfo result; legacy_hal::wifi_error legacy_status; std::string driver_desc; const auto ifname = getFirstActiveWlanIfaceName(); - std::tie(legacy_status, driver_desc) = - legacy_hal_.lock()->getDriverVersion(ifname); + std::tie(legacy_status, driver_desc) = legacy_hal_.lock()->getDriverVersion(ifname); if (legacy_status != legacy_hal::WIFI_SUCCESS) { - LOG(ERROR) << "Failed to get driver version: " - << legacyErrorToString(legacy_status); - WifiStatus status = createWifiStatusFromLegacyError( - legacy_status, "failed to get driver version"); + LOG(ERROR) << "Failed to get driver version: " << legacyErrorToString(legacy_status); + WifiStatus status = + createWifiStatusFromLegacyError(legacy_status, "failed to get driver version"); return {status, result}; } result.driverDescription = driver_desc.c_str(); std::string firmware_desc; - std::tie(legacy_status, firmware_desc) = - legacy_hal_.lock()->getFirmwareVersion(ifname); + std::tie(legacy_status, firmware_desc) = legacy_hal_.lock()->getFirmwareVersion(ifname); if (legacy_status != legacy_hal::WIFI_SUCCESS) { - LOG(ERROR) << "Failed to get firmware version: " - << legacyErrorToString(legacy_status); - WifiStatus status = createWifiStatusFromLegacyError( - legacy_status, "failed to get firmware version"); + LOG(ERROR) << "Failed to get firmware version: " << legacyErrorToString(legacy_status); + WifiStatus status = + createWifiStatusFromLegacyError(legacy_status, "failed to get firmware version"); return {status, result}; } result.firmwareDescription = firmware_desc.c_str(); @@ -954,32 +834,25 @@ WifiChip::requestChipDebugInfoInternal() { return {createWifiStatus(WifiStatusCode::SUCCESS), result}; } -std::pair<WifiStatus, std::vector<uint8_t>> -WifiChip::requestDriverDebugDumpInternal() { +std::pair<WifiStatus, std::vector<uint8_t>> WifiChip::requestDriverDebugDumpInternal() { legacy_hal::wifi_error legacy_status; std::vector<uint8_t> driver_dump; std::tie(legacy_status, driver_dump) = - legacy_hal_.lock()->requestDriverMemoryDump( - getFirstActiveWlanIfaceName()); + legacy_hal_.lock()->requestDriverMemoryDump(getFirstActiveWlanIfaceName()); if (legacy_status != legacy_hal::WIFI_SUCCESS) { - LOG(ERROR) << "Failed to get driver debug dump: " - << legacyErrorToString(legacy_status); - return {createWifiStatusFromLegacyError(legacy_status), - std::vector<uint8_t>()}; + LOG(ERROR) << "Failed to get driver debug dump: " << legacyErrorToString(legacy_status); + return {createWifiStatusFromLegacyError(legacy_status), std::vector<uint8_t>()}; } return {createWifiStatus(WifiStatusCode::SUCCESS), driver_dump}; } -std::pair<WifiStatus, std::vector<uint8_t>> -WifiChip::requestFirmwareDebugDumpInternal() { +std::pair<WifiStatus, std::vector<uint8_t>> WifiChip::requestFirmwareDebugDumpInternal() { legacy_hal::wifi_error legacy_status; std::vector<uint8_t> firmware_dump; std::tie(legacy_status, firmware_dump) = - legacy_hal_.lock()->requestFirmwareMemoryDump( - getFirstActiveWlanIfaceName()); + legacy_hal_.lock()->requestFirmwareMemoryDump(getFirstActiveWlanIfaceName()); if (legacy_status != legacy_hal::WIFI_SUCCESS) { - LOG(ERROR) << "Failed to get firmware debug dump: " - << legacyErrorToString(legacy_status); + LOG(ERROR) << "Failed to get firmware debug dump: " << legacyErrorToString(legacy_status); return {createWifiStatusFromLegacyError(legacy_status), {}}; } return {createWifiStatus(WifiStatusCode::SUCCESS), firmware_dump}; @@ -988,8 +861,7 @@ WifiChip::requestFirmwareDebugDumpInternal() { WifiStatus WifiChip::createVirtualApInterface(const std::string& apVirtIf) { legacy_hal::wifi_error legacy_status; legacy_status = legacy_hal_.lock()->createVirtualInterface( - apVirtIf, - hidl_struct_util::convertHidlIfaceTypeToLegacy(IfaceType::AP)); + apVirtIf, hidl_struct_util::convertHidlIfaceTypeToLegacy(IfaceType::AP)); if (legacy_status != legacy_hal::WIFI_SUCCESS) { LOG(ERROR) << "Failed to add interface: " << apVirtIf << " " << legacyErrorToString(legacy_status); @@ -1005,9 +877,7 @@ sp<WifiApIface> WifiChip::newWifiApIface(std::string& ifname) { ap_instances = it.second; } } - iface_util_->setRandomMacAddressIndex(ap_ifaces_.size()); - sp<WifiApIface> iface = - new WifiApIface(ifname, ap_instances, legacy_hal_, iface_util_); + sp<WifiApIface> iface = new WifiApIface(ifname, ap_instances, legacy_hal_, iface_util_); ap_ifaces_.push_back(iface); for (const auto& callback : event_cb_handler_.getCallbacks()) { if (!callback->onIfaceAdded(IfaceType::AP, ifname).isOk()) { @@ -1018,27 +888,20 @@ sp<WifiApIface> WifiChip::newWifiApIface(std::string& ifname) { return iface; } -std::pair<WifiStatus, sp<V1_5::IWifiApIface>> -WifiChip::createApIfaceInternal() { +std::pair<WifiStatus, sp<V1_5::IWifiApIface>> WifiChip::createApIfaceInternal() { if (!canCurrentModeSupportIfaceOfTypeWithCurrentIfaces(IfaceType::AP)) { return {createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE), {}}; } - bool iface_created = false; std::string ifname = allocateApIfaceName(); - if (!if_nametoindex(ifname.c_str())) { - WifiStatus status = createVirtualApInterface(ifname); - if (status.code != WifiStatusCode::SUCCESS) { - return {status, {}}; - } - iface_created = true; + WifiStatus status = createVirtualApInterface(ifname); + if (status.code != WifiStatusCode::SUCCESS) { + return {status, {}}; } sp<WifiApIface> iface = newWifiApIface(ifname); - if (iface_created) created_ap_ifaces_.push_back(iface); return {createWifiStatus(WifiStatusCode::SUCCESS), iface}; } -std::pair<WifiStatus, sp<V1_5::IWifiApIface>> -WifiChip::createBridgedApIfaceInternal() { +std::pair<WifiStatus, sp<V1_5::IWifiApIface>> WifiChip::createBridgedApIfaceInternal() { if (!canCurrentModeSupportIfaceOfTypeWithCurrentIfaces(IfaceType::AP)) { return {createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE), {}}; } @@ -1054,7 +917,7 @@ WifiChip::createBridgedApIfaceInternal() { if (i != 0) { // The failure happened when creating second virtual // iface. legacy_hal_.lock()->deleteVirtualInterface( - ap_instances.front()); // Remove the first virtual iface. + ap_instances.front()); // Remove the first virtual iface. } return {status, {}}; } @@ -1068,8 +931,7 @@ WifiChip::createBridgedApIfaceInternal() { for (auto const& instance : ap_instances) { // Bind ap instance interface to AP bridge if (!iface_util_->addIfaceToBridge(br_ifname, instance)) { - LOG(ERROR) << "Failed add if to Bridge - if_name=" - << instance.c_str(); + LOG(ERROR) << "Failed add if to Bridge - if_name=" << instance.c_str(); invalidateAndClearBridgedAp(br_ifname); return {createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE), {}}; } @@ -1078,8 +940,7 @@ WifiChip::createBridgedApIfaceInternal() { return {createWifiStatus(WifiStatusCode::SUCCESS), iface}; } -std::pair<WifiStatus, std::vector<hidl_string>> -WifiChip::getApIfaceNamesInternal() { +std::pair<WifiStatus, std::vector<hidl_string>> WifiChip::getApIfaceNamesInternal() { if (ap_ifaces_.empty()) { return {createWifiStatus(WifiStatusCode::SUCCESS), {}}; } @@ -1087,7 +948,7 @@ WifiChip::getApIfaceNamesInternal() { } std::pair<WifiStatus, sp<V1_5::IWifiApIface>> WifiChip::getApIfaceInternal( - const std::string& ifname) { + const std::string& ifname) { const auto iface = findUsingName(ap_ifaces_, ifname); if (!iface.get()) { return {createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS), nullptr}; @@ -1105,9 +966,6 @@ WifiStatus WifiChip::removeApIfaceInternal(const std::string& ifname) { // nan/rtt objects over AP iface. But, there is no harm to do it // here and not make that assumption all over the place. invalidateAndRemoveDependencies(ifname); - if (findUsingName(created_ap_ifaces_, ifname) != nullptr) { - invalidateAndClear(created_ap_ifaces_, iface); - } // Clear the bridge interface and the iface instance. invalidateAndClearBridgedAp(ifname); invalidateAndClear(ap_ifaces_, iface); @@ -1121,7 +979,7 @@ WifiStatus WifiChip::removeApIfaceInternal(const std::string& ifname) { } WifiStatus WifiChip::removeIfaceInstanceFromBridgedApIfaceInternal( - const std::string& ifname, const std::string& ifInstanceName) { + const std::string& ifname, const std::string& ifInstanceName) { const auto iface = findUsingName(ap_ifaces_, ifname); if (!iface.get() || ifInstanceName.empty()) { return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); @@ -1133,23 +991,20 @@ WifiStatus WifiChip::removeIfaceInstanceFromBridgedApIfaceInternal( for (auto const& iface : ap_instances) { if (iface == ifInstanceName) { if (!iface_util_->removeIfaceFromBridge(it.first, iface)) { - LOG(ERROR) - << "Failed to remove interface: " << ifInstanceName - << " from " << ifname; - return createWifiStatus( - WifiStatusCode::ERROR_NOT_AVAILABLE); + LOG(ERROR) << "Failed to remove interface: " << ifInstanceName << " from " + << ifname; + return createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE); } legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->deleteVirtualInterface(iface); + legacy_hal_.lock()->deleteVirtualInterface(iface); if (legacy_status != legacy_hal::WIFI_SUCCESS) { - LOG(ERROR) << "Failed to del interface: " << iface - << " " << legacyErrorToString(legacy_status); + LOG(ERROR) << "Failed to del interface: " << iface << " " + << legacyErrorToString(legacy_status); return createWifiStatusFromLegacyError(legacy_status); } ap_instances.erase( - std::remove(ap_instances.begin(), ap_instances.end(), - ifInstanceName), - ap_instances.end()); + std::remove(ap_instances.begin(), ap_instances.end(), ifInstanceName), + ap_instances.end()); br_ifaces_ap_instances_[ifname] = ap_instances; break; } @@ -1163,8 +1018,7 @@ WifiStatus WifiChip::removeIfaceInstanceFromBridgedApIfaceInternal( return createWifiStatus(WifiStatusCode::SUCCESS); } -std::pair<WifiStatus, sp<V1_4::IWifiNanIface>> -WifiChip::createNanIfaceInternal() { +std::pair<WifiStatus, sp<V1_4::IWifiNanIface>> WifiChip::createNanIfaceInternal() { if (!canCurrentModeSupportIfaceOfTypeWithCurrentIfaces(IfaceType::NAN)) { return {createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE), {}}; } @@ -1176,8 +1030,7 @@ WifiChip::createNanIfaceInternal() { ifname = getFirstActiveWlanIfaceName(); is_dedicated_iface = false; } - sp<WifiNanIface> iface = - new WifiNanIface(ifname, is_dedicated_iface, legacy_hal_, iface_util_); + sp<WifiNanIface> iface = new WifiNanIface(ifname, is_dedicated_iface, legacy_hal_, iface_util_); nan_ifaces_.push_back(iface); for (const auto& callback : event_cb_handler_.getCallbacks()) { if (!callback->onIfaceAdded(IfaceType::NAN, ifname).isOk()) { @@ -1187,8 +1040,7 @@ WifiChip::createNanIfaceInternal() { return {createWifiStatus(WifiStatusCode::SUCCESS), iface}; } -std::pair<WifiStatus, std::vector<hidl_string>> -WifiChip::getNanIfaceNamesInternal() { +std::pair<WifiStatus, std::vector<hidl_string>> WifiChip::getNanIfaceNamesInternal() { if (nan_ifaces_.empty()) { return {createWifiStatus(WifiStatusCode::SUCCESS), {}}; } @@ -1196,7 +1048,7 @@ WifiChip::getNanIfaceNamesInternal() { } std::pair<WifiStatus, sp<V1_4::IWifiNanIface>> WifiChip::getNanIfaceInternal( - const std::string& ifname) { + const std::string& ifname) { const auto iface = findUsingName(nan_ifaces_, ifname); if (!iface.get()) { return {createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS), nullptr}; @@ -1233,16 +1085,14 @@ std::pair<WifiStatus, sp<IWifiP2pIface>> WifiChip::createP2pIfaceInternal() { return {createWifiStatus(WifiStatusCode::SUCCESS), iface}; } -std::pair<WifiStatus, std::vector<hidl_string>> -WifiChip::getP2pIfaceNamesInternal() { +std::pair<WifiStatus, std::vector<hidl_string>> WifiChip::getP2pIfaceNamesInternal() { if (p2p_ifaces_.empty()) { return {createWifiStatus(WifiStatusCode::SUCCESS), {}}; } return {createWifiStatus(WifiStatusCode::SUCCESS), getNames(p2p_ifaces_)}; } -std::pair<WifiStatus, sp<IWifiP2pIface>> WifiChip::getP2pIfaceInternal( - const std::string& ifname) { +std::pair<WifiStatus, sp<IWifiP2pIface>> WifiChip::getP2pIfaceInternal(const std::string& ifname) { const auto iface = findUsingName(p2p_ifaces_, ifname); if (!iface.get()) { return {createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS), nullptr}; @@ -1264,28 +1114,20 @@ WifiStatus WifiChip::removeP2pIfaceInternal(const std::string& ifname) { return createWifiStatus(WifiStatusCode::SUCCESS); } -std::pair<WifiStatus, sp<V1_5::IWifiStaIface>> -WifiChip::createStaIfaceInternal() { +std::pair<WifiStatus, sp<V1_5::IWifiStaIface>> WifiChip::createStaIfaceInternal() { if (!canCurrentModeSupportIfaceOfTypeWithCurrentIfaces(IfaceType::STA)) { return {createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE), {}}; } - bool iface_created = false; std::string ifname = allocateStaIfaceName(); - if (!if_nametoindex(ifname.c_str())) { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->createVirtualInterface( - ifname, - hidl_struct_util::convertHidlIfaceTypeToLegacy(IfaceType::STA)); - if (legacy_status != legacy_hal::WIFI_SUCCESS) { - LOG(ERROR) << "Failed to add interface: " << ifname << " " - << legacyErrorToString(legacy_status); - return {createWifiStatusFromLegacyError(legacy_status), {}}; - } - iface_created = true; + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->createVirtualInterface( + ifname, hidl_struct_util::convertHidlIfaceTypeToLegacy(IfaceType::STA)); + if (legacy_status != legacy_hal::WIFI_SUCCESS) { + LOG(ERROR) << "Failed to add interface: " << ifname << " " + << legacyErrorToString(legacy_status); + return {createWifiStatusFromLegacyError(legacy_status), {}}; } sp<WifiStaIface> iface = new WifiStaIface(ifname, legacy_hal_, iface_util_); sta_ifaces_.push_back(iface); - if (iface_created) created_sta_ifaces_.push_back(iface); for (const auto& callback : event_cb_handler_.getCallbacks()) { if (!callback->onIfaceAdded(IfaceType::STA, ifname).isOk()) { LOG(ERROR) << "Failed to invoke onIfaceAdded callback"; @@ -1295,8 +1137,7 @@ WifiChip::createStaIfaceInternal() { return {createWifiStatus(WifiStatusCode::SUCCESS), iface}; } -std::pair<WifiStatus, std::vector<hidl_string>> -WifiChip::getStaIfaceNamesInternal() { +std::pair<WifiStatus, std::vector<hidl_string>> WifiChip::getStaIfaceNamesInternal() { if (sta_ifaces_.empty()) { return {createWifiStatus(WifiStatusCode::SUCCESS), {}}; } @@ -1304,7 +1145,7 @@ WifiChip::getStaIfaceNamesInternal() { } std::pair<WifiStatus, sp<V1_5::IWifiStaIface>> WifiChip::getStaIfaceInternal( - const std::string& ifname) { + const std::string& ifname) { const auto iface = findUsingName(sta_ifaces_, ifname); if (!iface.get()) { return {createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS), nullptr}; @@ -1319,14 +1160,10 @@ WifiStatus WifiChip::removeStaIfaceInternal(const std::string& ifname) { } // Invalidate & remove any dependent objects first. invalidateAndRemoveDependencies(ifname); - if (findUsingName(created_sta_ifaces_, ifname) != nullptr) { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->deleteVirtualInterface(ifname); - if (legacy_status != legacy_hal::WIFI_SUCCESS) { - LOG(ERROR) << "Failed to remove interface: " << ifname << " " - << legacyErrorToString(legacy_status); - } - invalidateAndClear(created_sta_ifaces_, iface); + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->deleteVirtualInterface(ifname); + if (legacy_status != legacy_hal::WIFI_SUCCESS) { + LOG(ERROR) << "Failed to remove interface: " << ifname << " " + << legacyErrorToString(legacy_status); } invalidateAndClear(sta_ifaces_, iface); for (const auto& callback : event_cb_handler_.getCallbacks()) { @@ -1338,8 +1175,8 @@ WifiStatus WifiChip::removeStaIfaceInternal(const std::string& ifname) { return createWifiStatus(WifiStatusCode::SUCCESS); } -std::pair<WifiStatus, sp<V1_0::IWifiRttController>> -WifiChip::createRttControllerInternal(const sp<IWifiIface>& /*bound_iface*/) { +std::pair<WifiStatus, sp<V1_0::IWifiRttController>> WifiChip::createRttControllerInternal( + const sp<IWifiIface>& /*bound_iface*/) { LOG(ERROR) << "createRttController is not supported on this HAL"; return {createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED), {}}; } @@ -1347,38 +1184,33 @@ WifiChip::createRttControllerInternal(const sp<IWifiIface>& /*bound_iface*/) { std::pair<WifiStatus, std::vector<WifiDebugRingBufferStatus>> WifiChip::getDebugRingBuffersStatusInternal() { legacy_hal::wifi_error legacy_status; - std::vector<legacy_hal::wifi_ring_buffer_status> - legacy_ring_buffer_status_vec; + std::vector<legacy_hal::wifi_ring_buffer_status> legacy_ring_buffer_status_vec; std::tie(legacy_status, legacy_ring_buffer_status_vec) = - legacy_hal_.lock()->getRingBuffersStatus(getFirstActiveWlanIfaceName()); + legacy_hal_.lock()->getRingBuffersStatus(getFirstActiveWlanIfaceName()); if (legacy_status != legacy_hal::WIFI_SUCCESS) { return {createWifiStatusFromLegacyError(legacy_status), {}}; } std::vector<WifiDebugRingBufferStatus> hidl_ring_buffer_status_vec; if (!hidl_struct_util::convertLegacyVectorOfDebugRingBufferStatusToHidl( - legacy_ring_buffer_status_vec, &hidl_ring_buffer_status_vec)) { + legacy_ring_buffer_status_vec, &hidl_ring_buffer_status_vec)) { return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), {}}; } - return {createWifiStatus(WifiStatusCode::SUCCESS), - hidl_ring_buffer_status_vec}; + return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_ring_buffer_status_vec}; } WifiStatus WifiChip::startLoggingToDebugRingBufferInternal( - const hidl_string& ring_name, WifiDebugRingBufferVerboseLevel verbose_level, - uint32_t max_interval_in_sec, uint32_t min_data_size_in_bytes) { + const hidl_string& ring_name, WifiDebugRingBufferVerboseLevel verbose_level, + uint32_t max_interval_in_sec, uint32_t min_data_size_in_bytes) { WifiStatus status = registerDebugRingBufferCallback(); if (status.code != WifiStatusCode::SUCCESS) { return status; } - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->startRingBufferLogging( + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->startRingBufferLogging( getFirstActiveWlanIfaceName(), ring_name, - static_cast< - std::underlying_type<WifiDebugRingBufferVerboseLevel>::type>( - verbose_level), + static_cast<std::underlying_type<WifiDebugRingBufferVerboseLevel>::type>(verbose_level), max_interval_in_sec, min_data_size_in_bytes); - ringbuffer_map_.insert(std::pair<std::string, Ringbuffer>( - ring_name, Ringbuffer(kMaxBufferSizeBytes))); + ringbuffer_map_.insert( + std::pair<std::string, Ringbuffer>(ring_name, Ringbuffer(kMaxBufferSizeBytes))); // if verbose logging enabled, turn up HAL daemon logging as well. if (verbose_level < WifiDebugRingBufferVerboseLevel::VERBOSE) { android::base::SetMinimumLogSeverity(android::base::DEBUG); @@ -1388,15 +1220,13 @@ WifiStatus WifiChip::startLoggingToDebugRingBufferInternal( return createWifiStatusFromLegacyError(legacy_status); } -WifiStatus WifiChip::forceDumpToDebugRingBufferInternal( - const hidl_string& ring_name) { +WifiStatus WifiChip::forceDumpToDebugRingBufferInternal(const hidl_string& ring_name) { WifiStatus status = registerDebugRingBufferCallback(); if (status.code != WifiStatusCode::SUCCESS) { return status; } legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->getRingBufferData(getFirstActiveWlanIfaceName(), - ring_name); + legacy_hal_.lock()->getRingBufferData(getFirstActiveWlanIfaceName(), ring_name); return createWifiStatusFromLegacyError(legacy_status); } @@ -1411,8 +1241,7 @@ WifiStatus WifiChip::flushRingBufferToFileInternal() { WifiStatus WifiChip::stopLoggingToDebugRingBufferInternal() { legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->deregisterRingBufferCallbackHandler( - getFirstActiveWlanIfaceName()); + legacy_hal_.lock()->deregisterRingBufferCallbackHandler(getFirstActiveWlanIfaceName()); if (legacy_status == legacy_hal::WIFI_SUCCESS) { debug_ring_buffer_cb_registered_ = false; } @@ -1424,13 +1253,12 @@ WifiChip::getDebugHostWakeReasonStatsInternal() { legacy_hal::wifi_error legacy_status; legacy_hal::WakeReasonStats legacy_stats; std::tie(legacy_status, legacy_stats) = - legacy_hal_.lock()->getWakeReasonStats(getFirstActiveWlanIfaceName()); + legacy_hal_.lock()->getWakeReasonStats(getFirstActiveWlanIfaceName()); if (legacy_status != legacy_hal::WIFI_SUCCESS) { return {createWifiStatusFromLegacyError(legacy_status), {}}; } WifiDebugHostWakeReasonStats hidl_stats; - if (!hidl_struct_util::convertLegacyWakeReasonStatsToHidl(legacy_stats, - &hidl_stats)) { + if (!hidl_struct_util::convertLegacyWakeReasonStatsToHidl(legacy_stats, &hidl_stats)) { return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), {}}; } return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_stats}; @@ -1440,62 +1268,56 @@ WifiStatus WifiChip::enableDebugErrorAlertsInternal(bool enable) { legacy_hal::wifi_error legacy_status; if (enable) { android::wp<WifiChip> weak_ptr_this(this); - const auto& on_alert_callback = [weak_ptr_this]( - int32_t error_code, - std::vector<uint8_t> debug_data) { + const auto& on_alert_callback = [weak_ptr_this](int32_t error_code, + std::vector<uint8_t> debug_data) { const auto shared_ptr_this = weak_ptr_this.promote(); if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { LOG(ERROR) << "Callback invoked on an invalid object"; return; } for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback->onDebugErrorAlert(error_code, debug_data) - .isOk()) { + if (!callback->onDebugErrorAlert(error_code, debug_data).isOk()) { LOG(ERROR) << "Failed to invoke onDebugErrorAlert callback"; } } }; legacy_status = legacy_hal_.lock()->registerErrorAlertCallbackHandler( - getFirstActiveWlanIfaceName(), on_alert_callback); + getFirstActiveWlanIfaceName(), on_alert_callback); } else { legacy_status = legacy_hal_.lock()->deregisterErrorAlertCallbackHandler( - getFirstActiveWlanIfaceName()); + getFirstActiveWlanIfaceName()); } return createWifiStatusFromLegacyError(legacy_status); } -WifiStatus WifiChip::selectTxPowerScenarioInternal( - V1_1::IWifiChip::TxPowerScenario scenario) { +WifiStatus WifiChip::selectTxPowerScenarioInternal(V1_1::IWifiChip::TxPowerScenario scenario) { auto legacy_status = legacy_hal_.lock()->selectTxPowerScenario( - getFirstActiveWlanIfaceName(), - hidl_struct_util::convertHidlTxPowerScenarioToLegacy(scenario)); + getFirstActiveWlanIfaceName(), + hidl_struct_util::convertHidlTxPowerScenarioToLegacy(scenario)); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiChip::resetTxPowerScenarioInternal() { - auto legacy_status = - legacy_hal_.lock()->resetTxPowerScenario(getFirstActiveWlanIfaceName()); + auto legacy_status = legacy_hal_.lock()->resetTxPowerScenario(getFirstActiveWlanIfaceName()); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiChip::setLatencyModeInternal(LatencyMode mode) { auto legacy_status = legacy_hal_.lock()->setLatencyMode( - getFirstActiveWlanIfaceName(), - hidl_struct_util::convertHidlLatencyModeToLegacy(mode)); + getFirstActiveWlanIfaceName(), hidl_struct_util::convertHidlLatencyModeToLegacy(mode)); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiChip::registerEventCallbackInternal_1_2( - const sp<V1_2::IWifiChipEventCallback>& /* event_callback */) { + const sp<V1_2::IWifiChipEventCallback>& /* event_callback */) { // Deprecated support for this callback. return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); } -WifiStatus WifiChip::selectTxPowerScenarioInternal_1_2( - TxPowerScenario scenario) { +WifiStatus WifiChip::selectTxPowerScenarioInternal_1_2(TxPowerScenario scenario) { auto legacy_status = legacy_hal_.lock()->selectTxPowerScenario( - getFirstActiveWlanIfaceName(), - hidl_struct_util::convertHidlTxPowerScenarioToLegacy_1_2(scenario)); + getFirstActiveWlanIfaceName(), + hidl_struct_util::convertHidlTxPowerScenarioToLegacy_1_2(scenario)); return createWifiStatusFromLegacyError(legacy_status); } @@ -1510,65 +1332,61 @@ std::pair<WifiStatus, uint32_t> WifiChip::getCapabilitiesInternal_1_5() { uint32_t legacy_logger_feature_set; const auto ifname = getFirstActiveWlanIfaceName(); std::tie(legacy_status, legacy_feature_set) = - legacy_hal_.lock()->getSupportedFeatureSet(ifname); + legacy_hal_.lock()->getSupportedFeatureSet(ifname); if (legacy_status != legacy_hal::WIFI_SUCCESS) { return {createWifiStatusFromLegacyError(legacy_status), 0}; } std::tie(legacy_status, legacy_logger_feature_set) = - legacy_hal_.lock()->getLoggerSupportedFeatureSet(ifname); + legacy_hal_.lock()->getLoggerSupportedFeatureSet(ifname); if (legacy_status != legacy_hal::WIFI_SUCCESS) { // some devices don't support querying logger feature set legacy_logger_feature_set = 0; } uint32_t hidl_caps; if (!hidl_struct_util::convertLegacyFeaturesToHidlChipCapabilities( - legacy_feature_set, legacy_logger_feature_set, &hidl_caps)) { + legacy_feature_set, legacy_logger_feature_set, &hidl_caps)) { return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), 0}; } return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_caps}; } -std::pair<WifiStatus, sp<V1_4::IWifiRttController>> -WifiChip::createRttControllerInternal_1_4(const sp<IWifiIface>& bound_iface) { - if (sta_ifaces_.size() == 0 && - !canCurrentModeSupportIfaceOfType(IfaceType::STA)) { - LOG(ERROR) - << "createRttControllerInternal_1_4: Chip cannot support STAs " - "(and RTT by extension)"; +std::pair<WifiStatus, sp<V1_4::IWifiRttController>> WifiChip::createRttControllerInternal_1_4( + const sp<IWifiIface>& bound_iface) { + if (sta_ifaces_.size() == 0 && !canCurrentModeSupportIfaceOfType(IfaceType::STA)) { + LOG(ERROR) << "createRttControllerInternal_1_4: Chip cannot support STAs " + "(and RTT by extension)"; return {createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE), {}}; } - sp<WifiRttController> rtt = new WifiRttController( - getFirstActiveWlanIfaceName(), bound_iface, legacy_hal_); + sp<WifiRttController> rtt = + new WifiRttController(getFirstActiveWlanIfaceName(), bound_iface, legacy_hal_); rtt_controllers_.emplace_back(rtt); return {createWifiStatus(WifiStatusCode::SUCCESS), rtt}; } WifiStatus WifiChip::registerEventCallbackInternal_1_4( - const sp<V1_4::IWifiChipEventCallback>& event_callback) { + const sp<V1_4::IWifiChipEventCallback>& event_callback) { if (!event_cb_handler_.addCallback(event_callback)) { return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); } return createWifiStatus(WifiStatusCode::SUCCESS); } -WifiStatus WifiChip::setMultiStaPrimaryConnectionInternal( - const std::string& ifname) { - auto legacy_status = - legacy_hal_.lock()->multiStaSetPrimaryConnection(ifname); +WifiStatus WifiChip::setMultiStaPrimaryConnectionInternal(const std::string& ifname) { + auto legacy_status = legacy_hal_.lock()->multiStaSetPrimaryConnection(ifname); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiChip::setMultiStaUseCaseInternal(MultiStaUseCase use_case) { auto legacy_status = legacy_hal_.lock()->multiStaSetUseCase( - hidl_struct_util::convertHidlMultiStaUseCaseToLegacy(use_case)); + hidl_struct_util::convertHidlMultiStaUseCaseToLegacy(use_case)); return createWifiStatusFromLegacyError(legacy_status); } -WifiStatus WifiChip::setCoexUnsafeChannelsInternal( - std::vector<CoexUnsafeChannel> unsafe_channels, uint32_t restrictions) { +WifiStatus WifiChip::setCoexUnsafeChannelsInternal(std::vector<CoexUnsafeChannel> unsafe_channels, + uint32_t restrictions) { std::vector<legacy_hal::wifi_coex_unsafe_channel> legacy_unsafe_channels; - if (!hidl_struct_util::convertHidlVectorOfCoexUnsafeChannelToLegacy( - unsafe_channels, &legacy_unsafe_channels)) { + if (!hidl_struct_util::convertHidlVectorOfCoexUnsafeChannelToLegacy(unsafe_channels, + &legacy_unsafe_channels)) { return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); } uint32_t legacy_restrictions = 0; @@ -1581,35 +1399,31 @@ WifiStatus WifiChip::setCoexUnsafeChannelsInternal( if (restrictions & CoexRestriction::WIFI_AWARE) { legacy_restrictions |= legacy_hal::wifi_coex_restriction::WIFI_AWARE; } - auto legacy_status = legacy_hal_.lock()->setCoexUnsafeChannels( - legacy_unsafe_channels, legacy_restrictions); + auto legacy_status = + legacy_hal_.lock()->setCoexUnsafeChannels(legacy_unsafe_channels, legacy_restrictions); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiChip::setCountryCodeInternal(const std::array<int8_t, 2>& code) { - auto legacy_status = - legacy_hal_.lock()->setCountryCode(getFirstActiveWlanIfaceName(), code); + auto legacy_status = legacy_hal_.lock()->setCountryCode(getFirstActiveWlanIfaceName(), code); return createWifiStatusFromLegacyError(legacy_status); } -std::pair<WifiStatus, std::vector<WifiUsableChannel>> -WifiChip::getUsableChannelsInternal(WifiBand band, uint32_t ifaceModeMask, - uint32_t filterMask) { +std::pair<WifiStatus, std::vector<WifiUsableChannel>> WifiChip::getUsableChannelsInternal( + WifiBand band, uint32_t ifaceModeMask, uint32_t filterMask) { legacy_hal::wifi_error legacy_status; std::vector<legacy_hal::wifi_usable_channel> legacy_usable_channels; - std::tie(legacy_status, legacy_usable_channels) = - legacy_hal_.lock()->getUsableChannels( + std::tie(legacy_status, legacy_usable_channels) = legacy_hal_.lock()->getUsableChannels( hidl_struct_util::convertHidlWifiBandToLegacyMacBand(band), hidl_struct_util::convertHidlWifiIfaceModeToLegacy(ifaceModeMask), - hidl_struct_util::convertHidlUsableChannelFilterToLegacy( - filterMask)); + hidl_struct_util::convertHidlUsableChannelFilterToLegacy(filterMask)); if (legacy_status != legacy_hal::WIFI_SUCCESS) { return {createWifiStatusFromLegacyError(legacy_status), {}}; } std::vector<WifiUsableChannel> hidl_usable_channels; - if (!hidl_struct_util::convertLegacyWifiUsableChannelsToHidl( - legacy_usable_channels, &hidl_usable_channels)) { + if (!hidl_struct_util::convertLegacyWifiUsableChannelsToHidl(legacy_usable_channels, + &hidl_usable_channels)) { return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), {}}; } return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_usable_channels}; @@ -1621,19 +1435,15 @@ WifiStatus WifiChip::triggerSubsystemRestartInternal() { } WifiStatus WifiChip::handleChipConfiguration( - /* NONNULL */ std::unique_lock<std::recursive_mutex>* lock, - ChipModeId mode_id) { + /* NONNULL */ std::unique_lock<std::recursive_mutex>* lock, ChipModeId mode_id) { // If the chip is already configured in a different mode, stop // the legacy HAL and then start it after firmware mode change. if (isValidModeId(current_mode_id_)) { - LOG(INFO) << "Reconfiguring chip from mode " << current_mode_id_ - << " to mode " << mode_id; + LOG(INFO) << "Reconfiguring chip from mode " << current_mode_id_ << " to mode " << mode_id; invalidateAndRemoveAllIfaces(); - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->stop(lock, []() {}); + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->stop(lock, []() {}); if (legacy_status != legacy_hal::WIFI_SUCCESS) { - LOG(ERROR) << "Failed to stop legacy HAL: " - << legacyErrorToString(legacy_status); + LOG(ERROR) << "Failed to stop legacy HAL: " << legacyErrorToString(legacy_status); return createWifiStatusFromLegacyError(legacy_status); } } @@ -1649,8 +1459,7 @@ WifiStatus WifiChip::handleChipConfiguration( } legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->start(); if (legacy_status != legacy_hal::WIFI_SUCCESS) { - LOG(ERROR) << "Failed to start legacy HAL: " - << legacyErrorToString(legacy_status); + LOG(ERROR) << "Failed to start legacy HAL: " << legacyErrorToString(legacy_status); return createWifiStatusFromLegacyError(legacy_status); } // Every time the HAL is restarted, we need to register the @@ -1666,8 +1475,7 @@ WifiStatus WifiChip::handleChipConfiguration( if (WifiStatusCode::SUCCESS == version_info.first.code) { property_set("vendor.wlan.firmware.version", version_info.second.firmwareDescription.c_str()); - property_set("vendor.wlan.driver.version", - version_info.second.driverDescription.c_str()); + property_set("vendor.wlan.driver.version", version_info.second.driverDescription.c_str()); } return createWifiStatus(WifiStatusCode::SUCCESS); @@ -1680,36 +1488,33 @@ WifiStatus WifiChip::registerDebugRingBufferCallback() { android::wp<WifiChip> weak_ptr_this(this); const auto& on_ring_buffer_data_callback = - [weak_ptr_this](const std::string& name, - const std::vector<uint8_t>& data, - const legacy_hal::wifi_ring_buffer_status& status) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - WifiDebugRingBufferStatus hidl_status; - if (!hidl_struct_util::convertLegacyDebugRingBufferStatusToHidl( - status, &hidl_status)) { - LOG(ERROR) << "Error converting ring buffer status"; - return; - } - { - std::unique_lock<std::mutex> lk(shared_ptr_this->lock_t); - const auto& target = - shared_ptr_this->ringbuffer_map_.find(name); - if (target != shared_ptr_this->ringbuffer_map_.end()) { - Ringbuffer& cur_buffer = target->second; - cur_buffer.append(data); - } else { - LOG(ERROR) << "Ringname " << name << " not found"; + [weak_ptr_this](const std::string& name, const std::vector<uint8_t>& data, + const legacy_hal::wifi_ring_buffer_status& status) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; return; } - // unique_lock unlocked here - } - }; - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->registerRingBufferCallbackHandler( + WifiDebugRingBufferStatus hidl_status; + if (!hidl_struct_util::convertLegacyDebugRingBufferStatusToHidl(status, + &hidl_status)) { + LOG(ERROR) << "Error converting ring buffer status"; + return; + } + { + std::unique_lock<std::mutex> lk(shared_ptr_this->lock_t); + const auto& target = shared_ptr_this->ringbuffer_map_.find(name); + if (target != shared_ptr_this->ringbuffer_map_.end()) { + Ringbuffer& cur_buffer = target->second; + cur_buffer.append(data); + } else { + LOG(ERROR) << "Ringname " << name << " not found"; + return; + } + // unique_lock unlocked here + } + }; + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->registerRingBufferCallbackHandler( getFirstActiveWlanIfaceName(), on_ring_buffer_data_callback); if (legacy_status == legacy_hal::WIFI_SUCCESS) { @@ -1721,35 +1526,32 @@ WifiStatus WifiChip::registerDebugRingBufferCallback() { WifiStatus WifiChip::registerRadioModeChangeCallback() { android::wp<WifiChip> weak_ptr_this(this); const auto& on_radio_mode_change_callback = - [weak_ptr_this](const std::vector<legacy_hal::WifiMacInfo>& mac_infos) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - std::vector<V1_4::IWifiChipEventCallback::RadioModeInfo> - hidl_radio_mode_infos; - if (!hidl_struct_util::convertLegacyWifiMacInfosToHidl( - mac_infos, &hidl_radio_mode_infos)) { - LOG(ERROR) << "Error converting wifi mac info"; - return; - } - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback->onRadioModeChange_1_4(hidl_radio_mode_infos) - .isOk()) { - LOG(ERROR) << "Failed to invoke onRadioModeChange_1_4" - << " callback on: " << toString(callback); + [weak_ptr_this](const std::vector<legacy_hal::WifiMacInfo>& mac_infos) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; } - } - }; + std::vector<V1_4::IWifiChipEventCallback::RadioModeInfo> hidl_radio_mode_infos; + if (!hidl_struct_util::convertLegacyWifiMacInfosToHidl(mac_infos, + &hidl_radio_mode_infos)) { + LOG(ERROR) << "Error converting wifi mac info"; + return; + } + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->onRadioModeChange_1_4(hidl_radio_mode_infos).isOk()) { + LOG(ERROR) << "Failed to invoke onRadioModeChange_1_4" + << " callback on: " << toString(callback); + } + } + }; legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->registerRadioModeChangeCallbackHandler( - getFirstActiveWlanIfaceName(), on_radio_mode_change_callback); + legacy_hal_.lock()->registerRadioModeChangeCallbackHandler( + getFirstActiveWlanIfaceName(), on_radio_mode_change_callback); return createWifiStatusFromLegacyError(legacy_status); } -std::vector<V1_4::IWifiChip::ChipIfaceCombination> -WifiChip::getCurrentModeIfaceCombinations() { +std::vector<V1_4::IWifiChip::ChipIfaceCombination> WifiChip::getCurrentModeIfaceCombinations() { if (!isValidModeId(current_mode_id_)) { LOG(ERROR) << "Chip not configured in a mode yet"; return {}; @@ -1779,7 +1581,7 @@ std::map<IfaceType, size_t> WifiChip::getCurrentIfaceCombination() { // of ifaces of each type in the combination. // This method is a port of HalDeviceManager.expandIfaceCombos() from framework. std::vector<std::map<IfaceType, size_t>> WifiChip::expandIfaceCombinations( - const V1_4::IWifiChip::ChipIfaceCombination& combination) { + const V1_4::IWifiChip::ChipIfaceCombination& combination) { uint32_t num_expanded_combos = 1; for (const auto& limit : combination.limits) { for (uint32_t i = 0; i < limit.maxIfaces; i++) { @@ -1792,8 +1594,7 @@ std::vector<std::map<IfaceType, size_t>> WifiChip::expandIfaceCombinations( std::vector<std::map<IfaceType, size_t>> expanded_combos; expanded_combos.resize(num_expanded_combos); for (auto& expanded_combo : expanded_combos) { - for (const auto type : - {IfaceType::AP, IfaceType::NAN, IfaceType::P2P, IfaceType::STA}) { + for (const auto type : {IfaceType::AP, IfaceType::NAN, IfaceType::P2P, IfaceType::STA}) { expanded_combo[type] = 0; } } @@ -1802,8 +1603,7 @@ std::vector<std::map<IfaceType, size_t>> WifiChip::expandIfaceCombinations( for (uint32_t i = 0; i < limit.maxIfaces; i++) { span /= limit.types.size(); for (uint32_t k = 0; k < num_expanded_combos; ++k) { - const auto iface_type = - limit.types[(k / span) % limit.types.size()]; + const auto iface_type = limit.types[(k / span) % limit.types.size()]; expanded_combos[k][iface_type]++; } } @@ -1812,13 +1612,11 @@ std::vector<std::map<IfaceType, size_t>> WifiChip::expandIfaceCombinations( } bool WifiChip::canExpandedIfaceComboSupportIfaceOfTypeWithCurrentIfaces( - const std::map<IfaceType, size_t>& expanded_combo, - IfaceType requested_type) { + const std::map<IfaceType, size_t>& expanded_combo, IfaceType requested_type) { const auto current_combo = getCurrentIfaceCombination(); // Check if we have space for 1 more iface of |type| in this combo - for (const auto type : - {IfaceType::AP, IfaceType::NAN, IfaceType::P2P, IfaceType::STA}) { + for (const auto type : {IfaceType::AP, IfaceType::NAN, IfaceType::P2P, IfaceType::STA}) { size_t num_ifaces_needed = current_combo.at(type); if (type == requested_type) { num_ifaces_needed++; @@ -1836,8 +1634,7 @@ bool WifiChip::canExpandedIfaceComboSupportIfaceOfTypeWithCurrentIfaces( // ChipIfaceCombination. // b) Check if the requested iface type can be added to the current mode // with the iface combination that is already active. -bool WifiChip::canCurrentModeSupportIfaceOfTypeWithCurrentIfaces( - IfaceType requested_type) { +bool WifiChip::canCurrentModeSupportIfaceOfTypeWithCurrentIfaces(IfaceType requested_type) { if (!isValidModeId(current_mode_id_)) { LOG(ERROR) << "Chip not configured in a mode yet"; return false; @@ -1846,8 +1643,8 @@ bool WifiChip::canCurrentModeSupportIfaceOfTypeWithCurrentIfaces( for (const auto& combination : combinations) { const auto expanded_combos = expandIfaceCombinations(combination); for (const auto& expanded_combo : expanded_combos) { - if (canExpandedIfaceComboSupportIfaceOfTypeWithCurrentIfaces( - expanded_combo, requested_type)) { + if (canExpandedIfaceComboSupportIfaceOfTypeWithCurrentIfaces(expanded_combo, + requested_type)) { return true; } } @@ -1858,11 +1655,10 @@ bool WifiChip::canCurrentModeSupportIfaceOfTypeWithCurrentIfaces( // Note: This does not consider ifaces already active. It only checks if the // provided expanded iface combination can support the requested combo. bool WifiChip::canExpandedIfaceComboSupportIfaceCombo( - const std::map<IfaceType, size_t>& expanded_combo, - const std::map<IfaceType, size_t>& req_combo) { + const std::map<IfaceType, size_t>& expanded_combo, + const std::map<IfaceType, size_t>& req_combo) { // Check if we have space for 1 more iface of |type| in this combo - for (const auto type : - {IfaceType::AP, IfaceType::NAN, IfaceType::P2P, IfaceType::STA}) { + for (const auto type : {IfaceType::AP, IfaceType::NAN, IfaceType::P2P, IfaceType::STA}) { if (req_combo.count(type) == 0) { // Iface of "type" not in the req_combo. continue; @@ -1881,8 +1677,7 @@ bool WifiChip::canExpandedIfaceComboSupportIfaceCombo( // b) Check if the requested iface combo can be added to the current mode. // Note: This does not consider ifaces already active. It only checks if the // current mode can support the requested combo. -bool WifiChip::canCurrentModeSupportIfaceCombo( - const std::map<IfaceType, size_t>& req_combo) { +bool WifiChip::canCurrentModeSupportIfaceCombo(const std::map<IfaceType, size_t>& req_combo) { if (!isValidModeId(current_mode_id_)) { LOG(ERROR) << "Chip not configured in a mode yet"; return false; @@ -1891,8 +1686,7 @@ bool WifiChip::canCurrentModeSupportIfaceCombo( for (const auto& combination : combinations) { const auto expanded_combos = expandIfaceCombinations(combination); for (const auto& expanded_combo : expanded_combos) { - if (canExpandedIfaceComboSupportIfaceCombo(expanded_combo, - req_combo)) { + if (canExpandedIfaceComboSupportIfaceCombo(expanded_combo, req_combo)) { return true; } } @@ -1956,8 +1750,7 @@ std::string WifiChip::getFirstActiveWlanIfaceName() { // Return the first wlan (wlan0, wlan1 etc.) starting from |start_idx| // not already in use. // Note: This doesn't check the actual presence of these interfaces. -std::string WifiChip::allocateApOrStaIfaceName(IfaceType type, - uint32_t start_idx) { +std::string WifiChip::allocateApOrStaIfaceName(IfaceType type, uint32_t start_idx) { for (unsigned idx = start_idx; idx < kMaxWlanIfaces; idx++) { const auto ifname = getWlanIfaceNameWithType(type, idx); if (findUsingNameFromBridgedApInstances(ifname)) continue; @@ -1984,7 +1777,7 @@ uint32_t WifiChip::startIdxOfApIface() { } // AP iface names start with idx 1 for modes supporting -// concurrent STA, else start with idx 0. +// concurrent STA and not dual AP, else start with idx 0. std::string WifiChip::allocateApIfaceName() { // Check if we have a dedicated iface for AP. std::vector<std::string> ifnames = getPredefinedApIfaceNames(false); @@ -2002,8 +1795,8 @@ std::vector<std::string> WifiChip::allocateBridgedApInstanceNames() { } else { int num_ifaces_need_to_allocate = 2 - instances.size(); for (int i = 0; i < num_ifaces_need_to_allocate; i++) { - std::string instance_name = allocateApOrStaIfaceName( - IfaceType::AP, startIdxOfApIface() + i); + std::string instance_name = + allocateApOrStaIfaceName(IfaceType::AP, startIdxOfApIface() + i); if (!instance_name.empty()) { instances.push_back(instance_name); } @@ -2031,8 +1824,7 @@ bool WifiChip::writeRingbufferFilesInternal() { if (cur_buffer.getData().empty()) { continue; } - const std::string file_path_raw = - kTombstoneFolderPath + item.first + "XXXXXXXXXX"; + const std::string file_path_raw = kTombstoneFolderPath + item.first + "XXXXXXXXXX"; const int dump_fd = mkstemp(makeCharVec(file_path_raw).data()); if (dump_fd == -1) { PLOG(ERROR) << "create file failed"; @@ -2040,8 +1832,8 @@ bool WifiChip::writeRingbufferFilesInternal() { } unique_fd file_auto_closer(dump_fd); for (const auto& cur_block : cur_buffer.getData()) { - if (write(dump_fd, cur_block.data(), - sizeof(cur_block[0]) * cur_block.size()) == -1) { + if (write(dump_fd, cur_block.data(), sizeof(cur_block[0]) * cur_block.size()) == + -1) { PLOG(ERROR) << "Error writing to file"; } } @@ -2056,8 +1848,7 @@ std::string WifiChip::getWlanIfaceNameWithType(IfaceType type, unsigned idx) { std::string ifname; // let the legacy hal override the interface name - legacy_hal::wifi_error err = - legacy_hal_.lock()->getSupportedIfaceName((uint32_t)type, ifname); + legacy_hal::wifi_error err = legacy_hal_.lock()->getSupportedIfaceName((uint32_t)type, ifname); if (err == legacy_hal::WIFI_SUCCESS) return ifname; return getWlanIfaceName(idx); @@ -2106,7 +1897,7 @@ bool WifiChip::findUsingNameFromBridgedApInstances(const std::string& name) { } } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_chip.h b/wifi/1.6/default/wifi_chip.h index 51ade5d810..8a068985d1 100644 --- a/wifi/1.5/default/wifi_chip.h +++ b/wifi/1.6/default/wifi_chip.h @@ -39,9 +39,11 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { using namespace android::hardware::wifi::V1_0; +using V1_5::WifiBand; +using V1_5::WifiUsableChannel; /** * HIDL interface object used to control a Wifi HAL chip instance. @@ -49,15 +51,13 @@ using namespace android::hardware::wifi::V1_0; * identifying handle information stored here. */ class WifiChip : public V1_5::IWifiChip { - public: + public: WifiChip(ChipId chip_id, bool is_primary, const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal, - const std::weak_ptr<mode_controller::WifiModeController> - mode_controller, + const std::weak_ptr<mode_controller::WifiModeController> mode_controller, const std::shared_ptr<iface_util::WifiIfaceUtil> iface_util, const std::weak_ptr<feature_flags::WifiFeatureFlags> feature_flags, - const std::function<void(const std::string&)>& - subsystemCallbackHandler); + const std::function<void(const std::string&)>& subsystemCallbackHandler); // HIDL does not provide a built-in mechanism to let the server invalidate // a HIDL interface object after creation. If any client process holds onto // a reference to the object in their context, any method calls on that @@ -78,116 +78,84 @@ class WifiChip : public V1_5::IWifiChip { // HIDL methods exposed. Return<void> getId(getId_cb hidl_status_cb) override; // Deprecated support for this callback - Return<void> registerEventCallback( - const sp<V1_0::IWifiChipEventCallback>& event_callback, - registerEventCallback_cb hidl_status_cb) override; + Return<void> registerEventCallback(const sp<V1_0::IWifiChipEventCallback>& event_callback, + registerEventCallback_cb hidl_status_cb) override; Return<void> getCapabilities(getCapabilities_cb hidl_status_cb) override; - Return<void> getAvailableModes( - getAvailableModes_cb hidl_status_cb) override; - Return<void> configureChip(ChipModeId mode_id, - configureChip_cb hidl_status_cb) override; + Return<void> getAvailableModes(getAvailableModes_cb hidl_status_cb) override; + Return<void> configureChip(ChipModeId mode_id, configureChip_cb hidl_status_cb) override; Return<void> getMode(getMode_cb hidl_status_cb) override; - Return<void> requestChipDebugInfo( - requestChipDebugInfo_cb hidl_status_cb) override; - Return<void> requestDriverDebugDump( - requestDriverDebugDump_cb hidl_status_cb) override; - Return<void> requestFirmwareDebugDump( - requestFirmwareDebugDump_cb hidl_status_cb) override; + Return<void> requestChipDebugInfo(requestChipDebugInfo_cb hidl_status_cb) override; + Return<void> requestDriverDebugDump(requestDriverDebugDump_cb hidl_status_cb) override; + Return<void> requestFirmwareDebugDump(requestFirmwareDebugDump_cb hidl_status_cb) override; Return<void> createApIface(createApIface_cb hidl_status_cb) override; - Return<void> createBridgedApIface( - createBridgedApIface_cb hidl_status_cb) override; + Return<void> createBridgedApIface(createBridgedApIface_cb hidl_status_cb) override; Return<void> getApIfaceNames(getApIfaceNames_cb hidl_status_cb) override; - Return<void> getApIface(const hidl_string& ifname, - getApIface_cb hidl_status_cb) override; - Return<void> removeApIface(const hidl_string& ifname, - removeApIface_cb hidl_status_cb) override; + Return<void> getApIface(const hidl_string& ifname, getApIface_cb hidl_status_cb) override; + Return<void> removeApIface(const hidl_string& ifname, removeApIface_cb hidl_status_cb) override; Return<void> removeIfaceInstanceFromBridgedApIface( - const hidl_string& brIfaceName, const hidl_string& ifaceInstanceName, - removeIfaceInstanceFromBridgedApIface_cb hidl_status_cb) override; + const hidl_string& brIfaceName, const hidl_string& ifaceInstanceName, + removeIfaceInstanceFromBridgedApIface_cb hidl_status_cb) override; Return<void> createNanIface(createNanIface_cb hidl_status_cb) override; Return<void> getNanIfaceNames(getNanIfaceNames_cb hidl_status_cb) override; - Return<void> getNanIface(const hidl_string& ifname, - getNanIface_cb hidl_status_cb) override; + Return<void> getNanIface(const hidl_string& ifname, getNanIface_cb hidl_status_cb) override; Return<void> removeNanIface(const hidl_string& ifname, removeNanIface_cb hidl_status_cb) override; Return<void> createP2pIface(createP2pIface_cb hidl_status_cb) override; Return<void> getP2pIfaceNames(getP2pIfaceNames_cb hidl_status_cb) override; - Return<void> getP2pIface(const hidl_string& ifname, - getP2pIface_cb hidl_status_cb) override; + Return<void> getP2pIface(const hidl_string& ifname, getP2pIface_cb hidl_status_cb) override; Return<void> removeP2pIface(const hidl_string& ifname, removeP2pIface_cb hidl_status_cb) override; Return<void> createStaIface(createStaIface_cb hidl_status_cb) override; Return<void> getStaIfaceNames(getStaIfaceNames_cb hidl_status_cb) override; - Return<void> getStaIface(const hidl_string& ifname, - getStaIface_cb hidl_status_cb) override; + Return<void> getStaIface(const hidl_string& ifname, getStaIface_cb hidl_status_cb) override; Return<void> removeStaIface(const hidl_string& ifname, removeStaIface_cb hidl_status_cb) override; - Return<void> createRttController( - const sp<IWifiIface>& bound_iface, - createRttController_cb hidl_status_cb) override; - Return<void> getDebugRingBuffersStatus( - getDebugRingBuffersStatus_cb hidl_status_cb) override; + Return<void> createRttController(const sp<IWifiIface>& bound_iface, + createRttController_cb hidl_status_cb) override; + Return<void> getDebugRingBuffersStatus(getDebugRingBuffersStatus_cb hidl_status_cb) override; Return<void> startLoggingToDebugRingBuffer( - const hidl_string& ring_name, - WifiDebugRingBufferVerboseLevel verbose_level, - uint32_t max_interval_in_sec, uint32_t min_data_size_in_bytes, - startLoggingToDebugRingBuffer_cb hidl_status_cb) override; - Return<void> forceDumpToDebugRingBuffer( - const hidl_string& ring_name, - forceDumpToDebugRingBuffer_cb hidl_status_cb) override; - Return<void> flushRingBufferToFile( - flushRingBufferToFile_cb hidl_status_cb) override; + const hidl_string& ring_name, WifiDebugRingBufferVerboseLevel verbose_level, + uint32_t max_interval_in_sec, uint32_t min_data_size_in_bytes, + startLoggingToDebugRingBuffer_cb hidl_status_cb) override; + Return<void> forceDumpToDebugRingBuffer(const hidl_string& ring_name, + forceDumpToDebugRingBuffer_cb hidl_status_cb) override; + Return<void> flushRingBufferToFile(flushRingBufferToFile_cb hidl_status_cb) override; Return<void> stopLoggingToDebugRingBuffer( - stopLoggingToDebugRingBuffer_cb hidl_status_cb) override; + stopLoggingToDebugRingBuffer_cb hidl_status_cb) override; Return<void> getDebugHostWakeReasonStats( - getDebugHostWakeReasonStats_cb hidl_status_cb) override; - Return<void> enableDebugErrorAlerts( - bool enable, enableDebugErrorAlerts_cb hidl_status_cb) override; - Return<void> selectTxPowerScenario( - V1_1::IWifiChip::TxPowerScenario scenario, - selectTxPowerScenario_cb hidl_status_cb) override; - Return<void> resetTxPowerScenario( - resetTxPowerScenario_cb hidl_status_cb) override; - Return<void> setLatencyMode(LatencyMode mode, - setLatencyMode_cb hidl_status_cb) override; - Return<void> registerEventCallback_1_2( - const sp<V1_2::IWifiChipEventCallback>& event_callback, - registerEventCallback_1_2_cb hidl_status_cb) override; - Return<void> selectTxPowerScenario_1_2( - TxPowerScenario scenario, - selectTxPowerScenario_cb hidl_status_cb) override; - Return<void> getCapabilities_1_3( - getCapabilities_cb hidl_status_cb) override; - Return<void> getCapabilities_1_5( - getCapabilities_1_5_cb hidl_status_cb) override; - Return<void> debug(const hidl_handle& handle, - const hidl_vec<hidl_string>& options) override; - Return<void> createRttController_1_4( - const sp<IWifiIface>& bound_iface, - createRttController_1_4_cb hidl_status_cb) override; - Return<void> registerEventCallback_1_4( - const sp<V1_4::IWifiChipEventCallback>& event_callback, - registerEventCallback_1_4_cb hidl_status_cb) override; + getDebugHostWakeReasonStats_cb hidl_status_cb) override; + Return<void> enableDebugErrorAlerts(bool enable, + enableDebugErrorAlerts_cb hidl_status_cb) override; + Return<void> selectTxPowerScenario(V1_1::IWifiChip::TxPowerScenario scenario, + selectTxPowerScenario_cb hidl_status_cb) override; + Return<void> resetTxPowerScenario(resetTxPowerScenario_cb hidl_status_cb) override; + Return<void> setLatencyMode(LatencyMode mode, setLatencyMode_cb hidl_status_cb) override; + Return<void> registerEventCallback_1_2(const sp<V1_2::IWifiChipEventCallback>& event_callback, + registerEventCallback_1_2_cb hidl_status_cb) override; + Return<void> selectTxPowerScenario_1_2(TxPowerScenario scenario, + selectTxPowerScenario_cb hidl_status_cb) override; + Return<void> getCapabilities_1_3(getCapabilities_cb hidl_status_cb) override; + Return<void> getCapabilities_1_5(getCapabilities_1_5_cb hidl_status_cb) override; + Return<void> debug(const hidl_handle& handle, const hidl_vec<hidl_string>& options) override; + Return<void> createRttController_1_4(const sp<IWifiIface>& bound_iface, + createRttController_1_4_cb hidl_status_cb) override; + Return<void> registerEventCallback_1_4(const sp<V1_4::IWifiChipEventCallback>& event_callback, + registerEventCallback_1_4_cb hidl_status_cb) override; Return<void> setMultiStaPrimaryConnection( - const hidl_string& ifname, - setMultiStaPrimaryConnection_cb hidl_status_cb) override; - Return<void> setMultiStaUseCase( - MultiStaUseCase use_case, - setMultiStaUseCase_cb hidl_status_cb) override; - Return<void> setCoexUnsafeChannels( - const hidl_vec<CoexUnsafeChannel>& unsafe_channels, - hidl_bitfield<IfaceType> restrictions, - setCoexUnsafeChannels_cb hidl_status_cb) override; + const hidl_string& ifname, setMultiStaPrimaryConnection_cb hidl_status_cb) override; + Return<void> setMultiStaUseCase(MultiStaUseCase use_case, + setMultiStaUseCase_cb hidl_status_cb) override; + Return<void> setCoexUnsafeChannels(const hidl_vec<CoexUnsafeChannel>& unsafe_channels, + hidl_bitfield<IfaceType> restrictions, + setCoexUnsafeChannels_cb hidl_status_cb) override; Return<void> setCountryCode(const hidl_array<int8_t, 2>& code, setCountryCode_cb _hidl_cb) override; - Return<void> getUsableChannels( - WifiBand band, hidl_bitfield<WifiIfaceMode> ifaceModeMask, - hidl_bitfield<UsableChannelFilter> filterMask, - getUsableChannels_cb _hidl_cb) override; - Return<void> triggerSubsystemRestart( - triggerSubsystemRestart_cb hidl_status_cb) override; + Return<void> getUsableChannels(WifiBand band, hidl_bitfield<V1_5::WifiIfaceMode> ifaceModeMask, + hidl_bitfield<UsableChannelFilter> filterMask, + getUsableChannels_cb _hidl_cb) override; + Return<void> triggerSubsystemRestart(triggerSubsystemRestart_cb hidl_status_cb) override; - private: + private: void invalidateAndRemoveAllIfaces(); // When a STA iface is removed any dependent NAN-ifaces/RTT-controllers are // invalidated & removed. @@ -197,99 +165,83 @@ class WifiChip : public V1_5::IWifiChip { std::pair<WifiStatus, ChipId> getIdInternal(); // Deprecated support for this callback WifiStatus registerEventCallbackInternal( - const sp<V1_0::IWifiChipEventCallback>& event_callback); + const sp<V1_0::IWifiChipEventCallback>& event_callback); std::pair<WifiStatus, uint32_t> getCapabilitiesInternal(); std::pair<WifiStatus, std::vector<ChipMode>> getAvailableModesInternal(); - WifiStatus configureChipInternal( - std::unique_lock<std::recursive_mutex>* lock, ChipModeId mode_id); + WifiStatus configureChipInternal(std::unique_lock<std::recursive_mutex>* lock, + ChipModeId mode_id); std::pair<WifiStatus, uint32_t> getModeInternal(); - std::pair<WifiStatus, IWifiChip::ChipDebugInfo> - requestChipDebugInfoInternal(); - std::pair<WifiStatus, std::vector<uint8_t>> - requestDriverDebugDumpInternal(); - std::pair<WifiStatus, std::vector<uint8_t>> - requestFirmwareDebugDumpInternal(); + std::pair<WifiStatus, IWifiChip::ChipDebugInfo> requestChipDebugInfoInternal(); + std::pair<WifiStatus, std::vector<uint8_t>> requestDriverDebugDumpInternal(); + std::pair<WifiStatus, std::vector<uint8_t>> requestFirmwareDebugDumpInternal(); sp<WifiApIface> newWifiApIface(std::string& ifname); WifiStatus createVirtualApInterface(const std::string& apVirtIf); std::pair<WifiStatus, sp<V1_5::IWifiApIface>> createApIfaceInternal(); - std::pair<WifiStatus, sp<V1_5::IWifiApIface>> - createBridgedApIfaceInternal(); + std::pair<WifiStatus, sp<V1_5::IWifiApIface>> createBridgedApIfaceInternal(); std::pair<WifiStatus, std::vector<hidl_string>> getApIfaceNamesInternal(); - std::pair<WifiStatus, sp<V1_5::IWifiApIface>> getApIfaceInternal( - const std::string& ifname); + std::pair<WifiStatus, sp<V1_5::IWifiApIface>> getApIfaceInternal(const std::string& ifname); WifiStatus removeApIfaceInternal(const std::string& ifname); - WifiStatus removeIfaceInstanceFromBridgedApIfaceInternal( - const std::string& brIfaceName, const std::string& ifInstanceName); + WifiStatus removeIfaceInstanceFromBridgedApIfaceInternal(const std::string& brIfaceName, + const std::string& ifInstanceName); std::pair<WifiStatus, sp<V1_4::IWifiNanIface>> createNanIfaceInternal(); std::pair<WifiStatus, std::vector<hidl_string>> getNanIfaceNamesInternal(); - std::pair<WifiStatus, sp<V1_4::IWifiNanIface>> getNanIfaceInternal( - const std::string& ifname); + std::pair<WifiStatus, sp<V1_4::IWifiNanIface>> getNanIfaceInternal(const std::string& ifname); WifiStatus removeNanIfaceInternal(const std::string& ifname); std::pair<WifiStatus, sp<IWifiP2pIface>> createP2pIfaceInternal(); std::pair<WifiStatus, std::vector<hidl_string>> getP2pIfaceNamesInternal(); - std::pair<WifiStatus, sp<IWifiP2pIface>> getP2pIfaceInternal( - const std::string& ifname); + std::pair<WifiStatus, sp<IWifiP2pIface>> getP2pIfaceInternal(const std::string& ifname); WifiStatus removeP2pIfaceInternal(const std::string& ifname); std::pair<WifiStatus, sp<V1_5::IWifiStaIface>> createStaIfaceInternal(); std::pair<WifiStatus, std::vector<hidl_string>> getStaIfaceNamesInternal(); - std::pair<WifiStatus, sp<V1_5::IWifiStaIface>> getStaIfaceInternal( - const std::string& ifname); + std::pair<WifiStatus, sp<V1_5::IWifiStaIface>> getStaIfaceInternal(const std::string& ifname); WifiStatus removeStaIfaceInternal(const std::string& ifname); - std::pair<WifiStatus, sp<V1_0::IWifiRttController>> - createRttControllerInternal(const sp<IWifiIface>& bound_iface); + std::pair<WifiStatus, sp<V1_0::IWifiRttController>> createRttControllerInternal( + const sp<IWifiIface>& bound_iface); std::pair<WifiStatus, std::vector<WifiDebugRingBufferStatus>> getDebugRingBuffersStatusInternal(); - WifiStatus startLoggingToDebugRingBufferInternal( - const hidl_string& ring_name, - WifiDebugRingBufferVerboseLevel verbose_level, - uint32_t max_interval_in_sec, uint32_t min_data_size_in_bytes); + WifiStatus startLoggingToDebugRingBufferInternal(const hidl_string& ring_name, + WifiDebugRingBufferVerboseLevel verbose_level, + uint32_t max_interval_in_sec, + uint32_t min_data_size_in_bytes); WifiStatus forceDumpToDebugRingBufferInternal(const hidl_string& ring_name); WifiStatus flushRingBufferToFileInternal(); WifiStatus stopLoggingToDebugRingBufferInternal(); - std::pair<WifiStatus, WifiDebugHostWakeReasonStats> - getDebugHostWakeReasonStatsInternal(); + std::pair<WifiStatus, WifiDebugHostWakeReasonStats> getDebugHostWakeReasonStatsInternal(); WifiStatus enableDebugErrorAlertsInternal(bool enable); - WifiStatus selectTxPowerScenarioInternal( - V1_1::IWifiChip::TxPowerScenario scenario); + WifiStatus selectTxPowerScenarioInternal(V1_1::IWifiChip::TxPowerScenario scenario); WifiStatus resetTxPowerScenarioInternal(); WifiStatus setLatencyModeInternal(LatencyMode mode); WifiStatus registerEventCallbackInternal_1_2( - const sp<V1_2::IWifiChipEventCallback>& event_callback); + const sp<V1_2::IWifiChipEventCallback>& event_callback); WifiStatus selectTxPowerScenarioInternal_1_2(TxPowerScenario scenario); std::pair<WifiStatus, uint32_t> getCapabilitiesInternal_1_3(); std::pair<WifiStatus, uint32_t> getCapabilitiesInternal_1_5(); - std::pair<WifiStatus, sp<V1_4::IWifiRttController>> - createRttControllerInternal_1_4(const sp<IWifiIface>& bound_iface); + std::pair<WifiStatus, sp<V1_4::IWifiRttController>> createRttControllerInternal_1_4( + const sp<IWifiIface>& bound_iface); WifiStatus registerEventCallbackInternal_1_4( - const sp<V1_4::IWifiChipEventCallback>& event_callback); + const sp<V1_4::IWifiChipEventCallback>& event_callback); WifiStatus setMultiStaPrimaryConnectionInternal(const std::string& ifname); WifiStatus setMultiStaUseCaseInternal(MultiStaUseCase use_case); - WifiStatus setCoexUnsafeChannelsInternal( - std::vector<CoexUnsafeChannel> unsafe_channels, uint32_t restrictions); + WifiStatus setCoexUnsafeChannelsInternal(std::vector<CoexUnsafeChannel> unsafe_channels, + uint32_t restrictions); WifiStatus setCountryCodeInternal(const std::array<int8_t, 2>& code); - std::pair<WifiStatus, std::vector<WifiUsableChannel>> - getUsableChannelsInternal(WifiBand band, uint32_t ifaceModeMask, - uint32_t filterMask); - WifiStatus handleChipConfiguration( - std::unique_lock<std::recursive_mutex>* lock, ChipModeId mode_id); + std::pair<WifiStatus, std::vector<WifiUsableChannel>> getUsableChannelsInternal( + WifiBand band, uint32_t ifaceModeMask, uint32_t filterMask); + WifiStatus handleChipConfiguration(std::unique_lock<std::recursive_mutex>* lock, + ChipModeId mode_id); WifiStatus registerDebugRingBufferCallback(); WifiStatus registerRadioModeChangeCallback(); - std::vector<V1_4::IWifiChip::ChipIfaceCombination> - getCurrentModeIfaceCombinations(); + std::vector<V1_4::IWifiChip::ChipIfaceCombination> getCurrentModeIfaceCombinations(); std::map<IfaceType, size_t> getCurrentIfaceCombination(); std::vector<std::map<IfaceType, size_t>> expandIfaceCombinations( - const V1_4::IWifiChip::ChipIfaceCombination& combination); + const V1_4::IWifiChip::ChipIfaceCombination& combination); bool canExpandedIfaceComboSupportIfaceOfTypeWithCurrentIfaces( - const std::map<IfaceType, size_t>& expanded_combo, - IfaceType requested_type); - bool canCurrentModeSupportIfaceOfTypeWithCurrentIfaces( - IfaceType requested_type); - bool canExpandedIfaceComboSupportIfaceCombo( - const std::map<IfaceType, size_t>& expanded_combo, - const std::map<IfaceType, size_t>& req_combo); - bool canCurrentModeSupportIfaceCombo( - const std::map<IfaceType, size_t>& req_combo); + const std::map<IfaceType, size_t>& expanded_combo, IfaceType requested_type); + bool canCurrentModeSupportIfaceOfTypeWithCurrentIfaces(IfaceType requested_type); + bool canExpandedIfaceComboSupportIfaceCombo(const std::map<IfaceType, size_t>& expanded_combo, + const std::map<IfaceType, size_t>& req_combo); + bool canCurrentModeSupportIfaceCombo(const std::map<IfaceType, size_t>& req_combo); bool canCurrentModeSupportIfaceOfType(IfaceType requested_type); bool isValidModeId(ChipModeId mode_id); bool isStaApConcurrencyAllowedInCurrentMode(); @@ -306,7 +258,6 @@ class WifiChip : public V1_5::IWifiChip { void invalidateAndClearBridgedAp(const std::string& br_name); bool findUsingNameFromBridgedApInstances(const std::string& name); WifiStatus triggerSubsystemRestartInternal(); - void QcRemoveAndClearDynamicIfaces(); ChipId chip_id_; std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_; @@ -327,20 +278,15 @@ class WifiChip : public V1_5::IWifiChip { // registration mechanism. Use this to check if we have already // registered a callback. bool debug_ring_buffer_cb_registered_; - hidl_callback_util::HidlCallbackHandler<V1_4::IWifiChipEventCallback> - event_cb_handler_; + hidl_callback_util::HidlCallbackHandler<V1_4::IWifiChipEventCallback> event_cb_handler_; const std::function<void(const std::string&)> subsystemCallbackHandler_; std::map<std::string, std::vector<std::string>> br_ifaces_ap_instances_; - - std::vector<sp<WifiApIface>> created_ap_ifaces_; - std::vector<sp<WifiStaIface>> created_sta_ifaces_; - DISALLOW_COPY_AND_ASSIGN(WifiChip); }; } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_feature_flags.cpp b/wifi/1.6/default/wifi_feature_flags.cpp index 293563e3ac..71319e1e90 100644 --- a/wifi/1.5/default/wifi_feature_flags.cpp +++ b/wifi/1.6/default/wifi_feature_flags.cpp @@ -24,7 +24,7 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace feature_flags { @@ -84,54 +84,14 @@ constexpr ChipModeId kMainModeId = chip_mode_ids::kV3; # define WIFI_HAL_INTERFACE_COMBINATIONS {{{STA}, 1}, {{P2P}, 1}} # endif # else -# if defined(QC_WIFI_HIDL_FEATURE_DUAL_AP) && defined(QC_WIFI_HIDL_FEATURE_DUAL_STA) -# ifdef WIFI_HIDL_FEATURE_AWARE -// (1 STA + 1 AP) or (1 STA + 1 of (P2P or NAN)) or (2 AP) or (2 STA) -# define WIFI_HAL_INTERFACE_COMBINATIONS {{{STA}, 1}, {{AP}, 1}},\ - {{{STA}, 1}, {{P2P, NAN}, 1}},\ - {{{AP}, 2}},\ - {{{STA}, 2}} -# else -// (1 STA + 1 AP) or (1 STA + 1 P2P) or (2 AP) or (2 STA) -# define WIFI_HAL_INTERFACE_COMBINATIONS {{{STA}, 1}, {{AP}, 1}},\ - {{{STA}, 1}, {{P2P}, 1}},\ - {{{AP}, 2}},\ - {{{STA}, 2}} -# endif -# elif defined(QC_WIFI_HIDL_FEATURE_DUAL_AP) -# ifdef WIFI_HIDL_FEATURE_AWARE -// (1 STA + 1 AP) or (1 STA + 1 of (P2P or NAN)) or (2 AP) -# define WIFI_HAL_INTERFACE_COMBINATIONS {{{STA}, 1}, {{AP}, 1}},\ - {{{STA}, 1}, {{P2P, NAN}, 1}},\ - {{{AP}, 2}} -# else -// (1 STA + 1 AP) or (1 STA + 1 P2P) or (2 AP) -# define WIFI_HAL_INTERFACE_COMBINATIONS {{{STA}, 1}, {{AP}, 1}},\ - {{{STA}, 1}, {{P2P}, 1}},\ - {{{AP}, 2}} -# endif -# elif defined(QC_WIFI_HIDL_FEATURE_DUAL_STA) -# ifdef WIFI_HIDL_FEATURE_AWARE -// (1 STA + 1 AP) or (1 STA + 1 of (P2P or NAN)) or (2 STA) -# define WIFI_HAL_INTERFACE_COMBINATIONS {{{STA}, 1}, {{AP}, 1}},\ - {{{STA}, 1}, {{P2P, NAN}, 1}},\ - {{{STA}, 2}} -# else -// (1 STA + 1 AP) or (1 STA + 1 P2P) or (2 STA) -# define WIFI_HAL_INTERFACE_COMBINATIONS {{{STA}, 1}, {{AP}, 1}},\ - {{{STA}, 1}, {{P2P}, 1}},\ - {{{STA}, 2}} -# endif +# ifdef WIFI_HIDL_FEATURE_AWARE +// (1 STA + 1 AP) or (1 STA + 1 of (P2P or NAN)) +# define WIFI_HAL_INTERFACE_COMBINATIONS {{{STA}, 1}, {{AP}, 1}},\ + {{{STA}, 1}, {{P2P, NAN}, 1}} # else -# ifdef WIFI_HIDL_FEATURE_AWARE -// (1 STA + 1 AP) or (1 STA + 1 of (P2P or NAN)) -# define WIFI_HAL_INTERFACE_COMBINATIONS {{{STA}, 1}, {{AP}, 1}},\ - {{{STA}, 1}, {{P2P, NAN}, 1}} -# else -// (1 STA + 1 AP) or (1 STA + 1 P2P) -# define WIFI_HAL_INTERFACE_COMBINATIONS {{{STA}, 1}, {{AP}, 1}},\ - {{{STA}, 1}, {{P2P}, 1}} -# endif +// (1 STA + 1 AP) or (1 STA + 1 P2P) +# define WIFI_HAL_INTERFACE_COMBINATIONS {{{STA}, 1}, {{AP}, 1}},\ + {{{STA}, 1}, {{P2P}, 1}} # endif # endif #else @@ -157,18 +117,16 @@ constexpr ChipModeId kMainModeId = chip_mode_ids::kV1Sta; * The main point here is to simplify the syntax required by * WIFI_HAL_INTERFACE_COMBINATIONS. */ -struct ChipIfaceCombination - : public hidl_vec<IWifiChip::ChipIfaceCombinationLimit> { - ChipIfaceCombination( - const std::initializer_list<IWifiChip::ChipIfaceCombinationLimit> list) +struct ChipIfaceCombination : public hidl_vec<IWifiChip::ChipIfaceCombinationLimit> { + ChipIfaceCombination(const std::initializer_list<IWifiChip::ChipIfaceCombinationLimit> list) : hidl_vec(list) {} operator IWifiChip::ChipIfaceCombination() const { return {*this}; } static hidl_vec<IWifiChip::ChipIfaceCombination> make_vec( - const std::initializer_list<ChipIfaceCombination> list) { + const std::initializer_list<ChipIfaceCombination> list) { return hidl_vec<IWifiChip::ChipIfaceCombination>( // - std::begin(list), std::end(list)); + std::begin(list), std::end(list)); } }; @@ -177,23 +135,22 @@ struct ChipIfaceCombination #define P2P IfaceType::P2P #define NAN IfaceType::NAN static const std::vector<IWifiChip::ChipMode> kChipModesPrimary{ - {kMainModeId, - ChipIfaceCombination::make_vec({WIFI_HAL_INTERFACE_COMBINATIONS})}, + {kMainModeId, ChipIfaceCombination::make_vec({WIFI_HAL_INTERFACE_COMBINATIONS})}, #ifdef WIFI_HAL_INTERFACE_COMBINATIONS_AP - {chip_mode_ids::kV1Ap, - ChipIfaceCombination::make_vec({WIFI_HAL_INTERFACE_COMBINATIONS_AP})}, + {chip_mode_ids::kV1Ap, + ChipIfaceCombination::make_vec({WIFI_HAL_INTERFACE_COMBINATIONS_AP})}, #endif }; static const std::vector<IWifiChip::ChipMode> kChipModesSecondary{ #ifdef WIFI_HAL_INTERFACE_COMBINATIONS_SECONDARY_CHIP - {chip_mode_ids::kV3, ChipIfaceCombination::make_vec( - {WIFI_HAL_INTERFACE_COMBINATIONS_SECONDARY_CHIP})}, + {chip_mode_ids::kV3, + ChipIfaceCombination::make_vec({WIFI_HAL_INTERFACE_COMBINATIONS_SECONDARY_CHIP})}, #endif }; constexpr char kDebugPresetInterfaceCombinationIdxProperty[] = - "persist.vendor.debug.wifi.hal.preset_interface_combination_idx"; + "persist.vendor.debug.wifi.hal.preset_interface_combination_idx"; // List of pre-defined interface combinations that can be enabled at runtime via // setting the property: "kDebugPresetInterfaceCombinationIdxProperty" to the // corresponding index value. @@ -240,19 +197,18 @@ static const std::vector<std::pair<std::string, std::vector<IWifiChip::ChipMode> #undef NAN #ifdef WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION -#pragma message \ - "WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION is deprecated; override " \ - "'config_wifi_ap_randomization_supported' in " \ - "frameworks/base/core/res/res/values/config.xml in the device overlay " \ - "instead" +#pragma message \ + "WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION is deprecated; override " \ + "'config_wifi_ap_randomization_supported' in " \ + "frameworks/base/core/res/res/values/config.xml in the device overlay " \ + "instead" #endif // WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION WifiFeatureFlags::WifiFeatureFlags() {} std::vector<IWifiChip::ChipMode> WifiFeatureFlags::getChipModesForPrimary() { std::array<char, PROPERTY_VALUE_MAX> buffer; - auto res = property_get(kDebugPresetInterfaceCombinationIdxProperty, - buffer.data(), nullptr); + auto res = property_get(kDebugPresetInterfaceCombinationIdxProperty, buffer.data(), nullptr); // Debug propety not set, use the device preset interface combination. if (res <= 0) return kChipModesPrimary; @@ -266,19 +222,18 @@ std::vector<IWifiChip::ChipMode> WifiFeatureFlags::getChipModesForPrimary() { std::string name; std::vector<IWifiChip::ChipMode> chip_modes; std::tie(name, chip_modes) = kDebugChipModes[idx]; - LOG(INFO) << "Using debug chip mode: <" << name << "> set via property: " - << kDebugPresetInterfaceCombinationIdxProperty; + LOG(INFO) << "Using debug chip mode: <" << name + << "> set via property: " << kDebugPresetInterfaceCombinationIdxProperty; return chip_modes; } -std::vector<IWifiChip::ChipMode> WifiFeatureFlags::getChipModes( - bool is_primary) { +std::vector<IWifiChip::ChipMode> WifiFeatureFlags::getChipModes(bool is_primary) { return (is_primary) ? getChipModesForPrimary() : kChipModesSecondary; } } // namespace feature_flags } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_feature_flags.h b/wifi/1.6/default/wifi_feature_flags.h index 7d561fc949..d5844d99b3 100644 --- a/wifi/1.5/default/wifi_feature_flags.h +++ b/wifi/1.6/default/wifi_feature_flags.h @@ -22,7 +22,7 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace feature_flags { @@ -38,20 +38,19 @@ constexpr V1_0::ChipModeId kV3 = 3; } // namespace chip_mode_ids class WifiFeatureFlags { - public: + public: WifiFeatureFlags(); virtual ~WifiFeatureFlags() = default; - virtual std::vector<V1_0::IWifiChip::ChipMode> getChipModes( - bool is_primary); + virtual std::vector<V1_0::IWifiChip::ChipMode> getChipModes(bool is_primary); - private: + private: std::vector<V1_0::IWifiChip::ChipMode> getChipModesForPrimary(); }; } // namespace feature_flags } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_iface_util.cpp b/wifi/1.6/default/wifi_iface_util.cpp index f1c182fc7d..d55e4f8251 100644 --- a/wifi/1.5/default/wifi_iface_util.cpp +++ b/wifi/1.6/default/wifi_iface_util.cpp @@ -36,23 +36,18 @@ constexpr uint8_t kMacAddressLocallyAssignedMask = 0x02; namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace iface_util { -WifiIfaceUtil::WifiIfaceUtil( - const std::weak_ptr<wifi_system::InterfaceTool> iface_tool, - const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal) +WifiIfaceUtil::WifiIfaceUtil(const std::weak_ptr<wifi_system::InterfaceTool> iface_tool, + const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal) : iface_tool_(iface_tool), legacy_hal_(legacy_hal), - random_mac_address_index_(0), - event_handlers_map_() { - for (int i=0; i < MAX_RANDOM_MAC_ADDR_INDEX; i++) - random_mac_address_[i] = nullptr; -} + random_mac_address_(nullptr), + event_handlers_map_() {} -std::array<uint8_t, 6> WifiIfaceUtil::getFactoryMacAddress( - const std::string& iface_name) { +std::array<uint8_t, 6> WifiIfaceUtil::getFactoryMacAddress(const std::string& iface_name) { return iface_tool_.lock()->GetFactoryMacAddress(iface_name.c_str()); } @@ -62,7 +57,7 @@ bool WifiIfaceUtil::setMacAddress(const std::string& iface_name, legacy_hal::wifi_error legacy_status; uint64_t legacy_feature_set; std::tie(legacy_status, legacy_feature_set) = - legacy_hal_.lock()->getSupportedFeatureSet(iface_name); + legacy_hal_.lock()->getSupportedFeatureSet(iface_name); if (!(legacy_feature_set & WIFI_FEATURE_DYNAMIC_SET_MAC) && !iface_tool_.lock()->SetUpState(iface_name.c_str(), false)) { @@ -76,8 +71,7 @@ bool WifiIfaceUtil::setMacAddress(const std::string& iface_name, !iface_tool_.lock()->SetUpState(iface_name.c_str(), true)) { LOG(ERROR) << "SetUpState(true) failed. Wait for driver ready."; // Wait for driver ready and try to set iface UP again - if (legacy_hal_.lock()->waitForDriverReady() != - legacy_hal::WIFI_SUCCESS) { + if (legacy_hal_.lock()->waitForDriverReady() != legacy_hal::WIFI_SUCCESS) { LOG(ERROR) << "SetUpState(true) wait for driver ready failed."; return false; } @@ -103,22 +97,12 @@ bool WifiIfaceUtil::setMacAddress(const std::string& iface_name, return success; } -void WifiIfaceUtil::setRandomMacAddressIndex(int idx) { - if (idx >= MAX_RANDOM_MAC_ADDR_INDEX) { - LOG(ERROR) << "Requested random mac address index crossed max limit!!"; - return; - } - - random_mac_address_index_ = idx; -} - std::array<uint8_t, 6> WifiIfaceUtil::getOrCreateRandomMacAddress() { - if (random_mac_address_[random_mac_address_index_]) { - return *random_mac_address_[random_mac_address_index_].get(); + if (random_mac_address_) { + return *random_mac_address_.get(); } - random_mac_address_[random_mac_address_index_] = - std::make_unique<std::array<uint8_t, 6>>(createRandomMacAddress()); - return *random_mac_address_[random_mac_address_index_].get(); + random_mac_address_ = std::make_unique<std::array<uint8_t, 6>>(createRandomMacAddress()); + return *random_mac_address_.get(); } void WifiIfaceUtil::registerIfaceEventHandlers(const std::string& iface_name, @@ -126,8 +110,7 @@ void WifiIfaceUtil::registerIfaceEventHandlers(const std::string& iface_name, event_handlers_map_[iface_name] = handlers; } -void WifiIfaceUtil::unregisterIfaceEventHandlers( - const std::string& iface_name) { +void WifiIfaceUtil::unregisterIfaceEventHandlers(const std::string& iface_name) { event_handlers_map_.erase(iface_name); } @@ -135,9 +118,8 @@ std::array<uint8_t, 6> WifiIfaceUtil::createRandomMacAddress() { std::array<uint8_t, 6> address = {}; std::random_device rd; std::default_random_engine engine(rd()); - std::uniform_int_distribution<uint8_t> dist( - std::numeric_limits<uint8_t>::min(), - std::numeric_limits<uint8_t>::max()); + std::uniform_int_distribution<uint8_t> dist(std::numeric_limits<uint8_t>::min(), + std::numeric_limits<uint8_t>::max()); for (size_t i = 0; i < address.size(); i++) { address[i] = dist(engine); } @@ -178,19 +160,17 @@ bool WifiIfaceUtil::deleteBridge(const std::string& br_name) { return iface_tool_.lock()->deleteBridge(br_name); } -bool WifiIfaceUtil::addIfaceToBridge(const std::string& br_name, - const std::string& if_name) { +bool WifiIfaceUtil::addIfaceToBridge(const std::string& br_name, const std::string& if_name) { return iface_tool_.lock()->addIfaceToBridge(br_name, if_name); } -bool WifiIfaceUtil::removeIfaceFromBridge(const std::string& br_name, - const std::string& if_name) { +bool WifiIfaceUtil::removeIfaceFromBridge(const std::string& br_name, const std::string& if_name) { return iface_tool_.lock()->removeIfaceFromBridge(br_name, if_name); } } // namespace iface_util } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_iface_util.h b/wifi/1.6/default/wifi_iface_util.h index cb30ca8f9e..c5db5deed1 100644 --- a/wifi/1.5/default/wifi_iface_util.h +++ b/wifi/1.6/default/wifi_iface_util.h @@ -17,8 +17,6 @@ #ifndef WIFI_IFACE_UTIL_H_ #define WIFI_IFACE_UTIL_H_ -#define MAX_RANDOM_MAC_ADDR_INDEX 5 - #include <wifi_system/interface_tool.h> #include <android/hardware/wifi/1.0/IWifi.h> @@ -28,7 +26,7 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace iface_util { @@ -43,21 +41,18 @@ struct IfaceEventHandlers { * Util class for common iface operations. */ class WifiIfaceUtil { - public: + public: WifiIfaceUtil(const std::weak_ptr<wifi_system::InterfaceTool> iface_tool, const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal); virtual ~WifiIfaceUtil() = default; - virtual std::array<uint8_t, 6> getFactoryMacAddress( - const std::string& iface_name); - virtual bool setMacAddress(const std::string& iface_name, - const std::array<uint8_t, 6>& mac); + virtual std::array<uint8_t, 6> getFactoryMacAddress(const std::string& iface_name); + virtual bool setMacAddress(const std::string& iface_name, const std::array<uint8_t, 6>& mac); // Get or create a random MAC address. The MAC address returned from // this method will remain the same throughout the lifetime of the HAL // daemon. (So, changes on every reboot) virtual std::array<uint8_t, 6> getOrCreateRandomMacAddress(); - virtual void setRandomMacAddressIndex(int idx); // Register for any iface event callbacks for the provided interface. virtual void registerIfaceEventHandlers(const std::string& iface_name, IfaceEventHandlers handlers); @@ -69,26 +64,22 @@ class WifiIfaceUtil { virtual bool deleteBridge(const std::string& br_name); - virtual bool addIfaceToBridge(const std::string& br_name, - const std::string& if_name); + virtual bool addIfaceToBridge(const std::string& br_name, const std::string& if_name); - virtual bool removeIfaceFromBridge(const std::string& br_name, - const std::string& if_name); + virtual bool removeIfaceFromBridge(const std::string& br_name, const std::string& if_name); // Get a random MAC address. virtual std::array<uint8_t, 6> createRandomMacAddress(); - private: + private: std::weak_ptr<wifi_system::InterfaceTool> iface_tool_; std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_; - std::unique_ptr<std::array<uint8_t, 6>> random_mac_address_[MAX_RANDOM_MAC_ADDR_INDEX]; - - int random_mac_address_index_; + std::unique_ptr<std::array<uint8_t, 6>> random_mac_address_; std::map<std::string, IfaceEventHandlers> event_handlers_map_; }; } // namespace iface_util } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_legacy_hal.cpp b/wifi/1.6/default/wifi_legacy_hal.cpp index 5074252d3d..e6e8141603 100644 --- a/wifi/1.5/default/wifi_legacy_hal.cpp +++ b/wifi/1.6/default/wifi_legacy_hal.cpp @@ -53,7 +53,7 @@ std::vector<char> makeCharVec(const std::string& str) { namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace legacy_hal { @@ -89,8 +89,7 @@ void onSyncFirmwareMemoryDump(char* buffer, int buffer_size) { } // Callback to be invoked for Gscan events. -std::function<void(wifi_request_id, wifi_scan_event)> - on_gscan_event_internal_callback; +std::function<void(wifi_request_id, wifi_scan_event)> on_gscan_event_internal_callback; void onAsyncGscanEvent(wifi_request_id id, wifi_scan_event event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_gscan_event_internal_callback) { @@ -100,7 +99,7 @@ void onAsyncGscanEvent(wifi_request_id id, wifi_scan_event event) { // Callback to be invoked for Gscan full results. std::function<void(wifi_request_id, wifi_scan_result*, uint32_t)> - on_gscan_full_result_internal_callback; + on_gscan_full_result_internal_callback; void onAsyncGscanFullResult(wifi_request_id id, wifi_scan_result* result, uint32_t buckets_scanned) { const auto lock = hidl_sync_util::acquireGlobalLock(); @@ -111,20 +110,18 @@ void onAsyncGscanFullResult(wifi_request_id id, wifi_scan_result* result, // Callback to be invoked for link layer stats results. std::function<void((wifi_request_id, wifi_iface_stat*, int, wifi_radio_stat*))> - on_link_layer_stats_result_internal_callback; -void onSyncLinkLayerStatsResult(wifi_request_id id, wifi_iface_stat* iface_stat, - int num_radios, wifi_radio_stat* radio_stat) { + on_link_layer_stats_result_internal_callback; +void onSyncLinkLayerStatsResult(wifi_request_id id, wifi_iface_stat* iface_stat, int num_radios, + wifi_radio_stat* radio_stat) { if (on_link_layer_stats_result_internal_callback) { - on_link_layer_stats_result_internal_callback(id, iface_stat, num_radios, - radio_stat); + on_link_layer_stats_result_internal_callback(id, iface_stat, num_radios, radio_stat); } } // Callback to be invoked for rssi threshold breach. std::function<void((wifi_request_id, uint8_t*, int8_t))> - on_rssi_threshold_breached_internal_callback; -void onAsyncRssiThresholdBreached(wifi_request_id id, uint8_t* bssid, - int8_t rssi) { + on_rssi_threshold_breached_internal_callback; +void onAsyncRssiThresholdBreached(wifi_request_id id, uint8_t* bssid, int8_t rssi) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_rssi_threshold_breached_internal_callback) { on_rssi_threshold_breached_internal_callback(id, bssid, rssi); @@ -133,21 +130,18 @@ void onAsyncRssiThresholdBreached(wifi_request_id id, uint8_t* bssid, // Callback to be invoked for ring buffer data indication. std::function<void(char*, char*, int, wifi_ring_buffer_status*)> - on_ring_buffer_data_internal_callback; + on_ring_buffer_data_internal_callback; void onAsyncRingBufferData(char* ring_name, char* buffer, int buffer_size, wifi_ring_buffer_status* status) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_ring_buffer_data_internal_callback) { - on_ring_buffer_data_internal_callback(ring_name, buffer, buffer_size, - status); + on_ring_buffer_data_internal_callback(ring_name, buffer, buffer_size, status); } } // Callback to be invoked for error alert indication. -std::function<void(wifi_request_id, char*, int, int)> - on_error_alert_internal_callback; -void onAsyncErrorAlert(wifi_request_id id, char* buffer, int buffer_size, - int err_code) { +std::function<void(wifi_request_id, char*, int, int)> on_error_alert_internal_callback; +void onAsyncErrorAlert(wifi_request_id id, char* buffer, int buffer_size, int err_code) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_error_alert_internal_callback) { on_error_alert_internal_callback(id, buffer, buffer_size, err_code); @@ -156,9 +150,8 @@ void onAsyncErrorAlert(wifi_request_id id, char* buffer, int buffer_size, // Callback to be invoked for radio mode change indication. std::function<void(wifi_request_id, uint32_t, wifi_mac_info*)> - on_radio_mode_change_internal_callback; -void onAsyncRadioModeChange(wifi_request_id id, uint32_t num_macs, - wifi_mac_info* mac_infos) { + on_radio_mode_change_internal_callback; +void onAsyncRadioModeChange(wifi_request_id id, uint32_t num_macs, wifi_mac_info* mac_infos) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_radio_mode_change_internal_callback) { on_radio_mode_change_internal_callback(id, num_macs, mac_infos); @@ -175,11 +168,9 @@ void onAsyncSubsystemRestart(const char* error) { } // Callback to be invoked for rtt results results. -std::function<void(wifi_request_id, unsigned num_results, - wifi_rtt_result* rtt_results[])> - on_rtt_results_internal_callback; -void onAsyncRttResults(wifi_request_id id, unsigned num_results, - wifi_rtt_result* rtt_results[]) { +std::function<void(wifi_request_id, unsigned num_results, wifi_rtt_result* rtt_results[])> + on_rtt_results_internal_callback; +void onAsyncRttResults(wifi_request_id id, unsigned num_results, wifi_rtt_result* rtt_results[]) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_rtt_results_internal_callback) { on_rtt_results_internal_callback(id, num_results, rtt_results); @@ -191,8 +182,7 @@ void onAsyncRttResults(wifi_request_id id, unsigned num_results, // NOTE: These have very little conversions to perform before invoking the user // callbacks. // So, handle all of them here directly to avoid adding an unnecessary layer. -std::function<void(transaction_id, const NanResponseMsg&)> - on_nan_notify_response_user_callback; +std::function<void(transaction_id, const NanResponseMsg&)> on_nan_notify_response_user_callback; void onAysncNanNotifyResponse(transaction_id id, NanResponseMsg* msg) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_nan_notify_response_user_callback && msg) { @@ -200,14 +190,12 @@ void onAysncNanNotifyResponse(transaction_id id, NanResponseMsg* msg) { } } -std::function<void(const NanPublishRepliedInd&)> - on_nan_event_publish_replied_user_callback; +std::function<void(const NanPublishRepliedInd&)> on_nan_event_publish_replied_user_callback; void onAysncNanEventPublishReplied(NanPublishRepliedInd* /* event */) { LOG(ERROR) << "onAysncNanEventPublishReplied triggered"; } -std::function<void(const NanPublishTerminatedInd&)> - on_nan_event_publish_terminated_user_callback; +std::function<void(const NanPublishTerminatedInd&)> on_nan_event_publish_terminated_user_callback; void onAysncNanEventPublishTerminated(NanPublishTerminatedInd* event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_nan_event_publish_terminated_user_callback && event) { @@ -223,8 +211,7 @@ void onAysncNanEventMatch(NanMatchInd* event) { } } -std::function<void(const NanMatchExpiredInd&)> - on_nan_event_match_expired_user_callback; +std::function<void(const NanMatchExpiredInd&)> on_nan_event_match_expired_user_callback; void onAysncNanEventMatchExpired(NanMatchExpiredInd* event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_nan_event_match_expired_user_callback && event) { @@ -233,7 +220,7 @@ void onAysncNanEventMatchExpired(NanMatchExpiredInd* event) { } std::function<void(const NanSubscribeTerminatedInd&)> - on_nan_event_subscribe_terminated_user_callback; + on_nan_event_subscribe_terminated_user_callback; void onAysncNanEventSubscribeTerminated(NanSubscribeTerminatedInd* event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_nan_event_subscribe_terminated_user_callback && event) { @@ -249,8 +236,7 @@ void onAysncNanEventFollowup(NanFollowupInd* event) { } } -std::function<void(const NanDiscEngEventInd&)> - on_nan_event_disc_eng_event_user_callback; +std::function<void(const NanDiscEngEventInd&)> on_nan_event_disc_eng_event_user_callback; void onAysncNanEventDiscEngEvent(NanDiscEngEventInd* event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_nan_event_disc_eng_event_user_callback && event) { @@ -274,8 +260,7 @@ void onAysncNanEventTca(NanTCAInd* event) { } } -std::function<void(const NanBeaconSdfPayloadInd&)> - on_nan_event_beacon_sdf_payload_user_callback; +std::function<void(const NanBeaconSdfPayloadInd&)> on_nan_event_beacon_sdf_payload_user_callback; void onAysncNanEventBeaconSdfPayload(NanBeaconSdfPayloadInd* event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_nan_event_beacon_sdf_payload_user_callback && event) { @@ -283,16 +268,14 @@ void onAysncNanEventBeaconSdfPayload(NanBeaconSdfPayloadInd* event) { } } -std::function<void(const NanDataPathRequestInd&)> - on_nan_event_data_path_request_user_callback; +std::function<void(const NanDataPathRequestInd&)> on_nan_event_data_path_request_user_callback; void onAysncNanEventDataPathRequest(NanDataPathRequestInd* event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_nan_event_data_path_request_user_callback && event) { on_nan_event_data_path_request_user_callback(*event); } } -std::function<void(const NanDataPathConfirmInd&)> - on_nan_event_data_path_confirm_user_callback; +std::function<void(const NanDataPathConfirmInd&)> on_nan_event_data_path_confirm_user_callback; void onAysncNanEventDataPathConfirm(NanDataPathConfirmInd* event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_nan_event_data_path_confirm_user_callback && event) { @@ -300,8 +283,7 @@ void onAysncNanEventDataPathConfirm(NanDataPathConfirmInd* event) { } } -std::function<void(const NanDataPathEndInd&)> - on_nan_event_data_path_end_user_callback; +std::function<void(const NanDataPathEndInd&)> on_nan_event_data_path_end_user_callback; void onAysncNanEventDataPathEnd(NanDataPathEndInd* event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_nan_event_data_path_end_user_callback && event) { @@ -309,8 +291,7 @@ void onAysncNanEventDataPathEnd(NanDataPathEndInd* event) { } } -std::function<void(const NanTransmitFollowupInd&)> - on_nan_event_transmit_follow_up_user_callback; +std::function<void(const NanTransmitFollowupInd&)> on_nan_event_transmit_follow_up_user_callback; void onAysncNanEventTransmitFollowUp(NanTransmitFollowupInd* event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_nan_event_transmit_follow_up_user_callback && event) { @@ -318,8 +299,7 @@ void onAysncNanEventTransmitFollowUp(NanTransmitFollowupInd* event) { } } -std::function<void(const NanRangeRequestInd&)> - on_nan_event_range_request_user_callback; +std::function<void(const NanRangeRequestInd&)> on_nan_event_range_request_user_callback; void onAysncNanEventRangeRequest(NanRangeRequestInd* event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_nan_event_range_request_user_callback && event) { @@ -327,8 +307,7 @@ void onAysncNanEventRangeRequest(NanRangeRequestInd* event) { } } -std::function<void(const NanRangeReportInd&)> - on_nan_event_range_report_user_callback; +std::function<void(const NanRangeReportInd&)> on_nan_event_range_report_user_callback; void onAysncNanEventRangeReport(NanRangeReportInd* event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_nan_event_range_report_user_callback && event) { @@ -336,8 +315,7 @@ void onAysncNanEventRangeReport(NanRangeReportInd* event) { } } -std::function<void(const NanDataPathScheduleUpdateInd&)> - on_nan_event_schedule_update_user_callback; +std::function<void(const NanDataPathScheduleUpdateInd&)> on_nan_event_schedule_update_user_callback; void onAsyncNanEventScheduleUpdate(NanDataPathScheduleUpdateInd* event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_nan_event_schedule_update_user_callback && event) { @@ -346,8 +324,7 @@ void onAsyncNanEventScheduleUpdate(NanDataPathScheduleUpdateInd* event) { } // Callbacks for the various TWT operations. -std::function<void(const TwtSetupResponse&)> - on_twt_event_setup_response_callback; +std::function<void(const TwtSetupResponse&)> on_twt_event_setup_response_callback; void onAsyncTwtEventSetupResponse(TwtSetupResponse* event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_twt_event_setup_response_callback && event) { @@ -355,8 +332,7 @@ void onAsyncTwtEventSetupResponse(TwtSetupResponse* event) { } } -std::function<void(const TwtTeardownCompletion&)> - on_twt_event_teardown_completion_callback; +std::function<void(const TwtTeardownCompletion&)> on_twt_event_teardown_completion_callback; void onAsyncTwtEventTeardownCompletion(TwtTeardownCompletion* event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_twt_event_teardown_completion_callback && event) { @@ -364,8 +340,7 @@ void onAsyncTwtEventTeardownCompletion(TwtTeardownCompletion* event) { } } -std::function<void(const TwtInfoFrameReceived&)> - on_twt_event_info_frame_received_callback; +std::function<void(const TwtInfoFrameReceived&)> on_twt_event_info_frame_received_callback; void onAsyncTwtEventInfoFrameReceived(TwtInfoFrameReceived* event) { const auto lock = hidl_sync_util::acquireGlobalLock(); if (on_twt_event_info_frame_received_callback && event) { @@ -383,9 +358,8 @@ void onAsyncTwtEventDeviceNotify(TwtDeviceNotify* event) { // End of the free-standing "C" style callbacks. -WifiLegacyHal::WifiLegacyHal( - const std::weak_ptr<wifi_system::InterfaceTool> iface_tool, - const wifi_hal_fn& fn, bool is_primary) +WifiLegacyHal::WifiLegacyHal(const std::weak_ptr<wifi_system::InterfaceTool> iface_tool, + const wifi_hal_fn& fn, bool is_primary) : global_func_table_(fn), global_handle_(nullptr), awaiting_event_loop_termination_(false), @@ -402,8 +376,8 @@ wifi_error WifiLegacyHal::initialize() { wifi_error WifiLegacyHal::start() { // Ensure that we're starting in a good state. - CHECK(global_func_table_.wifi_initialize && !global_handle_ && - iface_name_to_handle_.empty() && !awaiting_event_loop_termination_); + CHECK(global_func_table_.wifi_initialize && !global_handle_ && iface_name_to_handle_.empty() && + !awaiting_event_loop_termination_); if (is_started_) { LOG(DEBUG) << "Legacy HAL already started"; return WIFI_SUCCESS; @@ -442,8 +416,8 @@ wifi_error WifiLegacyHal::start() { } wifi_error WifiLegacyHal::stop( - /* NONNULL */ std::unique_lock<std::recursive_mutex>* lock, - const std::function<void()>& on_stop_complete_user_callback) { + /* NONNULL */ std::unique_lock<std::recursive_mutex>* lock, + const std::function<void()>& on_stop_complete_user_callback) { if (!is_started_) { LOG(DEBUG) << "Legacy HAL already stopped"; on_stop_complete_user_callback(); @@ -463,9 +437,9 @@ wifi_error WifiLegacyHal::stop( }; awaiting_event_loop_termination_ = true; global_func_table_.wifi_cleanup(global_handle_, onAsyncStopComplete); - const auto status = stop_wait_cv_.wait_for( - *lock, std::chrono::milliseconds(kMaxStopCompleteWaitMs), - [this] { return !awaiting_event_loop_termination_; }); + const auto status = + stop_wait_cv_.wait_for(*lock, std::chrono::milliseconds(kMaxStopCompleteWaitMs), + [this] { return !awaiting_event_loop_termination_; }); if (!status) { LOG(ERROR) << "Legacy HAL stop failed or timed out"; return WIFI_ERROR_UNKNOWN; @@ -474,62 +448,59 @@ wifi_error WifiLegacyHal::stop( return WIFI_SUCCESS; } -bool WifiLegacyHal::isStarted() { return is_started_; } +bool WifiLegacyHal::isStarted() { + return is_started_; +} wifi_error WifiLegacyHal::waitForDriverReady() { return global_func_table_.wifi_wait_for_driver_ready(); } -std::pair<wifi_error, std::string> WifiLegacyHal::getDriverVersion( - const std::string& iface_name) { +std::pair<wifi_error, std::string> WifiLegacyHal::getDriverVersion(const std::string& iface_name) { std::array<char, kMaxVersionStringLength> buffer; buffer.fill(0); - wifi_error status = global_func_table_.wifi_get_driver_version( - getIfaceHandle(iface_name), buffer.data(), buffer.size()); + wifi_error status = global_func_table_.wifi_get_driver_version(getIfaceHandle(iface_name), + buffer.data(), buffer.size()); return {status, buffer.data()}; } std::pair<wifi_error, std::string> WifiLegacyHal::getFirmwareVersion( - const std::string& iface_name) { + const std::string& iface_name) { std::array<char, kMaxVersionStringLength> buffer; buffer.fill(0); - wifi_error status = global_func_table_.wifi_get_firmware_version( - getIfaceHandle(iface_name), buffer.data(), buffer.size()); + wifi_error status = global_func_table_.wifi_get_firmware_version(getIfaceHandle(iface_name), + buffer.data(), buffer.size()); return {status, buffer.data()}; } -std::pair<wifi_error, std::vector<uint8_t>> -WifiLegacyHal::requestDriverMemoryDump(const std::string& iface_name) { +std::pair<wifi_error, std::vector<uint8_t>> WifiLegacyHal::requestDriverMemoryDump( + const std::string& iface_name) { std::vector<uint8_t> driver_dump; - on_driver_memory_dump_internal_callback = [&driver_dump](char* buffer, - int buffer_size) { - driver_dump.insert(driver_dump.end(), - reinterpret_cast<uint8_t*>(buffer), + on_driver_memory_dump_internal_callback = [&driver_dump](char* buffer, int buffer_size) { + driver_dump.insert(driver_dump.end(), reinterpret_cast<uint8_t*>(buffer), reinterpret_cast<uint8_t*>(buffer) + buffer_size); }; - wifi_error status = global_func_table_.wifi_get_driver_memory_dump( - getIfaceHandle(iface_name), {onSyncDriverMemoryDump}); + wifi_error status = global_func_table_.wifi_get_driver_memory_dump(getIfaceHandle(iface_name), + {onSyncDriverMemoryDump}); on_driver_memory_dump_internal_callback = nullptr; return {status, std::move(driver_dump)}; } -std::pair<wifi_error, std::vector<uint8_t>> -WifiLegacyHal::requestFirmwareMemoryDump(const std::string& iface_name) { +std::pair<wifi_error, std::vector<uint8_t>> WifiLegacyHal::requestFirmwareMemoryDump( + const std::string& iface_name) { std::vector<uint8_t> firmware_dump; - on_firmware_memory_dump_internal_callback = - [&firmware_dump](char* buffer, int buffer_size) { - firmware_dump.insert( - firmware_dump.end(), reinterpret_cast<uint8_t*>(buffer), - reinterpret_cast<uint8_t*>(buffer) + buffer_size); - }; + on_firmware_memory_dump_internal_callback = [&firmware_dump](char* buffer, int buffer_size) { + firmware_dump.insert(firmware_dump.end(), reinterpret_cast<uint8_t*>(buffer), + reinterpret_cast<uint8_t*>(buffer) + buffer_size); + }; wifi_error status = global_func_table_.wifi_get_firmware_memory_dump( - getIfaceHandle(iface_name), {onSyncFirmwareMemoryDump}); + getIfaceHandle(iface_name), {onSyncFirmwareMemoryDump}); on_firmware_memory_dump_internal_callback = nullptr; return {status, std::move(firmware_dump)}; } std::pair<wifi_error, uint64_t> WifiLegacyHal::getSupportedFeatureSet( - const std::string& iface_name) { + const std::string& iface_name) { feature_set set = 0, chip_set = 0; wifi_error status = WIFI_SUCCESS; @@ -538,34 +509,33 @@ std::pair<wifi_error, uint64_t> WifiLegacyHal::getSupportedFeatureSet( wifi_interface_handle iface_handle = getIfaceHandle(iface_name); global_func_table_.wifi_get_chip_feature_set( - global_handle_, &chip_set); /* ignore error, chip_set will stay 0 */ + global_handle_, &chip_set); /* ignore error, chip_set will stay 0 */ if (iface_handle) { - status = global_func_table_.wifi_get_supported_feature_set(iface_handle, - &set); + status = global_func_table_.wifi_get_supported_feature_set(iface_handle, &set); } return {status, static_cast<uint64_t>(set | chip_set)}; } -std::pair<wifi_error, PacketFilterCapabilities> -WifiLegacyHal::getPacketFilterCapabilities(const std::string& iface_name) { +std::pair<wifi_error, PacketFilterCapabilities> WifiLegacyHal::getPacketFilterCapabilities( + const std::string& iface_name) { PacketFilterCapabilities caps; wifi_error status = global_func_table_.wifi_get_packet_filter_capabilities( - getIfaceHandle(iface_name), &caps.version, &caps.max_len); + getIfaceHandle(iface_name), &caps.version, &caps.max_len); return {status, caps}; } wifi_error WifiLegacyHal::setPacketFilter(const std::string& iface_name, const std::vector<uint8_t>& program) { - return global_func_table_.wifi_set_packet_filter( - getIfaceHandle(iface_name), program.data(), program.size()); + return global_func_table_.wifi_set_packet_filter(getIfaceHandle(iface_name), program.data(), + program.size()); } -std::pair<wifi_error, std::vector<uint8_t>> -WifiLegacyHal::readApfPacketFilterData(const std::string& iface_name) { +std::pair<wifi_error, std::vector<uint8_t>> WifiLegacyHal::readApfPacketFilterData( + const std::string& iface_name) { PacketFilterCapabilities caps; wifi_error status = global_func_table_.wifi_get_packet_filter_capabilities( - getIfaceHandle(iface_name), &caps.version, &caps.max_len); + getIfaceHandle(iface_name), &caps.version, &caps.max_len); if (status != WIFI_SUCCESS) { return {status, {}}; } @@ -574,74 +544,68 @@ WifiLegacyHal::readApfPacketFilterData(const std::string& iface_name) { std::vector<uint8_t> buffer(caps.max_len); status = global_func_table_.wifi_read_packet_filter( - getIfaceHandle(iface_name), /*src_offset=*/0, buffer.data(), - buffer.size()); + getIfaceHandle(iface_name), /*src_offset=*/0, buffer.data(), buffer.size()); return {status, move(buffer)}; } -std::pair<wifi_error, wifi_gscan_capabilities> -WifiLegacyHal::getGscanCapabilities(const std::string& iface_name) { +std::pair<wifi_error, wifi_gscan_capabilities> WifiLegacyHal::getGscanCapabilities( + const std::string& iface_name) { wifi_gscan_capabilities caps; - wifi_error status = global_func_table_.wifi_get_gscan_capabilities( - getIfaceHandle(iface_name), &caps); + wifi_error status = + global_func_table_.wifi_get_gscan_capabilities(getIfaceHandle(iface_name), &caps); return {status, caps}; } wifi_error WifiLegacyHal::startGscan( - const std::string& iface_name, wifi_request_id id, - const wifi_scan_cmd_params& params, - const std::function<void(wifi_request_id)>& on_failure_user_callback, - const on_gscan_results_callback& on_results_user_callback, - const on_gscan_full_result_callback& on_full_result_user_callback) { + const std::string& iface_name, wifi_request_id id, const wifi_scan_cmd_params& params, + const std::function<void(wifi_request_id)>& on_failure_user_callback, + const on_gscan_results_callback& on_results_user_callback, + const on_gscan_full_result_callback& on_full_result_user_callback) { // If there is already an ongoing background scan, reject new scan requests. - if (on_gscan_event_internal_callback || - on_gscan_full_result_internal_callback) { + if (on_gscan_event_internal_callback || on_gscan_full_result_internal_callback) { return WIFI_ERROR_NOT_AVAILABLE; } // This callback will be used to either trigger |on_results_user_callback| // or |on_failure_user_callback|. - on_gscan_event_internal_callback = - [iface_name, on_failure_user_callback, on_results_user_callback, this]( - wifi_request_id id, wifi_scan_event event) { - switch (event) { - case WIFI_SCAN_RESULTS_AVAILABLE: - case WIFI_SCAN_THRESHOLD_NUM_SCANS: - case WIFI_SCAN_THRESHOLD_PERCENT: { - wifi_error status; - std::vector<wifi_cached_scan_results> cached_scan_results; - std::tie(status, cached_scan_results) = - getGscanCachedResults(iface_name); - if (status == WIFI_SUCCESS) { - on_results_user_callback(id, cached_scan_results); - return; - } - FALLTHROUGH_INTENDED; - } - // Fall through if failed. Failure to retrieve cached scan - // results should trigger a background scan failure. - case WIFI_SCAN_FAILED: - on_failure_user_callback(id); - on_gscan_event_internal_callback = nullptr; - on_gscan_full_result_internal_callback = nullptr; + on_gscan_event_internal_callback = [iface_name, on_failure_user_callback, + on_results_user_callback, + this](wifi_request_id id, wifi_scan_event event) { + switch (event) { + case WIFI_SCAN_RESULTS_AVAILABLE: + case WIFI_SCAN_THRESHOLD_NUM_SCANS: + case WIFI_SCAN_THRESHOLD_PERCENT: { + wifi_error status; + std::vector<wifi_cached_scan_results> cached_scan_results; + std::tie(status, cached_scan_results) = getGscanCachedResults(iface_name); + if (status == WIFI_SUCCESS) { + on_results_user_callback(id, cached_scan_results); return; + } + FALLTHROUGH_INTENDED; } - LOG(FATAL) << "Unexpected gscan event received: " << event; - }; + // Fall through if failed. Failure to retrieve cached scan + // results should trigger a background scan failure. + case WIFI_SCAN_FAILED: + on_failure_user_callback(id); + on_gscan_event_internal_callback = nullptr; + on_gscan_full_result_internal_callback = nullptr; + return; + } + LOG(FATAL) << "Unexpected gscan event received: " << event; + }; on_gscan_full_result_internal_callback = [on_full_result_user_callback]( - wifi_request_id id, - wifi_scan_result* result, - uint32_t buckets_scanned) { + wifi_request_id id, wifi_scan_result* result, + uint32_t buckets_scanned) { if (result) { on_full_result_user_callback(id, result, buckets_scanned); } }; - wifi_scan_result_handler handler = {onAsyncGscanFullResult, - onAsyncGscanEvent}; - wifi_error status = global_func_table_.wifi_start_gscan( - id, getIfaceHandle(iface_name), params, handler); + wifi_scan_result_handler handler = {onAsyncGscanFullResult, onAsyncGscanEvent}; + wifi_error status = + global_func_table_.wifi_start_gscan(id, getIfaceHandle(iface_name), params, handler); if (status != WIFI_SUCCESS) { on_gscan_event_internal_callback = nullptr; on_gscan_full_result_internal_callback = nullptr; @@ -649,17 +613,14 @@ wifi_error WifiLegacyHal::startGscan( return status; } -wifi_error WifiLegacyHal::stopGscan(const std::string& iface_name, - wifi_request_id id) { +wifi_error WifiLegacyHal::stopGscan(const std::string& iface_name, wifi_request_id id) { // If there is no an ongoing background scan, reject stop requests. // TODO(b/32337212): This needs to be handled by the HIDL object because we // need to return the NOT_STARTED error code. - if (!on_gscan_event_internal_callback && - !on_gscan_full_result_internal_callback) { + if (!on_gscan_event_internal_callback && !on_gscan_full_result_internal_callback) { return WIFI_ERROR_NOT_AVAILABLE; } - wifi_error status = - global_func_table_.wifi_stop_gscan(id, getIfaceHandle(iface_name)); + wifi_error status = global_func_table_.wifi_stop_gscan(id, getIfaceHandle(iface_name)); // If the request Id is wrong, don't stop the ongoing background scan. Any // other error should be treated as the end of background scan. if (status != WIFI_ERROR_INVALID_REQUEST_ID) { @@ -669,161 +630,147 @@ wifi_error WifiLegacyHal::stopGscan(const std::string& iface_name, return status; } -std::pair<wifi_error, std::vector<uint32_t>> -WifiLegacyHal::getValidFrequenciesForBand(const std::string& iface_name, - wifi_band band) { +std::pair<wifi_error, std::vector<uint32_t>> WifiLegacyHal::getValidFrequenciesForBand( + const std::string& iface_name, wifi_band band) { static_assert(sizeof(uint32_t) >= sizeof(wifi_channel), "Wifi Channel cannot be represented in output"); std::vector<uint32_t> freqs; freqs.resize(kMaxGscanFrequenciesForBand); int32_t num_freqs = 0; wifi_error status = global_func_table_.wifi_get_valid_channels( - getIfaceHandle(iface_name), band, freqs.size(), - reinterpret_cast<wifi_channel*>(freqs.data()), &num_freqs); - CHECK(num_freqs >= 0 && - static_cast<uint32_t>(num_freqs) <= kMaxGscanFrequenciesForBand); + getIfaceHandle(iface_name), band, freqs.size(), + reinterpret_cast<wifi_channel*>(freqs.data()), &num_freqs); + CHECK(num_freqs >= 0 && static_cast<uint32_t>(num_freqs) <= kMaxGscanFrequenciesForBand); freqs.resize(num_freqs); return {status, std::move(freqs)}; } -wifi_error WifiLegacyHal::setDfsFlag(const std::string& iface_name, - bool dfs_on) { - return global_func_table_.wifi_set_nodfs_flag(getIfaceHandle(iface_name), - dfs_on ? 0 : 1); +wifi_error WifiLegacyHal::setDfsFlag(const std::string& iface_name, bool dfs_on) { + return global_func_table_.wifi_set_nodfs_flag(getIfaceHandle(iface_name), dfs_on ? 0 : 1); } -wifi_error WifiLegacyHal::enableLinkLayerStats(const std::string& iface_name, - bool debug) { +wifi_error WifiLegacyHal::enableLinkLayerStats(const std::string& iface_name, bool debug) { wifi_link_layer_params params; params.mpdu_size_threshold = kLinkLayerStatsDataMpduSizeThreshold; params.aggressive_statistics_gathering = debug; - return global_func_table_.wifi_set_link_stats(getIfaceHandle(iface_name), - params); + return global_func_table_.wifi_set_link_stats(getIfaceHandle(iface_name), params); } wifi_error WifiLegacyHal::disableLinkLayerStats(const std::string& iface_name) { // TODO: Do we care about these responses? uint32_t clear_mask_rsp; uint8_t stop_rsp; - return global_func_table_.wifi_clear_link_stats( - getIfaceHandle(iface_name), 0xFFFFFFFF, &clear_mask_rsp, 1, &stop_rsp); + return global_func_table_.wifi_clear_link_stats(getIfaceHandle(iface_name), 0xFFFFFFFF, + &clear_mask_rsp, 1, &stop_rsp); } std::pair<wifi_error, LinkLayerStats> WifiLegacyHal::getLinkLayerStats( - const std::string& iface_name) { + const std::string& iface_name) { LinkLayerStats link_stats{}; LinkLayerStats* link_stats_ptr = &link_stats; - on_link_layer_stats_result_internal_callback = - [&link_stats_ptr](wifi_request_id /* id */, - wifi_iface_stat* iface_stats_ptr, int num_radios, - wifi_radio_stat* radio_stats_ptr) { - wifi_radio_stat* l_radio_stats_ptr; - wifi_peer_info* l_peer_info_stats_ptr; - - if (iface_stats_ptr != nullptr) { - link_stats_ptr->iface = *iface_stats_ptr; - l_peer_info_stats_ptr = iface_stats_ptr->peer_info; - for (uint32_t i = 0; i < iface_stats_ptr->num_peers; i++) { - WifiPeerInfo peer; - peer.peer_info = *l_peer_info_stats_ptr; - if (l_peer_info_stats_ptr->num_rate > 0) { - /* Copy the rate stats */ - peer.rate_stats.assign( + on_link_layer_stats_result_internal_callback = [&link_stats_ptr]( + wifi_request_id /* id */, + wifi_iface_stat* iface_stats_ptr, + int num_radios, + wifi_radio_stat* radio_stats_ptr) { + wifi_radio_stat* l_radio_stats_ptr; + wifi_peer_info* l_peer_info_stats_ptr; + + if (iface_stats_ptr != nullptr) { + link_stats_ptr->iface = *iface_stats_ptr; + l_peer_info_stats_ptr = iface_stats_ptr->peer_info; + for (uint32_t i = 0; i < iface_stats_ptr->num_peers; i++) { + WifiPeerInfo peer; + peer.peer_info = *l_peer_info_stats_ptr; + if (l_peer_info_stats_ptr->num_rate > 0) { + /* Copy the rate stats */ + peer.rate_stats.assign( l_peer_info_stats_ptr->rate_stats, - l_peer_info_stats_ptr->rate_stats + - l_peer_info_stats_ptr->num_rate); - } - peer.peer_info.num_rate = 0; - link_stats_ptr->peers.push_back(peer); - l_peer_info_stats_ptr = - (wifi_peer_info*)((u8*)l_peer_info_stats_ptr + - sizeof(wifi_peer_info) + + l_peer_info_stats_ptr->rate_stats + l_peer_info_stats_ptr->num_rate); + } + peer.peer_info.num_rate = 0; + link_stats_ptr->peers.push_back(peer); + l_peer_info_stats_ptr = + (wifi_peer_info*)((u8*)l_peer_info_stats_ptr + sizeof(wifi_peer_info) + (sizeof(wifi_rate_stat) * l_peer_info_stats_ptr->num_rate)); - } - link_stats_ptr->iface.num_peers = 0; - } else { - LOG(ERROR) << "Invalid iface stats in link layer stats"; - } - if (num_radios <= 0 || radio_stats_ptr == nullptr) { - LOG(ERROR) << "Invalid radio stats in link layer stats"; - return; } - l_radio_stats_ptr = radio_stats_ptr; - for (int i = 0; i < num_radios; i++) { - LinkLayerRadioStats radio; - - radio.stats = *l_radio_stats_ptr; - // Copy over the tx level array to the separate vector. - if (l_radio_stats_ptr->num_tx_levels > 0 && - l_radio_stats_ptr->tx_time_per_levels != nullptr) { - radio.tx_time_per_levels.assign( + link_stats_ptr->iface.num_peers = 0; + } else { + LOG(ERROR) << "Invalid iface stats in link layer stats"; + } + if (num_radios <= 0 || radio_stats_ptr == nullptr) { + LOG(ERROR) << "Invalid radio stats in link layer stats"; + return; + } + l_radio_stats_ptr = radio_stats_ptr; + for (int i = 0; i < num_radios; i++) { + LinkLayerRadioStats radio; + + radio.stats = *l_radio_stats_ptr; + // Copy over the tx level array to the separate vector. + if (l_radio_stats_ptr->num_tx_levels > 0 && + l_radio_stats_ptr->tx_time_per_levels != nullptr) { + radio.tx_time_per_levels.assign( l_radio_stats_ptr->tx_time_per_levels, - l_radio_stats_ptr->tx_time_per_levels + - l_radio_stats_ptr->num_tx_levels); - } - radio.stats.num_tx_levels = 0; - radio.stats.tx_time_per_levels = nullptr; - /* Copy over the channel stat to separate vector */ - if (l_radio_stats_ptr->num_channels > 0) { - /* Copy the channel stats */ - radio.channel_stats.assign( + l_radio_stats_ptr->tx_time_per_levels + l_radio_stats_ptr->num_tx_levels); + } + radio.stats.num_tx_levels = 0; + radio.stats.tx_time_per_levels = nullptr; + /* Copy over the channel stat to separate vector */ + if (l_radio_stats_ptr->num_channels > 0) { + /* Copy the channel stats */ + radio.channel_stats.assign( l_radio_stats_ptr->channels, - l_radio_stats_ptr->channels + - l_radio_stats_ptr->num_channels); - } - link_stats_ptr->radios.push_back(radio); - l_radio_stats_ptr = - (wifi_radio_stat*)((u8*)l_radio_stats_ptr + - sizeof(wifi_radio_stat) + + l_radio_stats_ptr->channels + l_radio_stats_ptr->num_channels); + } + link_stats_ptr->radios.push_back(radio); + l_radio_stats_ptr = + (wifi_radio_stat*)((u8*)l_radio_stats_ptr + sizeof(wifi_radio_stat) + (sizeof(wifi_channel_stat) * l_radio_stats_ptr->num_channels)); - } - }; + } + }; - wifi_error status = global_func_table_.wifi_get_link_stats( - 0, getIfaceHandle(iface_name), {onSyncLinkLayerStatsResult}); + wifi_error status = global_func_table_.wifi_get_link_stats(0, getIfaceHandle(iface_name), + {onSyncLinkLayerStatsResult}); on_link_layer_stats_result_internal_callback = nullptr; return {status, link_stats}; } wifi_error WifiLegacyHal::startRssiMonitoring( - const std::string& iface_name, wifi_request_id id, int8_t max_rssi, - int8_t min_rssi, - const on_rssi_threshold_breached_callback& - on_threshold_breached_user_callback) { + const std::string& iface_name, wifi_request_id id, int8_t max_rssi, int8_t min_rssi, + const on_rssi_threshold_breached_callback& on_threshold_breached_user_callback) { if (on_rssi_threshold_breached_internal_callback) { return WIFI_ERROR_NOT_AVAILABLE; } - on_rssi_threshold_breached_internal_callback = - [on_threshold_breached_user_callback](wifi_request_id id, - uint8_t* bssid_ptr, int8_t rssi) { - if (!bssid_ptr) { - return; - } - std::array<uint8_t, 6> bssid_arr; - // |bssid_ptr| pointer is assumed to have 6 bytes for the mac - // address. - std::copy(bssid_ptr, bssid_ptr + 6, std::begin(bssid_arr)); - on_threshold_breached_user_callback(id, bssid_arr, rssi); - }; + on_rssi_threshold_breached_internal_callback = [on_threshold_breached_user_callback]( + wifi_request_id id, uint8_t* bssid_ptr, + int8_t rssi) { + if (!bssid_ptr) { + return; + } + std::array<uint8_t, 6> bssid_arr; + // |bssid_ptr| pointer is assumed to have 6 bytes for the mac + // address. + std::copy(bssid_ptr, bssid_ptr + 6, std::begin(bssid_arr)); + on_threshold_breached_user_callback(id, bssid_arr, rssi); + }; wifi_error status = global_func_table_.wifi_start_rssi_monitoring( - id, getIfaceHandle(iface_name), max_rssi, min_rssi, - {onAsyncRssiThresholdBreached}); + id, getIfaceHandle(iface_name), max_rssi, min_rssi, {onAsyncRssiThresholdBreached}); if (status != WIFI_SUCCESS) { on_rssi_threshold_breached_internal_callback = nullptr; } return status; } -wifi_error WifiLegacyHal::stopRssiMonitoring(const std::string& iface_name, - wifi_request_id id) { +wifi_error WifiLegacyHal::stopRssiMonitoring(const std::string& iface_name, wifi_request_id id) { if (!on_rssi_threshold_breached_internal_callback) { return WIFI_ERROR_NOT_AVAILABLE; } - wifi_error status = global_func_table_.wifi_stop_rssi_monitoring( - id, getIfaceHandle(iface_name)); + wifi_error status = + global_func_table_.wifi_stop_rssi_monitoring(id, getIfaceHandle(iface_name)); // If the request Id is wrong, don't stop the ongoing rssi monitoring. Any // other error should be treated as the end of background scan. if (status != WIFI_ERROR_INVALID_REQUEST_ID) { @@ -832,82 +779,75 @@ wifi_error WifiLegacyHal::stopRssiMonitoring(const std::string& iface_name, return status; } -std::pair<wifi_error, wifi_roaming_capabilities> -WifiLegacyHal::getRoamingCapabilities(const std::string& iface_name) { +std::pair<wifi_error, wifi_roaming_capabilities> WifiLegacyHal::getRoamingCapabilities( + const std::string& iface_name) { wifi_roaming_capabilities caps; - wifi_error status = global_func_table_.wifi_get_roaming_capabilities( - getIfaceHandle(iface_name), &caps); + wifi_error status = + global_func_table_.wifi_get_roaming_capabilities(getIfaceHandle(iface_name), &caps); return {status, caps}; } wifi_error WifiLegacyHal::configureRoaming(const std::string& iface_name, const wifi_roaming_config& config) { wifi_roaming_config config_internal = config; - return global_func_table_.wifi_configure_roaming(getIfaceHandle(iface_name), - &config_internal); + return global_func_table_.wifi_configure_roaming(getIfaceHandle(iface_name), &config_internal); } wifi_error WifiLegacyHal::enableFirmwareRoaming(const std::string& iface_name, fw_roaming_state_t state) { - return global_func_table_.wifi_enable_firmware_roaming( - getIfaceHandle(iface_name), state); + return global_func_table_.wifi_enable_firmware_roaming(getIfaceHandle(iface_name), state); } -wifi_error WifiLegacyHal::configureNdOffload(const std::string& iface_name, - bool enable) { - return global_func_table_.wifi_configure_nd_offload( - getIfaceHandle(iface_name), enable); +wifi_error WifiLegacyHal::configureNdOffload(const std::string& iface_name, bool enable) { + return global_func_table_.wifi_configure_nd_offload(getIfaceHandle(iface_name), enable); } -wifi_error WifiLegacyHal::startSendingOffloadedPacket( - const std::string& iface_name, uint32_t cmd_id, uint16_t ether_type, - const std::vector<uint8_t>& ip_packet_data, - const std::array<uint8_t, 6>& src_address, - const std::array<uint8_t, 6>& dst_address, uint32_t period_in_ms) { +wifi_error WifiLegacyHal::startSendingOffloadedPacket(const std::string& iface_name, + uint32_t cmd_id, uint16_t ether_type, + const std::vector<uint8_t>& ip_packet_data, + const std::array<uint8_t, 6>& src_address, + const std::array<uint8_t, 6>& dst_address, + uint32_t period_in_ms) { std::vector<uint8_t> ip_packet_data_internal(ip_packet_data); - std::vector<uint8_t> src_address_internal( - src_address.data(), src_address.data() + src_address.size()); - std::vector<uint8_t> dst_address_internal( - dst_address.data(), dst_address.data() + dst_address.size()); + std::vector<uint8_t> src_address_internal(src_address.data(), + src_address.data() + src_address.size()); + std::vector<uint8_t> dst_address_internal(dst_address.data(), + dst_address.data() + dst_address.size()); return global_func_table_.wifi_start_sending_offloaded_packet( - cmd_id, getIfaceHandle(iface_name), ether_type, - ip_packet_data_internal.data(), ip_packet_data_internal.size(), - src_address_internal.data(), dst_address_internal.data(), period_in_ms); + cmd_id, getIfaceHandle(iface_name), ether_type, ip_packet_data_internal.data(), + ip_packet_data_internal.size(), src_address_internal.data(), + dst_address_internal.data(), period_in_ms); } -wifi_error WifiLegacyHal::stopSendingOffloadedPacket( - const std::string& iface_name, uint32_t cmd_id) { - return global_func_table_.wifi_stop_sending_offloaded_packet( - cmd_id, getIfaceHandle(iface_name)); +wifi_error WifiLegacyHal::stopSendingOffloadedPacket(const std::string& iface_name, + uint32_t cmd_id) { + return global_func_table_.wifi_stop_sending_offloaded_packet(cmd_id, + getIfaceHandle(iface_name)); } wifi_error WifiLegacyHal::selectTxPowerScenario(const std::string& iface_name, wifi_power_scenario scenario) { - return global_func_table_.wifi_select_tx_power_scenario( - getIfaceHandle(iface_name), scenario); + return global_func_table_.wifi_select_tx_power_scenario(getIfaceHandle(iface_name), scenario); } wifi_error WifiLegacyHal::resetTxPowerScenario(const std::string& iface_name) { - return global_func_table_.wifi_reset_tx_power_scenario( - getIfaceHandle(iface_name)); + return global_func_table_.wifi_reset_tx_power_scenario(getIfaceHandle(iface_name)); } -wifi_error WifiLegacyHal::setLatencyMode(const std::string& iface_name, - wifi_latency_mode mode) { - return global_func_table_.wifi_set_latency_mode(getIfaceHandle(iface_name), - mode); +wifi_error WifiLegacyHal::setLatencyMode(const std::string& iface_name, wifi_latency_mode mode) { + return global_func_table_.wifi_set_latency_mode(getIfaceHandle(iface_name), mode); } wifi_error WifiLegacyHal::setThermalMitigationMode(wifi_thermal_mode mode, uint32_t completion_window) { - return global_func_table_.wifi_set_thermal_mitigation_mode( - global_handle_, mode, completion_window); + return global_func_table_.wifi_set_thermal_mitigation_mode(global_handle_, mode, + completion_window); } -wifi_error WifiLegacyHal::setDscpToAccessCategoryMapping( - uint32_t start, uint32_t end, uint32_t access_category) { - return global_func_table_.wifi_map_dscp_access_category( - global_handle_, start, end, access_category); +wifi_error WifiLegacyHal::setDscpToAccessCategoryMapping(uint32_t start, uint32_t end, + uint32_t access_category) { + return global_func_table_.wifi_map_dscp_access_category(global_handle_, start, end, + access_category); } wifi_error WifiLegacyHal::resetDscpToAccessCategoryMapping() { @@ -915,53 +855,49 @@ wifi_error WifiLegacyHal::resetDscpToAccessCategoryMapping() { } std::pair<wifi_error, uint32_t> WifiLegacyHal::getLoggerSupportedFeatureSet( - const std::string& iface_name) { + const std::string& iface_name) { uint32_t supported_feature_flags = 0; wifi_error status = WIFI_SUCCESS; wifi_interface_handle iface_handle = getIfaceHandle(iface_name); if (iface_handle) { - status = global_func_table_.wifi_get_logger_supported_feature_set( - iface_handle, &supported_feature_flags); + status = global_func_table_.wifi_get_logger_supported_feature_set(iface_handle, + &supported_feature_flags); } return {status, supported_feature_flags}; } -wifi_error WifiLegacyHal::startPktFateMonitoring( - const std::string& iface_name) { - return global_func_table_.wifi_start_pkt_fate_monitoring( - getIfaceHandle(iface_name)); +wifi_error WifiLegacyHal::startPktFateMonitoring(const std::string& iface_name) { + return global_func_table_.wifi_start_pkt_fate_monitoring(getIfaceHandle(iface_name)); } std::pair<wifi_error, std::vector<wifi_tx_report>> WifiLegacyHal::getTxPktFates( - const std::string& iface_name) { + const std::string& iface_name) { std::vector<wifi_tx_report> tx_pkt_fates; tx_pkt_fates.resize(MAX_FATE_LOG_LEN); size_t num_fates = 0; wifi_error status = global_func_table_.wifi_get_tx_pkt_fates( - getIfaceHandle(iface_name), tx_pkt_fates.data(), tx_pkt_fates.size(), - &num_fates); + getIfaceHandle(iface_name), tx_pkt_fates.data(), tx_pkt_fates.size(), &num_fates); CHECK(num_fates <= MAX_FATE_LOG_LEN); tx_pkt_fates.resize(num_fates); return {status, std::move(tx_pkt_fates)}; } std::pair<wifi_error, std::vector<wifi_rx_report>> WifiLegacyHal::getRxPktFates( - const std::string& iface_name) { + const std::string& iface_name) { std::vector<wifi_rx_report> rx_pkt_fates; rx_pkt_fates.resize(MAX_FATE_LOG_LEN); size_t num_fates = 0; wifi_error status = global_func_table_.wifi_get_rx_pkt_fates( - getIfaceHandle(iface_name), rx_pkt_fates.data(), rx_pkt_fates.size(), - &num_fates); + getIfaceHandle(iface_name), rx_pkt_fates.data(), rx_pkt_fates.size(), &num_fates); CHECK(num_fates <= MAX_FATE_LOG_LEN); rx_pkt_fates.resize(num_fates); return {status, std::move(rx_pkt_fates)}; } std::pair<wifi_error, WakeReasonStats> WifiLegacyHal::getWakeReasonStats( - const std::string& iface_name) { + const std::string& iface_name) { WakeReasonStats stats; stats.cmd_event_wake_cnt.resize(kMaxWakeReasonStatsArraySize); stats.driver_fw_local_wake_cnt.resize(kMaxWakeReasonStatsArraySize); @@ -969,79 +905,69 @@ std::pair<wifi_error, WakeReasonStats> WifiLegacyHal::getWakeReasonStats( // This legacy struct needs separate memory to store the variable sized wake // reason types. stats.wake_reason_cnt.cmd_event_wake_cnt = - reinterpret_cast<int32_t*>(stats.cmd_event_wake_cnt.data()); - stats.wake_reason_cnt.cmd_event_wake_cnt_sz = - stats.cmd_event_wake_cnt.size(); + reinterpret_cast<int32_t*>(stats.cmd_event_wake_cnt.data()); + stats.wake_reason_cnt.cmd_event_wake_cnt_sz = stats.cmd_event_wake_cnt.size(); stats.wake_reason_cnt.cmd_event_wake_cnt_used = 0; stats.wake_reason_cnt.driver_fw_local_wake_cnt = - reinterpret_cast<int32_t*>(stats.driver_fw_local_wake_cnt.data()); - stats.wake_reason_cnt.driver_fw_local_wake_cnt_sz = - stats.driver_fw_local_wake_cnt.size(); + reinterpret_cast<int32_t*>(stats.driver_fw_local_wake_cnt.data()); + stats.wake_reason_cnt.driver_fw_local_wake_cnt_sz = stats.driver_fw_local_wake_cnt.size(); stats.wake_reason_cnt.driver_fw_local_wake_cnt_used = 0; - wifi_error status = global_func_table_.wifi_get_wake_reason_stats( - getIfaceHandle(iface_name), &stats.wake_reason_cnt); + wifi_error status = global_func_table_.wifi_get_wake_reason_stats(getIfaceHandle(iface_name), + &stats.wake_reason_cnt); - CHECK( - stats.wake_reason_cnt.cmd_event_wake_cnt_used >= 0 && - static_cast<uint32_t>(stats.wake_reason_cnt.cmd_event_wake_cnt_used) <= - kMaxWakeReasonStatsArraySize); - stats.cmd_event_wake_cnt.resize( - stats.wake_reason_cnt.cmd_event_wake_cnt_used); + CHECK(stats.wake_reason_cnt.cmd_event_wake_cnt_used >= 0 && + static_cast<uint32_t>(stats.wake_reason_cnt.cmd_event_wake_cnt_used) <= + kMaxWakeReasonStatsArraySize); + stats.cmd_event_wake_cnt.resize(stats.wake_reason_cnt.cmd_event_wake_cnt_used); stats.wake_reason_cnt.cmd_event_wake_cnt = nullptr; CHECK(stats.wake_reason_cnt.driver_fw_local_wake_cnt_used >= 0 && - static_cast<uint32_t>( - stats.wake_reason_cnt.driver_fw_local_wake_cnt_used) <= - kMaxWakeReasonStatsArraySize); - stats.driver_fw_local_wake_cnt.resize( - stats.wake_reason_cnt.driver_fw_local_wake_cnt_used); + static_cast<uint32_t>(stats.wake_reason_cnt.driver_fw_local_wake_cnt_used) <= + kMaxWakeReasonStatsArraySize); + stats.driver_fw_local_wake_cnt.resize(stats.wake_reason_cnt.driver_fw_local_wake_cnt_used); stats.wake_reason_cnt.driver_fw_local_wake_cnt = nullptr; return {status, stats}; } wifi_error WifiLegacyHal::registerRingBufferCallbackHandler( - const std::string& iface_name, - const on_ring_buffer_data_callback& on_user_data_callback) { + const std::string& iface_name, const on_ring_buffer_data_callback& on_user_data_callback) { if (on_ring_buffer_data_internal_callback) { return WIFI_ERROR_NOT_AVAILABLE; } - on_ring_buffer_data_internal_callback = - [on_user_data_callback](char* ring_name, char* buffer, int buffer_size, - wifi_ring_buffer_status* status) { - if (status && buffer) { - std::vector<uint8_t> buffer_vector( - reinterpret_cast<uint8_t*>(buffer), - reinterpret_cast<uint8_t*>(buffer) + buffer_size); - on_user_data_callback(ring_name, buffer_vector, *status); - } - }; - wifi_error status = global_func_table_.wifi_set_log_handler( - 0, getIfaceHandle(iface_name), {onAsyncRingBufferData}); + on_ring_buffer_data_internal_callback = [on_user_data_callback]( + char* ring_name, char* buffer, int buffer_size, + wifi_ring_buffer_status* status) { + if (status && buffer) { + std::vector<uint8_t> buffer_vector(reinterpret_cast<uint8_t*>(buffer), + reinterpret_cast<uint8_t*>(buffer) + buffer_size); + on_user_data_callback(ring_name, buffer_vector, *status); + } + }; + wifi_error status = global_func_table_.wifi_set_log_handler(0, getIfaceHandle(iface_name), + {onAsyncRingBufferData}); if (status != WIFI_SUCCESS) { on_ring_buffer_data_internal_callback = nullptr; } return status; } -wifi_error WifiLegacyHal::deregisterRingBufferCallbackHandler( - const std::string& iface_name) { +wifi_error WifiLegacyHal::deregisterRingBufferCallbackHandler(const std::string& iface_name) { if (!on_ring_buffer_data_internal_callback) { return WIFI_ERROR_NOT_AVAILABLE; } on_ring_buffer_data_internal_callback = nullptr; - return global_func_table_.wifi_reset_log_handler( - 0, getIfaceHandle(iface_name)); + return global_func_table_.wifi_reset_log_handler(0, getIfaceHandle(iface_name)); } -std::pair<wifi_error, std::vector<wifi_ring_buffer_status>> -WifiLegacyHal::getRingBuffersStatus(const std::string& iface_name) { +std::pair<wifi_error, std::vector<wifi_ring_buffer_status>> WifiLegacyHal::getRingBuffersStatus( + const std::string& iface_name) { std::vector<wifi_ring_buffer_status> ring_buffers_status; ring_buffers_status.resize(kMaxRingBuffers); uint32_t num_rings = kMaxRingBuffers; wifi_error status = global_func_table_.wifi_get_ring_buffers_status( - getIfaceHandle(iface_name), &num_rings, ring_buffers_status.data()); + getIfaceHandle(iface_name), &num_rings, ring_buffers_status.data()); CHECK(num_rings <= kMaxRingBuffers); ring_buffers_status.resize(num_rings); return {status, std::move(ring_buffers_status)}; @@ -1049,12 +975,11 @@ WifiLegacyHal::getRingBuffersStatus(const std::string& iface_name) { wifi_error WifiLegacyHal::startRingBufferLogging(const std::string& iface_name, const std::string& ring_name, - uint32_t verbose_level, - uint32_t max_interval_sec, + uint32_t verbose_level, uint32_t max_interval_sec, uint32_t min_data_size) { - return global_func_table_.wifi_start_logging( - getIfaceHandle(iface_name), verbose_level, 0, max_interval_sec, - min_data_size, makeCharVec(ring_name).data()); + return global_func_table_.wifi_start_logging(getIfaceHandle(iface_name), verbose_level, 0, + max_interval_sec, min_data_size, + makeCharVec(ring_name).data()); } wifi_error WifiLegacyHal::getRingBufferData(const std::string& iface_name, @@ -1064,51 +989,45 @@ wifi_error WifiLegacyHal::getRingBufferData(const std::string& iface_name, } wifi_error WifiLegacyHal::registerErrorAlertCallbackHandler( - const std::string& iface_name, - const on_error_alert_callback& on_user_alert_callback) { + const std::string& iface_name, const on_error_alert_callback& on_user_alert_callback) { if (on_error_alert_internal_callback) { return WIFI_ERROR_NOT_AVAILABLE; } - on_error_alert_internal_callback = [on_user_alert_callback]( - wifi_request_id id, char* buffer, - int buffer_size, int err_code) { + on_error_alert_internal_callback = [on_user_alert_callback](wifi_request_id id, char* buffer, + int buffer_size, int err_code) { if (buffer) { CHECK(id == 0); on_user_alert_callback( - err_code, - std::vector<uint8_t>( - reinterpret_cast<uint8_t*>(buffer), - reinterpret_cast<uint8_t*>(buffer) + buffer_size)); + err_code, + std::vector<uint8_t>(reinterpret_cast<uint8_t*>(buffer), + reinterpret_cast<uint8_t*>(buffer) + buffer_size)); } }; - wifi_error status = global_func_table_.wifi_set_alert_handler( - 0, getIfaceHandle(iface_name), {onAsyncErrorAlert}); + wifi_error status = global_func_table_.wifi_set_alert_handler(0, getIfaceHandle(iface_name), + {onAsyncErrorAlert}); if (status != WIFI_SUCCESS) { on_error_alert_internal_callback = nullptr; } return status; } -wifi_error WifiLegacyHal::deregisterErrorAlertCallbackHandler( - const std::string& iface_name) { +wifi_error WifiLegacyHal::deregisterErrorAlertCallbackHandler(const std::string& iface_name) { if (!on_error_alert_internal_callback) { return WIFI_ERROR_NOT_AVAILABLE; } on_error_alert_internal_callback = nullptr; - return global_func_table_.wifi_reset_alert_handler( - 0, getIfaceHandle(iface_name)); + return global_func_table_.wifi_reset_alert_handler(0, getIfaceHandle(iface_name)); } wifi_error WifiLegacyHal::registerRadioModeChangeCallbackHandler( - const std::string& iface_name, - const on_radio_mode_change_callback& on_user_change_callback) { + const std::string& iface_name, + const on_radio_mode_change_callback& on_user_change_callback) { if (on_radio_mode_change_internal_callback) { return WIFI_ERROR_NOT_AVAILABLE; } on_radio_mode_change_internal_callback = [on_user_change_callback]( - wifi_request_id /* id */, - uint32_t num_macs, - wifi_mac_info* mac_infos_arr) { + wifi_request_id /* id */, uint32_t num_macs, + wifi_mac_info* mac_infos_arr) { if (num_macs > 0 && mac_infos_arr) { std::vector<WifiMacInfo> mac_infos_vec; for (uint32_t i = 0; i < num_macs; i++) { @@ -1127,7 +1046,7 @@ wifi_error WifiLegacyHal::registerRadioModeChangeCallbackHandler( } }; wifi_error status = global_func_table_.wifi_set_radio_mode_change_handler( - 0, getIfaceHandle(iface_name), {onAsyncRadioModeChange}); + 0, getIfaceHandle(iface_name), {onAsyncRadioModeChange}); if (status != WIFI_SUCCESS) { on_radio_mode_change_internal_callback = nullptr; } @@ -1135,16 +1054,15 @@ wifi_error WifiLegacyHal::registerRadioModeChangeCallbackHandler( } wifi_error WifiLegacyHal::registerSubsystemRestartCallbackHandler( - const on_subsystem_restart_callback& on_restart_callback) { + const on_subsystem_restart_callback& on_restart_callback) { if (on_subsystem_restart_internal_callback) { return WIFI_ERROR_NOT_AVAILABLE; } - on_subsystem_restart_internal_callback = - [on_restart_callback](const char* error) { - on_restart_callback(error); - }; + on_subsystem_restart_internal_callback = [on_restart_callback](const char* error) { + on_restart_callback(error); + }; wifi_error status = global_func_table_.wifi_set_subsystem_restart_handler( - global_handle_, {onAsyncSubsystemRestart}); + global_handle_, {onAsyncSubsystemRestart}); if (status != WIFI_SUCCESS) { on_subsystem_restart_internal_callback = nullptr; } @@ -1152,33 +1070,30 @@ wifi_error WifiLegacyHal::registerSubsystemRestartCallbackHandler( } wifi_error WifiLegacyHal::startRttRangeRequest( - const std::string& iface_name, wifi_request_id id, - const std::vector<wifi_rtt_config>& rtt_configs, - const on_rtt_results_callback& on_results_user_callback) { + const std::string& iface_name, wifi_request_id id, + const std::vector<wifi_rtt_config>& rtt_configs, + const on_rtt_results_callback& on_results_user_callback) { if (on_rtt_results_internal_callback) { return WIFI_ERROR_NOT_AVAILABLE; } - on_rtt_results_internal_callback = - [on_results_user_callback](wifi_request_id id, unsigned num_results, - wifi_rtt_result* rtt_results[]) { - if (num_results > 0 && !rtt_results) { - LOG(ERROR) << "Unexpected nullptr in RTT results"; - return; - } - std::vector<const wifi_rtt_result*> rtt_results_vec; - std::copy_if(rtt_results, rtt_results + num_results, - back_inserter(rtt_results_vec), - [](wifi_rtt_result* rtt_result) { - return rtt_result != nullptr; - }); - on_results_user_callback(id, rtt_results_vec); - }; + on_rtt_results_internal_callback = [on_results_user_callback](wifi_request_id id, + unsigned num_results, + wifi_rtt_result* rtt_results[]) { + if (num_results > 0 && !rtt_results) { + LOG(ERROR) << "Unexpected nullptr in RTT results"; + return; + } + std::vector<const wifi_rtt_result*> rtt_results_vec; + std::copy_if(rtt_results, rtt_results + num_results, back_inserter(rtt_results_vec), + [](wifi_rtt_result* rtt_result) { return rtt_result != nullptr; }); + on_results_user_callback(id, rtt_results_vec); + }; std::vector<wifi_rtt_config> rtt_configs_internal(rtt_configs); wifi_error status = global_func_table_.wifi_rtt_range_request( - id, getIfaceHandle(iface_name), rtt_configs.size(), - rtt_configs_internal.data(), {onAsyncRttResults}); + id, getIfaceHandle(iface_name), rtt_configs.size(), rtt_configs_internal.data(), + {onAsyncRttResults}); if (status != WIFI_SUCCESS) { on_rtt_results_internal_callback = nullptr; } @@ -1186,19 +1101,18 @@ wifi_error WifiLegacyHal::startRttRangeRequest( } wifi_error WifiLegacyHal::cancelRttRangeRequest( - const std::string& iface_name, wifi_request_id id, - const std::vector<std::array<uint8_t, 6>>& mac_addrs) { + const std::string& iface_name, wifi_request_id id, + const std::vector<std::array<uint8_t, 6>>& mac_addrs) { if (!on_rtt_results_internal_callback) { return WIFI_ERROR_NOT_AVAILABLE; } - static_assert(sizeof(mac_addr) == sizeof(std::array<uint8_t, 6>), - "MAC address size mismatch"); + static_assert(sizeof(mac_addr) == sizeof(std::array<uint8_t, 6>), "MAC address size mismatch"); // TODO: How do we handle partial cancels (i.e only a subset of enabled mac // addressed are cancelled). std::vector<std::array<uint8_t, 6>> mac_addrs_internal(mac_addrs); wifi_error status = global_func_table_.wifi_rtt_range_cancel( - id, getIfaceHandle(iface_name), mac_addrs.size(), - reinterpret_cast<mac_addr*>(mac_addrs_internal.data())); + id, getIfaceHandle(iface_name), mac_addrs.size(), + reinterpret_cast<mac_addr*>(mac_addrs_internal.data())); // If the request Id is wrong, don't stop the ongoing range request. Any // other error should be treated as the end of rtt ranging. if (status != WIFI_ERROR_INVALID_REQUEST_ID) { @@ -1208,225 +1122,188 @@ wifi_error WifiLegacyHal::cancelRttRangeRequest( } std::pair<wifi_error, wifi_rtt_capabilities> WifiLegacyHal::getRttCapabilities( - const std::string& iface_name) { + const std::string& iface_name) { wifi_rtt_capabilities rtt_caps; - wifi_error status = global_func_table_.wifi_get_rtt_capabilities( - getIfaceHandle(iface_name), &rtt_caps); + wifi_error status = + global_func_table_.wifi_get_rtt_capabilities(getIfaceHandle(iface_name), &rtt_caps); return {status, rtt_caps}; } std::pair<wifi_error, wifi_rtt_responder> WifiLegacyHal::getRttResponderInfo( - const std::string& iface_name) { + const std::string& iface_name) { wifi_rtt_responder rtt_responder; - wifi_error status = global_func_table_.wifi_rtt_get_responder_info( - getIfaceHandle(iface_name), &rtt_responder); + wifi_error status = global_func_table_.wifi_rtt_get_responder_info(getIfaceHandle(iface_name), + &rtt_responder); return {status, rtt_responder}; } -wifi_error WifiLegacyHal::enableRttResponder( - const std::string& iface_name, wifi_request_id id, - const wifi_channel_info& channel_hint, uint32_t max_duration_secs, - const wifi_rtt_responder& info) { +wifi_error WifiLegacyHal::enableRttResponder(const std::string& iface_name, wifi_request_id id, + const wifi_channel_info& channel_hint, + uint32_t max_duration_secs, + const wifi_rtt_responder& info) { wifi_rtt_responder info_internal(info); - return global_func_table_.wifi_enable_responder( - id, getIfaceHandle(iface_name), channel_hint, max_duration_secs, - &info_internal); + return global_func_table_.wifi_enable_responder(id, getIfaceHandle(iface_name), channel_hint, + max_duration_secs, &info_internal); } -wifi_error WifiLegacyHal::disableRttResponder(const std::string& iface_name, - wifi_request_id id) { - return global_func_table_.wifi_disable_responder( - id, getIfaceHandle(iface_name)); +wifi_error WifiLegacyHal::disableRttResponder(const std::string& iface_name, wifi_request_id id) { + return global_func_table_.wifi_disable_responder(id, getIfaceHandle(iface_name)); } -wifi_error WifiLegacyHal::setRttLci(const std::string& iface_name, - wifi_request_id id, +wifi_error WifiLegacyHal::setRttLci(const std::string& iface_name, wifi_request_id id, const wifi_lci_information& info) { wifi_lci_information info_internal(info); - return global_func_table_.wifi_set_lci(id, getIfaceHandle(iface_name), - &info_internal); + return global_func_table_.wifi_set_lci(id, getIfaceHandle(iface_name), &info_internal); } -wifi_error WifiLegacyHal::setRttLcr(const std::string& iface_name, - wifi_request_id id, +wifi_error WifiLegacyHal::setRttLcr(const std::string& iface_name, wifi_request_id id, const wifi_lcr_information& info) { wifi_lcr_information info_internal(info); - return global_func_table_.wifi_set_lcr(id, getIfaceHandle(iface_name), - &info_internal); + return global_func_table_.wifi_set_lcr(id, getIfaceHandle(iface_name), &info_internal); } -wifi_error WifiLegacyHal::nanRegisterCallbackHandlers( - const std::string& iface_name, const NanCallbackHandlers& user_callbacks) { +wifi_error WifiLegacyHal::nanRegisterCallbackHandlers(const std::string& iface_name, + const NanCallbackHandlers& user_callbacks) { on_nan_notify_response_user_callback = user_callbacks.on_notify_response; - on_nan_event_publish_terminated_user_callback = - user_callbacks.on_event_publish_terminated; + on_nan_event_publish_terminated_user_callback = user_callbacks.on_event_publish_terminated; on_nan_event_match_user_callback = user_callbacks.on_event_match; - on_nan_event_match_expired_user_callback = - user_callbacks.on_event_match_expired; - on_nan_event_subscribe_terminated_user_callback = - user_callbacks.on_event_subscribe_terminated; + on_nan_event_match_expired_user_callback = user_callbacks.on_event_match_expired; + on_nan_event_subscribe_terminated_user_callback = user_callbacks.on_event_subscribe_terminated; on_nan_event_followup_user_callback = user_callbacks.on_event_followup; - on_nan_event_disc_eng_event_user_callback = - user_callbacks.on_event_disc_eng_event; + on_nan_event_disc_eng_event_user_callback = user_callbacks.on_event_disc_eng_event; on_nan_event_disabled_user_callback = user_callbacks.on_event_disabled; on_nan_event_tca_user_callback = user_callbacks.on_event_tca; - on_nan_event_beacon_sdf_payload_user_callback = - user_callbacks.on_event_beacon_sdf_payload; - on_nan_event_data_path_request_user_callback = - user_callbacks.on_event_data_path_request; - on_nan_event_data_path_confirm_user_callback = - user_callbacks.on_event_data_path_confirm; - on_nan_event_data_path_end_user_callback = - user_callbacks.on_event_data_path_end; - on_nan_event_transmit_follow_up_user_callback = - user_callbacks.on_event_transmit_follow_up; - on_nan_event_range_request_user_callback = - user_callbacks.on_event_range_request; - on_nan_event_range_report_user_callback = - user_callbacks.on_event_range_report; - on_nan_event_schedule_update_user_callback = - user_callbacks.on_event_schedule_update; + on_nan_event_beacon_sdf_payload_user_callback = user_callbacks.on_event_beacon_sdf_payload; + on_nan_event_data_path_request_user_callback = user_callbacks.on_event_data_path_request; + on_nan_event_data_path_confirm_user_callback = user_callbacks.on_event_data_path_confirm; + on_nan_event_data_path_end_user_callback = user_callbacks.on_event_data_path_end; + on_nan_event_transmit_follow_up_user_callback = user_callbacks.on_event_transmit_follow_up; + on_nan_event_range_request_user_callback = user_callbacks.on_event_range_request; + on_nan_event_range_report_user_callback = user_callbacks.on_event_range_report; + on_nan_event_schedule_update_user_callback = user_callbacks.on_event_schedule_update; return global_func_table_.wifi_nan_register_handler( - getIfaceHandle(iface_name), - {onAysncNanNotifyResponse, onAysncNanEventPublishReplied, - onAysncNanEventPublishTerminated, onAysncNanEventMatch, - onAysncNanEventMatchExpired, onAysncNanEventSubscribeTerminated, - onAysncNanEventFollowup, onAysncNanEventDiscEngEvent, - onAysncNanEventDisabled, onAysncNanEventTca, - onAysncNanEventBeaconSdfPayload, onAysncNanEventDataPathRequest, - onAysncNanEventDataPathConfirm, onAysncNanEventDataPathEnd, - onAysncNanEventTransmitFollowUp, onAysncNanEventRangeRequest, - onAysncNanEventRangeReport, onAsyncNanEventScheduleUpdate}); -} - -wifi_error WifiLegacyHal::nanEnableRequest(const std::string& iface_name, - transaction_id id, + getIfaceHandle(iface_name), + {onAysncNanNotifyResponse, onAysncNanEventPublishReplied, + onAysncNanEventPublishTerminated, onAysncNanEventMatch, onAysncNanEventMatchExpired, + onAysncNanEventSubscribeTerminated, onAysncNanEventFollowup, + onAysncNanEventDiscEngEvent, onAysncNanEventDisabled, onAysncNanEventTca, + onAysncNanEventBeaconSdfPayload, onAysncNanEventDataPathRequest, + onAysncNanEventDataPathConfirm, onAysncNanEventDataPathEnd, + onAysncNanEventTransmitFollowUp, onAysncNanEventRangeRequest, + onAysncNanEventRangeReport, onAsyncNanEventScheduleUpdate}); +} + +wifi_error WifiLegacyHal::nanEnableRequest(const std::string& iface_name, transaction_id id, const NanEnableRequest& msg) { NanEnableRequest msg_internal(msg); - return global_func_table_.wifi_nan_enable_request( - id, getIfaceHandle(iface_name), &msg_internal); + return global_func_table_.wifi_nan_enable_request(id, getIfaceHandle(iface_name), + &msg_internal); } -wifi_error WifiLegacyHal::nanDisableRequest(const std::string& iface_name, - transaction_id id) { - return global_func_table_.wifi_nan_disable_request( - id, getIfaceHandle(iface_name)); +wifi_error WifiLegacyHal::nanDisableRequest(const std::string& iface_name, transaction_id id) { + return global_func_table_.wifi_nan_disable_request(id, getIfaceHandle(iface_name)); } -wifi_error WifiLegacyHal::nanPublishRequest(const std::string& iface_name, - transaction_id id, +wifi_error WifiLegacyHal::nanPublishRequest(const std::string& iface_name, transaction_id id, const NanPublishRequest& msg) { NanPublishRequest msg_internal(msg); - return global_func_table_.wifi_nan_publish_request( - id, getIfaceHandle(iface_name), &msg_internal); + return global_func_table_.wifi_nan_publish_request(id, getIfaceHandle(iface_name), + &msg_internal); } -wifi_error WifiLegacyHal::nanPublishCancelRequest( - const std::string& iface_name, transaction_id id, - const NanPublishCancelRequest& msg) { +wifi_error WifiLegacyHal::nanPublishCancelRequest(const std::string& iface_name, transaction_id id, + const NanPublishCancelRequest& msg) { NanPublishCancelRequest msg_internal(msg); - return global_func_table_.wifi_nan_publish_cancel_request( - id, getIfaceHandle(iface_name), &msg_internal); + return global_func_table_.wifi_nan_publish_cancel_request(id, getIfaceHandle(iface_name), + &msg_internal); } -wifi_error WifiLegacyHal::nanSubscribeRequest(const std::string& iface_name, - transaction_id id, +wifi_error WifiLegacyHal::nanSubscribeRequest(const std::string& iface_name, transaction_id id, const NanSubscribeRequest& msg) { NanSubscribeRequest msg_internal(msg); - return global_func_table_.wifi_nan_subscribe_request( - id, getIfaceHandle(iface_name), &msg_internal); + return global_func_table_.wifi_nan_subscribe_request(id, getIfaceHandle(iface_name), + &msg_internal); } -wifi_error WifiLegacyHal::nanSubscribeCancelRequest( - const std::string& iface_name, transaction_id id, - const NanSubscribeCancelRequest& msg) { +wifi_error WifiLegacyHal::nanSubscribeCancelRequest(const std::string& iface_name, + transaction_id id, + const NanSubscribeCancelRequest& msg) { NanSubscribeCancelRequest msg_internal(msg); - return global_func_table_.wifi_nan_subscribe_cancel_request( - id, getIfaceHandle(iface_name), &msg_internal); + return global_func_table_.wifi_nan_subscribe_cancel_request(id, getIfaceHandle(iface_name), + &msg_internal); } -wifi_error WifiLegacyHal::nanTransmitFollowupRequest( - const std::string& iface_name, transaction_id id, - const NanTransmitFollowupRequest& msg) { +wifi_error WifiLegacyHal::nanTransmitFollowupRequest(const std::string& iface_name, + transaction_id id, + const NanTransmitFollowupRequest& msg) { NanTransmitFollowupRequest msg_internal(msg); - return global_func_table_.wifi_nan_transmit_followup_request( - id, getIfaceHandle(iface_name), &msg_internal); + return global_func_table_.wifi_nan_transmit_followup_request(id, getIfaceHandle(iface_name), + &msg_internal); } -wifi_error WifiLegacyHal::nanStatsRequest(const std::string& iface_name, - transaction_id id, +wifi_error WifiLegacyHal::nanStatsRequest(const std::string& iface_name, transaction_id id, const NanStatsRequest& msg) { NanStatsRequest msg_internal(msg); - return global_func_table_.wifi_nan_stats_request( - id, getIfaceHandle(iface_name), &msg_internal); + return global_func_table_.wifi_nan_stats_request(id, getIfaceHandle(iface_name), &msg_internal); } -wifi_error WifiLegacyHal::nanConfigRequest(const std::string& iface_name, - transaction_id id, +wifi_error WifiLegacyHal::nanConfigRequest(const std::string& iface_name, transaction_id id, const NanConfigRequest& msg) { NanConfigRequest msg_internal(msg); - return global_func_table_.wifi_nan_config_request( - id, getIfaceHandle(iface_name), &msg_internal); + return global_func_table_.wifi_nan_config_request(id, getIfaceHandle(iface_name), + &msg_internal); } -wifi_error WifiLegacyHal::nanTcaRequest(const std::string& iface_name, - transaction_id id, +wifi_error WifiLegacyHal::nanTcaRequest(const std::string& iface_name, transaction_id id, const NanTCARequest& msg) { NanTCARequest msg_internal(msg); - return global_func_table_.wifi_nan_tca_request( - id, getIfaceHandle(iface_name), &msg_internal); + return global_func_table_.wifi_nan_tca_request(id, getIfaceHandle(iface_name), &msg_internal); } -wifi_error WifiLegacyHal::nanBeaconSdfPayloadRequest( - const std::string& iface_name, transaction_id id, - const NanBeaconSdfPayloadRequest& msg) { +wifi_error WifiLegacyHal::nanBeaconSdfPayloadRequest(const std::string& iface_name, + transaction_id id, + const NanBeaconSdfPayloadRequest& msg) { NanBeaconSdfPayloadRequest msg_internal(msg); - return global_func_table_.wifi_nan_beacon_sdf_payload_request( - id, getIfaceHandle(iface_name), &msg_internal); + return global_func_table_.wifi_nan_beacon_sdf_payload_request(id, getIfaceHandle(iface_name), + &msg_internal); } std::pair<wifi_error, NanVersion> WifiLegacyHal::nanGetVersion() { NanVersion version; - wifi_error status = - global_func_table_.wifi_nan_get_version(global_handle_, &version); + wifi_error status = global_func_table_.wifi_nan_get_version(global_handle_, &version); return {status, version}; } -wifi_error WifiLegacyHal::nanGetCapabilities(const std::string& iface_name, - transaction_id id) { - return global_func_table_.wifi_nan_get_capabilities( - id, getIfaceHandle(iface_name)); +wifi_error WifiLegacyHal::nanGetCapabilities(const std::string& iface_name, transaction_id id) { + return global_func_table_.wifi_nan_get_capabilities(id, getIfaceHandle(iface_name)); } -wifi_error WifiLegacyHal::nanDataInterfaceCreate( - const std::string& iface_name, transaction_id id, - const std::string& data_iface_name) { - return global_func_table_.wifi_nan_data_interface_create( - id, getIfaceHandle(iface_name), makeCharVec(data_iface_name).data()); +wifi_error WifiLegacyHal::nanDataInterfaceCreate(const std::string& iface_name, transaction_id id, + const std::string& data_iface_name) { + return global_func_table_.wifi_nan_data_interface_create(id, getIfaceHandle(iface_name), + makeCharVec(data_iface_name).data()); } -wifi_error WifiLegacyHal::nanDataInterfaceDelete( - const std::string& iface_name, transaction_id id, - const std::string& data_iface_name) { - return global_func_table_.wifi_nan_data_interface_delete( - id, getIfaceHandle(iface_name), makeCharVec(data_iface_name).data()); +wifi_error WifiLegacyHal::nanDataInterfaceDelete(const std::string& iface_name, transaction_id id, + const std::string& data_iface_name) { + return global_func_table_.wifi_nan_data_interface_delete(id, getIfaceHandle(iface_name), + makeCharVec(data_iface_name).data()); } -wifi_error WifiLegacyHal::nanDataRequestInitiator( - const std::string& iface_name, transaction_id id, - const NanDataPathInitiatorRequest& msg) { +wifi_error WifiLegacyHal::nanDataRequestInitiator(const std::string& iface_name, transaction_id id, + const NanDataPathInitiatorRequest& msg) { NanDataPathInitiatorRequest msg_internal(msg); - return global_func_table_.wifi_nan_data_request_initiator( - id, getIfaceHandle(iface_name), &msg_internal); + return global_func_table_.wifi_nan_data_request_initiator(id, getIfaceHandle(iface_name), + &msg_internal); } -wifi_error WifiLegacyHal::nanDataIndicationResponse( - const std::string& iface_name, transaction_id id, - const NanDataPathIndicationResponse& msg) { +wifi_error WifiLegacyHal::nanDataIndicationResponse(const std::string& iface_name, + transaction_id id, + const NanDataPathIndicationResponse& msg) { NanDataPathIndicationResponse msg_internal(msg); - return global_func_table_.wifi_nan_data_indication_response( - id, getIfaceHandle(iface_name), &msg_internal); + return global_func_table_.wifi_nan_data_indication_response(id, getIfaceHandle(iface_name), + &msg_internal); } typedef struct { @@ -1434,29 +1311,27 @@ typedef struct { NanDataPathId ndp_instance_id; } NanDataPathEndSingleNdpIdRequest; -wifi_error WifiLegacyHal::nanDataEnd(const std::string& iface_name, - transaction_id id, +wifi_error WifiLegacyHal::nanDataEnd(const std::string& iface_name, transaction_id id, uint32_t ndpInstanceId) { NanDataPathEndSingleNdpIdRequest msg; msg.num_ndp_instances = 1; msg.ndp_instance_id = ndpInstanceId; - wifi_error status = global_func_table_.wifi_nan_data_end( - id, getIfaceHandle(iface_name), (NanDataPathEndRequest*)&msg); + wifi_error status = global_func_table_.wifi_nan_data_end(id, getIfaceHandle(iface_name), + (NanDataPathEndRequest*)&msg); return status; } wifi_error WifiLegacyHal::setCountryCode(const std::string& iface_name, std::array<int8_t, 2> code) { std::string code_str(code.data(), code.data() + code.size()); - return global_func_table_.wifi_set_country_code(getIfaceHandle(iface_name), - code_str.c_str()); + return global_func_table_.wifi_set_country_code(getIfaceHandle(iface_name), code_str.c_str()); } wifi_error WifiLegacyHal::retrieveIfaceHandles() { wifi_interface_handle* iface_handles = nullptr; int num_iface_handles = 0; - wifi_error status = global_func_table_.wifi_get_ifaces( - global_handle_, &num_iface_handles, &iface_handles); + wifi_error status = + global_func_table_.wifi_get_ifaces(global_handle_, &num_iface_handles, &iface_handles); if (status != WIFI_SUCCESS) { LOG(ERROR) << "Failed to enumerate interface handles"; return status; @@ -1464,8 +1339,8 @@ wifi_error WifiLegacyHal::retrieveIfaceHandles() { iface_name_to_handle_.clear(); for (int i = 0; i < num_iface_handles; ++i) { std::array<char, IFNAMSIZ> iface_name_arr = {}; - status = global_func_table_.wifi_get_iface_name( - iface_handles[i], iface_name_arr.data(), iface_name_arr.size()); + status = global_func_table_.wifi_get_iface_name(iface_handles[i], iface_name_arr.data(), + iface_name_arr.size()); if (status != WIFI_SUCCESS) { LOG(WARNING) << "Failed to get interface handle name"; continue; @@ -1479,8 +1354,7 @@ wifi_error WifiLegacyHal::retrieveIfaceHandles() { return WIFI_SUCCESS; } -wifi_interface_handle WifiLegacyHal::getIfaceHandle( - const std::string& iface_name) { +wifi_interface_handle WifiLegacyHal::getIfaceHandle(const std::string& iface_name) { const auto iface_handle_iter = iface_name_to_handle_.find(iface_name); if (iface_handle_iter == iface_name_to_handle_.end()) { LOG(ERROR) << "Unknown iface name: " << iface_name; @@ -1494,24 +1368,22 @@ void WifiLegacyHal::runEventLoop() { global_func_table_.wifi_event_loop(global_handle_); const auto lock = hidl_sync_util::acquireGlobalLock(); if (!awaiting_event_loop_termination_) { - LOG(FATAL) - << "Legacy HAL event loop terminated, but HAL was not stopping"; + LOG(FATAL) << "Legacy HAL event loop terminated, but HAL was not stopping"; } LOG(DEBUG) << "Legacy HAL event loop terminated"; awaiting_event_loop_termination_ = false; stop_wait_cv_.notify_one(); } -std::pair<wifi_error, std::vector<wifi_cached_scan_results>> -WifiLegacyHal::getGscanCachedResults(const std::string& iface_name) { +std::pair<wifi_error, std::vector<wifi_cached_scan_results>> WifiLegacyHal::getGscanCachedResults( + const std::string& iface_name) { std::vector<wifi_cached_scan_results> cached_scan_results; cached_scan_results.resize(kMaxCachedGscanResults); int32_t num_results = 0; wifi_error status = global_func_table_.wifi_get_cached_gscan_results( - getIfaceHandle(iface_name), true /* always flush */, - cached_scan_results.size(), cached_scan_results.data(), &num_results); - CHECK(num_results >= 0 && - static_cast<uint32_t>(num_results) <= kMaxCachedGscanResults); + getIfaceHandle(iface_name), true /* always flush */, cached_scan_results.size(), + cached_scan_results.data(), &num_results); + CHECK(num_results >= 0 && static_cast<uint32_t>(num_results) <= kMaxCachedGscanResults); cached_scan_results.resize(num_results); // Check for invalid IE lengths in these cached scan results and correct it. for (auto& cached_scan_result : cached_scan_results) { @@ -1519,8 +1391,7 @@ WifiLegacyHal::getGscanCachedResults(const std::string& iface_name) { for (int i = 0; i < num_scan_results; i++) { auto& scan_result = cached_scan_result.results[i]; if (scan_result.ie_length > 0) { - LOG(DEBUG) << "Cached scan result has non-zero IE length " - << scan_result.ie_length; + LOG(DEBUG) << "Cached scan result has non-zero IE length " << scan_result.ie_length; scan_result.ie_length = 0; } } @@ -1532,20 +1403,20 @@ wifi_error WifiLegacyHal::createVirtualInterface(const std::string& ifname, wifi_interface_type iftype) { // Create the interface if it doesn't exist. If interface already exist, // Vendor Hal should return WIFI_SUCCESS. - wifi_error status = global_func_table_.wifi_virtual_interface_create( - global_handle_, ifname.c_str(), iftype); + wifi_error status = global_func_table_.wifi_virtual_interface_create(global_handle_, + ifname.c_str(), iftype); return handleVirtualInterfaceCreateOrDeleteStatus(ifname, status); } wifi_error WifiLegacyHal::deleteVirtualInterface(const std::string& ifname) { // Delete the interface if it was created dynamically. - wifi_error status = global_func_table_.wifi_virtual_interface_delete( - global_handle_, ifname.c_str()); + wifi_error status = + global_func_table_.wifi_virtual_interface_delete(global_handle_, ifname.c_str()); return handleVirtualInterfaceCreateOrDeleteStatus(ifname, status); } -wifi_error WifiLegacyHal::handleVirtualInterfaceCreateOrDeleteStatus( - const std::string& ifname, wifi_error status) { +wifi_error WifiLegacyHal::handleVirtualInterfaceCreateOrDeleteStatus(const std::string& ifname, + wifi_error status) { if (status == WIFI_SUCCESS) { // refresh list of handlers now. status = retrieveIfaceHandles(); @@ -1561,116 +1432,98 @@ wifi_error WifiLegacyHal::handleVirtualInterfaceCreateOrDeleteStatus( return status; } -wifi_error WifiLegacyHal::getSupportedIfaceName(uint32_t iface_type, - std::string& ifname) { +wifi_error WifiLegacyHal::getSupportedIfaceName(uint32_t iface_type, std::string& ifname) { std::array<char, IFNAMSIZ> buffer; wifi_error res = global_func_table_.wifi_get_supported_iface_name( - global_handle_, (uint32_t)iface_type, buffer.data(), buffer.size()); + global_handle_, (uint32_t)iface_type, buffer.data(), buffer.size()); if (res == WIFI_SUCCESS) ifname = buffer.data(); return res; } -wifi_error WifiLegacyHal::multiStaSetPrimaryConnection( - const std::string& ifname) { - return global_func_table_.wifi_multi_sta_set_primary_connection( - global_handle_, getIfaceHandle(ifname)); +wifi_error WifiLegacyHal::multiStaSetPrimaryConnection(const std::string& ifname) { + return global_func_table_.wifi_multi_sta_set_primary_connection(global_handle_, + getIfaceHandle(ifname)); } wifi_error WifiLegacyHal::multiStaSetUseCase(wifi_multi_sta_use_case use_case) { - return global_func_table_.wifi_multi_sta_set_use_case(global_handle_, - use_case); + return global_func_table_.wifi_multi_sta_set_use_case(global_handle_, use_case); } wifi_error WifiLegacyHal::setCoexUnsafeChannels( - std::vector<wifi_coex_unsafe_channel> unsafe_channels, - uint32_t restrictions) { - return global_func_table_.wifi_set_coex_unsafe_channels( - global_handle_, unsafe_channels.size(), unsafe_channels.data(), - restrictions); + std::vector<wifi_coex_unsafe_channel> unsafe_channels, uint32_t restrictions) { + return global_func_table_.wifi_set_coex_unsafe_channels(global_handle_, unsafe_channels.size(), + unsafe_channels.data(), restrictions); } -wifi_error WifiLegacyHal::setVoipMode(const std::string& iface_name, - wifi_voip_mode mode) { - return global_func_table_.wifi_set_voip_mode(getIfaceHandle(iface_name), - mode); +wifi_error WifiLegacyHal::setVoipMode(const std::string& iface_name, wifi_voip_mode mode) { + return global_func_table_.wifi_set_voip_mode(getIfaceHandle(iface_name), mode); } -wifi_error WifiLegacyHal::twtRegisterHandler( - const std::string& iface_name, const TwtCallbackHandlers& user_callbacks) { +wifi_error WifiLegacyHal::twtRegisterHandler(const std::string& iface_name, + const TwtCallbackHandlers& user_callbacks) { on_twt_event_setup_response_callback = user_callbacks.on_setup_response; - on_twt_event_teardown_completion_callback = - user_callbacks.on_teardown_completion; - on_twt_event_info_frame_received_callback = - user_callbacks.on_info_frame_received; + on_twt_event_teardown_completion_callback = user_callbacks.on_teardown_completion; + on_twt_event_info_frame_received_callback = user_callbacks.on_info_frame_received; on_twt_event_device_notify_callback = user_callbacks.on_device_notify; return global_func_table_.wifi_twt_register_handler( - getIfaceHandle(iface_name), - {onAsyncTwtEventSetupResponse, onAsyncTwtEventTeardownCompletion, - onAsyncTwtEventInfoFrameReceived, onAsyncTwtEventDeviceNotify}); + getIfaceHandle(iface_name), + {onAsyncTwtEventSetupResponse, onAsyncTwtEventTeardownCompletion, + onAsyncTwtEventInfoFrameReceived, onAsyncTwtEventDeviceNotify}); } std::pair<wifi_error, TwtCapabilitySet> WifiLegacyHal::twtGetCapability( - const std::string& iface_name) { + const std::string& iface_name) { TwtCapabilitySet capSet; - wifi_error status = global_func_table_.wifi_twt_get_capability( - getIfaceHandle(iface_name), &capSet); + wifi_error status = + global_func_table_.wifi_twt_get_capability(getIfaceHandle(iface_name), &capSet); return {status, capSet}; } wifi_error WifiLegacyHal::twtSetupRequest(const std::string& iface_name, const TwtSetupRequest& msg) { TwtSetupRequest msgInternal(msg); - return global_func_table_.wifi_twt_setup_request(getIfaceHandle(iface_name), - &msgInternal); + return global_func_table_.wifi_twt_setup_request(getIfaceHandle(iface_name), &msgInternal); } wifi_error WifiLegacyHal::twtTearDownRequest(const std::string& iface_name, const TwtTeardownRequest& msg) { TwtTeardownRequest msgInternal(msg); - return global_func_table_.wifi_twt_teardown_request( - getIfaceHandle(iface_name), &msgInternal); + return global_func_table_.wifi_twt_teardown_request(getIfaceHandle(iface_name), &msgInternal); } wifi_error WifiLegacyHal::twtInfoFrameRequest(const std::string& iface_name, const TwtInfoFrameRequest& msg) { TwtInfoFrameRequest msgInternal(msg); - return global_func_table_.wifi_twt_info_frame_request( - getIfaceHandle(iface_name), &msgInternal); + return global_func_table_.wifi_twt_info_frame_request(getIfaceHandle(iface_name), &msgInternal); } -std::pair<wifi_error, TwtStats> WifiLegacyHal::twtGetStats( - const std::string& iface_name, uint8_t configId) { +std::pair<wifi_error, TwtStats> WifiLegacyHal::twtGetStats(const std::string& iface_name, + uint8_t configId) { TwtStats stats; - wifi_error status = global_func_table_.wifi_twt_get_stats( - getIfaceHandle(iface_name), configId, &stats); + wifi_error status = + global_func_table_.wifi_twt_get_stats(getIfaceHandle(iface_name), configId, &stats); return {status, stats}; } -wifi_error WifiLegacyHal::twtClearStats(const std::string& iface_name, - uint8_t configId) { - return global_func_table_.wifi_twt_clear_stats(getIfaceHandle(iface_name), - configId); +wifi_error WifiLegacyHal::twtClearStats(const std::string& iface_name, uint8_t configId) { + return global_func_table_.wifi_twt_clear_stats(getIfaceHandle(iface_name), configId); } -wifi_error WifiLegacyHal::setDtimConfig(const std::string& iface_name, - uint32_t multiplier) { - return global_func_table_.wifi_set_dtim_config(getIfaceHandle(iface_name), - multiplier); +wifi_error WifiLegacyHal::setDtimConfig(const std::string& iface_name, uint32_t multiplier) { + return global_func_table_.wifi_set_dtim_config(getIfaceHandle(iface_name), multiplier); } -std::pair<wifi_error, std::vector<wifi_usable_channel>> -WifiLegacyHal::getUsableChannels(uint32_t band_mask, uint32_t iface_mode_mask, - uint32_t filter_mask) { +std::pair<wifi_error, std::vector<wifi_usable_channel>> WifiLegacyHal::getUsableChannels( + uint32_t band_mask, uint32_t iface_mode_mask, uint32_t filter_mask) { std::vector<wifi_usable_channel> channels; channels.resize(kMaxWifiUsableChannels); uint32_t size = 0; wifi_error status = global_func_table_.wifi_get_usable_channels( - global_handle_, band_mask, iface_mode_mask, filter_mask, - channels.size(), &size, - reinterpret_cast<wifi_usable_channel*>(channels.data())); + global_handle_, band_mask, iface_mode_mask, filter_mask, channels.size(), &size, + reinterpret_cast<wifi_usable_channel*>(channels.data())); CHECK(size >= 0 && size <= kMaxWifiUsableChannels); channels.resize(size); return {status, std::move(channels)}; @@ -1719,7 +1572,7 @@ void WifiLegacyHal::invalidate() { } // namespace legacy_hal } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_legacy_hal.h b/wifi/1.6/default/wifi_legacy_hal.h index 2bb7631efa..d87242cdd5 100644 --- a/wifi/1.5/default/wifi_legacy_hal.h +++ b/wifi/1.6/default/wifi_legacy_hal.h @@ -29,7 +29,7 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { // This is in a separate namespace to prevent typename conflicts between // the legacy HAL types and the HIDL interface types. @@ -366,63 +366,53 @@ struct WakeReasonStats { // NAN response and event callbacks struct. struct NanCallbackHandlers { // NotifyResponse invoked to notify the status of the Request. - std::function<void(transaction_id, const NanResponseMsg&)> - on_notify_response; + std::function<void(transaction_id, const NanResponseMsg&)> on_notify_response; // Various event callbacks. - std::function<void(const NanPublishTerminatedInd&)> - on_event_publish_terminated; + std::function<void(const NanPublishTerminatedInd&)> on_event_publish_terminated; std::function<void(const NanMatchInd&)> on_event_match; std::function<void(const NanMatchExpiredInd&)> on_event_match_expired; - std::function<void(const NanSubscribeTerminatedInd&)> - on_event_subscribe_terminated; + std::function<void(const NanSubscribeTerminatedInd&)> on_event_subscribe_terminated; std::function<void(const NanFollowupInd&)> on_event_followup; std::function<void(const NanDiscEngEventInd&)> on_event_disc_eng_event; std::function<void(const NanDisabledInd&)> on_event_disabled; std::function<void(const NanTCAInd&)> on_event_tca; - std::function<void(const NanBeaconSdfPayloadInd&)> - on_event_beacon_sdf_payload; - std::function<void(const NanDataPathRequestInd&)> - on_event_data_path_request; - std::function<void(const NanDataPathConfirmInd&)> - on_event_data_path_confirm; + std::function<void(const NanBeaconSdfPayloadInd&)> on_event_beacon_sdf_payload; + std::function<void(const NanDataPathRequestInd&)> on_event_data_path_request; + std::function<void(const NanDataPathConfirmInd&)> on_event_data_path_confirm; std::function<void(const NanDataPathEndInd&)> on_event_data_path_end; - std::function<void(const NanTransmitFollowupInd&)> - on_event_transmit_follow_up; + std::function<void(const NanTransmitFollowupInd&)> on_event_transmit_follow_up; std::function<void(const NanRangeRequestInd&)> on_event_range_request; std::function<void(const NanRangeReportInd&)> on_event_range_report; - std::function<void(const NanDataPathScheduleUpdateInd&)> - on_event_schedule_update; + std::function<void(const NanDataPathScheduleUpdateInd&)> on_event_schedule_update; }; // Full scan results contain IE info and are hence passed by reference, to // preserve the variable length array member |ie_data|. Callee must not retain // the pointer. using on_gscan_full_result_callback = - std::function<void(wifi_request_id, const wifi_scan_result*, uint32_t)>; + std::function<void(wifi_request_id, const wifi_scan_result*, uint32_t)>; // These scan results don't contain any IE info, so no need to pass by // reference. -using on_gscan_results_callback = std::function<void( - wifi_request_id, const std::vector<wifi_cached_scan_results>&)>; +using on_gscan_results_callback = + std::function<void(wifi_request_id, const std::vector<wifi_cached_scan_results>&)>; // Invoked when the rssi value breaches the thresholds set. using on_rssi_threshold_breached_callback = - std::function<void(wifi_request_id, std::array<uint8_t, 6>, int8_t)>; + std::function<void(wifi_request_id, std::array<uint8_t, 6>, int8_t)>; // Callback for RTT range request results. // Rtt results contain IE info and are hence passed by reference, to // preserve the |LCI| and |LCR| pointers. Callee must not retain // the pointer. -using on_rtt_results_callback = std::function<void( - wifi_request_id, const std::vector<const wifi_rtt_result*>&)>; +using on_rtt_results_callback = + std::function<void(wifi_request_id, const std::vector<const wifi_rtt_result*>&)>; // Callback for ring buffer data. -using on_ring_buffer_data_callback = - std::function<void(const std::string&, const std::vector<uint8_t>&, - const wifi_ring_buffer_status&)>; +using on_ring_buffer_data_callback = std::function<void( + const std::string&, const std::vector<uint8_t>&, const wifi_ring_buffer_status&)>; // Callback for alerts. -using on_error_alert_callback = - std::function<void(int32_t, const std::vector<uint8_t>&)>; +using on_error_alert_callback = std::function<void(int32_t, const std::vector<uint8_t>&)>; // Callback for subsystem restart using on_subsystem_restart_callback = std::function<void(const std::string&)>; @@ -443,8 +433,7 @@ typedef struct { } WifiMacInfo; // Callback for radio mode change -using on_radio_mode_change_callback = - std::function<void(const std::vector<WifiMacInfo>&)>; +using on_radio_mode_change_callback = std::function<void(const std::vector<WifiMacInfo>&)>; // TWT response and event callbacks struct. struct TwtCallbackHandlers { @@ -466,9 +455,9 @@ struct TwtCallbackHandlers { * object and will be valid for the lifetime of the process. */ class WifiLegacyHal { - public: - WifiLegacyHal(const std::weak_ptr<wifi_system::InterfaceTool> iface_tool, - const wifi_hal_fn& fn, bool is_primary); + public: + WifiLegacyHal(const std::weak_ptr<wifi_system::InterfaceTool> iface_tool, const wifi_hal_fn& fn, + bool is_primary); virtual ~WifiLegacyHal() = default; // Initialize the legacy HAL function table. @@ -483,26 +472,22 @@ class WifiLegacyHal { // Checks if legacy HAL has successfully started bool isStarted(); // Wrappers for all the functions in the legacy HAL function table. - virtual std::pair<wifi_error, std::string> getDriverVersion( - const std::string& iface_name); - virtual std::pair<wifi_error, std::string> getFirmwareVersion( - const std::string& iface_name); + virtual std::pair<wifi_error, std::string> getDriverVersion(const std::string& iface_name); + virtual std::pair<wifi_error, std::string> getFirmwareVersion(const std::string& iface_name); std::pair<wifi_error, std::vector<uint8_t>> requestDriverMemoryDump( - const std::string& iface_name); + const std::string& iface_name); std::pair<wifi_error, std::vector<uint8_t>> requestFirmwareMemoryDump( - const std::string& iface_name); - std::pair<wifi_error, uint64_t> getSupportedFeatureSet( - const std::string& iface_name); + const std::string& iface_name); + std::pair<wifi_error, uint64_t> getSupportedFeatureSet(const std::string& iface_name); // APF functions. std::pair<wifi_error, PacketFilterCapabilities> getPacketFilterCapabilities( - const std::string& iface_name); - wifi_error setPacketFilter(const std::string& iface_name, - const std::vector<uint8_t>& program); + const std::string& iface_name); + wifi_error setPacketFilter(const std::string& iface_name, const std::vector<uint8_t>& program); std::pair<wifi_error, std::vector<uint8_t>> readApfPacketFilterData( - const std::string& iface_name); + const std::string& iface_name); // Gscan functions. std::pair<wifi_error, wifi_gscan_capabilities> getGscanCapabilities( - const std::string& iface_name); + const std::string& iface_name); // These API's provides a simplified interface over the legacy Gscan API's: // a) All scan events from the legacy HAL API other than the // |WIFI_SCAN_FAILED| are treated as notification of results. @@ -514,162 +499,121 @@ class WifiLegacyHal { // triggers the externally provided |on_failure_user_callback|. // c) Full scan result event triggers the externally provided // |on_full_result_user_callback|. - wifi_error startGscan( - const std::string& iface_name, wifi_request_id id, - const wifi_scan_cmd_params& params, - const std::function<void(wifi_request_id)>& on_failure_callback, - const on_gscan_results_callback& on_results_callback, - const on_gscan_full_result_callback& on_full_result_callback); + wifi_error startGscan(const std::string& iface_name, wifi_request_id id, + const wifi_scan_cmd_params& params, + const std::function<void(wifi_request_id)>& on_failure_callback, + const on_gscan_results_callback& on_results_callback, + const on_gscan_full_result_callback& on_full_result_callback); wifi_error stopGscan(const std::string& iface_name, wifi_request_id id); std::pair<wifi_error, std::vector<uint32_t>> getValidFrequenciesForBand( - const std::string& iface_name, wifi_band band); + const std::string& iface_name, wifi_band band); virtual wifi_error setDfsFlag(const std::string& iface_name, bool dfs_on); // Link layer stats functions. wifi_error enableLinkLayerStats(const std::string& iface_name, bool debug); wifi_error disableLinkLayerStats(const std::string& iface_name); - std::pair<wifi_error, LinkLayerStats> getLinkLayerStats( - const std::string& iface_name); + std::pair<wifi_error, LinkLayerStats> getLinkLayerStats(const std::string& iface_name); // RSSI monitor functions. - wifi_error startRssiMonitoring(const std::string& iface_name, - wifi_request_id id, int8_t max_rssi, - int8_t min_rssi, - const on_rssi_threshold_breached_callback& - on_threshold_breached_callback); - wifi_error stopRssiMonitoring(const std::string& iface_name, - wifi_request_id id); + wifi_error startRssiMonitoring( + const std::string& iface_name, wifi_request_id id, int8_t max_rssi, int8_t min_rssi, + const on_rssi_threshold_breached_callback& on_threshold_breached_callback); + wifi_error stopRssiMonitoring(const std::string& iface_name, wifi_request_id id); std::pair<wifi_error, wifi_roaming_capabilities> getRoamingCapabilities( - const std::string& iface_name); - wifi_error configureRoaming(const std::string& iface_name, - const wifi_roaming_config& config); - wifi_error enableFirmwareRoaming(const std::string& iface_name, - fw_roaming_state_t state); + const std::string& iface_name); + wifi_error configureRoaming(const std::string& iface_name, const wifi_roaming_config& config); + wifi_error enableFirmwareRoaming(const std::string& iface_name, fw_roaming_state_t state); wifi_error configureNdOffload(const std::string& iface_name, bool enable); - wifi_error startSendingOffloadedPacket( - const std::string& iface_name, uint32_t cmd_id, uint16_t ether_type, - const std::vector<uint8_t>& ip_packet_data, - const std::array<uint8_t, 6>& src_address, - const std::array<uint8_t, 6>& dst_address, uint32_t period_in_ms); - wifi_error stopSendingOffloadedPacket(const std::string& iface_name, - uint32_t cmd_id); + wifi_error startSendingOffloadedPacket(const std::string& iface_name, uint32_t cmd_id, + uint16_t ether_type, + const std::vector<uint8_t>& ip_packet_data, + const std::array<uint8_t, 6>& src_address, + const std::array<uint8_t, 6>& dst_address, + uint32_t period_in_ms); + wifi_error stopSendingOffloadedPacket(const std::string& iface_name, uint32_t cmd_id); virtual wifi_error selectTxPowerScenario(const std::string& iface_name, wifi_power_scenario scenario); virtual wifi_error resetTxPowerScenario(const std::string& iface_name); - wifi_error setLatencyMode(const std::string& iface_name, - wifi_latency_mode mode); - wifi_error setThermalMitigationMode(wifi_thermal_mode mode, - uint32_t completion_window); + wifi_error setLatencyMode(const std::string& iface_name, wifi_latency_mode mode); + wifi_error setThermalMitigationMode(wifi_thermal_mode mode, uint32_t completion_window); wifi_error setDscpToAccessCategoryMapping(uint32_t start, uint32_t end, uint32_t access_category); wifi_error resetDscpToAccessCategoryMapping(); // Logger/debug functions. - std::pair<wifi_error, uint32_t> getLoggerSupportedFeatureSet( - const std::string& iface_name); + std::pair<wifi_error, uint32_t> getLoggerSupportedFeatureSet(const std::string& iface_name); wifi_error startPktFateMonitoring(const std::string& iface_name); - std::pair<wifi_error, std::vector<wifi_tx_report>> getTxPktFates( - const std::string& iface_name); - std::pair<wifi_error, std::vector<wifi_rx_report>> getRxPktFates( - const std::string& iface_name); - std::pair<wifi_error, WakeReasonStats> getWakeReasonStats( - const std::string& iface_name); + std::pair<wifi_error, std::vector<wifi_tx_report>> getTxPktFates(const std::string& iface_name); + std::pair<wifi_error, std::vector<wifi_rx_report>> getRxPktFates(const std::string& iface_name); + std::pair<wifi_error, WakeReasonStats> getWakeReasonStats(const std::string& iface_name); wifi_error registerRingBufferCallbackHandler( - const std::string& iface_name, - const on_ring_buffer_data_callback& on_data_callback); - wifi_error deregisterRingBufferCallbackHandler( - const std::string& iface_name); + const std::string& iface_name, const on_ring_buffer_data_callback& on_data_callback); + wifi_error deregisterRingBufferCallbackHandler(const std::string& iface_name); wifi_error registerSubsystemRestartCallbackHandler( - const on_subsystem_restart_callback& on_restart_callback); - std::pair<wifi_error, std::vector<wifi_ring_buffer_status>> - getRingBuffersStatus(const std::string& iface_name); - wifi_error startRingBufferLogging(const std::string& iface_name, - const std::string& ring_name, - uint32_t verbose_level, - uint32_t max_interval_sec, + const on_subsystem_restart_callback& on_restart_callback); + std::pair<wifi_error, std::vector<wifi_ring_buffer_status>> getRingBuffersStatus( + const std::string& iface_name); + wifi_error startRingBufferLogging(const std::string& iface_name, const std::string& ring_name, + uint32_t verbose_level, uint32_t max_interval_sec, uint32_t min_data_size); - wifi_error getRingBufferData(const std::string& iface_name, - const std::string& ring_name); - wifi_error registerErrorAlertCallbackHandler( - const std::string& iface_name, - const on_error_alert_callback& on_alert_callback); - wifi_error deregisterErrorAlertCallbackHandler( - const std::string& iface_name); + wifi_error getRingBufferData(const std::string& iface_name, const std::string& ring_name); + wifi_error registerErrorAlertCallbackHandler(const std::string& iface_name, + const on_error_alert_callback& on_alert_callback); + wifi_error deregisterErrorAlertCallbackHandler(const std::string& iface_name); // Radio mode functions. virtual wifi_error registerRadioModeChangeCallbackHandler( - const std::string& iface_name, - const on_radio_mode_change_callback& on_user_change_callback); + const std::string& iface_name, + const on_radio_mode_change_callback& on_user_change_callback); // RTT functions. - wifi_error startRttRangeRequest( - const std::string& iface_name, wifi_request_id id, - const std::vector<wifi_rtt_config>& rtt_configs, - const on_rtt_results_callback& on_results_callback); - wifi_error cancelRttRangeRequest( - const std::string& iface_name, wifi_request_id id, - const std::vector<std::array<uint8_t, 6>>& mac_addrs); - std::pair<wifi_error, wifi_rtt_capabilities> getRttCapabilities( - const std::string& iface_name); - std::pair<wifi_error, wifi_rtt_responder> getRttResponderInfo( - const std::string& iface_name); - wifi_error enableRttResponder(const std::string& iface_name, - wifi_request_id id, - const wifi_channel_info& channel_hint, - uint32_t max_duration_secs, + wifi_error startRttRangeRequest(const std::string& iface_name, wifi_request_id id, + const std::vector<wifi_rtt_config>& rtt_configs, + const on_rtt_results_callback& on_results_callback); + wifi_error cancelRttRangeRequest(const std::string& iface_name, wifi_request_id id, + const std::vector<std::array<uint8_t, 6>>& mac_addrs); + std::pair<wifi_error, wifi_rtt_capabilities> getRttCapabilities(const std::string& iface_name); + std::pair<wifi_error, wifi_rtt_responder> getRttResponderInfo(const std::string& iface_name); + wifi_error enableRttResponder(const std::string& iface_name, wifi_request_id id, + const wifi_channel_info& channel_hint, uint32_t max_duration_secs, const wifi_rtt_responder& info); - wifi_error disableRttResponder(const std::string& iface_name, - wifi_request_id id); + wifi_error disableRttResponder(const std::string& iface_name, wifi_request_id id); wifi_error setRttLci(const std::string& iface_name, wifi_request_id id, const wifi_lci_information& info); wifi_error setRttLcr(const std::string& iface_name, wifi_request_id id, const wifi_lcr_information& info); // NAN functions. - virtual wifi_error nanRegisterCallbackHandlers( - const std::string& iface_name, const NanCallbackHandlers& callbacks); - wifi_error nanEnableRequest(const std::string& iface_name, - transaction_id id, const NanEnableRequest& msg); - virtual wifi_error nanDisableRequest(const std::string& iface_name, - transaction_id id); - wifi_error nanPublishRequest(const std::string& iface_name, - transaction_id id, + virtual wifi_error nanRegisterCallbackHandlers(const std::string& iface_name, + const NanCallbackHandlers& callbacks); + wifi_error nanEnableRequest(const std::string& iface_name, transaction_id id, + const NanEnableRequest& msg); + virtual wifi_error nanDisableRequest(const std::string& iface_name, transaction_id id); + wifi_error nanPublishRequest(const std::string& iface_name, transaction_id id, const NanPublishRequest& msg); - wifi_error nanPublishCancelRequest(const std::string& iface_name, - transaction_id id, + wifi_error nanPublishCancelRequest(const std::string& iface_name, transaction_id id, const NanPublishCancelRequest& msg); - wifi_error nanSubscribeRequest(const std::string& iface_name, - transaction_id id, + wifi_error nanSubscribeRequest(const std::string& iface_name, transaction_id id, const NanSubscribeRequest& msg); - wifi_error nanSubscribeCancelRequest(const std::string& iface_name, - transaction_id id, + wifi_error nanSubscribeCancelRequest(const std::string& iface_name, transaction_id id, const NanSubscribeCancelRequest& msg); - wifi_error nanTransmitFollowupRequest( - const std::string& iface_name, transaction_id id, - const NanTransmitFollowupRequest& msg); + wifi_error nanTransmitFollowupRequest(const std::string& iface_name, transaction_id id, + const NanTransmitFollowupRequest& msg); wifi_error nanStatsRequest(const std::string& iface_name, transaction_id id, const NanStatsRequest& msg); - wifi_error nanConfigRequest(const std::string& iface_name, - transaction_id id, const NanConfigRequest& msg); + wifi_error nanConfigRequest(const std::string& iface_name, transaction_id id, + const NanConfigRequest& msg); wifi_error nanTcaRequest(const std::string& iface_name, transaction_id id, const NanTCARequest& msg); - wifi_error nanBeaconSdfPayloadRequest( - const std::string& iface_name, transaction_id id, - const NanBeaconSdfPayloadRequest& msg); + wifi_error nanBeaconSdfPayloadRequest(const std::string& iface_name, transaction_id id, + const NanBeaconSdfPayloadRequest& msg); std::pair<wifi_error, NanVersion> nanGetVersion(); - wifi_error nanGetCapabilities(const std::string& iface_name, - transaction_id id); - wifi_error nanDataInterfaceCreate(const std::string& iface_name, - transaction_id id, + wifi_error nanGetCapabilities(const std::string& iface_name, transaction_id id); + wifi_error nanDataInterfaceCreate(const std::string& iface_name, transaction_id id, const std::string& data_iface_name); - virtual wifi_error nanDataInterfaceDelete( - const std::string& iface_name, transaction_id id, - const std::string& data_iface_name); - wifi_error nanDataRequestInitiator(const std::string& iface_name, - transaction_id id, + virtual wifi_error nanDataInterfaceDelete(const std::string& iface_name, transaction_id id, + const std::string& data_iface_name); + wifi_error nanDataRequestInitiator(const std::string& iface_name, transaction_id id, const NanDataPathInitiatorRequest& msg); - wifi_error nanDataIndicationResponse( - const std::string& iface_name, transaction_id id, - const NanDataPathIndicationResponse& msg); - wifi_error nanDataEnd(const std::string& iface_name, transaction_id id, - uint32_t ndpInstanceId); + wifi_error nanDataIndicationResponse(const std::string& iface_name, transaction_id id, + const NanDataPathIndicationResponse& msg); + wifi_error nanDataEnd(const std::string& iface_name, transaction_id id, uint32_t ndpInstanceId); // AP functions. - wifi_error setCountryCode(const std::string& iface_name, - std::array<int8_t, 2> code); + wifi_error setCountryCode(const std::string& iface_name, std::array<int8_t, 2> code); // interface functions. virtual wifi_error createVirtualInterface(const std::string& ifname, @@ -682,43 +626,36 @@ class WifiLegacyHal { virtual wifi_error multiStaSetUseCase(wifi_multi_sta_use_case use_case); // Coex functions. - virtual wifi_error setCoexUnsafeChannels( - std::vector<wifi_coex_unsafe_channel> unsafe_channels, - uint32_t restrictions); + virtual wifi_error setCoexUnsafeChannels(std::vector<wifi_coex_unsafe_channel> unsafe_channels, + uint32_t restrictions); wifi_error setVoipMode(const std::string& iface_name, wifi_voip_mode mode); wifi_error twtRegisterHandler(const std::string& iface_name, const TwtCallbackHandlers& handler); - std::pair<wifi_error, TwtCapabilitySet> twtGetCapability( - const std::string& iface_name); + std::pair<wifi_error, TwtCapabilitySet> twtGetCapability(const std::string& iface_name); - wifi_error twtSetupRequest(const std::string& iface_name, - const TwtSetupRequest& msg); + wifi_error twtSetupRequest(const std::string& iface_name, const TwtSetupRequest& msg); - wifi_error twtTearDownRequest(const std::string& iface_name, - const TwtTeardownRequest& msg); + wifi_error twtTearDownRequest(const std::string& iface_name, const TwtTeardownRequest& msg); - wifi_error twtInfoFrameRequest(const std::string& iface_name, - const TwtInfoFrameRequest& msg); + wifi_error twtInfoFrameRequest(const std::string& iface_name, const TwtInfoFrameRequest& msg); - std::pair<wifi_error, TwtStats> twtGetStats(const std::string& iface_name, - uint8_t configId); + std::pair<wifi_error, TwtStats> twtGetStats(const std::string& iface_name, uint8_t configId); wifi_error twtClearStats(const std::string& iface_name, uint8_t configId); - wifi_error setDtimConfig(const std::string& iface_name, - uint32_t multiplier); + wifi_error setDtimConfig(const std::string& iface_name, uint32_t multiplier); // Retrieve the list of usable channels in the requested bands // for the requested modes std::pair<wifi_error, std::vector<wifi_usable_channel>> getUsableChannels( - uint32_t band_mask, uint32_t iface_mode_mask, uint32_t filter_mask); + uint32_t band_mask, uint32_t iface_mode_mask, uint32_t filter_mask); wifi_error triggerSubsystemRestart(); - private: + private: // Retrieve interface handles for all the available interfaces. wifi_error retrieveIfaceHandles(); wifi_interface_handle getIfaceHandle(const std::string& iface_name); @@ -726,12 +663,12 @@ class WifiLegacyHal { void runEventLoop(); // Retrieve the cached gscan results to pass the results back to the // external callbacks. - std::pair<wifi_error, std::vector<wifi_cached_scan_results>> - getGscanCachedResults(const std::string& iface_name); + std::pair<wifi_error, std::vector<wifi_cached_scan_results>> getGscanCachedResults( + const std::string& iface_name); void invalidate(); // Handles wifi (error) status of Virtual interface create/delete - wifi_error handleVirtualInterfaceCreateOrDeleteStatus( - const std::string& ifname, wifi_error status); + wifi_error handleVirtualInterfaceCreateOrDeleteStatus(const std::string& ifname, + wifi_error status); // Global function table of legacy HAL. wifi_hal_fn global_func_table_; @@ -755,7 +692,7 @@ class WifiLegacyHal { } // namespace legacy_hal } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_legacy_hal_factory.cpp b/wifi/1.6/default/wifi_legacy_hal_factory.cpp index fbaa284f56..147bf4d7cc 100644 --- a/wifi/1.5/default/wifi_legacy_hal_factory.cpp +++ b/wifi/1.6/default/wifi_legacy_hal_factory.cpp @@ -62,22 +62,20 @@ bool isFileExtension(const char* name, const char* ext) { namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace legacy_hal { WifiLegacyHalFactory::WifiLegacyHalFactory( - const std::weak_ptr<wifi_system::InterfaceTool> iface_tool) + const std::weak_ptr<wifi_system::InterfaceTool> iface_tool) : iface_tool_(iface_tool) {} std::vector<std::shared_ptr<WifiLegacyHal>> WifiLegacyHalFactory::getHals() { if (legacy_hals_.empty()) { - if (!initVendorHalDescriptorFromLinked()) - initVendorHalsDescriptorList(); + if (!initVendorHalDescriptorFromLinked()) initVendorHalsDescriptorList(); for (auto& desc : descs_) { std::shared_ptr<WifiLegacyHal> hal = - std::make_shared<WifiLegacyHal>(iface_tool_, desc.fn, - desc.primary); + std::make_shared<WifiLegacyHal>(iface_tool_, desc.fn, desc.primary); legacy_hals_.push_back(hal); } } @@ -99,8 +97,8 @@ bool WifiLegacyHalFactory::initVendorHalDescriptorFromLinked() { bool WifiLegacyHalFactory::initLinkedHalFunctionTable(wifi_hal_fn* hal_fn) { init_wifi_vendor_hal_func_table_t initfn; - initfn = (init_wifi_vendor_hal_func_table_t)dlsym( - RTLD_DEFAULT, "init_wifi_vendor_hal_func_table"); + initfn = (init_wifi_vendor_hal_func_table_t)dlsym(RTLD_DEFAULT, + "init_wifi_vendor_hal_func_table"); if (!initfn) { LOG(INFO) << "no vendor HAL library linked, will try dynamic load"; return false; @@ -136,8 +134,7 @@ void WifiLegacyHalFactory::initVendorHalsDescriptorList() { xmlChar* value; wifi_hal_lib_desc desc; - LOG(INFO) << "processing vendor HALs descriptions in " - << kVendorHalsDescPath; + LOG(INFO) << "processing vendor HALs descriptions in " << kVendorHalsDescPath; DIR* dirPtr = ::opendir(kVendorHalsDescPath); if (dirPtr == NULL) { LOG(ERROR) << "failed to open " << kVendorHalsDescPath; @@ -157,26 +154,23 @@ void WifiLegacyHalFactory::initVendorHalsDescriptorList() { fullPath.append(entryPtr->d_name); xml = xmlReadFile(fullPath.c_str(), "UTF-8", XML_PARSE_RECOVER); if (!xml) { - LOG(ERROR) << "failed to parse: " << entryPtr->d_name - << " skipping..."; + LOG(ERROR) << "failed to parse: " << entryPtr->d_name << " skipping..."; continue; } node = xmlDocGetRootElement(xml); if (!node) { - LOG(ERROR) << "empty config file: " << entryPtr->d_name - << " skipping..."; + LOG(ERROR) << "empty config file: " << entryPtr->d_name << " skipping..."; goto skip; } if (xmlStrcmp(node->name, BAD_CAST "WifiVendorHal")) { - LOG(ERROR) << "bad config, root element not WifiVendorHal: " - << entryPtr->d_name << " skipping..."; + LOG(ERROR) << "bad config, root element not WifiVendorHal: " << entryPtr->d_name + << " skipping..."; goto skip; } version = (char*)xmlGetProp(node, BAD_CAST "version"); if (!version || strtoul(version, NULL, 0) != kVendorHalsDescVersion) { LOG(ERROR) << "conf file: " << entryPtr->d_name - << "must have version: " << kVendorHalsDescVersion - << ", skipping..."; + << "must have version: " << kVendorHalsDescVersion << ", skipping..."; goto skip; } cnode = node->children; @@ -195,8 +189,8 @@ void WifiLegacyHalFactory::initVendorHalsDescriptorList() { cnode = cnode->next; } if (path.empty()) { - LOG(ERROR) << "hal library path not provided in: " - << entryPtr->d_name << ", skipping..."; + LOG(ERROR) << "hal library path not provided in: " << entryPtr->d_name + << ", skipping..."; goto skip; } if (loadVendorHalLib(path, desc)) { @@ -211,8 +205,7 @@ void WifiLegacyHalFactory::initVendorHalsDescriptorList() { ::closedir(dirPtr); } -bool WifiLegacyHalFactory::loadVendorHalLib(const std::string& path, - wifi_hal_lib_desc& desc) { +bool WifiLegacyHalFactory::loadVendorHalLib(const std::string& path, wifi_hal_lib_desc& desc) { void* h = dlopen(path.c_str(), RTLD_NOW | RTLD_LOCAL); init_wifi_vendor_hal_func_table_t initfn; wifi_error res; @@ -221,8 +214,7 @@ bool WifiLegacyHalFactory::loadVendorHalLib(const std::string& path, LOG(ERROR) << "failed to open vendor hal library: " << path; return false; } - initfn = (init_wifi_vendor_hal_func_table_t)dlsym( - h, "init_wifi_vendor_hal_func_table"); + initfn = (init_wifi_vendor_hal_func_table_t)dlsym(h, "init_wifi_vendor_hal_func_table"); if (!initfn) { LOG(ERROR) << "init_wifi_vendor_hal_func_table not found in: " << path; goto out_err; @@ -243,8 +235,7 @@ bool WifiLegacyHalFactory::loadVendorHalLib(const std::string& path, // vendor HALs which do not implement early_initialize will return // WIFI_ERROR_NOT_SUPPORTED, treat this as success. if (res != WIFI_SUCCESS && res != WIFI_ERROR_NOT_SUPPORTED) { - LOG(ERROR) << "early initialization failed in: " << path - << " error: " << res; + LOG(ERROR) << "early initialization failed in: " << path << " error: " << res; goto out_err; } @@ -257,7 +248,7 @@ out_err: } // namespace legacy_hal } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_legacy_hal_factory.h b/wifi/1.6/default/wifi_legacy_hal_factory.h index e3440faff2..9f4423efb7 100644 --- a/wifi/1.5/default/wifi_legacy_hal_factory.h +++ b/wifi/1.6/default/wifi_legacy_hal_factory.h @@ -24,7 +24,7 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { // This is in a separate namespace to prevent typename conflicts between // the legacy HAL types and the HIDL interface types. @@ -33,14 +33,13 @@ namespace legacy_hal { * Class that creates WifiLegacyHal objects for vendor HALs in the system. */ class WifiLegacyHalFactory { - public: - WifiLegacyHalFactory( - const std::weak_ptr<wifi_system::InterfaceTool> iface_tool); + public: + WifiLegacyHalFactory(const std::weak_ptr<wifi_system::InterfaceTool> iface_tool); virtual ~WifiLegacyHalFactory() = default; std::vector<std::shared_ptr<WifiLegacyHal>> getHals(); - private: + private: typedef struct { wifi_hal_fn fn; bool primary; @@ -59,7 +58,7 @@ class WifiLegacyHalFactory { } // namespace legacy_hal } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_legacy_hal_stubs.cpp b/wifi/1.6/default/wifi_legacy_hal_stubs.cpp index dd860d6920..e03e1ae1a1 100644 --- a/wifi/1.5/default/wifi_legacy_hal_stubs.cpp +++ b/wifi/1.6/default/wifi_legacy_hal_stubs.cpp @@ -20,7 +20,7 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace legacy_hal { template <typename> @@ -165,7 +165,7 @@ bool initHalFuncTableWithStubs(wifi_hal_fn* hal_fn) { } } // namespace legacy_hal } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_legacy_hal_stubs.h b/wifi/1.6/default/wifi_legacy_hal_stubs.h index 480389b0ce..c9a03bf4c9 100644 --- a/wifi/1.5/default/wifi_legacy_hal_stubs.h +++ b/wifi/1.6/default/wifi_legacy_hal_stubs.h @@ -22,14 +22,14 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace legacy_hal { bool initHalFuncTableWithStubs(wifi_hal_fn* hal_fn); } // namespace legacy_hal } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_mode_controller.cpp b/wifi/1.6/default/wifi_mode_controller.cpp index b1db8b3725..4b8ac7dd1c 100644 --- a/wifi/1.5/default/wifi_mode_controller.cpp +++ b/wifi/1.6/default/wifi_mode_controller.cpp @@ -48,15 +48,14 @@ int convertIfaceTypeToFirmwareMode(IfaceType type) { namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace mode_controller { WifiModeController::WifiModeController() : driver_tool_(new DriverTool) {} bool WifiModeController::isFirmwareModeChangeNeeded(IfaceType type) { - return driver_tool_->IsFirmwareModeChangeNeeded( - convertIfaceTypeToFirmwareMode(type)); + return driver_tool_->IsFirmwareModeChangeNeeded(convertIfaceTypeToFirmwareMode(type)); } bool WifiModeController::initialize() { @@ -68,8 +67,7 @@ bool WifiModeController::initialize() { } bool WifiModeController::changeFirmwareMode(IfaceType type) { - if (!driver_tool_->ChangeFirmwareMode( - convertIfaceTypeToFirmwareMode(type))) { + if (!driver_tool_->ChangeFirmwareMode(convertIfaceTypeToFirmwareMode(type))) { LOG(ERROR) << "Failed to change firmware mode"; return false; } @@ -85,7 +83,7 @@ bool WifiModeController::deinitialize() { } } // namespace mode_controller } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_mode_controller.h b/wifi/1.6/default/wifi_mode_controller.h index 2eeca78c8b..fee2b66d4e 100644 --- a/wifi/1.5/default/wifi_mode_controller.h +++ b/wifi/1.6/default/wifi_mode_controller.h @@ -24,7 +24,7 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { namespace mode_controller { using namespace android::hardware::wifi::V1_0; @@ -35,7 +35,7 @@ using namespace android::hardware::wifi::V1_0; * required state (essentially a wrapper over DriverTool). */ class WifiModeController { - public: + public: WifiModeController(); virtual ~WifiModeController() = default; @@ -49,13 +49,13 @@ class WifiModeController { // invoked. virtual bool deinitialize(); - private: + private: std::unique_ptr<wifi_hal::DriverTool> driver_tool_; }; } // namespace mode_controller } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.6/default/wifi_nan_iface.cpp b/wifi/1.6/default/wifi_nan_iface.cpp new file mode 100644 index 0000000000..236cb64e32 --- /dev/null +++ b/wifi/1.6/default/wifi_nan_iface.cpp @@ -0,0 +1,905 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <android-base/logging.h> + +#include "hidl_return_util.h" +#include "hidl_struct_util.h" +#include "wifi_nan_iface.h" +#include "wifi_status_util.h" + +namespace android { +namespace hardware { +namespace wifi { +namespace V1_6 { +namespace implementation { +using hidl_return_util::validateAndCall; + +WifiNanIface::WifiNanIface(const std::string& ifname, bool is_dedicated_iface, + const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal, + const std::weak_ptr<iface_util::WifiIfaceUtil> iface_util) + : ifname_(ifname), + is_dedicated_iface_(is_dedicated_iface), + legacy_hal_(legacy_hal), + iface_util_(iface_util), + is_valid_(true) { + if (is_dedicated_iface_) { + // If using a dedicated iface, set the iface up first. + if (!iface_util_.lock()->setUpState(ifname_, true)) { + // Fatal failure, invalidate the iface object. + invalidate(); + return; + } + } + // Register all the callbacks here. these should be valid for the lifetime + // of the object. Whenever the mode changes legacy HAL will remove + // all of these callbacks. + legacy_hal::NanCallbackHandlers callback_handlers; + android::wp<WifiNanIface> weak_ptr_this(this); + + // Callback for response. + callback_handlers.on_notify_response = [weak_ptr_this](legacy_hal::transaction_id id, + const legacy_hal::NanResponseMsg& msg) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + WifiNanStatus wifiNanStatus; + if (!hidl_struct_util::convertLegacyNanResponseHeaderToHidl(msg, &wifiNanStatus)) { + LOG(ERROR) << "Failed to convert nan response header"; + return; + } + + switch (msg.response_type) { + case legacy_hal::NAN_RESPONSE_ENABLED: { + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->notifyEnableResponse(id, wifiNanStatus).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + break; + } + case legacy_hal::NAN_RESPONSE_DISABLED: { + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->notifyDisableResponse(id, wifiNanStatus).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + break; + } + case legacy_hal::NAN_RESPONSE_PUBLISH: { + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->notifyStartPublishResponse(id, wifiNanStatus, + msg.body.publish_response.publish_id) + .isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + break; + } + case legacy_hal::NAN_RESPONSE_PUBLISH_CANCEL: { + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->notifyStopPublishResponse(id, wifiNanStatus).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + break; + } + case legacy_hal::NAN_RESPONSE_TRANSMIT_FOLLOWUP: { + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->notifyTransmitFollowupResponse(id, wifiNanStatus).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + break; + } + case legacy_hal::NAN_RESPONSE_SUBSCRIBE: { + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->notifyStartSubscribeResponse( + id, wifiNanStatus, + msg.body.subscribe_response.subscribe_id) + .isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + break; + } + case legacy_hal::NAN_RESPONSE_SUBSCRIBE_CANCEL: { + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->notifyStopSubscribeResponse(id, wifiNanStatus).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + break; + } + case legacy_hal::NAN_RESPONSE_CONFIG: { + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->notifyConfigResponse(id, wifiNanStatus).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + break; + } + case legacy_hal::NAN_GET_CAPABILITIES: { + V1_5::NanCapabilities hidl_struct; + if (!hidl_struct_util::convertLegacyNanCapabilitiesResponseToHidl( + msg.body.nan_capabilities, &hidl_struct)) { + LOG(ERROR) << "Failed to convert nan capabilities response"; + return; + } + for (const auto& callback : shared_ptr_this->getEventCallbacks_1_5()) { + if (!callback->notifyCapabilitiesResponse_1_5(id, wifiNanStatus, hidl_struct) + .isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + break; + } + case legacy_hal::NAN_DP_INTERFACE_CREATE: { + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->notifyCreateDataInterfaceResponse(id, wifiNanStatus).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + break; + } + case legacy_hal::NAN_DP_INTERFACE_DELETE: { + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->notifyDeleteDataInterfaceResponse(id, wifiNanStatus).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + break; + } + case legacy_hal::NAN_DP_INITIATOR_RESPONSE: { + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->notifyInitiateDataPathResponse( + id, wifiNanStatus, + msg.body.data_request_response.ndp_instance_id) + .isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + break; + } + case legacy_hal::NAN_DP_RESPONDER_RESPONSE: { + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->notifyRespondToDataPathIndicationResponse(id, wifiNanStatus) + .isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + break; + } + case legacy_hal::NAN_DP_END: { + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->notifyTerminateDataPathResponse(id, wifiNanStatus).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + break; + } + case legacy_hal::NAN_RESPONSE_BEACON_SDF_PAYLOAD: + /* fall through */ + case legacy_hal::NAN_RESPONSE_TCA: + /* fall through */ + case legacy_hal::NAN_RESPONSE_STATS: + /* fall through */ + case legacy_hal::NAN_RESPONSE_ERROR: + /* fall through */ + default: + LOG(ERROR) << "Unknown or unhandled response type: " << msg.response_type; + return; + } + }; + + callback_handlers.on_event_disc_eng_event = + [weak_ptr_this](const legacy_hal::NanDiscEngEventInd& msg) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + NanClusterEventInd hidl_struct; + // event types defined identically - hence can be cast + hidl_struct.eventType = (NanClusterEventType)msg.event_type; + hidl_struct.addr = msg.data.mac_addr.addr; + + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->eventClusterEvent(hidl_struct).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + }; + + callback_handlers.on_event_disabled = [weak_ptr_this](const legacy_hal::NanDisabledInd& msg) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + WifiNanStatus status; + hidl_struct_util::convertToWifiNanStatus(msg.reason, msg.nan_reason, sizeof(msg.nan_reason), + &status); + + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->eventDisabled(status).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + }; + + callback_handlers.on_event_publish_terminated = + [weak_ptr_this](const legacy_hal::NanPublishTerminatedInd& msg) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + WifiNanStatus status; + hidl_struct_util::convertToWifiNanStatus(msg.reason, msg.nan_reason, + sizeof(msg.nan_reason), &status); + + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->eventPublishTerminated(msg.publish_id, status).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + }; + + callback_handlers.on_event_subscribe_terminated = + [weak_ptr_this](const legacy_hal::NanSubscribeTerminatedInd& msg) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + WifiNanStatus status; + hidl_struct_util::convertToWifiNanStatus(msg.reason, msg.nan_reason, + sizeof(msg.nan_reason), &status); + + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->eventSubscribeTerminated(msg.subscribe_id, status).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + }; + + callback_handlers.on_event_match = [weak_ptr_this](const legacy_hal::NanMatchInd& msg) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + NanMatchInd hidl_struct; + if (!hidl_struct_util::convertLegacyNanMatchIndToHidl(msg, &hidl_struct)) { + LOG(ERROR) << "Failed to convert nan capabilities response"; + return; + } + + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->eventMatch(hidl_struct).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + }; + + callback_handlers.on_event_match_expired = [weak_ptr_this]( + const legacy_hal::NanMatchExpiredInd& msg) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->eventMatchExpired(msg.publish_subscribe_id, msg.requestor_instance_id) + .isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + }; + + callback_handlers.on_event_followup = [weak_ptr_this](const legacy_hal::NanFollowupInd& msg) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + NanFollowupReceivedInd hidl_struct; + if (!hidl_struct_util::convertLegacyNanFollowupIndToHidl(msg, &hidl_struct)) { + LOG(ERROR) << "Failed to convert nan capabilities response"; + return; + } + + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->eventFollowupReceived(hidl_struct).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + }; + + callback_handlers.on_event_transmit_follow_up = + [weak_ptr_this](const legacy_hal::NanTransmitFollowupInd& msg) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + WifiNanStatus status; + hidl_struct_util::convertToWifiNanStatus(msg.reason, msg.nan_reason, + sizeof(msg.nan_reason), &status); + + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->eventTransmitFollowup(msg.id, status).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + }; + + callback_handlers.on_event_data_path_request = + [weak_ptr_this](const legacy_hal::NanDataPathRequestInd& msg) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + NanDataPathRequestInd hidl_struct; + if (!hidl_struct_util::convertLegacyNanDataPathRequestIndToHidl(msg, + &hidl_struct)) { + LOG(ERROR) << "Failed to convert nan capabilities response"; + return; + } + + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->eventDataPathRequest(hidl_struct).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + }; + + callback_handlers.on_event_data_path_confirm = + [weak_ptr_this](const legacy_hal::NanDataPathConfirmInd& msg) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + V1_2::NanDataPathConfirmInd hidl_struct; + if (!hidl_struct_util::convertLegacyNanDataPathConfirmIndToHidl(msg, + &hidl_struct)) { + LOG(ERROR) << "Failed to convert nan capabilities response"; + return; + } + + for (const auto& callback : shared_ptr_this->getEventCallbacks_1_2()) { + if (!callback->eventDataPathConfirm_1_2(hidl_struct).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + }; + + callback_handlers.on_event_data_path_end = + [weak_ptr_this](const legacy_hal::NanDataPathEndInd& msg) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + for (int i = 0; i < msg.num_ndp_instances; ++i) { + if (!callback->eventDataPathTerminated(msg.ndp_instance_id[i]).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + } + }; + + callback_handlers.on_event_beacon_sdf_payload = + [weak_ptr_this](const legacy_hal::NanBeaconSdfPayloadInd& /* msg */) { + LOG(ERROR) << "on_event_beacon_sdf_payload - should not be called"; + }; + + callback_handlers.on_event_range_request = + [weak_ptr_this](const legacy_hal::NanRangeRequestInd& /* msg */) { + LOG(ERROR) << "on_event_range_request - should not be called"; + }; + + callback_handlers.on_event_range_report = + [weak_ptr_this](const legacy_hal::NanRangeReportInd& /* msg */) { + LOG(ERROR) << "on_event_range_report - should not be called"; + }; + + callback_handlers.on_event_schedule_update = + [weak_ptr_this](const legacy_hal::NanDataPathScheduleUpdateInd& msg) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + V1_2::NanDataPathScheduleUpdateInd hidl_struct; + if (!hidl_struct_util::convertLegacyNanDataPathScheduleUpdateIndToHidl( + msg, &hidl_struct)) { + LOG(ERROR) << "Failed to convert nan capabilities response"; + return; + } + + for (const auto& callback : shared_ptr_this->getEventCallbacks_1_2()) { + if (!callback->eventDataPathScheduleUpdate(hidl_struct).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + }; + + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->nanRegisterCallbackHandlers(ifname_, callback_handlers); + if (legacy_status != legacy_hal::WIFI_SUCCESS) { + LOG(ERROR) << "Failed to register nan callbacks. Invalidating object"; + invalidate(); + } + + // Register for iface state toggle events. + iface_util::IfaceEventHandlers event_handlers = {}; + event_handlers.on_state_toggle_off_on = [weak_ptr_this](const std::string& /* iface_name */) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + // Tell framework that NAN has been disabled. + WifiNanStatus status = {NanStatusType::UNSUPPORTED_CONCURRENCY_NAN_DISABLED, ""}; + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->eventDisabled(status).isOk()) { + LOG(ERROR) << "Failed to invoke the callback"; + } + } + }; + iface_util_.lock()->registerIfaceEventHandlers(ifname_, event_handlers); +} + +void WifiNanIface::invalidate() { + if (!isValid()) { + return; + } + // send commands to HAL to actually disable and destroy interfaces + legacy_hal_.lock()->nanDisableRequest(ifname_, 0xFFFF); + legacy_hal_.lock()->nanDataInterfaceDelete(ifname_, 0xFFFE, "aware_data0"); + legacy_hal_.lock()->nanDataInterfaceDelete(ifname_, 0xFFFD, "aware_data1"); + iface_util_.lock()->unregisterIfaceEventHandlers(ifname_); + legacy_hal_.reset(); + event_cb_handler_.invalidate(); + event_cb_handler_1_2_.invalidate(); + event_cb_handler_1_5_.invalidate(); + is_valid_ = false; + if (is_dedicated_iface_) { + // If using a dedicated iface, set the iface down. + iface_util_.lock()->setUpState(ifname_, false); + } +} + +bool WifiNanIface::isValid() { + return is_valid_; +} + +std::string WifiNanIface::getName() { + return ifname_; +} + +std::set<sp<V1_0::IWifiNanIfaceEventCallback>> WifiNanIface::getEventCallbacks() { + return event_cb_handler_.getCallbacks(); +} + +std::set<sp<V1_2::IWifiNanIfaceEventCallback>> WifiNanIface::getEventCallbacks_1_2() { + return event_cb_handler_1_2_.getCallbacks(); +} + +std::set<sp<V1_5::IWifiNanIfaceEventCallback>> WifiNanIface::getEventCallbacks_1_5() { + return event_cb_handler_1_5_.getCallbacks(); +} + +Return<void> WifiNanIface::getName(getName_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::getNameInternal, hidl_status_cb); +} + +Return<void> WifiNanIface::getType(getType_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::getTypeInternal, hidl_status_cb); +} + +Return<void> WifiNanIface::registerEventCallback( + const sp<V1_0::IWifiNanIfaceEventCallback>& callback, + registerEventCallback_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::registerEventCallbackInternal, hidl_status_cb, callback); +} + +Return<void> WifiNanIface::getCapabilitiesRequest(uint16_t cmd_id, + getCapabilitiesRequest_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::getCapabilitiesRequestInternal, hidl_status_cb, cmd_id); +} + +Return<void> WifiNanIface::enableRequest(uint16_t cmd_id, const V1_0::NanEnableRequest& msg, + enableRequest_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::enableRequestInternal, hidl_status_cb, cmd_id, msg); +} + +Return<void> WifiNanIface::configRequest(uint16_t cmd_id, const V1_0::NanConfigRequest& msg, + configRequest_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::configRequestInternal, hidl_status_cb, cmd_id, msg); +} + +Return<void> WifiNanIface::disableRequest(uint16_t cmd_id, disableRequest_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::disableRequestInternal, hidl_status_cb, cmd_id); +} + +Return<void> WifiNanIface::startPublishRequest(uint16_t cmd_id, const NanPublishRequest& msg, + startPublishRequest_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::startPublishRequestInternal, hidl_status_cb, cmd_id, msg); +} + +Return<void> WifiNanIface::stopPublishRequest(uint16_t cmd_id, uint8_t sessionId, + stopPublishRequest_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::stopPublishRequestInternal, hidl_status_cb, cmd_id, + sessionId); +} + +Return<void> WifiNanIface::startSubscribeRequest(uint16_t cmd_id, const NanSubscribeRequest& msg, + startSubscribeRequest_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::startSubscribeRequestInternal, hidl_status_cb, cmd_id, + msg); +} + +Return<void> WifiNanIface::stopSubscribeRequest(uint16_t cmd_id, uint8_t sessionId, + stopSubscribeRequest_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::stopSubscribeRequestInternal, hidl_status_cb, cmd_id, + sessionId); +} + +Return<void> WifiNanIface::transmitFollowupRequest(uint16_t cmd_id, + const NanTransmitFollowupRequest& msg, + transmitFollowupRequest_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::transmitFollowupRequestInternal, hidl_status_cb, cmd_id, + msg); +} + +Return<void> WifiNanIface::createDataInterfaceRequest( + uint16_t cmd_id, const hidl_string& iface_name, + createDataInterfaceRequest_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::createDataInterfaceRequestInternal, hidl_status_cb, + cmd_id, iface_name); +} + +Return<void> WifiNanIface::deleteDataInterfaceRequest( + uint16_t cmd_id, const hidl_string& iface_name, + deleteDataInterfaceRequest_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::deleteDataInterfaceRequestInternal, hidl_status_cb, + cmd_id, iface_name); +} + +Return<void> WifiNanIface::initiateDataPathRequest(uint16_t cmd_id, + const NanInitiateDataPathRequest& msg, + initiateDataPathRequest_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::initiateDataPathRequestInternal, hidl_status_cb, cmd_id, + msg); +} + +Return<void> WifiNanIface::respondToDataPathIndicationRequest( + uint16_t cmd_id, const NanRespondToDataPathIndicationRequest& msg, + respondToDataPathIndicationRequest_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::respondToDataPathIndicationRequestInternal, + hidl_status_cb, cmd_id, msg); +} + +Return<void> WifiNanIface::terminateDataPathRequest(uint16_t cmd_id, uint32_t ndpInstanceId, + terminateDataPathRequest_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::terminateDataPathRequestInternal, hidl_status_cb, cmd_id, + ndpInstanceId); +} + +Return<void> WifiNanIface::registerEventCallback_1_2( + const sp<V1_2::IWifiNanIfaceEventCallback>& callback, + registerEventCallback_1_2_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::registerEventCallback_1_2Internal, hidl_status_cb, + callback); +} + +Return<void> WifiNanIface::enableRequest_1_2(uint16_t cmd_id, const V1_0::NanEnableRequest& msg1, + const V1_2::NanConfigRequestSupplemental& msg2, + enableRequest_1_2_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::enableRequest_1_2Internal, hidl_status_cb, cmd_id, msg1, + msg2); +} + +Return<void> WifiNanIface::configRequest_1_2(uint16_t cmd_id, const V1_0::NanConfigRequest& msg1, + const V1_2::NanConfigRequestSupplemental& msg2, + configRequest_1_2_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::configRequest_1_2Internal, hidl_status_cb, cmd_id, msg1, + msg2); +} + +Return<void> WifiNanIface::enableRequest_1_4(uint16_t cmd_id, const V1_4::NanEnableRequest& msg1, + const V1_2::NanConfigRequestSupplemental& msg2, + enableRequest_1_4_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::enableRequest_1_4Internal, hidl_status_cb, cmd_id, msg1, + msg2); +} + +Return<void> WifiNanIface::configRequest_1_4(uint16_t cmd_id, const V1_4::NanConfigRequest& msg1, + const V1_2::NanConfigRequestSupplemental& msg2, + configRequest_1_4_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::configRequest_1_4Internal, hidl_status_cb, cmd_id, msg1, + msg2); +} + +Return<void> WifiNanIface::registerEventCallback_1_5( + const sp<V1_5::IWifiNanIfaceEventCallback>& callback, + registerEventCallback_1_5_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::registerEventCallback_1_5Internal, hidl_status_cb, + callback); +} + +Return<void> WifiNanIface::enableRequest_1_5(uint16_t cmd_id, const V1_4::NanEnableRequest& msg1, + const V1_5::NanConfigRequestSupplemental& msg2, + enableRequest_1_5_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::enableRequest_1_5Internal, hidl_status_cb, cmd_id, msg1, + msg2); +} + +Return<void> WifiNanIface::configRequest_1_5(uint16_t cmd_id, const V1_4::NanConfigRequest& msg1, + const V1_5::NanConfigRequestSupplemental& msg2, + configRequest_1_5_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::configRequest_1_5Internal, hidl_status_cb, cmd_id, msg1, + msg2); +} + +Return<void> WifiNanIface::getCapabilitiesRequest_1_5( + uint16_t cmd_id, getCapabilitiesRequest_1_5_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::getCapabilitiesRequest_1_5Internal, hidl_status_cb, + cmd_id); +} + +std::pair<WifiStatus, std::string> WifiNanIface::getNameInternal() { + return {createWifiStatus(WifiStatusCode::SUCCESS), ifname_}; +} + +std::pair<WifiStatus, IfaceType> WifiNanIface::getTypeInternal() { + return {createWifiStatus(WifiStatusCode::SUCCESS), IfaceType::NAN}; +} + +WifiStatus WifiNanIface::registerEventCallbackInternal( + const sp<V1_0::IWifiNanIfaceEventCallback>& callback) { + if (!event_cb_handler_.addCallback(callback)) { + return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); + } + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +WifiStatus WifiNanIface::getCapabilitiesRequestInternal(uint16_t /* cmd_id */) { + return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); +} + +WifiStatus WifiNanIface::enableRequestInternal(uint16_t /* cmd_id */, + const V1_0::NanEnableRequest& /* msg */) { + return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); +} + +WifiStatus WifiNanIface::configRequestInternal(uint16_t /* cmd_id */, + const V1_0::NanConfigRequest& /* msg */) { + return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); +} + +WifiStatus WifiNanIface::disableRequestInternal(uint16_t cmd_id) { + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->nanDisableRequest(ifname_, cmd_id); + return createWifiStatusFromLegacyError(legacy_status); +} + +WifiStatus WifiNanIface::startPublishRequestInternal(uint16_t cmd_id, + const NanPublishRequest& msg) { + legacy_hal::NanPublishRequest legacy_msg; + if (!hidl_struct_util::convertHidlNanPublishRequestToLegacy(msg, &legacy_msg)) { + return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); + } + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->nanPublishRequest(ifname_, cmd_id, legacy_msg); + return createWifiStatusFromLegacyError(legacy_status); +} + +WifiStatus WifiNanIface::stopPublishRequestInternal(uint16_t cmd_id, uint8_t sessionId) { + legacy_hal::NanPublishCancelRequest legacy_msg; + legacy_msg.publish_id = sessionId; + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->nanPublishCancelRequest(ifname_, cmd_id, legacy_msg); + return createWifiStatusFromLegacyError(legacy_status); +} + +WifiStatus WifiNanIface::startSubscribeRequestInternal(uint16_t cmd_id, + const NanSubscribeRequest& msg) { + legacy_hal::NanSubscribeRequest legacy_msg; + if (!hidl_struct_util::convertHidlNanSubscribeRequestToLegacy(msg, &legacy_msg)) { + return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); + } + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->nanSubscribeRequest(ifname_, cmd_id, legacy_msg); + return createWifiStatusFromLegacyError(legacy_status); +} + +WifiStatus WifiNanIface::stopSubscribeRequestInternal(uint16_t cmd_id, uint8_t sessionId) { + legacy_hal::NanSubscribeCancelRequest legacy_msg; + legacy_msg.subscribe_id = sessionId; + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->nanSubscribeCancelRequest(ifname_, cmd_id, legacy_msg); + return createWifiStatusFromLegacyError(legacy_status); +} + +WifiStatus WifiNanIface::transmitFollowupRequestInternal(uint16_t cmd_id, + const NanTransmitFollowupRequest& msg) { + legacy_hal::NanTransmitFollowupRequest legacy_msg; + if (!hidl_struct_util::convertHidlNanTransmitFollowupRequestToLegacy(msg, &legacy_msg)) { + return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); + } + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->nanTransmitFollowupRequest(ifname_, cmd_id, legacy_msg); + return createWifiStatusFromLegacyError(legacy_status); +} + +WifiStatus WifiNanIface::createDataInterfaceRequestInternal(uint16_t cmd_id, + const std::string& iface_name) { + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->nanDataInterfaceCreate(ifname_, cmd_id, iface_name); + return createWifiStatusFromLegacyError(legacy_status); +} +WifiStatus WifiNanIface::deleteDataInterfaceRequestInternal(uint16_t cmd_id, + const std::string& iface_name) { + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->nanDataInterfaceDelete(ifname_, cmd_id, iface_name); + return createWifiStatusFromLegacyError(legacy_status); +} +WifiStatus WifiNanIface::initiateDataPathRequestInternal(uint16_t cmd_id, + const NanInitiateDataPathRequest& msg) { + legacy_hal::NanDataPathInitiatorRequest legacy_msg; + if (!hidl_struct_util::convertHidlNanDataPathInitiatorRequestToLegacy(msg, &legacy_msg)) { + return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); + } + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->nanDataRequestInitiator(ifname_, cmd_id, legacy_msg); + return createWifiStatusFromLegacyError(legacy_status); +} +WifiStatus WifiNanIface::respondToDataPathIndicationRequestInternal( + uint16_t cmd_id, const NanRespondToDataPathIndicationRequest& msg) { + legacy_hal::NanDataPathIndicationResponse legacy_msg; + if (!hidl_struct_util::convertHidlNanDataPathIndicationResponseToLegacy(msg, &legacy_msg)) { + return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); + } + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->nanDataIndicationResponse(ifname_, cmd_id, legacy_msg); + return createWifiStatusFromLegacyError(legacy_status); +} +WifiStatus WifiNanIface::terminateDataPathRequestInternal(uint16_t cmd_id, uint32_t ndpInstanceId) { + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->nanDataEnd(ifname_, cmd_id, ndpInstanceId); + return createWifiStatusFromLegacyError(legacy_status); +} + +WifiStatus WifiNanIface::registerEventCallback_1_2Internal( + const sp<V1_2::IWifiNanIfaceEventCallback>& callback) { + sp<V1_0::IWifiNanIfaceEventCallback> callback_1_0 = callback; + if (!event_cb_handler_.addCallback(callback_1_0)) { + return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); + } + if (!event_cb_handler_1_2_.addCallback(callback)) { + return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); + } + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +WifiStatus WifiNanIface::enableRequest_1_2Internal( + uint16_t /* cmd_id */, const V1_0::NanEnableRequest& /* msg1 */, + const V1_2::NanConfigRequestSupplemental& /* msg2 */) { + return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); +} + +WifiStatus WifiNanIface::configRequest_1_2Internal( + uint16_t /* cmd_id */, const V1_0::NanConfigRequest& /* msg1 */, + const V1_2::NanConfigRequestSupplemental& /* msg2 */) { + return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); +} + +WifiStatus WifiNanIface::enableRequest_1_4Internal( + uint16_t /* cmd_id */, const V1_4::NanEnableRequest& /* msg1 */, + const V1_2::NanConfigRequestSupplemental& /* msg2 */) { + return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); +} + +WifiStatus WifiNanIface::configRequest_1_4Internal( + uint16_t /* cmd_id */, const V1_4::NanConfigRequest& /* msg1 */, + const V1_2::NanConfigRequestSupplemental& /* msg2 */) { + return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); +} + +WifiStatus WifiNanIface::registerEventCallback_1_5Internal( + const sp<V1_5::IWifiNanIfaceEventCallback>& callback) { + sp<V1_0::IWifiNanIfaceEventCallback> callback_1_0 = callback; + if (!event_cb_handler_.addCallback(callback_1_0)) { + return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); + } + sp<V1_2::IWifiNanIfaceEventCallback> callback_1_2 = callback; + if (!event_cb_handler_1_2_.addCallback(callback_1_2)) { + return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); + } + if (!event_cb_handler_1_5_.addCallback(callback)) { + return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); + } + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +WifiStatus WifiNanIface::getCapabilitiesRequest_1_5Internal(uint16_t cmd_id) { + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->nanGetCapabilities(ifname_, cmd_id); + return createWifiStatusFromLegacyError(legacy_status); +} + +WifiStatus WifiNanIface::enableRequest_1_5Internal(uint16_t cmd_id, + const V1_4::NanEnableRequest& msg1, + const V1_5::NanConfigRequestSupplemental& msg2) { + legacy_hal::NanEnableRequest legacy_msg; + if (!hidl_struct_util::convertHidlNanEnableRequest_1_5ToLegacy(msg1, msg2, &legacy_msg)) { + return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); + } + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->nanEnableRequest(ifname_, cmd_id, legacy_msg); + return createWifiStatusFromLegacyError(legacy_status); +} + +WifiStatus WifiNanIface::configRequest_1_5Internal(uint16_t cmd_id, + const V1_4::NanConfigRequest& msg1, + const V1_5::NanConfigRequestSupplemental& msg2) { + legacy_hal::NanConfigRequest legacy_msg; + if (!hidl_struct_util::convertHidlNanConfigRequest_1_5ToLegacy(msg1, msg2, &legacy_msg)) { + return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); + } + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->nanConfigRequest(ifname_, cmd_id, legacy_msg); + return createWifiStatusFromLegacyError(legacy_status); +} + +} // namespace implementation +} // namespace V1_6 +} // namespace wifi +} // namespace hardware +} // namespace android diff --git a/wifi/1.6/default/wifi_nan_iface.h b/wifi/1.6/default/wifi_nan_iface.h new file mode 100644 index 0000000000..c445afc541 --- /dev/null +++ b/wifi/1.6/default/wifi_nan_iface.h @@ -0,0 +1,174 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef WIFI_NAN_IFACE_H_ +#define WIFI_NAN_IFACE_H_ + +#include <android-base/macros.h> +#include <android/hardware/wifi/1.5/IWifiNanIface.h> +#include <android/hardware/wifi/1.5/IWifiNanIfaceEventCallback.h> + +#include "hidl_callback_util.h" +#include "wifi_iface_util.h" +#include "wifi_legacy_hal.h" + +namespace android { +namespace hardware { +namespace wifi { +namespace V1_6 { +namespace implementation { +using namespace android::hardware::wifi::V1_0; +using namespace android::hardware::wifi::V1_2; + +/** + * HIDL interface object used to control a NAN Iface instance. + */ +class WifiNanIface : public V1_5::IWifiNanIface { + public: + WifiNanIface(const std::string& ifname, bool is_dedicated_iface, + const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal, + const std::weak_ptr<iface_util::WifiIfaceUtil> iface_util); + // Refer to |WifiChip::invalidate()|. + void invalidate(); + bool isValid(); + std::string getName(); + + // HIDL methods exposed. + Return<void> getName(getName_cb hidl_status_cb) override; + Return<void> getType(getType_cb hidl_status_cb) override; + Return<void> registerEventCallback(const sp<V1_0::IWifiNanIfaceEventCallback>& callback, + registerEventCallback_cb hidl_status_cb) override; + Return<void> getCapabilitiesRequest(uint16_t cmd_id, + getCapabilitiesRequest_cb hidl_status_cb) override; + Return<void> enableRequest(uint16_t cmd_id, const V1_0::NanEnableRequest& msg, + enableRequest_cb hidl_status_cb) override; + Return<void> configRequest(uint16_t cmd_id, const V1_0::NanConfigRequest& msg, + configRequest_cb hidl_status_cb) override; + Return<void> disableRequest(uint16_t cmd_id, disableRequest_cb hidl_status_cb) override; + Return<void> startPublishRequest(uint16_t cmd_id, const NanPublishRequest& msg, + startPublishRequest_cb hidl_status_cb) override; + Return<void> stopPublishRequest(uint16_t cmd_id, uint8_t sessionId, + stopPublishRequest_cb hidl_status_cb) override; + Return<void> startSubscribeRequest(uint16_t cmd_id, const NanSubscribeRequest& msg, + startSubscribeRequest_cb hidl_status_cb) override; + Return<void> stopSubscribeRequest(uint16_t cmd_id, uint8_t sessionId, + stopSubscribeRequest_cb hidl_status_cb) override; + Return<void> transmitFollowupRequest(uint16_t cmd_id, const NanTransmitFollowupRequest& msg, + transmitFollowupRequest_cb hidl_status_cb) override; + Return<void> createDataInterfaceRequest(uint16_t cmd_id, const hidl_string& iface_name, + createDataInterfaceRequest_cb hidl_status_cb) override; + Return<void> deleteDataInterfaceRequest(uint16_t cmd_id, const hidl_string& iface_name, + deleteDataInterfaceRequest_cb hidl_status_cb) override; + Return<void> initiateDataPathRequest(uint16_t cmd_id, const NanInitiateDataPathRequest& msg, + initiateDataPathRequest_cb hidl_status_cb) override; + Return<void> respondToDataPathIndicationRequest( + uint16_t cmd_id, const NanRespondToDataPathIndicationRequest& msg, + respondToDataPathIndicationRequest_cb hidl_status_cb) override; + Return<void> terminateDataPathRequest(uint16_t cmd_id, uint32_t ndpInstanceId, + terminateDataPathRequest_cb hidl_status_cb) override; + + Return<void> registerEventCallback_1_2(const sp<V1_2::IWifiNanIfaceEventCallback>& callback, + registerEventCallback_1_2_cb hidl_status_cb) override; + Return<void> enableRequest_1_2(uint16_t cmd_id, const V1_0::NanEnableRequest& msg1, + const V1_2::NanConfigRequestSupplemental& msg2, + enableRequest_1_2_cb hidl_status_cb) override; + Return<void> configRequest_1_2(uint16_t cmd_id, const V1_0::NanConfigRequest& msg1, + const V1_2::NanConfigRequestSupplemental& msg2, + configRequest_1_2_cb hidl_status_cb) override; + Return<void> enableRequest_1_4(uint16_t cmd_id, const V1_4::NanEnableRequest& msg1, + const V1_2::NanConfigRequestSupplemental& msg2, + enableRequest_1_4_cb hidl_status_cb) override; + Return<void> configRequest_1_4(uint16_t cmd_id, const V1_4::NanConfigRequest& msg1, + const V1_2::NanConfigRequestSupplemental& msg2, + configRequest_1_4_cb hidl_status_cb) override; + Return<void> registerEventCallback_1_5(const sp<V1_5::IWifiNanIfaceEventCallback>& callback, + registerEventCallback_1_5_cb hidl_status_cb) override; + Return<void> enableRequest_1_5(uint16_t cmd_id, const V1_4::NanEnableRequest& msg1, + const V1_5::NanConfigRequestSupplemental& msg2, + enableRequest_1_4_cb hidl_status_cb) override; + Return<void> configRequest_1_5(uint16_t cmd_id, const V1_4::NanConfigRequest& msg1, + const V1_5::NanConfigRequestSupplemental& msg2, + configRequest_1_4_cb hidl_status_cb) override; + Return<void> getCapabilitiesRequest_1_5(uint16_t cmd_id, + getCapabilitiesRequest_cb hidl_status_cb) override; + + private: + // Corresponding worker functions for the HIDL methods. + std::pair<WifiStatus, std::string> getNameInternal(); + std::pair<WifiStatus, IfaceType> getTypeInternal(); + WifiStatus registerEventCallbackInternal(const sp<V1_0::IWifiNanIfaceEventCallback>& callback); + WifiStatus getCapabilitiesRequestInternal(uint16_t cmd_id); + WifiStatus enableRequestInternal(uint16_t cmd_id, const V1_0::NanEnableRequest& msg); + WifiStatus configRequestInternal(uint16_t cmd_id, const V1_0::NanConfigRequest& msg); + WifiStatus disableRequestInternal(uint16_t cmd_id); + WifiStatus startPublishRequestInternal(uint16_t cmd_id, const NanPublishRequest& msg); + WifiStatus stopPublishRequestInternal(uint16_t cmd_id, uint8_t sessionId); + WifiStatus startSubscribeRequestInternal(uint16_t cmd_id, const NanSubscribeRequest& msg); + WifiStatus stopSubscribeRequestInternal(uint16_t cmd_id, uint8_t sessionId); + WifiStatus transmitFollowupRequestInternal(uint16_t cmd_id, + const NanTransmitFollowupRequest& msg); + WifiStatus createDataInterfaceRequestInternal(uint16_t cmd_id, const std::string& iface_name); + WifiStatus deleteDataInterfaceRequestInternal(uint16_t cmd_id, const std::string& iface_name); + WifiStatus initiateDataPathRequestInternal(uint16_t cmd_id, + const NanInitiateDataPathRequest& msg); + WifiStatus respondToDataPathIndicationRequestInternal( + uint16_t cmd_id, const NanRespondToDataPathIndicationRequest& msg); + WifiStatus terminateDataPathRequestInternal(uint16_t cmd_id, uint32_t ndpInstanceId); + + WifiStatus registerEventCallback_1_2Internal( + const sp<V1_2::IWifiNanIfaceEventCallback>& callback); + WifiStatus enableRequest_1_2Internal(uint16_t cmd_id, const V1_0::NanEnableRequest& msg1, + const V1_2::NanConfigRequestSupplemental& msg2); + WifiStatus configRequest_1_2Internal(uint16_t cmd_id, const V1_0::NanConfigRequest& msg, + const V1_2::NanConfigRequestSupplemental& msg2); + WifiStatus enableRequest_1_4Internal(uint16_t cmd_id, const V1_4::NanEnableRequest& msg1, + const V1_2::NanConfigRequestSupplemental& msg2); + WifiStatus configRequest_1_4Internal(uint16_t cmd_id, const V1_4::NanConfigRequest& msg, + const V1_2::NanConfigRequestSupplemental& msg2); + WifiStatus registerEventCallback_1_5Internal( + const sp<V1_5::IWifiNanIfaceEventCallback>& callback); + WifiStatus enableRequest_1_5Internal(uint16_t cmd_id, const V1_4::NanEnableRequest& msg1, + const V1_5::NanConfigRequestSupplemental& msg2); + WifiStatus configRequest_1_5Internal(uint16_t cmd_id, const V1_4::NanConfigRequest& msg, + const V1_5::NanConfigRequestSupplemental& msg2); + WifiStatus getCapabilitiesRequest_1_5Internal(uint16_t cmd_id); + + // all 1_0 and descendant callbacks + std::set<sp<V1_0::IWifiNanIfaceEventCallback>> getEventCallbacks(); + // all 1_2 and descendant callbacks + std::set<sp<V1_2::IWifiNanIfaceEventCallback>> getEventCallbacks_1_2(); + // all 1_5 and descendant callbacks + std::set<sp<V1_5::IWifiNanIfaceEventCallback>> getEventCallbacks_1_5(); + + std::string ifname_; + bool is_dedicated_iface_; + std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_; + std::weak_ptr<iface_util::WifiIfaceUtil> iface_util_; + bool is_valid_; + hidl_callback_util::HidlCallbackHandler<V1_0::IWifiNanIfaceEventCallback> event_cb_handler_; + hidl_callback_util::HidlCallbackHandler<V1_2::IWifiNanIfaceEventCallback> event_cb_handler_1_2_; + hidl_callback_util::HidlCallbackHandler<V1_5::IWifiNanIfaceEventCallback> event_cb_handler_1_5_; + + DISALLOW_COPY_AND_ASSIGN(WifiNanIface); +}; + +} // namespace implementation +} // namespace V1_6 +} // namespace wifi +} // namespace hardware +} // namespace android + +#endif // WIFI_NAN_IFACE_H_ diff --git a/wifi/1.5/default/wifi_p2p_iface.cpp b/wifi/1.6/default/wifi_p2p_iface.cpp index b8893da153..d4b1fcabf1 100644 --- a/wifi/1.5/default/wifi_p2p_iface.cpp +++ b/wifi/1.6/default/wifi_p2p_iface.cpp @@ -23,13 +23,12 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { using hidl_return_util::validateAndCall; -WifiP2pIface::WifiP2pIface( - const std::string& ifname, - const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal) +WifiP2pIface::WifiP2pIface(const std::string& ifname, + const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal) : ifname_(ifname), legacy_hal_(legacy_hal), is_valid_(true) {} void WifiP2pIface::invalidate() { @@ -37,9 +36,13 @@ void WifiP2pIface::invalidate() { is_valid_ = false; } -bool WifiP2pIface::isValid() { return is_valid_; } +bool WifiP2pIface::isValid() { + return is_valid_; +} -std::string WifiP2pIface::getName() { return ifname_; } +std::string WifiP2pIface::getName() { + return ifname_; +} Return<void> WifiP2pIface::getName(getName_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, @@ -60,7 +63,7 @@ std::pair<WifiStatus, IfaceType> WifiP2pIface::getTypeInternal() { } } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_p2p_iface.h b/wifi/1.6/default/wifi_p2p_iface.h index c1adc50278..00894437cf 100644 --- a/wifi/1.5/default/wifi_p2p_iface.h +++ b/wifi/1.6/default/wifi_p2p_iface.h @@ -25,7 +25,7 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { using namespace android::hardware::wifi::V1_0; @@ -33,7 +33,7 @@ using namespace android::hardware::wifi::V1_0; * HIDL interface object used to control a P2P Iface instance. */ class WifiP2pIface : public V1_0::IWifiP2pIface { - public: + public: WifiP2pIface(const std::string& ifname, const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal); // Refer to |WifiChip::invalidate()|. @@ -45,7 +45,7 @@ class WifiP2pIface : public V1_0::IWifiP2pIface { Return<void> getName(getName_cb hidl_status_cb) override; Return<void> getType(getType_cb hidl_status_cb) override; - private: + private: // Corresponding worker functions for the HIDL methods. std::pair<WifiStatus, std::string> getNameInternal(); std::pair<WifiStatus, IfaceType> getTypeInternal(); @@ -58,7 +58,7 @@ class WifiP2pIface : public V1_0::IWifiP2pIface { }; } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.6/default/wifi_rtt_controller.cpp b/wifi/1.6/default/wifi_rtt_controller.cpp new file mode 100644 index 0000000000..f5e1d5aafc --- /dev/null +++ b/wifi/1.6/default/wifi_rtt_controller.cpp @@ -0,0 +1,311 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <android-base/logging.h> + +#include "hidl_return_util.h" +#include "hidl_struct_util.h" +#include "wifi_rtt_controller.h" +#include "wifi_status_util.h" + +namespace android { +namespace hardware { +namespace wifi { +namespace V1_6 { +namespace implementation { +using hidl_return_util::validateAndCall; + +WifiRttController::WifiRttController(const std::string& iface_name, + const sp<IWifiIface>& bound_iface, + const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal) + : ifname_(iface_name), bound_iface_(bound_iface), legacy_hal_(legacy_hal), is_valid_(true) {} + +void WifiRttController::invalidate() { + legacy_hal_.reset(); + event_callbacks_.clear(); + is_valid_ = false; +} + +bool WifiRttController::isValid() { + return is_valid_; +} + +std::vector<sp<V1_4::IWifiRttControllerEventCallback>> WifiRttController::getEventCallbacks() { + return event_callbacks_; +} + +std::string WifiRttController::getIfaceName() { + return ifname_; +} + +Return<void> WifiRttController::getBoundIface(getBoundIface_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::getBoundIfaceInternal, hidl_status_cb); +} + +Return<void> WifiRttController::registerEventCallback( + const sp<V1_0::IWifiRttControllerEventCallback>& callback, + registerEventCallback_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::registerEventCallbackInternal, hidl_status_cb, + callback); +} + +Return<void> WifiRttController::rangeRequest(uint32_t cmd_id, + const hidl_vec<V1_0::RttConfig>& rtt_configs, + rangeRequest_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::rangeRequestInternal, hidl_status_cb, cmd_id, + rtt_configs); +} + +Return<void> WifiRttController::rangeCancel(uint32_t cmd_id, + const hidl_vec<hidl_array<uint8_t, 6>>& addrs, + rangeCancel_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::rangeCancelInternal, hidl_status_cb, cmd_id, addrs); +} + +Return<void> WifiRttController::getCapabilities(getCapabilities_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::getCapabilitiesInternal, hidl_status_cb); +} + +Return<void> WifiRttController::setLci(uint32_t cmd_id, const RttLciInformation& lci, + setLci_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::setLciInternal, hidl_status_cb, cmd_id, lci); +} + +Return<void> WifiRttController::setLcr(uint32_t cmd_id, const RttLcrInformation& lcr, + setLcr_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::setLcrInternal, hidl_status_cb, cmd_id, lcr); +} + +Return<void> WifiRttController::getResponderInfo(getResponderInfo_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::getResponderInfoInternal, hidl_status_cb); +} + +Return<void> WifiRttController::enableResponder(uint32_t cmd_id, + const WifiChannelInfo& channel_hint, + uint32_t max_duration_seconds, + const V1_0::RttResponder& info, + enableResponder_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::enableResponderInternal, hidl_status_cb, cmd_id, + channel_hint, max_duration_seconds, info); +} + +Return<void> WifiRttController::disableResponder(uint32_t cmd_id, + disableResponder_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::disableResponderInternal, hidl_status_cb, cmd_id); +} + +Return<void> WifiRttController::registerEventCallback_1_4( + const sp<V1_4::IWifiRttControllerEventCallback>& callback, + registerEventCallback_1_4_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::registerEventCallbackInternal_1_4, hidl_status_cb, + callback); +} + +Return<void> WifiRttController::rangeRequest_1_4(uint32_t cmd_id, + const hidl_vec<V1_4::RttConfig>& rtt_configs, + rangeRequest_1_4_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::rangeRequestInternal_1_4, hidl_status_cb, cmd_id, + rtt_configs); +} + +Return<void> WifiRttController::getCapabilities_1_4(getCapabilities_1_4_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::getCapabilitiesInternal_1_4, hidl_status_cb); +} + +Return<void> WifiRttController::getResponderInfo_1_4(getResponderInfo_1_4_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::getResponderInfoInternal_1_4, hidl_status_cb); +} + +Return<void> WifiRttController::enableResponder_1_4(uint32_t cmd_id, + const WifiChannelInfo& channel_hint, + uint32_t max_duration_seconds, + const V1_4::RttResponder& info, + enableResponder_1_4_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::enableResponderInternal_1_4, hidl_status_cb, cmd_id, + channel_hint, max_duration_seconds, info); +} + +std::pair<WifiStatus, sp<IWifiIface>> WifiRttController::getBoundIfaceInternal() { + return {createWifiStatus(WifiStatusCode::SUCCESS), bound_iface_}; +} + +WifiStatus WifiRttController::registerEventCallbackInternal( + const sp<V1_0::IWifiRttControllerEventCallback>& /* callback */) { + // Deprecated support for this api + return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); +} + +WifiStatus WifiRttController::rangeRequestInternal( + uint32_t /* cmd_id */, const std::vector<V1_0::RttConfig>& /* rtt_configs */) { + // Deprecated support for this api + return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); +} + +WifiStatus WifiRttController::rangeCancelInternal( + uint32_t cmd_id, const std::vector<hidl_array<uint8_t, 6>>& addrs) { + std::vector<std::array<uint8_t, 6>> legacy_addrs; + for (const auto& addr : addrs) { + legacy_addrs.push_back(addr); + } + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->cancelRttRangeRequest(ifname_, cmd_id, legacy_addrs); + return createWifiStatusFromLegacyError(legacy_status); +} + +std::pair<WifiStatus, V1_0::RttCapabilities> WifiRttController::getCapabilitiesInternal() { + // Deprecated support for this api + return {createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED), {}}; +} + +WifiStatus WifiRttController::setLciInternal(uint32_t cmd_id, const RttLciInformation& lci) { + legacy_hal::wifi_lci_information legacy_lci; + if (!hidl_struct_util::convertHidlRttLciInformationToLegacy(lci, &legacy_lci)) { + return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); + } + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->setRttLci(ifname_, cmd_id, legacy_lci); + return createWifiStatusFromLegacyError(legacy_status); +} + +WifiStatus WifiRttController::setLcrInternal(uint32_t cmd_id, const RttLcrInformation& lcr) { + legacy_hal::wifi_lcr_information legacy_lcr; + if (!hidl_struct_util::convertHidlRttLcrInformationToLegacy(lcr, &legacy_lcr)) { + return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); + } + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->setRttLcr(ifname_, cmd_id, legacy_lcr); + return createWifiStatusFromLegacyError(legacy_status); +} + +std::pair<WifiStatus, V1_0::RttResponder> WifiRttController::getResponderInfoInternal() { + // Deprecated support for this api + return {createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED), {}}; +} + +WifiStatus WifiRttController::enableResponderInternal(uint32_t /* cmd_id */, + const WifiChannelInfo& /* channel_hint */, + uint32_t /* max_duration_seconds */, + const V1_0::RttResponder& /* info */) { + // Deprecated support for this api + return {createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED)}; +} + +WifiStatus WifiRttController::disableResponderInternal(uint32_t cmd_id) { + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->disableRttResponder(ifname_, cmd_id); + return createWifiStatusFromLegacyError(legacy_status); +} + +WifiStatus WifiRttController::registerEventCallbackInternal_1_4( + const sp<V1_4::IWifiRttControllerEventCallback>& callback) { + // TODO(b/31632518): remove the callback when the client is destroyed + event_callbacks_.emplace_back(callback); + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +WifiStatus WifiRttController::rangeRequestInternal_1_4( + uint32_t cmd_id, const std::vector<V1_4::RttConfig>& rtt_configs) { + std::vector<legacy_hal::wifi_rtt_config> legacy_configs; + if (!hidl_struct_util::convertHidlVectorOfRttConfigToLegacy(rtt_configs, &legacy_configs)) { + return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); + } + android::wp<WifiRttController> weak_ptr_this(this); + const auto& on_results_callback = + [weak_ptr_this](legacy_hal::wifi_request_id id, + const std::vector<const legacy_hal::wifi_rtt_result*>& results) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + std::vector<V1_4::RttResult> hidl_results; + if (!hidl_struct_util::convertLegacyVectorOfRttResultToHidl(results, + &hidl_results)) { + LOG(ERROR) << "Failed to convert rtt results to HIDL structs"; + return; + } + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + callback->onResults_1_4(id, hidl_results); + } + }; + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->startRttRangeRequest( + ifname_, cmd_id, legacy_configs, on_results_callback); + return createWifiStatusFromLegacyError(legacy_status); +} + +std::pair<WifiStatus, V1_4::RttCapabilities> WifiRttController::getCapabilitiesInternal_1_4() { + legacy_hal::wifi_error legacy_status; + legacy_hal::wifi_rtt_capabilities legacy_caps; + std::tie(legacy_status, legacy_caps) = legacy_hal_.lock()->getRttCapabilities(ifname_); + if (legacy_status != legacy_hal::WIFI_SUCCESS) { + return {createWifiStatusFromLegacyError(legacy_status), {}}; + } + V1_4::RttCapabilities hidl_caps; + if (!hidl_struct_util::convertLegacyRttCapabilitiesToHidl(legacy_caps, &hidl_caps)) { + return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), {}}; + } + return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_caps}; +} + +std::pair<WifiStatus, V1_4::RttResponder> WifiRttController::getResponderInfoInternal_1_4() { + legacy_hal::wifi_error legacy_status; + legacy_hal::wifi_rtt_responder legacy_responder; + std::tie(legacy_status, legacy_responder) = legacy_hal_.lock()->getRttResponderInfo(ifname_); + if (legacy_status != legacy_hal::WIFI_SUCCESS) { + return {createWifiStatusFromLegacyError(legacy_status), {}}; + } + V1_4::RttResponder hidl_responder; + if (!hidl_struct_util::convertLegacyRttResponderToHidl(legacy_responder, &hidl_responder)) { + return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), {}}; + } + return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_responder}; +} + +WifiStatus WifiRttController::enableResponderInternal_1_4(uint32_t cmd_id, + const WifiChannelInfo& channel_hint, + uint32_t max_duration_seconds, + const V1_4::RttResponder& info) { + legacy_hal::wifi_channel_info legacy_channel_info; + if (!hidl_struct_util::convertHidlWifiChannelInfoToLegacy(channel_hint, &legacy_channel_info)) { + return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); + } + legacy_hal::wifi_rtt_responder legacy_responder; + if (!hidl_struct_util::convertHidlRttResponderToLegacy(info, &legacy_responder)) { + return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); + } + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->enableRttResponder( + ifname_, cmd_id, legacy_channel_info, max_duration_seconds, legacy_responder); + return createWifiStatusFromLegacyError(legacy_status); +} +} // namespace implementation +} // namespace V1_6 +} // namespace wifi +} // namespace hardware +} // namespace android diff --git a/wifi/1.5/default/wifi_rtt_controller.h b/wifi/1.6/default/wifi_rtt_controller.h index 9ac3e06fcc..b4a2116f2b 100644 --- a/wifi/1.5/default/wifi_rtt_controller.h +++ b/wifi/1.6/default/wifi_rtt_controller.h @@ -27,17 +27,16 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { /** * HIDL interface object used to control all RTT operations. */ class WifiRttController : public V1_4::IWifiRttController { - public: - WifiRttController( - const std::string& iface_name, const sp<IWifiIface>& bound_iface, - const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal); + public: + WifiRttController(const std::string& iface_name, const sp<IWifiIface>& bound_iface, + const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal); // Refer to |WifiChip::invalidate()|. void invalidate(); bool isValid(); @@ -46,14 +45,11 @@ class WifiRttController : public V1_4::IWifiRttController { // HIDL methods exposed. Return<void> getBoundIface(getBoundIface_cb hidl_status_cb) override; - Return<void> registerEventCallback( - const sp<V1_0::IWifiRttControllerEventCallback>& callback, - registerEventCallback_cb hidl_status_cb) override; - Return<void> rangeRequest(uint32_t cmd_id, - const hidl_vec<V1_0::RttConfig>& rtt_configs, + Return<void> registerEventCallback(const sp<V1_0::IWifiRttControllerEventCallback>& callback, + registerEventCallback_cb hidl_status_cb) override; + Return<void> rangeRequest(uint32_t cmd_id, const hidl_vec<V1_0::RttConfig>& rtt_configs, rangeRequest_cb hidl_status_cb) override; - Return<void> rangeCancel(uint32_t cmd_id, - const hidl_vec<hidl_array<uint8_t, 6>>& addrs, + Return<void> rangeCancel(uint32_t cmd_id, const hidl_vec<hidl_array<uint8_t, 6>>& addrs, rangeCancel_cb hidl_status_cb) override; Return<void> getCapabilities(getCapabilities_cb hidl_status_cb) override; Return<void> setLci(uint32_t cmd_id, const RttLciInformation& lci, @@ -61,54 +57,45 @@ class WifiRttController : public V1_4::IWifiRttController { Return<void> setLcr(uint32_t cmd_id, const RttLcrInformation& lcr, setLcr_cb hidl_status_cb) override; Return<void> getResponderInfo(getResponderInfo_cb hidl_status_cb) override; - Return<void> enableResponder(uint32_t cmd_id, - const WifiChannelInfo& channel_hint, - uint32_t max_duration_seconds, - const V1_0::RttResponder& info, + Return<void> enableResponder(uint32_t cmd_id, const WifiChannelInfo& channel_hint, + uint32_t max_duration_seconds, const V1_0::RttResponder& info, enableResponder_cb hidl_status_cb) override; - Return<void> disableResponder(uint32_t cmd_id, - disableResponder_cb hidl_status_cb) override; + Return<void> disableResponder(uint32_t cmd_id, disableResponder_cb hidl_status_cb) override; Return<void> registerEventCallback_1_4( - const sp<V1_4::IWifiRttControllerEventCallback>& callback, - registerEventCallback_1_4_cb hidl_status_cb) override; - Return<void> rangeRequest_1_4(uint32_t cmd_id, - const hidl_vec<V1_4::RttConfig>& rtt_configs, + const sp<V1_4::IWifiRttControllerEventCallback>& callback, + registerEventCallback_1_4_cb hidl_status_cb) override; + Return<void> rangeRequest_1_4(uint32_t cmd_id, const hidl_vec<V1_4::RttConfig>& rtt_configs, rangeRequest_1_4_cb hidl_status_cb) override; - Return<void> getCapabilities_1_4( - getCapabilities_1_4_cb hidl_status_cb) override; - Return<void> getResponderInfo_1_4( - getResponderInfo_1_4_cb hidl_status_cb) override; - Return<void> enableResponder_1_4( - uint32_t cmd_id, const WifiChannelInfo& channel_hint, - uint32_t max_duration_seconds, const V1_4::RttResponder& info, - enableResponder_1_4_cb hidl_status_cb) override; + Return<void> getCapabilities_1_4(getCapabilities_1_4_cb hidl_status_cb) override; + Return<void> getResponderInfo_1_4(getResponderInfo_1_4_cb hidl_status_cb) override; + Return<void> enableResponder_1_4(uint32_t cmd_id, const WifiChannelInfo& channel_hint, + uint32_t max_duration_seconds, const V1_4::RttResponder& info, + enableResponder_1_4_cb hidl_status_cb) override; - private: + private: // Corresponding worker functions for the HIDL methods. std::pair<WifiStatus, sp<IWifiIface>> getBoundIfaceInternal(); WifiStatus registerEventCallbackInternal( - const sp<V1_0::IWifiRttControllerEventCallback>& callback); - WifiStatus rangeRequestInternal( - uint32_t cmd_id, const std::vector<V1_0::RttConfig>& rtt_configs); - WifiStatus rangeCancelInternal( - uint32_t cmd_id, const std::vector<hidl_array<uint8_t, 6>>& addrs); + const sp<V1_0::IWifiRttControllerEventCallback>& callback); + WifiStatus rangeRequestInternal(uint32_t cmd_id, + const std::vector<V1_0::RttConfig>& rtt_configs); + WifiStatus rangeCancelInternal(uint32_t cmd_id, + const std::vector<hidl_array<uint8_t, 6>>& addrs); std::pair<WifiStatus, V1_0::RttCapabilities> getCapabilitiesInternal(); WifiStatus setLciInternal(uint32_t cmd_id, const RttLciInformation& lci); WifiStatus setLcrInternal(uint32_t cmd_id, const RttLcrInformation& lcr); std::pair<WifiStatus, V1_0::RttResponder> getResponderInfoInternal(); - WifiStatus enableResponderInternal(uint32_t cmd_id, - const WifiChannelInfo& channel_hint, + WifiStatus enableResponderInternal(uint32_t cmd_id, const WifiChannelInfo& channel_hint, uint32_t max_duration_seconds, const V1_0::RttResponder& info); WifiStatus disableResponderInternal(uint32_t cmd_id); WifiStatus registerEventCallbackInternal_1_4( - const sp<V1_4::IWifiRttControllerEventCallback>& callback); - WifiStatus rangeRequestInternal_1_4( - uint32_t cmd_id, const std::vector<V1_4::RttConfig>& rtt_configs); + const sp<V1_4::IWifiRttControllerEventCallback>& callback); + WifiStatus rangeRequestInternal_1_4(uint32_t cmd_id, + const std::vector<V1_4::RttConfig>& rtt_configs); std::pair<WifiStatus, V1_4::RttCapabilities> getCapabilitiesInternal_1_4(); std::pair<WifiStatus, V1_4::RttResponder> getResponderInfoInternal_1_4(); - WifiStatus enableResponderInternal_1_4(uint32_t cmd_id, - const WifiChannelInfo& channel_hint, + WifiStatus enableResponderInternal_1_4(uint32_t cmd_id, const WifiChannelInfo& channel_hint, uint32_t max_duration_seconds, const V1_4::RttResponder& info); @@ -122,7 +109,7 @@ class WifiRttController : public V1_4::IWifiRttController { }; } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_sta_iface.cpp b/wifi/1.6/default/wifi_sta_iface.cpp index 92c9fe4392..f852d36689 100644 --- a/wifi/1.5/default/wifi_sta_iface.cpp +++ b/wifi/1.6/default/wifi_sta_iface.cpp @@ -24,24 +24,18 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { using hidl_return_util::validateAndCall; -WifiStaIface::WifiStaIface( - const std::string& ifname, - const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal, - const std::weak_ptr<iface_util::WifiIfaceUtil> iface_util) - : ifname_(ifname), - legacy_hal_(legacy_hal), - iface_util_(iface_util), - is_valid_(true) { +WifiStaIface::WifiStaIface(const std::string& ifname, + const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal, + const std::weak_ptr<iface_util::WifiIfaceUtil> iface_util) + : ifname_(ifname), legacy_hal_(legacy_hal), iface_util_(iface_util), is_valid_(true) { // Turn on DFS channel usage for STA iface. - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->setDfsFlag(ifname_, true); + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->setDfsFlag(ifname_, true); if (legacy_status != legacy_hal::WIFI_SUCCESS) { - LOG(ERROR) - << "Failed to set DFS flag; DFS channels may be unavailable."; + LOG(ERROR) << "Failed to set DFS flag; DFS channels may be unavailable."; } } @@ -51,9 +45,13 @@ void WifiStaIface::invalidate() { is_valid_ = false; } -bool WifiStaIface::isValid() { return is_valid_; } +bool WifiStaIface::isValid() { + return is_valid_; +} -std::string WifiStaIface::getName() { return ifname_; } +std::string WifiStaIface::getName() { + return ifname_; +} std::set<sp<IWifiStaIfaceEventCallback>> WifiStaIface::getEventCallbacks() { return event_cb_handler_.getCallbacks(); @@ -69,215 +67,177 @@ Return<void> WifiStaIface::getType(getType_cb hidl_status_cb) { &WifiStaIface::getTypeInternal, hidl_status_cb); } -Return<void> WifiStaIface::registerEventCallback( - const sp<IWifiStaIfaceEventCallback>& callback, - registerEventCallback_cb hidl_status_cb) { +Return<void> WifiStaIface::registerEventCallback(const sp<IWifiStaIfaceEventCallback>& callback, + registerEventCallback_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::registerEventCallbackInternal, - hidl_status_cb, callback); + &WifiStaIface::registerEventCallbackInternal, hidl_status_cb, callback); } Return<void> WifiStaIface::getCapabilities(getCapabilities_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::getCapabilitiesInternal, - hidl_status_cb); + &WifiStaIface::getCapabilitiesInternal, hidl_status_cb); } Return<void> WifiStaIface::getApfPacketFilterCapabilities( - getApfPacketFilterCapabilities_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::getApfPacketFilterCapabilitiesInternal, hidl_status_cb); + getApfPacketFilterCapabilities_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiStaIface::getApfPacketFilterCapabilitiesInternal, hidl_status_cb); } -Return<void> WifiStaIface::installApfPacketFilter( - uint32_t cmd_id, const hidl_vec<uint8_t>& program, - installApfPacketFilter_cb hidl_status_cb) { +Return<void> WifiStaIface::installApfPacketFilter(uint32_t cmd_id, const hidl_vec<uint8_t>& program, + installApfPacketFilter_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::installApfPacketFilterInternal, - hidl_status_cb, cmd_id, program); + &WifiStaIface::installApfPacketFilterInternal, hidl_status_cb, cmd_id, + program); } -Return<void> WifiStaIface::readApfPacketFilterData( - readApfPacketFilterData_cb hidl_status_cb) { +Return<void> WifiStaIface::readApfPacketFilterData(readApfPacketFilterData_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::readApfPacketFilterDataInternal, - hidl_status_cb); + &WifiStaIface::readApfPacketFilterDataInternal, hidl_status_cb); } Return<void> WifiStaIface::getBackgroundScanCapabilities( - getBackgroundScanCapabilities_cb hidl_status_cb) { + getBackgroundScanCapabilities_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::getBackgroundScanCapabilitiesInternal, - hidl_status_cb); + &WifiStaIface::getBackgroundScanCapabilitiesInternal, hidl_status_cb); } Return<void> WifiStaIface::getValidFrequenciesForBand( - V1_0::WifiBand band, getValidFrequenciesForBand_cb hidl_status_cb) { + V1_0::WifiBand band, getValidFrequenciesForBand_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::getValidFrequenciesForBandInternal, - hidl_status_cb, band); + &WifiStaIface::getValidFrequenciesForBandInternal, hidl_status_cb, band); } -Return<void> WifiStaIface::startBackgroundScan( - uint32_t cmd_id, const StaBackgroundScanParameters& params, - startBackgroundScan_cb hidl_status_cb) { +Return<void> WifiStaIface::startBackgroundScan(uint32_t cmd_id, + const StaBackgroundScanParameters& params, + startBackgroundScan_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::startBackgroundScanInternal, - hidl_status_cb, cmd_id, params); + &WifiStaIface::startBackgroundScanInternal, hidl_status_cb, cmd_id, + params); } -Return<void> WifiStaIface::stopBackgroundScan( - uint32_t cmd_id, stopBackgroundScan_cb hidl_status_cb) { +Return<void> WifiStaIface::stopBackgroundScan(uint32_t cmd_id, + stopBackgroundScan_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::stopBackgroundScanInternal, - hidl_status_cb, cmd_id); + &WifiStaIface::stopBackgroundScanInternal, hidl_status_cb, cmd_id); } Return<void> WifiStaIface::enableLinkLayerStatsCollection( - bool debug, enableLinkLayerStatsCollection_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::enableLinkLayerStatsCollectionInternal, hidl_status_cb, - debug); + bool debug, enableLinkLayerStatsCollection_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiStaIface::enableLinkLayerStatsCollectionInternal, hidl_status_cb, + debug); } Return<void> WifiStaIface::disableLinkLayerStatsCollection( - disableLinkLayerStatsCollection_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::disableLinkLayerStatsCollectionInternal, hidl_status_cb); + disableLinkLayerStatsCollection_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiStaIface::disableLinkLayerStatsCollectionInternal, hidl_status_cb); } -Return<void> WifiStaIface::getLinkLayerStats( - getLinkLayerStats_cb hidl_status_cb) { +Return<void> WifiStaIface::getLinkLayerStats(getLinkLayerStats_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::getLinkLayerStatsInternal, - hidl_status_cb); + &WifiStaIface::getLinkLayerStatsInternal, hidl_status_cb); } -Return<void> WifiStaIface::getLinkLayerStats_1_3( - getLinkLayerStats_1_3_cb hidl_status_cb) { +Return<void> WifiStaIface::getLinkLayerStats_1_3(getLinkLayerStats_1_3_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::getLinkLayerStatsInternal_1_3, - hidl_status_cb); + &WifiStaIface::getLinkLayerStatsInternal_1_3, hidl_status_cb); } -Return<void> WifiStaIface::getLinkLayerStats_1_5( - getLinkLayerStats_1_5_cb hidl_status_cb) { +Return<void> WifiStaIface::getLinkLayerStats_1_5(getLinkLayerStats_1_5_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::getLinkLayerStatsInternal_1_5, - hidl_status_cb); + &WifiStaIface::getLinkLayerStatsInternal_1_5, hidl_status_cb); } -Return<void> WifiStaIface::startRssiMonitoring( - uint32_t cmd_id, int32_t max_rssi, int32_t min_rssi, - startRssiMonitoring_cb hidl_status_cb) { +Return<void> WifiStaIface::startRssiMonitoring(uint32_t cmd_id, int32_t max_rssi, int32_t min_rssi, + startRssiMonitoring_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::startRssiMonitoringInternal, - hidl_status_cb, cmd_id, max_rssi, min_rssi); + &WifiStaIface::startRssiMonitoringInternal, hidl_status_cb, cmd_id, + max_rssi, min_rssi); } -Return<void> WifiStaIface::stopRssiMonitoring( - uint32_t cmd_id, stopRssiMonitoring_cb hidl_status_cb) { +Return<void> WifiStaIface::stopRssiMonitoring(uint32_t cmd_id, + stopRssiMonitoring_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::stopRssiMonitoringInternal, - hidl_status_cb, cmd_id); + &WifiStaIface::stopRssiMonitoringInternal, hidl_status_cb, cmd_id); } -Return<void> WifiStaIface::getRoamingCapabilities( - getRoamingCapabilities_cb hidl_status_cb) { +Return<void> WifiStaIface::getRoamingCapabilities(getRoamingCapabilities_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::getRoamingCapabilitiesInternal, - hidl_status_cb); + &WifiStaIface::getRoamingCapabilitiesInternal, hidl_status_cb); } -Return<void> WifiStaIface::configureRoaming( - const StaRoamingConfig& config, configureRoaming_cb hidl_status_cb) { +Return<void> WifiStaIface::configureRoaming(const StaRoamingConfig& config, + configureRoaming_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::configureRoamingInternal, - hidl_status_cb, config); + &WifiStaIface::configureRoamingInternal, hidl_status_cb, config); } Return<void> WifiStaIface::setRoamingState(StaRoamingState state, setRoamingState_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::setRoamingStateInternal, - hidl_status_cb, state); + &WifiStaIface::setRoamingStateInternal, hidl_status_cb, state); } -Return<void> WifiStaIface::enableNdOffload(bool enable, - enableNdOffload_cb hidl_status_cb) { +Return<void> WifiStaIface::enableNdOffload(bool enable, enableNdOffload_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::enableNdOffloadInternal, - hidl_status_cb, enable); + &WifiStaIface::enableNdOffloadInternal, hidl_status_cb, enable); } Return<void> WifiStaIface::startSendingKeepAlivePackets( - uint32_t cmd_id, const hidl_vec<uint8_t>& ip_packet_data, - uint16_t ether_type, const hidl_array<uint8_t, 6>& src_address, - const hidl_array<uint8_t, 6>& dst_address, uint32_t period_in_ms, - startSendingKeepAlivePackets_cb hidl_status_cb) { + uint32_t cmd_id, const hidl_vec<uint8_t>& ip_packet_data, uint16_t ether_type, + const hidl_array<uint8_t, 6>& src_address, const hidl_array<uint8_t, 6>& dst_address, + uint32_t period_in_ms, startSendingKeepAlivePackets_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::startSendingKeepAlivePacketsInternal, - hidl_status_cb, cmd_id, ip_packet_data, ether_type, - src_address, dst_address, period_in_ms); + &WifiStaIface::startSendingKeepAlivePacketsInternal, hidl_status_cb, + cmd_id, ip_packet_data, ether_type, src_address, dst_address, + period_in_ms); } Return<void> WifiStaIface::stopSendingKeepAlivePackets( - uint32_t cmd_id, stopSendingKeepAlivePackets_cb hidl_status_cb) { + uint32_t cmd_id, stopSendingKeepAlivePackets_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::stopSendingKeepAlivePacketsInternal, - hidl_status_cb, cmd_id); + &WifiStaIface::stopSendingKeepAlivePacketsInternal, hidl_status_cb, + cmd_id); } -Return<void> WifiStaIface::setScanningMacOui( - const hidl_array<uint8_t, 3>& oui, setScanningMacOui_cb hidl_status_cb) { +Return<void> WifiStaIface::setScanningMacOui(const hidl_array<uint8_t, 3>& oui, + setScanningMacOui_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::setScanningMacOuiInternal, - hidl_status_cb, oui); + &WifiStaIface::setScanningMacOuiInternal, hidl_status_cb, oui); } Return<void> WifiStaIface::startDebugPacketFateMonitoring( - startDebugPacketFateMonitoring_cb hidl_status_cb) { - return validateAndCall( - this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::startDebugPacketFateMonitoringInternal, hidl_status_cb); + startDebugPacketFateMonitoring_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiStaIface::startDebugPacketFateMonitoringInternal, hidl_status_cb); } -Return<void> WifiStaIface::getDebugTxPacketFates( - getDebugTxPacketFates_cb hidl_status_cb) { +Return<void> WifiStaIface::getDebugTxPacketFates(getDebugTxPacketFates_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::getDebugTxPacketFatesInternal, - hidl_status_cb); + &WifiStaIface::getDebugTxPacketFatesInternal, hidl_status_cb); } -Return<void> WifiStaIface::getDebugRxPacketFates( - getDebugRxPacketFates_cb hidl_status_cb) { +Return<void> WifiStaIface::getDebugRxPacketFates(getDebugRxPacketFates_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::getDebugRxPacketFatesInternal, - hidl_status_cb); + &WifiStaIface::getDebugRxPacketFatesInternal, 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); + &WifiStaIface::setMacAddressInternal, hidl_status_cb, mac); } -Return<void> WifiStaIface::getFactoryMacAddress( - getFactoryMacAddress_cb hidl_status_cb) { +Return<void> WifiStaIface::getFactoryMacAddress(getFactoryMacAddress_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::getFactoryMacAddressInternal, - hidl_status_cb); + &WifiStaIface::getFactoryMacAddressInternal, hidl_status_cb); } -Return<void> WifiStaIface::setScanMode(bool enable, - setScanMode_cb hidl_status_cb) { +Return<void> WifiStaIface::setScanMode(bool enable, setScanMode_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, - &WifiStaIface::setScanModeInternal, hidl_status_cb, - enable); + &WifiStaIface::setScanModeInternal, hidl_status_cb, enable); } std::pair<WifiStatus, std::string> WifiStaIface::getNameInternal() { @@ -289,7 +249,7 @@ std::pair<WifiStatus, IfaceType> WifiStaIface::getTypeInternal() { } WifiStatus WifiStaIface::registerEventCallbackInternal( - const sp<IWifiStaIfaceEventCallback>& callback) { + const sp<IWifiStaIfaceEventCallback>& callback) { if (!event_cb_handler_.addCallback(callback)) { return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); } @@ -300,20 +260,20 @@ std::pair<WifiStatus, uint32_t> WifiStaIface::getCapabilitiesInternal() { legacy_hal::wifi_error legacy_status; uint64_t legacy_feature_set; std::tie(legacy_status, legacy_feature_set) = - legacy_hal_.lock()->getSupportedFeatureSet(ifname_); + legacy_hal_.lock()->getSupportedFeatureSet(ifname_); if (legacy_status != legacy_hal::WIFI_SUCCESS) { return {createWifiStatusFromLegacyError(legacy_status), 0}; } uint32_t legacy_logger_feature_set; std::tie(legacy_status, legacy_logger_feature_set) = - legacy_hal_.lock()->getLoggerSupportedFeatureSet(ifname_); + legacy_hal_.lock()->getLoggerSupportedFeatureSet(ifname_); if (legacy_status != legacy_hal::WIFI_SUCCESS) { // some devices don't support querying logger feature set legacy_logger_feature_set = 0; } uint32_t hidl_caps; if (!hidl_struct_util::convertLegacyFeaturesToHidlStaCapabilities( - legacy_feature_set, legacy_logger_feature_set, &hidl_caps)) { + legacy_feature_set, legacy_logger_feature_set, &hidl_caps)) { return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), 0}; } return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_caps}; @@ -323,30 +283,25 @@ std::pair<WifiStatus, StaApfPacketFilterCapabilities> WifiStaIface::getApfPacketFilterCapabilitiesInternal() { legacy_hal::wifi_error legacy_status; legacy_hal::PacketFilterCapabilities legacy_caps; - std::tie(legacy_status, legacy_caps) = - legacy_hal_.lock()->getPacketFilterCapabilities(ifname_); + std::tie(legacy_status, legacy_caps) = legacy_hal_.lock()->getPacketFilterCapabilities(ifname_); if (legacy_status != legacy_hal::WIFI_SUCCESS) { return {createWifiStatusFromLegacyError(legacy_status), {}}; } StaApfPacketFilterCapabilities hidl_caps; - if (!hidl_struct_util::convertLegacyApfCapabilitiesToHidl(legacy_caps, - &hidl_caps)) { + if (!hidl_struct_util::convertLegacyApfCapabilitiesToHidl(legacy_caps, &hidl_caps)) { return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), {}}; } return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_caps}; } -WifiStatus WifiStaIface::installApfPacketFilterInternal( - uint32_t /* cmd_id */, const std::vector<uint8_t>& program) { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->setPacketFilter(ifname_, program); +WifiStatus WifiStaIface::installApfPacketFilterInternal(uint32_t /* cmd_id */, + const std::vector<uint8_t>& program) { + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->setPacketFilter(ifname_, program); return createWifiStatusFromLegacyError(legacy_status); } -std::pair<WifiStatus, std::vector<uint8_t>> -WifiStaIface::readApfPacketFilterDataInternal() { - const std::pair<legacy_hal::wifi_error, std::vector<uint8_t>> - legacy_status_and_data = +std::pair<WifiStatus, std::vector<uint8_t>> WifiStaIface::readApfPacketFilterDataInternal() { + const std::pair<legacy_hal::wifi_error, std::vector<uint8_t>> legacy_status_and_data = legacy_hal_.lock()->readApfPacketFilterData(ifname_); return {createWifiStatusFromLegacyError(legacy_status_and_data.first), std::move(legacy_status_and_data.second)}; @@ -356,14 +311,12 @@ std::pair<WifiStatus, StaBackgroundScanCapabilities> WifiStaIface::getBackgroundScanCapabilitiesInternal() { legacy_hal::wifi_error legacy_status; legacy_hal::wifi_gscan_capabilities legacy_caps; - std::tie(legacy_status, legacy_caps) = - legacy_hal_.lock()->getGscanCapabilities(ifname_); + std::tie(legacy_status, legacy_caps) = legacy_hal_.lock()->getGscanCapabilities(ifname_); if (legacy_status != legacy_hal::WIFI_SUCCESS) { return {createWifiStatusFromLegacyError(legacy_status), {}}; } StaBackgroundScanCapabilities hidl_caps; - if (!hidl_struct_util::convertLegacyGscanCapabilitiesToHidl(legacy_caps, - &hidl_caps)) { + if (!hidl_struct_util::convertLegacyGscanCapabilitiesToHidl(legacy_caps, &hidl_caps)) { return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), {}}; } return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_caps}; @@ -371,240 +324,201 @@ WifiStaIface::getBackgroundScanCapabilitiesInternal() { std::pair<WifiStatus, std::vector<WifiChannelInMhz>> WifiStaIface::getValidFrequenciesForBandInternal(V1_0::WifiBand band) { - static_assert(sizeof(WifiChannelInMhz) == sizeof(uint32_t), - "Size mismatch"); + static_assert(sizeof(WifiChannelInMhz) == sizeof(uint32_t), "Size mismatch"); legacy_hal::wifi_error legacy_status; std::vector<uint32_t> valid_frequencies; - std::tie(legacy_status, valid_frequencies) = - legacy_hal_.lock()->getValidFrequenciesForBand( + std::tie(legacy_status, valid_frequencies) = legacy_hal_.lock()->getValidFrequenciesForBand( ifname_, hidl_struct_util::convertHidlWifiBandToLegacy(band)); return {createWifiStatusFromLegacyError(legacy_status), valid_frequencies}; } -WifiStatus WifiStaIface::startBackgroundScanInternal( - uint32_t cmd_id, const StaBackgroundScanParameters& params) { +WifiStatus WifiStaIface::startBackgroundScanInternal(uint32_t cmd_id, + const StaBackgroundScanParameters& params) { legacy_hal::wifi_scan_cmd_params legacy_params; - if (!hidl_struct_util::convertHidlGscanParamsToLegacy(params, - &legacy_params)) { + if (!hidl_struct_util::convertHidlGscanParamsToLegacy(params, &legacy_params)) { return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); } android::wp<WifiStaIface> weak_ptr_this(this); - const auto& on_failure_callback = - [weak_ptr_this](legacy_hal::wifi_request_id id) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback->onBackgroundScanFailure(id).isOk()) { - LOG(ERROR) - << "Failed to invoke onBackgroundScanFailure callback"; - } + const auto& on_failure_callback = [weak_ptr_this](legacy_hal::wifi_request_id id) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->onBackgroundScanFailure(id).isOk()) { + LOG(ERROR) << "Failed to invoke onBackgroundScanFailure callback"; } - }; + } + }; const auto& on_results_callback = - [weak_ptr_this]( - legacy_hal::wifi_request_id id, - const std::vector<legacy_hal::wifi_cached_scan_results>& results) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - std::vector<StaScanData> hidl_scan_datas; - if (!hidl_struct_util:: - convertLegacyVectorOfCachedGscanResultsToHidl( - results, &hidl_scan_datas)) { - LOG(ERROR) << "Failed to convert scan results to HIDL structs"; - return; - } - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback->onBackgroundScanResults(id, hidl_scan_datas) - .isOk()) { - LOG(ERROR) - << "Failed to invoke onBackgroundScanResults callback"; + [weak_ptr_this](legacy_hal::wifi_request_id id, + const std::vector<legacy_hal::wifi_cached_scan_results>& results) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; } - } - }; + std::vector<StaScanData> hidl_scan_datas; + if (!hidl_struct_util::convertLegacyVectorOfCachedGscanResultsToHidl( + results, &hidl_scan_datas)) { + LOG(ERROR) << "Failed to convert scan results to HIDL structs"; + return; + } + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->onBackgroundScanResults(id, hidl_scan_datas).isOk()) { + LOG(ERROR) << "Failed to invoke onBackgroundScanResults callback"; + } + } + }; const auto& on_full_result_callback = [weak_ptr_this]( - legacy_hal::wifi_request_id id, - const legacy_hal:: - wifi_scan_result* result, - uint32_t buckets_scanned) { + legacy_hal::wifi_request_id id, + const legacy_hal::wifi_scan_result* result, + uint32_t buckets_scanned) { const auto shared_ptr_this = weak_ptr_this.promote(); if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { LOG(ERROR) << "Callback invoked on an invalid object"; return; } StaScanResult hidl_scan_result; - if (!hidl_struct_util::convertLegacyGscanResultToHidl( - *result, true, &hidl_scan_result)) { + if (!hidl_struct_util::convertLegacyGscanResultToHidl(*result, true, &hidl_scan_result)) { LOG(ERROR) << "Failed to convert full scan results to HIDL structs"; return; } for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback - ->onBackgroundFullScanResult(id, buckets_scanned, - hidl_scan_result) - .isOk()) { - LOG(ERROR) - << "Failed to invoke onBackgroundFullScanResult callback"; + if (!callback->onBackgroundFullScanResult(id, buckets_scanned, hidl_scan_result) + .isOk()) { + LOG(ERROR) << "Failed to invoke onBackgroundFullScanResult callback"; } } }; - legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->startGscan( - ifname_, cmd_id, legacy_params, on_failure_callback, - on_results_callback, on_full_result_callback); + legacy_hal::wifi_error legacy_status = + legacy_hal_.lock()->startGscan(ifname_, cmd_id, legacy_params, on_failure_callback, + on_results_callback, on_full_result_callback); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::stopBackgroundScanInternal(uint32_t cmd_id) { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->stopGscan(ifname_, cmd_id); + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->stopGscan(ifname_, cmd_id); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::enableLinkLayerStatsCollectionInternal(bool debug) { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->enableLinkLayerStats(ifname_, debug); + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->enableLinkLayerStats(ifname_, debug); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::disableLinkLayerStatsCollectionInternal() { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->disableLinkLayerStats(ifname_); + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->disableLinkLayerStats(ifname_); return createWifiStatusFromLegacyError(legacy_status); } -std::pair<WifiStatus, V1_0::StaLinkLayerStats> -WifiStaIface::getLinkLayerStatsInternal() { +std::pair<WifiStatus, V1_0::StaLinkLayerStats> WifiStaIface::getLinkLayerStatsInternal() { return {createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED), {}}; } -std::pair<WifiStatus, V1_3::StaLinkLayerStats> -WifiStaIface::getLinkLayerStatsInternal_1_3() { +std::pair<WifiStatus, V1_3::StaLinkLayerStats> WifiStaIface::getLinkLayerStatsInternal_1_3() { return {createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED), {}}; } -std::pair<WifiStatus, V1_5::StaLinkLayerStats> -WifiStaIface::getLinkLayerStatsInternal_1_5() { +std::pair<WifiStatus, V1_5::StaLinkLayerStats> WifiStaIface::getLinkLayerStatsInternal_1_5() { legacy_hal::wifi_error legacy_status; legacy_hal::LinkLayerStats legacy_stats; - std::tie(legacy_status, legacy_stats) = - legacy_hal_.lock()->getLinkLayerStats(ifname_); + std::tie(legacy_status, legacy_stats) = legacy_hal_.lock()->getLinkLayerStats(ifname_); if (legacy_status != legacy_hal::WIFI_SUCCESS) { return {createWifiStatusFromLegacyError(legacy_status), {}}; } V1_5::StaLinkLayerStats hidl_stats; - if (!hidl_struct_util::convertLegacyLinkLayerStatsToHidl(legacy_stats, - &hidl_stats)) { + if (!hidl_struct_util::convertLegacyLinkLayerStatsToHidl(legacy_stats, &hidl_stats)) { return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), {}}; } return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_stats}; } -WifiStatus WifiStaIface::startRssiMonitoringInternal(uint32_t cmd_id, - int32_t max_rssi, +WifiStatus WifiStaIface::startRssiMonitoringInternal(uint32_t cmd_id, int32_t max_rssi, int32_t min_rssi) { android::wp<WifiStaIface> weak_ptr_this(this); - const auto& on_threshold_breached_callback = - [weak_ptr_this](legacy_hal::wifi_request_id id, - std::array<uint8_t, 6> bssid, int8_t rssi) { - const auto shared_ptr_this = weak_ptr_this.promote(); - if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { - LOG(ERROR) << "Callback invoked on an invalid object"; - return; - } - for (const auto& callback : shared_ptr_this->getEventCallbacks()) { - if (!callback->onRssiThresholdBreached(id, bssid, rssi) - .isOk()) { - LOG(ERROR) - << "Failed to invoke onRssiThresholdBreached callback"; - } + const auto& on_threshold_breached_callback = [weak_ptr_this](legacy_hal::wifi_request_id id, + std::array<uint8_t, 6> bssid, + int8_t rssi) { + const auto shared_ptr_this = weak_ptr_this.promote(); + if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) { + LOG(ERROR) << "Callback invoked on an invalid object"; + return; + } + for (const auto& callback : shared_ptr_this->getEventCallbacks()) { + if (!callback->onRssiThresholdBreached(id, bssid, rssi).isOk()) { + LOG(ERROR) << "Failed to invoke onRssiThresholdBreached callback"; } - }; - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->startRssiMonitoring(ifname_, cmd_id, max_rssi, - min_rssi, - on_threshold_breached_callback); + } + }; + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->startRssiMonitoring( + ifname_, cmd_id, max_rssi, min_rssi, on_threshold_breached_callback); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::stopRssiMonitoringInternal(uint32_t cmd_id) { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->stopRssiMonitoring(ifname_, cmd_id); + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->stopRssiMonitoring(ifname_, cmd_id); return createWifiStatusFromLegacyError(legacy_status); } -std::pair<WifiStatus, StaRoamingCapabilities> -WifiStaIface::getRoamingCapabilitiesInternal() { +std::pair<WifiStatus, StaRoamingCapabilities> WifiStaIface::getRoamingCapabilitiesInternal() { legacy_hal::wifi_error legacy_status; legacy_hal::wifi_roaming_capabilities legacy_caps; - std::tie(legacy_status, legacy_caps) = - legacy_hal_.lock()->getRoamingCapabilities(ifname_); + std::tie(legacy_status, legacy_caps) = legacy_hal_.lock()->getRoamingCapabilities(ifname_); if (legacy_status != legacy_hal::WIFI_SUCCESS) { return {createWifiStatusFromLegacyError(legacy_status), {}}; } StaRoamingCapabilities hidl_caps; - if (!hidl_struct_util::convertLegacyRoamingCapabilitiesToHidl(legacy_caps, - &hidl_caps)) { + if (!hidl_struct_util::convertLegacyRoamingCapabilitiesToHidl(legacy_caps, &hidl_caps)) { return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), {}}; } return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_caps}; } -WifiStatus WifiStaIface::configureRoamingInternal( - const StaRoamingConfig& config) { +WifiStatus WifiStaIface::configureRoamingInternal(const StaRoamingConfig& config) { legacy_hal::wifi_roaming_config legacy_config; - if (!hidl_struct_util::convertHidlRoamingConfigToLegacy(config, - &legacy_config)) { + if (!hidl_struct_util::convertHidlRoamingConfigToLegacy(config, &legacy_config)) { return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS); } legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->configureRoaming(ifname_, legacy_config); + legacy_hal_.lock()->configureRoaming(ifname_, legacy_config); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::setRoamingStateInternal(StaRoamingState state) { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->enableFirmwareRoaming( + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->enableFirmwareRoaming( ifname_, hidl_struct_util::convertHidlRoamingStateToLegacy(state)); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::enableNdOffloadInternal(bool enable) { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->configureNdOffload(ifname_, enable); + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->configureNdOffload(ifname_, enable); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::startSendingKeepAlivePacketsInternal( - uint32_t cmd_id, const std::vector<uint8_t>& ip_packet_data, - uint16_t ether_type, const std::array<uint8_t, 6>& src_address, - const std::array<uint8_t, 6>& dst_address, uint32_t period_in_ms) { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->startSendingOffloadedPacket( - ifname_, cmd_id, ether_type, ip_packet_data, src_address, - dst_address, period_in_ms); + uint32_t cmd_id, const std::vector<uint8_t>& ip_packet_data, uint16_t ether_type, + const std::array<uint8_t, 6>& src_address, const std::array<uint8_t, 6>& dst_address, + uint32_t period_in_ms) { + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->startSendingOffloadedPacket( + ifname_, cmd_id, ether_type, ip_packet_data, src_address, dst_address, period_in_ms); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::stopSendingKeepAlivePacketsInternal(uint32_t cmd_id) { legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->stopSendingOffloadedPacket(ifname_, cmd_id); + legacy_hal_.lock()->stopSendingOffloadedPacket(ifname_, cmd_id); return createWifiStatusFromLegacyError(legacy_status); } -WifiStatus WifiStaIface::setScanningMacOuiInternal( - const std::array<uint8_t, 3>& /* oui */) { +WifiStatus WifiStaIface::setScanningMacOuiInternal(const std::array<uint8_t, 3>& /* oui */) { // deprecated. return createWifiStatus(WifiStatusCode::ERROR_NOT_SUPPORTED); } WifiStatus WifiStaIface::startDebugPacketFateMonitoringInternal() { - legacy_hal::wifi_error legacy_status = - legacy_hal_.lock()->startPktFateMonitoring(ifname_); + legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->startPktFateMonitoring(ifname_); return createWifiStatusFromLegacyError(legacy_status); } @@ -612,14 +526,13 @@ std::pair<WifiStatus, std::vector<WifiDebugTxPacketFateReport>> WifiStaIface::getDebugTxPacketFatesInternal() { legacy_hal::wifi_error legacy_status; std::vector<legacy_hal::wifi_tx_report> legacy_fates; - std::tie(legacy_status, legacy_fates) = - legacy_hal_.lock()->getTxPktFates(ifname_); + std::tie(legacy_status, legacy_fates) = legacy_hal_.lock()->getTxPktFates(ifname_); if (legacy_status != legacy_hal::WIFI_SUCCESS) { return {createWifiStatusFromLegacyError(legacy_status), {}}; } std::vector<WifiDebugTxPacketFateReport> hidl_fates; - if (!hidl_struct_util::convertLegacyVectorOfDebugTxPacketFateToHidl( - legacy_fates, &hidl_fates)) { + if (!hidl_struct_util::convertLegacyVectorOfDebugTxPacketFateToHidl(legacy_fates, + &hidl_fates)) { return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), {}}; } return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_fates}; @@ -629,21 +542,19 @@ std::pair<WifiStatus, std::vector<WifiDebugRxPacketFateReport>> WifiStaIface::getDebugRxPacketFatesInternal() { legacy_hal::wifi_error legacy_status; std::vector<legacy_hal::wifi_rx_report> legacy_fates; - std::tie(legacy_status, legacy_fates) = - legacy_hal_.lock()->getRxPktFates(ifname_); + std::tie(legacy_status, legacy_fates) = legacy_hal_.lock()->getRxPktFates(ifname_); if (legacy_status != legacy_hal::WIFI_SUCCESS) { return {createWifiStatusFromLegacyError(legacy_status), {}}; } std::vector<WifiDebugRxPacketFateReport> hidl_fates; - if (!hidl_struct_util::convertLegacyVectorOfDebugRxPacketFateToHidl( - legacy_fates, &hidl_fates)) { + if (!hidl_struct_util::convertLegacyVectorOfDebugRxPacketFateToHidl(legacy_fates, + &hidl_fates)) { return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), {}}; } return {createWifiStatus(WifiStatusCode::SUCCESS), hidl_fates}; } -WifiStatus WifiStaIface::setMacAddressInternal( - const std::array<uint8_t, 6>& mac) { +WifiStatus WifiStaIface::setMacAddressInternal(const std::array<uint8_t, 6>& mac) { bool status = iface_util_.lock()->setMacAddress(ifname_, mac); if (!status) { return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); @@ -651,12 +562,9 @@ WifiStatus WifiStaIface::setMacAddressInternal( return createWifiStatus(WifiStatusCode::SUCCESS); } -std::pair<WifiStatus, std::array<uint8_t, 6>> -WifiStaIface::getFactoryMacAddressInternal() { - std::array<uint8_t, 6> mac = - iface_util_.lock()->getFactoryMacAddress(ifname_); - if (mac[0] == 0 && mac[1] == 0 && mac[2] == 0 && mac[3] == 0 && - mac[4] == 0 && mac[5] == 0) { +std::pair<WifiStatus, std::array<uint8_t, 6>> WifiStaIface::getFactoryMacAddressInternal() { + std::array<uint8_t, 6> mac = iface_util_.lock()->getFactoryMacAddress(ifname_); + if (mac[0] == 0 && mac[1] == 0 && mac[2] == 0 && mac[3] == 0 && mac[4] == 0 && mac[5] == 0) { return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), mac}; } return {createWifiStatus(WifiStatusCode::SUCCESS), mac}; @@ -669,7 +577,7 @@ WifiStatus WifiStaIface::setScanModeInternal(bool enable) { } } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.6/default/wifi_sta_iface.h b/wifi/1.6/default/wifi_sta_iface.h new file mode 100644 index 0000000000..37358a5fb0 --- /dev/null +++ b/wifi/1.6/default/wifi_sta_iface.h @@ -0,0 +1,155 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef WIFI_STA_IFACE_H_ +#define WIFI_STA_IFACE_H_ + +#include <android-base/macros.h> +#include <android/hardware/wifi/1.0/IWifiStaIfaceEventCallback.h> +#include <android/hardware/wifi/1.5/IWifiStaIface.h> + +#include "hidl_callback_util.h" +#include "wifi_iface_util.h" +#include "wifi_legacy_hal.h" + +namespace android { +namespace hardware { +namespace wifi { +namespace V1_6 { +namespace implementation { +using namespace android::hardware::wifi::V1_0; + +/** + * HIDL interface object used to control a STA Iface instance. + */ +class WifiStaIface : public V1_5::IWifiStaIface { + public: + WifiStaIface(const std::string& ifname, + const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal, + const std::weak_ptr<iface_util::WifiIfaceUtil> iface_util); + // Refer to |WifiChip::invalidate()|. + void invalidate(); + bool isValid(); + std::set<sp<IWifiStaIfaceEventCallback>> getEventCallbacks(); + std::string getName(); + + // HIDL methods exposed. + Return<void> getName(getName_cb hidl_status_cb) override; + Return<void> getType(getType_cb hidl_status_cb) override; + Return<void> registerEventCallback(const sp<IWifiStaIfaceEventCallback>& callback, + registerEventCallback_cb hidl_status_cb) override; + Return<void> getCapabilities(getCapabilities_cb hidl_status_cb) override; + Return<void> getApfPacketFilterCapabilities( + getApfPacketFilterCapabilities_cb hidl_status_cb) override; + Return<void> installApfPacketFilter(uint32_t cmd_id, const hidl_vec<uint8_t>& program, + installApfPacketFilter_cb hidl_status_cb) override; + Return<void> readApfPacketFilterData(readApfPacketFilterData_cb hidl_status_cb) override; + Return<void> getBackgroundScanCapabilities( + getBackgroundScanCapabilities_cb hidl_status_cb) override; + Return<void> getValidFrequenciesForBand(V1_0::WifiBand band, + getValidFrequenciesForBand_cb hidl_status_cb) override; + Return<void> startBackgroundScan(uint32_t cmd_id, const StaBackgroundScanParameters& params, + startBackgroundScan_cb hidl_status_cb) override; + Return<void> stopBackgroundScan(uint32_t cmd_id, stopBackgroundScan_cb hidl_status_cb) override; + Return<void> enableLinkLayerStatsCollection( + bool debug, enableLinkLayerStatsCollection_cb hidl_status_cb) override; + Return<void> disableLinkLayerStatsCollection( + disableLinkLayerStatsCollection_cb hidl_status_cb) override; + Return<void> getLinkLayerStats(getLinkLayerStats_cb hidl_status_cb) override; + Return<void> getLinkLayerStats_1_3(getLinkLayerStats_1_3_cb hidl_status_cb) override; + Return<void> getLinkLayerStats_1_5(getLinkLayerStats_1_5_cb hidl_status_cb) override; + Return<void> startRssiMonitoring(uint32_t cmd_id, int32_t max_rssi, int32_t min_rssi, + startRssiMonitoring_cb hidl_status_cb) override; + Return<void> stopRssiMonitoring(uint32_t cmd_id, stopRssiMonitoring_cb hidl_status_cb) override; + Return<void> getRoamingCapabilities(getRoamingCapabilities_cb hidl_status_cb) override; + Return<void> configureRoaming(const StaRoamingConfig& config, + configureRoaming_cb hidl_status_cb) override; + Return<void> setRoamingState(StaRoamingState state, setRoamingState_cb hidl_status_cb) override; + Return<void> enableNdOffload(bool enable, enableNdOffload_cb hidl_status_cb) override; + Return<void> startSendingKeepAlivePackets( + uint32_t cmd_id, const hidl_vec<uint8_t>& ip_packet_data, uint16_t ether_type, + const hidl_array<uint8_t, 6>& src_address, const hidl_array<uint8_t, 6>& dst_address, + uint32_t period_in_ms, startSendingKeepAlivePackets_cb hidl_status_cb) override; + Return<void> stopSendingKeepAlivePackets( + uint32_t cmd_id, stopSendingKeepAlivePackets_cb hidl_status_cb) override; + Return<void> setScanningMacOui(const hidl_array<uint8_t, 3>& oui, + setScanningMacOui_cb hidl_status_cb) override; + Return<void> startDebugPacketFateMonitoring( + startDebugPacketFateMonitoring_cb hidl_status_cb) override; + Return<void> getDebugTxPacketFates(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; + Return<void> getFactoryMacAddress(getFactoryMacAddress_cb hidl_status_cb) override; + Return<void> setScanMode(bool enable, setScanMode_cb hidl_status_cb) override; + + private: + // Corresponding worker functions for the HIDL methods. + std::pair<WifiStatus, std::string> getNameInternal(); + std::pair<WifiStatus, IfaceType> getTypeInternal(); + WifiStatus registerEventCallbackInternal(const sp<IWifiStaIfaceEventCallback>& callback); + std::pair<WifiStatus, uint32_t> getCapabilitiesInternal(); + std::pair<WifiStatus, StaApfPacketFilterCapabilities> getApfPacketFilterCapabilitiesInternal(); + WifiStatus installApfPacketFilterInternal(uint32_t cmd_id, const std::vector<uint8_t>& program); + std::pair<WifiStatus, std::vector<uint8_t>> readApfPacketFilterDataInternal(); + std::pair<WifiStatus, StaBackgroundScanCapabilities> getBackgroundScanCapabilitiesInternal(); + std::pair<WifiStatus, std::vector<WifiChannelInMhz>> getValidFrequenciesForBandInternal( + V1_0::WifiBand band); + WifiStatus startBackgroundScanInternal(uint32_t cmd_id, + const StaBackgroundScanParameters& params); + WifiStatus stopBackgroundScanInternal(uint32_t cmd_id); + WifiStatus enableLinkLayerStatsCollectionInternal(bool debug); + WifiStatus disableLinkLayerStatsCollectionInternal(); + std::pair<WifiStatus, V1_0::StaLinkLayerStats> getLinkLayerStatsInternal(); + std::pair<WifiStatus, V1_3::StaLinkLayerStats> getLinkLayerStatsInternal_1_3(); + std::pair<WifiStatus, V1_5::StaLinkLayerStats> getLinkLayerStatsInternal_1_5(); + WifiStatus startRssiMonitoringInternal(uint32_t cmd_id, int32_t max_rssi, int32_t min_rssi); + WifiStatus stopRssiMonitoringInternal(uint32_t cmd_id); + std::pair<WifiStatus, StaRoamingCapabilities> getRoamingCapabilitiesInternal(); + WifiStatus configureRoamingInternal(const StaRoamingConfig& config); + WifiStatus setRoamingStateInternal(StaRoamingState state); + WifiStatus enableNdOffloadInternal(bool enable); + WifiStatus startSendingKeepAlivePacketsInternal(uint32_t cmd_id, + const std::vector<uint8_t>& ip_packet_data, + uint16_t ether_type, + const std::array<uint8_t, 6>& src_address, + const std::array<uint8_t, 6>& dst_address, + uint32_t period_in_ms); + WifiStatus stopSendingKeepAlivePacketsInternal(uint32_t cmd_id); + WifiStatus setScanningMacOuiInternal(const std::array<uint8_t, 3>& oui); + WifiStatus startDebugPacketFateMonitoringInternal(); + std::pair<WifiStatus, std::vector<WifiDebugTxPacketFateReport>> getDebugTxPacketFatesInternal(); + std::pair<WifiStatus, std::vector<WifiDebugRxPacketFateReport>> getDebugRxPacketFatesInternal(); + WifiStatus setMacAddressInternal(const std::array<uint8_t, 6>& mac); + std::pair<WifiStatus, std::array<uint8_t, 6>> getFactoryMacAddressInternal(); + WifiStatus setScanModeInternal(bool enable); + + std::string ifname_; + std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_; + std::weak_ptr<iface_util::WifiIfaceUtil> iface_util_; + bool is_valid_; + hidl_callback_util::HidlCallbackHandler<IWifiStaIfaceEventCallback> event_cb_handler_; + + DISALLOW_COPY_AND_ASSIGN(WifiStaIface); +}; + +} // namespace implementation +} // namespace V1_6 +} // namespace wifi +} // namespace hardware +} // namespace android + +#endif // WIFI_STA_IFACE_H_ diff --git a/wifi/1.5/default/wifi_status_util.cpp b/wifi/1.6/default/wifi_status_util.cpp index eb8c8694db..3b18e537cd 100644 --- a/wifi/1.5/default/wifi_status_util.cpp +++ b/wifi/1.6/default/wifi_status_util.cpp @@ -19,7 +19,7 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { std::string legacyErrorToString(legacy_hal::wifi_error error) { @@ -51,8 +51,7 @@ std::string legacyErrorToString(legacy_hal::wifi_error error) { } } -WifiStatus createWifiStatus(WifiStatusCode code, - const std::string& description) { +WifiStatus createWifiStatus(WifiStatusCode code, const std::string& description) { return {code, description}; } @@ -60,8 +59,7 @@ WifiStatus createWifiStatus(WifiStatusCode code) { return createWifiStatus(code, ""); } -WifiStatus createWifiStatusFromLegacyError(legacy_hal::wifi_error error, - const std::string& desc) { +WifiStatus createWifiStatusFromLegacyError(legacy_hal::wifi_error error, const std::string& desc) { switch (error) { case legacy_hal::WIFI_ERROR_UNINITIALIZED: case legacy_hal::WIFI_ERROR_NOT_AVAILABLE: @@ -75,16 +73,13 @@ WifiStatus createWifiStatusFromLegacyError(legacy_hal::wifi_error error, return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS, desc); case legacy_hal::WIFI_ERROR_TIMED_OUT: - return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN, - desc + ", timed out"); + return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN, desc + ", timed out"); case legacy_hal::WIFI_ERROR_TOO_MANY_REQUESTS: - return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN, - desc + ", too many requests"); + return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN, desc + ", too many requests"); case legacy_hal::WIFI_ERROR_OUT_OF_MEMORY: - return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN, - desc + ", out of memory"); + return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN, desc + ", out of memory"); case legacy_hal::WIFI_ERROR_BUSY: return createWifiStatus(WifiStatusCode::ERROR_BUSY); @@ -96,8 +91,7 @@ WifiStatus createWifiStatusFromLegacyError(legacy_hal::wifi_error error, return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN, "unknown"); default: - return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN, - "unknown error"); + return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN, "unknown error"); } } @@ -106,7 +100,7 @@ WifiStatus createWifiStatusFromLegacyError(legacy_hal::wifi_error error) { } } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/1.5/default/wifi_status_util.h b/wifi/1.6/default/wifi_status_util.h index 68f21689c5..ea1c29486b 100644 --- a/wifi/1.5/default/wifi_status_util.h +++ b/wifi/1.6/default/wifi_status_util.h @@ -24,20 +24,19 @@ namespace android { namespace hardware { namespace wifi { -namespace V1_5 { +namespace V1_6 { namespace implementation { using namespace android::hardware::wifi::V1_0; std::string legacyErrorToString(legacy_hal::wifi_error error); -WifiStatus createWifiStatus(WifiStatusCode code, - const std::string& description); +WifiStatus createWifiStatus(WifiStatusCode code, const std::string& description); WifiStatus createWifiStatus(WifiStatusCode code); WifiStatus createWifiStatusFromLegacyError(legacy_hal::wifi_error error, const std::string& description); WifiStatus createWifiStatusFromLegacyError(legacy_hal::wifi_error error); } // namespace implementation -} // namespace V1_5 +} // namespace V1_6 } // namespace wifi } // namespace hardware } // namespace android diff --git a/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/Bandwidth.aidl b/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/Bandwidth.aidl index 890d986f77..4d78640fdb 100644 --- a/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/Bandwidth.aidl +++ b/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/Bandwidth.aidl @@ -41,8 +41,9 @@ enum Bandwidth { BANDWIDTH_80 = 4, BANDWIDTH_80P80 = 5, BANDWIDTH_160 = 6, - BANDWIDTH_2160 = 7, - BANDWIDTH_4320 = 8, - BANDWIDTH_6480 = 9, - BANDWIDTH_8640 = 10, + BANDWIDTH_320 = 7, + BANDWIDTH_2160 = 8, + BANDWIDTH_4320 = 9, + BANDWIDTH_6480 = 10, + BANDWIDTH_8640 = 11, } diff --git a/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/Generation.aidl b/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/Generation.aidl index 6b60d17400..af0e960df8 100644 --- a/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/Generation.aidl +++ b/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/Generation.aidl @@ -40,4 +40,5 @@ enum Generation { WIFI_STANDARD_11AC = 2, WIFI_STANDARD_11AX = 3, WIFI_STANDARD_11AD = 4, + WIFI_STANDARD_11BE = 5, } diff --git a/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/HwModeParams.aidl b/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/HwModeParams.aidl index 844c838c44..8d8d7bb0f6 100644 --- a/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/HwModeParams.aidl +++ b/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/HwModeParams.aidl @@ -43,4 +43,5 @@ parcelable HwModeParams { boolean enableHeMultiUserBeamformer; boolean enableHeTargetWakeTime; boolean enableEdmg; + boolean enable80211BE; } diff --git a/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/NetworkParams.aidl b/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/NetworkParams.aidl index ffe2f33475..4554223751 100644 --- a/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/NetworkParams.aidl +++ b/wifi/hostapd/aidl/aidl_api/android.hardware.wifi.hostapd/current/android/hardware/wifi/hostapd/NetworkParams.aidl @@ -39,4 +39,5 @@ parcelable NetworkParams { android.hardware.wifi.hostapd.EncryptionType encryptionType; String passphrase; boolean isMetered; + byte[] vendorElements; } diff --git a/wifi/hostapd/aidl/android/hardware/wifi/hostapd/Bandwidth.aidl b/wifi/hostapd/aidl/android/hardware/wifi/hostapd/Bandwidth.aidl index c9824027e9..e605153b83 100644 --- a/wifi/hostapd/aidl/android/hardware/wifi/hostapd/Bandwidth.aidl +++ b/wifi/hostapd/aidl/android/hardware/wifi/hostapd/Bandwidth.aidl @@ -29,8 +29,9 @@ enum Bandwidth { BANDWIDTH_80 = 4, BANDWIDTH_80P80 = 5, BANDWIDTH_160 = 6, - BANDWIDTH_2160 = 7, - BANDWIDTH_4320 = 8, - BANDWIDTH_6480 = 9, - BANDWIDTH_8640 = 10, + BANDWIDTH_320 = 7, + BANDWIDTH_2160 = 8, + BANDWIDTH_4320 = 9, + BANDWIDTH_6480 = 10, + BANDWIDTH_8640 = 11, } diff --git a/wifi/hostapd/aidl/android/hardware/wifi/hostapd/Generation.aidl b/wifi/hostapd/aidl/android/hardware/wifi/hostapd/Generation.aidl index 2cda55bd97..f4e3eb0668 100644 --- a/wifi/hostapd/aidl/android/hardware/wifi/hostapd/Generation.aidl +++ b/wifi/hostapd/aidl/android/hardware/wifi/hostapd/Generation.aidl @@ -27,6 +27,7 @@ package android.hardware.wifi.hostapd; * WIFI_STANDARD_11AC = hw_mode is HOSTAPD_MODE_IEEE80211A and VHT is 1. * WIFI_STANDARD_11AX = hw_mode is HOSTAPD_MODE_IEEE80211A and High Efficiency supported. * WIFI_STANDARD_11AD = hw_mode is HOSTAPD_MODE_IEEE80211AD. + * WIFI_STANDARD_11BE = hw_mode is HOSTAPD_MODE_IEEE80211A and Extreme High Throughput supported. */ @VintfStability @Backing(type="int") @@ -37,4 +38,5 @@ enum Generation { WIFI_STANDARD_11AC = 2, WIFI_STANDARD_11AX = 3, WIFI_STANDARD_11AD = 4, + WIFI_STANDARD_11BE = 5, } diff --git a/wifi/hostapd/aidl/android/hardware/wifi/hostapd/HwModeParams.aidl b/wifi/hostapd/aidl/android/hardware/wifi/hostapd/HwModeParams.aidl index 210e99ff1f..e66a24af8c 100644 --- a/wifi/hostapd/aidl/android/hardware/wifi/hostapd/HwModeParams.aidl +++ b/wifi/hostapd/aidl/android/hardware/wifi/hostapd/HwModeParams.aidl @@ -68,4 +68,10 @@ parcelable HwModeParams { * Enable EDMG (802.11ay), this option is only allowed for the 60GHz band. */ boolean enableEdmg; + /** + * Whether IEEE 802.11be (Extreme High Throughput) is enabled or not. + * Note: hw_mode=a is used to specify that 5 GHz band or 6 GHz band is + * used with Extreme High Throughput. + */ + boolean enable80211BE; } diff --git a/wifi/hostapd/aidl/android/hardware/wifi/hostapd/NetworkParams.aidl b/wifi/hostapd/aidl/android/hardware/wifi/hostapd/NetworkParams.aidl index df84eca23d..47d9e6f96b 100644 --- a/wifi/hostapd/aidl/android/hardware/wifi/hostapd/NetworkParams.aidl +++ b/wifi/hostapd/aidl/android/hardware/wifi/hostapd/NetworkParams.aidl @@ -44,4 +44,12 @@ parcelable NetworkParams { * CHARGEABLE_PUBLIC_NETWORK when set to true. */ boolean isMetered; + /** + * Additional vendor specific elements for Beacon and Probe Response frames + * This parameter can be used to add additional vendor specific element(s) into + * the end of the Beacon and Probe Response frames. The format for these + * element(s) is a binary dump of the raw information elements (id+len+payload for + * one or more elements). Example: byte[]{ 221, 4, 17, 34, 51, 1 } + */ + byte[] vendorElements; } diff --git a/wifi/hostapd/aidl/vts/functional/VtsHalHostapdTargetTest.cpp b/wifi/hostapd/aidl/vts/functional/VtsHalHostapdTargetTest.cpp index dad708567c..cd7ff82156 100644 --- a/wifi/hostapd/aidl/vts/functional/VtsHalHostapdTargetTest.cpp +++ b/wifi/hostapd/aidl/vts/functional/VtsHalHostapdTargetTest.cpp @@ -431,6 +431,7 @@ TEST_P(HostapdAidl, AddAccessPointWithDualBandConfig) { EXPECT_TRUE(status.isOk()); } +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(HostapdAidl); INSTANTIATE_TEST_SUITE_P( Hostapd, HostapdAidl, testing::ValuesIn(android::getAidlHalInstanceNames(IHostapd::descriptor)), diff --git a/wifi/supplicant/aidl/Android.bp b/wifi/supplicant/aidl/Android.bp index c97a6f917c..d00dd2189f 100644 --- a/wifi/supplicant/aidl/Android.bp +++ b/wifi/supplicant/aidl/Android.bp @@ -12,6 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. +package { + // See: http://go/android-license-faq + // A large-scale-change added 'default_applicable_licenses' to import + // all of the 'license_kinds' from "hardware_interfaces_license" + // to get the below license kinds: + // SPDX-license-identifier-Apache-2.0 + default_applicable_licenses: ["hardware_interfaces_license"], +} + aidl_interface { name: "android.hardware.wifi.supplicant", vendor_available: true, diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl index ed435e2097..826d9167b9 100644 --- a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl @@ -50,4 +50,5 @@ interface ISupplicantP2pIfaceCallback { oneway void onServiceDiscoveryResponse(in byte[] srcAddress, in char updateIndicator, in byte[] tlvs); oneway void onStaAuthorized(in byte[] srcAddress, in byte[] p2pDeviceAddress); oneway void onStaDeauthorized(in byte[] srcAddress, in byte[] p2pDeviceAddress); + oneway void onGroupFrequencyChanged(in String groupIfname, in int frequency); } diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaNetworkCallback.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaNetworkCallback.aidl index 4f7584d938..6276a3521b 100644 --- a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaNetworkCallback.aidl +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaNetworkCallback.aidl @@ -38,4 +38,5 @@ interface ISupplicantStaNetworkCallback { oneway void onNetworkEapSimGsmAuthRequest(in android.hardware.wifi.supplicant.NetworkRequestEapSimGsmAuthParams params); oneway void onNetworkEapSimUmtsAuthRequest(in android.hardware.wifi.supplicant.NetworkRequestEapSimUmtsAuthParams params); oneway void onTransitionDisable(in android.hardware.wifi.supplicant.TransitionDisableIndication ind); + oneway void onServerCertificateAvailable(in int depth, in byte[] subject, in byte[] certHash, in byte[] certBlob); } diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WifiTechnology.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WifiTechnology.aidl index ad36e68564..bf5081ea70 100644 --- a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WifiTechnology.aidl +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WifiTechnology.aidl @@ -39,4 +39,5 @@ enum WifiTechnology { HT = 2, VHT = 3, HE = 4, + EHT = 5, } diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpaDriverCapabilitiesMask.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpaDriverCapabilitiesMask.aidl index 43772af0c0..9a0a924c66 100644 --- a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpaDriverCapabilitiesMask.aidl +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpaDriverCapabilitiesMask.aidl @@ -38,4 +38,5 @@ enum WpaDriverCapabilitiesMask { OCE = 2, SAE_PK = 4, WFD_R2 = 8, + TRUST_ON_FIRST_USE = 16, } diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AuthAlgMask.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AuthAlgMask.aidl index e8101ea3af..039d41dc43 100644 --- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AuthAlgMask.aidl +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AuthAlgMask.aidl @@ -19,7 +19,7 @@ package android.hardware.wifi.supplicant; /** * Possible mask of values for AuthAlg param. * See /external/wpa_supplicant_8/src/common/defs.h for - * all possible values (starting at WPA_AUTH_ALG_OPEN). + * the historical values (starting at WPA_AUTH_ALG_OPEN). */ @VintfStability @Backing(type="int") diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/GroupCipherMask.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/GroupCipherMask.aidl index d5b26adc99..99e9da07f1 100644 --- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/GroupCipherMask.aidl +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/GroupCipherMask.aidl @@ -19,7 +19,7 @@ package android.hardware.wifi.supplicant; /** * Possible mask of values for GroupCipher param. * See /external/wpa_supplicant_8/src/common/defs.h for - * all possible values (starting at WPA_CIPHER_WEP40). + * the historical values (starting at WPA_CIPHER_WEP40). */ @VintfStability @Backing(type="int") diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl index f0cabd6ff8..2b58cc2c82 100644 --- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl @@ -205,4 +205,12 @@ interface ISupplicantP2pIfaceCallback { * @param p2pDeviceAddress P2P device address. */ oneway void onStaDeauthorized(in byte[] srcAddress, in byte[] p2pDeviceAddress); + + /** + * Used to indicate that operating frequency has changed for this P2P group interface. + * + * @param groupIfName Interface name of the group. (For ex: p2p-p2p0-1) + * @param frequency New operating frequency in MHz. + */ + oneway void onGroupFrequencyChanged(in String groupIfname, in int frequency); } diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaNetworkCallback.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaNetworkCallback.aidl index c28b494d6a..4024c35fed 100644 --- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaNetworkCallback.aidl +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaNetworkCallback.aidl @@ -62,4 +62,13 @@ interface ISupplicantStaNetworkCallback { * Used to notify WPA3 transition disable. */ oneway void onTransitionDisable(in TransitionDisableIndication ind); + + /** + * Used to notify EAP certificate event. + * + * On receiving a server certifidate from TLS handshake, send this certificate + * to the framework for Trust On First Use. + */ + oneway void onServerCertificateAvailable( + in int depth, in byte[] subject, in byte[] certHash, in byte[] certBlob); } diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/KeyMgmtMask.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/KeyMgmtMask.aidl index 322558529e..f0c3345b93 100644 --- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/KeyMgmtMask.aidl +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/KeyMgmtMask.aidl @@ -19,7 +19,7 @@ package android.hardware.wifi.supplicant; /** * Possible mask of values for KeyMgmt param. * See /external/wpa_supplicant_8/src/common/defs.h for - * all possible values (starting at WPA_KEY_MGMT_IEEE8021X). + * the historical values (starting at WPA_KEY_MGMT_IEEE8021X). */ @VintfStability @Backing(type="int") diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/PairwiseCipherMask.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/PairwiseCipherMask.aidl index ad134fa240..7179fea9e2 100644 --- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/PairwiseCipherMask.aidl +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/PairwiseCipherMask.aidl @@ -19,7 +19,7 @@ package android.hardware.wifi.supplicant; /** * Possible mask of values for PairwiseCipher param. * See /external/wpa_supplicant_8/src/common/defs.h for - * all possible values (starting at WPA_CIPHER_NONE). + * the historical values (starting at WPA_CIPHER_NONE). */ @VintfStability @Backing(type="int") diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ProtoMask.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ProtoMask.aidl index 65c832bece..dc3d80bf1f 100644 --- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ProtoMask.aidl +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ProtoMask.aidl @@ -19,7 +19,7 @@ package android.hardware.wifi.supplicant; /** * Possible mask of values for Proto param. * See /external/wpa_supplicant_8/src/common/defs.h for - * all possible values (starting at WPA_PROTO_WPA). + * the historical values (starting at WPA_PROTO_WPA). */ @VintfStability @Backing(type="int") diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WifiTechnology.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WifiTechnology.aidl index 00c16b4278..d364c7509a 100644 --- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WifiTechnology.aidl +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WifiTechnology.aidl @@ -39,4 +39,8 @@ enum WifiTechnology { * For 802.11ax */ HE = 4, + /** + * For 802.11be + */ + EHT = 5, } diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpaDriverCapabilitiesMask.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpaDriverCapabilitiesMask.aidl index e174199c78..08006cffba 100644 --- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpaDriverCapabilitiesMask.aidl +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpaDriverCapabilitiesMask.aidl @@ -38,4 +38,8 @@ enum WpaDriverCapabilitiesMask { * Wi-Fi Display R2 */ WFD_R2 = 1 << 3, + /** + * Trust On First Use + */ + TRUST_ON_FIRST_USE = 1 << 4, } diff --git a/wifi/supplicant/aidl/vts/functional/supplicant_p2p_iface_aidl_test.cpp b/wifi/supplicant/aidl/vts/functional/supplicant_p2p_iface_aidl_test.cpp index 2f4f06d355..10aab4d414 100644 --- a/wifi/supplicant/aidl/vts/functional/supplicant_p2p_iface_aidl_test.cpp +++ b/wifi/supplicant/aidl/vts/functional/supplicant_p2p_iface_aidl_test.cpp @@ -159,6 +159,10 @@ class SupplicantP2pIfaceCallback : public BnSupplicantP2pIfaceCallback { const std::vector<uint8_t>& /* p2pDeviceAddress */) override { return ndk::ScopedAStatus::ok(); } + ::ndk::ScopedAStatus onGroupFrequencyChanged(const std::string& /* groupIfname */, + int32_t /* frequency */) override { + return ndk::ScopedAStatus::ok(); + } }; class SupplicantP2pIfaceAidlTest : public testing::TestWithParam<std::string> { @@ -620,6 +624,7 @@ TEST_P(SupplicantP2pIfaceAidlTest, AddAndRemoveUpnpService) { p2p_iface_->removeUpnpService(0 /* version */, upnpServiceName).isOk()); } +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(SupplicantP2pIfaceAidlTest); INSTANTIATE_TEST_SUITE_P(Supplicant, SupplicantP2pIfaceAidlTest, testing::ValuesIn(android::getAidlHalInstanceNames( ISupplicant::descriptor)), diff --git a/wifi/supplicant/aidl/vts/functional/supplicant_sta_iface_aidl_test.cpp b/wifi/supplicant/aidl/vts/functional/supplicant_sta_iface_aidl_test.cpp index f51c07f1ad..6e6955fd75 100644 --- a/wifi/supplicant/aidl/vts/functional/supplicant_sta_iface_aidl_test.cpp +++ b/wifi/supplicant/aidl/vts/functional/supplicant_sta_iface_aidl_test.cpp @@ -769,6 +769,7 @@ TEST_P(SupplicantStaIfaceAidlTest, StartDppConfiguratorInitiator) { EXPECT_TRUE(sta_iface_->removeDppUri(peer_id).isOk()); } +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(SupplicantStaIfaceAidlTest); INSTANTIATE_TEST_SUITE_P(Supplicant, SupplicantStaIfaceAidlTest, testing::ValuesIn(android::getAidlHalInstanceNames( ISupplicant::descriptor)), diff --git a/wifi/supplicant/aidl/vts/functional/supplicant_sta_network_aidl_test.cpp b/wifi/supplicant/aidl/vts/functional/supplicant_sta_network_aidl_test.cpp index 66c88073cc..0a35f666f4 100644 --- a/wifi/supplicant/aidl/vts/functional/supplicant_sta_network_aidl_test.cpp +++ b/wifi/supplicant/aidl/vts/functional/supplicant_sta_network_aidl_test.cpp @@ -92,6 +92,12 @@ class SupplicantStaNetworkCallback : public BnSupplicantStaNetworkCallback { TransitionDisableIndication /* ind */) override { return ndk::ScopedAStatus::ok(); } + ::ndk::ScopedAStatus onServerCertificateAvailable( + int32_t /* depth */, const std::vector<uint8_t>& /* subject */, + const std::vector<uint8_t>& /* certHash */, + const std::vector<uint8_t>& /* certBlob */) override { + return ndk::ScopedAStatus::ok(); + } }; class SupplicantStaNetworkAidlTest @@ -778,6 +784,7 @@ TEST_P(SupplicantStaNetworkAidlTest, GetWpsNfcConfigurationToken) { EXPECT_NE(retrievedToken.size(), 0); } +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(SupplicantStaNetworkAidlTest); INSTANTIATE_TEST_SUITE_P(Supplicant, SupplicantStaNetworkAidlTest, testing::ValuesIn(android::getAidlHalInstanceNames( ISupplicant::descriptor)), |