blob: 9a13672424a65427ed8e9815e733e5d6c1d59cff [file] [log] [blame]
Gabriel Birenf3262f92022-07-15 23:25:39 +00001/*
2 * Copyright (C) 2022 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef AIDL_STRUCT_UTIL_H_
18#define AIDL_STRUCT_UTIL_H_
19
20#include <aidl/android/hardware/wifi/IWifiChip.h>
21#include <aidl/android/hardware/wifi/IWifiChipEventCallback.h>
22#include <aidl/android/hardware/wifi/NanBandIndex.h>
Gabriel Biren3b86a782023-02-04 00:42:53 +000023#include <aidl/android/hardware/wifi/StaBackgroundScanBucketEventReportSchemeMask.h>
24#include <aidl/android/hardware/wifi/StaScanDataFlagMask.h>
Gabriel Birenf3262f92022-07-15 23:25:39 +000025#include <aidl/android/hardware/wifi/WifiDebugRingBufferFlags.h>
Gabriel Biren3b86a782023-02-04 00:42:53 +000026#include <aidl/android/hardware/wifi/WifiIfaceMode.h>
Gabriel Birenf3262f92022-07-15 23:25:39 +000027
28#include <vector>
29
30#include "wifi_legacy_hal.h"
31
32/**
33 * This file contains a bunch of functions to convert structs from the legacy
34 * HAL to AIDL and vice versa.
35 */
36namespace aidl {
37namespace android {
38namespace hardware {
39namespace wifi {
40namespace aidl_struct_util {
41
42// Chip conversion methods.
Gabriel Birenbff0e402023-02-14 22:42:20 +000043bool convertLegacyFeaturesToAidlChipCapabilities(uint64_t legacy_feature_set, uint32_t* aidl_caps);
Gabriel Birenf3262f92022-07-15 23:25:39 +000044bool convertLegacyDebugRingBufferStatusToAidl(
45 const legacy_hal::wifi_ring_buffer_status& legacy_status,
46 WifiDebugRingBufferStatus* aidl_status);
47bool convertLegacyVectorOfDebugRingBufferStatusToAidl(
48 const std::vector<legacy_hal::wifi_ring_buffer_status>& legacy_status_vec,
49 std::vector<WifiDebugRingBufferStatus>* aidl_status_vec);
50bool convertLegacyWakeReasonStatsToAidl(const legacy_hal::WakeReasonStats& legacy_stats,
51 WifiDebugHostWakeReasonStats* aidl_stats);
52legacy_hal::wifi_power_scenario convertAidlTxPowerScenarioToLegacy(
53 IWifiChip::TxPowerScenario aidl_scenario);
54legacy_hal::wifi_latency_mode convertAidlLatencyModeToLegacy(
55 IWifiChip::LatencyMode aidl_latency_mode);
56bool convertLegacyWifiMacInfosToAidl(
57 const std::vector<legacy_hal::WifiMacInfo>& legacy_mac_infos,
58 std::vector<IWifiChipEventCallback::RadioModeInfo>* aidl_radio_mode_infos);
59legacy_hal::wifi_interface_type convertAidlIfaceTypeToLegacy(IfaceType aidl_interface_type);
60legacy_hal::wifi_multi_sta_use_case convertAidlMultiStaUseCaseToLegacy(
61 IWifiChip::MultiStaUseCase use_case);
62bool convertAidlCoexUnsafeChannelToLegacy(
63 const IWifiChip::CoexUnsafeChannel& aidl_unsafe_channel,
64 legacy_hal::wifi_coex_unsafe_channel* legacy_unsafe_channel);
65bool convertAidlVectorOfCoexUnsafeChannelToLegacy(
66 const std::vector<IWifiChip::CoexUnsafeChannel>& aidl_unsafe_channels,
67 std::vector<legacy_hal::wifi_coex_unsafe_channel>* legacy_unsafe_channels);
68bool convertLegacyRadioCombinationsMatrixToAidl(
69 legacy_hal::wifi_radio_combination_matrix* legacy_matrix,
Gabriel Biren263db452023-02-24 21:07:38 +000070 std::vector<WifiRadioCombination>* aidl_combinations);
Gabriel Birenf3262f92022-07-15 23:25:39 +000071WifiBand convertLegacyMacBandToAidlWifiBand(uint32_t band);
72WifiAntennaMode convertLegacyAntennaConfigurationToAidl(uint32_t antenna_cfg);
Sunil Ravi2be1f262023-02-15 20:56:56 +000073bool convertLegacyIfaceCombinationsMatrixToChipMode(
74 legacy_hal::wifi_iface_concurrency_matrix& legacy_matrix, IWifiChip::ChipMode* chip_mode);
Gabriel Birenf3262f92022-07-15 23:25:39 +000075
76// STA iface conversion methods.
Gabriel Birendd47e712023-02-15 23:50:07 +000077bool convertLegacyFeaturesToAidlStaCapabilities(uint64_t legacy_feature_set, uint32_t* aidl_caps);
Gabriel Birenf3262f92022-07-15 23:25:39 +000078bool convertLegacyApfCapabilitiesToAidl(const legacy_hal::PacketFilterCapabilities& legacy_caps,
79 StaApfPacketFilterCapabilities* aidl_caps);
80bool convertLegacyGscanCapabilitiesToAidl(const legacy_hal::wifi_gscan_capabilities& legacy_caps,
81 StaBackgroundScanCapabilities* aidl_caps);
82legacy_hal::wifi_band convertAidlWifiBandToLegacy(WifiBand band);
83bool convertAidlGscanParamsToLegacy(const StaBackgroundScanParameters& aidl_scan_params,
84 legacy_hal::wifi_scan_cmd_params* legacy_scan_params);
85// |has_ie_data| indicates whether or not the wifi_scan_result includes 802.11
86// Information Elements (IEs)
87bool convertLegacyGscanResultToAidl(const legacy_hal::wifi_scan_result& legacy_scan_result,
88 bool has_ie_data, StaScanResult* aidl_scan_result);
89// |cached_results| is assumed to not include IEs.
90bool convertLegacyVectorOfCachedGscanResultsToAidl(
91 const std::vector<legacy_hal::wifi_cached_scan_results>& legacy_cached_scan_results,
92 std::vector<StaScanData>* aidl_scan_datas);
Mahesh KKV5f30d332022-10-26 14:07:44 -070093bool convertLegacyLinkLayerMlStatsToAidl(const legacy_hal::LinkLayerMlStats& legacy_ml_stats,
94 StaLinkLayerStats* aidl_stats);
Gabriel Birenf3262f92022-07-15 23:25:39 +000095bool convertLegacyLinkLayerStatsToAidl(const legacy_hal::LinkLayerStats& legacy_stats,
96 StaLinkLayerStats* aidl_stats);
97bool convertLegacyRoamingCapabilitiesToAidl(
98 const legacy_hal::wifi_roaming_capabilities& legacy_caps,
99 StaRoamingCapabilities* aidl_caps);
100bool convertAidlRoamingConfigToLegacy(const StaRoamingConfig& aidl_config,
101 legacy_hal::wifi_roaming_config* legacy_config);
102legacy_hal::fw_roaming_state_t convertAidlRoamingStateToLegacy(StaRoamingState state);
103bool convertLegacyVectorOfDebugTxPacketFateToAidl(
104 const std::vector<legacy_hal::wifi_tx_report>& legacy_fates,
105 std::vector<WifiDebugTxPacketFateReport>* aidl_fates);
106bool convertLegacyVectorOfDebugRxPacketFateToAidl(
107 const std::vector<legacy_hal::wifi_rx_report>& legacy_fates,
108 std::vector<WifiDebugRxPacketFateReport>* aidl_fates);
109
110// NAN iface conversion methods.
111void convertToNanStatus(legacy_hal::NanStatusType type, const char* str, size_t max_len,
112 NanStatus* nanStatus);
113bool convertAidlNanEnableRequestToLegacy(const NanEnableRequest& aidl_request1,
114 const NanConfigRequestSupplemental& aidl_request2,
115 legacy_hal::NanEnableRequest* legacy_request);
116bool convertAidlNanConfigRequestToLegacy(const NanConfigRequest& aidl_request1,
117 const NanConfigRequestSupplemental& aidl_request2,
118 legacy_hal::NanConfigRequest* legacy_request);
119bool convertAidlNanPublishRequestToLegacy(const NanPublishRequest& aidl_request,
120 legacy_hal::NanPublishRequest* legacy_request);
121bool convertAidlNanSubscribeRequestToLegacy(const NanSubscribeRequest& aidl_request,
122 legacy_hal::NanSubscribeRequest* legacy_request);
123bool convertAidlNanTransmitFollowupRequestToLegacy(
124 const NanTransmitFollowupRequest& aidl_request,
125 legacy_hal::NanTransmitFollowupRequest* legacy_request);
126bool convertAidlNanDataPathInitiatorRequestToLegacy(
127 const NanInitiateDataPathRequest& aidl_request,
128 legacy_hal::NanDataPathInitiatorRequest* legacy_request);
129bool convertAidlNanDataPathIndicationResponseToLegacy(
130 const NanRespondToDataPathIndicationRequest& aidl_response,
131 legacy_hal::NanDataPathIndicationResponse* legacy_response);
132bool convertLegacyNanResponseHeaderToAidl(const legacy_hal::NanResponseMsg& legacy_response,
133 NanStatus* nanStatus);
134bool convertLegacyNanCapabilitiesResponseToAidl(const legacy_hal::NanCapabilities& legacy_response,
135 NanCapabilities* aidl_response);
136bool convertLegacyNanMatchIndToAidl(const legacy_hal::NanMatchInd& legacy_ind,
137 NanMatchInd* aidl_ind);
138bool convertLegacyNanFollowupIndToAidl(const legacy_hal::NanFollowupInd& legacy_ind,
139 NanFollowupReceivedInd* aidl_ind);
140bool convertLegacyNanDataPathRequestIndToAidl(const legacy_hal::NanDataPathRequestInd& legacy_ind,
141 NanDataPathRequestInd* aidl_ind);
142bool convertLegacyNanDataPathConfirmIndToAidl(const legacy_hal::NanDataPathConfirmInd& legacy_ind,
143 NanDataPathConfirmInd* aidl_ind);
144bool convertLegacyNanDataPathScheduleUpdateIndToAidl(
145 const legacy_hal::NanDataPathScheduleUpdateInd& legacy_ind,
146 NanDataPathScheduleUpdateInd* aidl_ind);
147
148// RTT controller conversion methods.
149bool convertAidlVectorOfRttConfigToLegacy(const std::vector<RttConfig>& aidl_configs,
150 std::vector<legacy_hal::wifi_rtt_config>* legacy_configs);
151bool convertAidlRttLciInformationToLegacy(const RttLciInformation& aidl_info,
152 legacy_hal::wifi_lci_information* legacy_info);
153bool convertAidlRttLcrInformationToLegacy(const RttLcrInformation& aidl_info,
154 legacy_hal::wifi_lcr_information* legacy_info);
155bool convertAidlRttResponderToLegacy(const RttResponder& aidl_responder,
156 legacy_hal::wifi_rtt_responder* legacy_responder);
157bool convertAidlWifiChannelInfoToLegacy(const WifiChannelInfo& aidl_info,
158 legacy_hal::wifi_channel_info* legacy_info);
159bool convertLegacyRttResponderToAidl(const legacy_hal::wifi_rtt_responder& legacy_responder,
160 RttResponder* aidl_responder);
161bool convertLegacyRttCapabilitiesToAidl(
162 const legacy_hal::wifi_rtt_capabilities& legacy_capabilities,
163 RttCapabilities* aidl_capabilities);
164bool convertLegacyVectorOfRttResultToAidl(
165 const std::vector<const legacy_hal::wifi_rtt_result*>& legacy_results,
166 std::vector<RttResult>* aidl_results);
Sunil Ravif8fc2372022-11-10 18:37:41 +0000167bool convertLegacyVectorOfRttResultV2ToAidl(
168 const std::vector<const legacy_hal::wifi_rtt_result_v2*>& legacy_results,
169 std::vector<RttResult>* aidl_results);
Gabriel Birenf3262f92022-07-15 23:25:39 +0000170uint32_t convertAidlWifiBandToLegacyMacBand(WifiBand band);
171uint32_t convertAidlWifiIfaceModeToLegacy(uint32_t aidl_iface_mask);
172uint32_t convertAidlUsableChannelFilterToLegacy(uint32_t aidl_filter_mask);
173bool convertLegacyWifiUsableChannelsToAidl(
174 const std::vector<legacy_hal::wifi_usable_channel>& legacy_usable_channels,
175 std::vector<WifiUsableChannel>* aidl_usable_channels);
176bool convertLegacyPeerInfoStatsToAidl(const legacy_hal::WifiPeerInfo& legacy_peer_info_stats,
177 StaPeerInfo* aidl_peer_info_stats);
178bool convertLegacyWifiRateInfoToAidl(const legacy_hal::wifi_rate& legacy_rate,
179 WifiRateInfo* aidl_rate);
Mahesh KKVc84d3772022-12-02 16:53:28 -0800180bool convertLegacyWifiChipCapabilitiesToAidl(
181 const legacy_hal::wifi_chip_capabilities& legacy_chip_capabilities,
182 WifiChipCapabilities& aidl_chip_capabilities);
Nate Jiang38e8db52022-12-02 17:30:27 -0800183bool convertAidlNanPairingInitiatorRequestToLegacy(const NanPairingRequest& aidl_request,
184 legacy_hal::NanPairingRequest* legacy_request);
185bool convertAidlNanPairingIndicationResponseToLegacy(
186 const NanRespondToPairingIndicationRequest& aidl_response,
187 legacy_hal::NanPairingIndicationResponse* legacy_response);
188bool convertAidlNanBootstrappingInitiatorRequestToLegacy(
189 const NanBootstrappingRequest& aidl_request,
190 legacy_hal::NanBootstrappingRequest* legacy_request);
191bool convertAidlNanBootstrappingIndicationResponseToLegacy(
192 const NanBootstrappingResponse& aidl_response,
193 legacy_hal::NanBootstrappingIndicationResponse* legacy_response);
194bool convertLegacyNanPairingRequestIndToAidl(const legacy_hal::NanPairingRequestInd& legacy_ind,
195 NanPairingRequestInd* aidl_ind);
196bool convertLegacyNanPairingConfirmIndToAidl(const legacy_hal::NanPairingConfirmInd& legacy_ind,
197 NanPairingConfirmInd* aidl_ind);
198bool convertLegacyNanBootstrappingRequestIndToAidl(
199 const legacy_hal::NanBootstrappingRequestInd& legacy_ind,
200 NanBootstrappingRequestInd* aidl_ind);
201bool convertLegacyNanBootstrappingConfirmIndToAidl(
202 const legacy_hal::NanBootstrappingConfirmInd& legacy_ind,
203 NanBootstrappingConfirmInd* aidl_ind);
Shuibing Daie5fbcab2022-12-19 15:37:19 -0800204uint32_t convertAidlChannelCategoryToLegacy(uint32_t aidl_channel_category_mask);
Gabriel Birenf3262f92022-07-15 23:25:39 +0000205} // namespace aidl_struct_util
206} // namespace wifi
207} // namespace hardware
208} // namespace android
209} // namespace aidl
210
211#endif // AIDL_STRUCT_UTIL_H_