• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 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 HIDL_STRUCT_UTIL_H_
18 #define HIDL_STRUCT_UTIL_H_
19 
20 #include <vector>
21 
22 #include <android/hardware/wifi/1.0/IWifiChip.h>
23 #include <android/hardware/wifi/1.0/types.h>
24 #include <android/hardware/wifi/1.2/types.h>
25 #include <android/hardware/wifi/1.3/types.h>
26 #include <android/hardware/wifi/1.4/IWifiChipEventCallback.h>
27 #include <android/hardware/wifi/1.4/types.h>
28 #include <android/hardware/wifi/1.6/IWifiChip.h>
29 #include <android/hardware/wifi/1.6/types.h>
30 
31 #include "wifi_legacy_hal.h"
32 
33 /**
34  * This file contains a bunch of functions to convert structs from the legacy
35  * HAL to HIDL and vice versa.
36  * TODO(b/32093047): Add unit tests for these conversion methods in the VTS test
37  * suite.
38  */
39 namespace android {
40 namespace hardware {
41 namespace wifi {
42 namespace V1_6 {
43 namespace implementation {
44 namespace hidl_struct_util {
45 using namespace android::hardware::wifi::V1_0;
46 
47 // Chip conversion methods.
48 bool convertLegacyFeaturesToHidlChipCapabilities(uint64_t legacy_feature_set,
49                                                  uint32_t legacy_logger_feature_set,
50                                                  uint32_t* hidl_caps);
51 bool convertLegacyDebugRingBufferStatusToHidl(
52         const legacy_hal::wifi_ring_buffer_status& legacy_status,
53         WifiDebugRingBufferStatus* hidl_status);
54 bool convertLegacyVectorOfDebugRingBufferStatusToHidl(
55         const std::vector<legacy_hal::wifi_ring_buffer_status>& legacy_status_vec,
56         std::vector<WifiDebugRingBufferStatus>* hidl_status_vec);
57 bool convertLegacyWakeReasonStatsToHidl(const legacy_hal::WakeReasonStats& legacy_stats,
58                                         WifiDebugHostWakeReasonStats* hidl_stats);
59 legacy_hal::wifi_power_scenario convertHidlTxPowerScenarioToLegacy(
60         V1_1::IWifiChip::TxPowerScenario hidl_scenario);
61 legacy_hal::wifi_latency_mode convertHidlLatencyModeToLegacy(
62         V1_3::IWifiChip::LatencyMode hidl_latency_mode);
63 legacy_hal::wifi_power_scenario convertHidlTxPowerScenarioToLegacy_1_2(
64         V1_2::IWifiChip::TxPowerScenario hidl_scenario);
65 bool convertLegacyWifiMacInfosToHidl(
66         const std::vector<legacy_hal::WifiMacInfo>& legacy_mac_infos,
67         std::vector<V1_4::IWifiChipEventCallback::RadioModeInfo>* hidl_radio_mode_infos);
68 legacy_hal::wifi_interface_type convertHidlIfaceTypeToLegacy(IfaceType hidl_interface_type);
69 legacy_hal::wifi_multi_sta_use_case convertHidlMultiStaUseCaseToLegacy(
70         V1_5::IWifiChip::MultiStaUseCase use_case);
71 bool convertHidlCoexUnsafeChannelToLegacy(
72         const V1_5::IWifiChip::CoexUnsafeChannel& hidl_unsafe_channel,
73         legacy_hal::wifi_coex_unsafe_channel* legacy_unsafe_channel);
74 bool convertHidlVectorOfCoexUnsafeChannelToLegacy(
75         const std::vector<V1_5::IWifiChip::CoexUnsafeChannel>& hidl_unsafe_channels,
76         std::vector<legacy_hal::wifi_coex_unsafe_channel>* legacy_unsafe_channels);
77 bool convertLegacyRadioCombinationsMatrixToHidl(
78         legacy_hal::wifi_radio_combination_matrix* legacy_matrix,
79         V1_6::WifiRadioCombinationMatrix* hidl_matrix);
80 V1_5::WifiBand convertLegacyMacBandToHidlWifiBand(uint32_t band);
81 V1_6::WifiAntennaMode convertLegacyAntennaConfigurationToHidl(uint32_t antenna_cfg);
82 
83 // STA iface conversion methods.
84 bool convertLegacyFeaturesToHidlStaCapabilities(uint64_t legacy_feature_set,
85                                                 uint32_t legacy_logger_feature_set,
86                                                 uint32_t* hidl_caps);
87 bool convertLegacyApfCapabilitiesToHidl(const legacy_hal::PacketFilterCapabilities& legacy_caps,
88                                         StaApfPacketFilterCapabilities* hidl_caps);
89 bool convertLegacyGscanCapabilitiesToHidl(const legacy_hal::wifi_gscan_capabilities& legacy_caps,
90                                           StaBackgroundScanCapabilities* hidl_caps);
91 legacy_hal::wifi_band convertHidlWifiBandToLegacy(V1_0::WifiBand band);
92 bool convertHidlGscanParamsToLegacy(const StaBackgroundScanParameters& hidl_scan_params,
93                                     legacy_hal::wifi_scan_cmd_params* legacy_scan_params);
94 // |has_ie_data| indicates whether or not the wifi_scan_result includes 802.11
95 // Information Elements (IEs)
96 bool convertLegacyGscanResultToHidl(const legacy_hal::wifi_scan_result& legacy_scan_result,
97                                     bool has_ie_data, StaScanResult* hidl_scan_result);
98 // |cached_results| is assumed to not include IEs.
99 bool convertLegacyVectorOfCachedGscanResultsToHidl(
100         const std::vector<legacy_hal::wifi_cached_scan_results>& legacy_cached_scan_results,
101         std::vector<StaScanData>* hidl_scan_datas);
102 bool convertLegacyLinkLayerStatsToHidl(const legacy_hal::LinkLayerStats& legacy_stats,
103                                        V1_6::StaLinkLayerStats* hidl_stats);
104 bool convertLegacyRoamingCapabilitiesToHidl(
105         const legacy_hal::wifi_roaming_capabilities& legacy_caps,
106         StaRoamingCapabilities* hidl_caps);
107 bool convertHidlRoamingConfigToLegacy(const StaRoamingConfig& hidl_config,
108                                       legacy_hal::wifi_roaming_config* legacy_config);
109 legacy_hal::fw_roaming_state_t convertHidlRoamingStateToLegacy(StaRoamingState state);
110 bool convertLegacyVectorOfDebugTxPacketFateToHidl(
111         const std::vector<legacy_hal::wifi_tx_report>& legacy_fates,
112         std::vector<WifiDebugTxPacketFateReport>* hidl_fates);
113 bool convertLegacyVectorOfDebugRxPacketFateToHidl(
114         const std::vector<legacy_hal::wifi_rx_report>& legacy_fates,
115         std::vector<WifiDebugRxPacketFateReport>* hidl_fates);
116 
117 // NAN iface conversion methods.
118 void convertToWifiNanStatus(legacy_hal::NanStatusType type, const char* str, size_t max_len,
119                             WifiNanStatus* wifiNanStatus);
120 bool convertHidlNanEnableRequestToLegacy(const V1_4::NanEnableRequest& hidl_request,
121                                          legacy_hal::NanEnableRequest* legacy_request);
122 bool convertHidlNanConfigRequestToLegacy(const V1_4::NanConfigRequest& hidl_request,
123                                          legacy_hal::NanConfigRequest* legacy_request);
124 bool convertHidlNanEnableRequest_1_6ToLegacy(
125         const V1_4::NanEnableRequest& hidl_request1,
126         const V1_6::NanConfigRequestSupplemental& hidl_request2,
127         legacy_hal::NanEnableRequest* legacy_request);
128 bool convertHidlNanConfigRequest_1_6ToLegacy(
129         const V1_4::NanConfigRequest& hidl_request1,
130         const V1_6::NanConfigRequestSupplemental& hidl_request2,
131         legacy_hal::NanConfigRequest* legacy_request);
132 bool convertHidlNanPublishRequestToLegacy(const V1_6::NanPublishRequest& hidl_request,
133                                           legacy_hal::NanPublishRequest* legacy_request);
134 bool convertHidlNanSubscribeRequestToLegacy(const V1_0::NanSubscribeRequest& hidl_request,
135                                             legacy_hal::NanSubscribeRequest* legacy_request);
136 bool convertHidlNanTransmitFollowupRequestToLegacy(
137         const NanTransmitFollowupRequest& hidl_request,
138         legacy_hal::NanTransmitFollowupRequest* legacy_request);
139 bool convertHidlNanDataPathInitiatorRequestToLegacy(
140         const V1_0::NanInitiateDataPathRequest& hidl_request,
141         legacy_hal::NanDataPathInitiatorRequest* legacy_request);
142 bool convertHidlNanDataPathIndicationResponseToLegacy(
143         const V1_0::NanRespondToDataPathIndicationRequest& hidl_response,
144         legacy_hal::NanDataPathIndicationResponse* legacy_response);
145 bool convertHidlNanDataPathInitiatorRequest_1_6ToLegacy(
146         const V1_6::NanInitiateDataPathRequest& hidl_request,
147         legacy_hal::NanDataPathInitiatorRequest* legacy_request);
148 bool convertHidlNanDataPathIndicationResponse_1_6ToLegacy(
149         const V1_6::NanRespondToDataPathIndicationRequest& hidl_response,
150         legacy_hal::NanDataPathIndicationResponse* legacy_response);
151 
152 bool convertLegacyNanResponseHeaderToHidl(const legacy_hal::NanResponseMsg& legacy_response,
153                                           WifiNanStatus* wifiNanStatus);
154 bool convertLegacyNanCapabilitiesResponseToHidl(const legacy_hal::NanCapabilities& legacy_response,
155                                                 V1_6::NanCapabilities* hidl_response);
156 bool convertLegacyNanMatchIndToHidl(const legacy_hal::NanMatchInd& legacy_ind,
157                                     V1_6::NanMatchInd* hidl_ind);
158 bool convertLegacyNanFollowupIndToHidl(const legacy_hal::NanFollowupInd& legacy_ind,
159                                        NanFollowupReceivedInd* hidl_ind);
160 bool convertLegacyNanDataPathRequestIndToHidl(const legacy_hal::NanDataPathRequestInd& legacy_ind,
161                                               NanDataPathRequestInd* hidl_ind);
162 bool convertLegacyNanDataPathConfirmIndToHidl(const legacy_hal::NanDataPathConfirmInd& legacy_ind,
163                                               V1_6::NanDataPathConfirmInd* hidl_ind);
164 bool convertLegacyNanDataPathScheduleUpdateIndToHidl(
165         const legacy_hal::NanDataPathScheduleUpdateInd& legacy_ind,
166         V1_6::NanDataPathScheduleUpdateInd* hidl_ind);
167 
168 // RTT controller conversion methods.
169 bool convertHidlVectorOfRttConfigToLegacy(const std::vector<V1_6::RttConfig>& hidl_configs,
170                                           std::vector<legacy_hal::wifi_rtt_config>* legacy_configs);
171 bool convertHidlRttLciInformationToLegacy(const RttLciInformation& hidl_info,
172                                           legacy_hal::wifi_lci_information* legacy_info);
173 bool convertHidlRttLcrInformationToLegacy(const RttLcrInformation& hidl_info,
174                                           legacy_hal::wifi_lcr_information* legacy_info);
175 bool convertHidlRttResponderToLegacy(const V1_6::RttResponder& hidl_responder,
176                                      legacy_hal::wifi_rtt_responder* legacy_responder);
177 bool convertHidlWifiChannelInfoToLegacy(const V1_6::WifiChannelInfo& hidl_info,
178                                         legacy_hal::wifi_channel_info* legacy_info);
179 bool convertLegacyRttResponderToHidl(const legacy_hal::wifi_rtt_responder& legacy_responder,
180                                      V1_6::RttResponder* hidl_responder);
181 bool convertLegacyRttCapabilitiesToHidl(
182         const legacy_hal::wifi_rtt_capabilities& legacy_capabilities,
183         V1_6::RttCapabilities* hidl_capabilities);
184 bool convertLegacyVectorOfRttResultToHidl(
185         const std::vector<const legacy_hal::wifi_rtt_result*>& legacy_results,
186         std::vector<V1_6::RttResult>* hidl_results);
187 uint32_t convertHidlWifiBandToLegacyMacBand(V1_5::WifiBand band);
188 uint32_t convertHidlWifiIfaceModeToLegacy(uint32_t hidl_iface_mask);
189 uint32_t convertHidlUsableChannelFilterToLegacy(uint32_t hidl_filter_mask);
190 bool convertLegacyWifiUsableChannelsToHidl(
191         const std::vector<legacy_hal::wifi_usable_channel>& legacy_usable_channels,
192         std::vector<V1_6::WifiUsableChannel>* hidl_usable_channels);
193 bool convertLegacyPeerInfoStatsToHidl(const legacy_hal::WifiPeerInfo& legacy_peer_info_stats,
194                                       V1_6::StaPeerInfo* hidl_peer_info_stats);
195 bool convertLegacyWifiRateInfoToHidl(const legacy_hal::wifi_rate& legacy_rate,
196                                      V1_6::WifiRateInfo* hidl_rate);
197 }  // namespace hidl_struct_util
198 }  // namespace implementation
199 }  // namespace V1_6
200 }  // namespace wifi
201 }  // namespace hardware
202 }  // namespace android
203 
204 #endif  // HIDL_STRUCT_UTIL_H_
205