• 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/types.h>
23 #include <android/hardware/wifi/1.0/IWifiChip.h>
24 #include <android/hardware/wifi/1.1/IWifiChip.h>
25 
26 #include "wifi_legacy_hal.h"
27 
28 /**
29  * This file contains a bunch of functions to convert structs from the legacy
30  * HAL to HIDL and vice versa.
31  * TODO(b/32093047): Add unit tests for these conversion methods in the VTS test
32  * suite.
33  */
34 namespace android {
35 namespace hardware {
36 namespace wifi {
37 namespace V1_1 {
38 namespace implementation {
39 namespace hidl_struct_util {
40 using namespace android::hardware::wifi::V1_0;
41 
42 // Chip conversion methods.
43 bool convertLegacyFeaturesToHidlChipCapabilities(
44     uint32_t legacy_feature_set,
45     uint32_t legacy_logger_feature_set,
46     uint32_t* hidl_caps);
47 bool convertLegacyDebugRingBufferStatusToHidl(
48     const legacy_hal::wifi_ring_buffer_status& legacy_status,
49     WifiDebugRingBufferStatus* hidl_status);
50 bool convertLegacyVectorOfDebugRingBufferStatusToHidl(
51     const std::vector<legacy_hal::wifi_ring_buffer_status>& legacy_status_vec,
52     std::vector<WifiDebugRingBufferStatus>* hidl_status_vec);
53 bool convertLegacyWakeReasonStatsToHidl(
54     const legacy_hal::WakeReasonStats& legacy_stats,
55     WifiDebugHostWakeReasonStats* hidl_stats);
56 legacy_hal::wifi_power_scenario convertHidlTxPowerScenarioToLegacy(
57     V1_1::IWifiChip::TxPowerScenario hidl_scenario);
58 
59 // STA iface conversion methods.
60 bool convertLegacyFeaturesToHidlStaCapabilities(
61     uint32_t legacy_feature_set,
62     uint32_t legacy_logger_feature_set,
63     uint32_t* hidl_caps);
64 bool convertLegacyApfCapabilitiesToHidl(
65     const legacy_hal::PacketFilterCapabilities& legacy_caps,
66     StaApfPacketFilterCapabilities* hidl_caps);
67 bool convertLegacyGscanCapabilitiesToHidl(
68     const legacy_hal::wifi_gscan_capabilities& legacy_caps,
69     StaBackgroundScanCapabilities* hidl_caps);
70 legacy_hal::wifi_band convertHidlWifiBandToLegacy(WifiBand band);
71 bool convertHidlGscanParamsToLegacy(
72     const StaBackgroundScanParameters& hidl_scan_params,
73     legacy_hal::wifi_scan_cmd_params* legacy_scan_params);
74 // |has_ie_data| indicates whether or not the wifi_scan_result includes 802.11
75 // Information Elements (IEs)
76 bool convertLegacyGscanResultToHidl(
77     const legacy_hal::wifi_scan_result& legacy_scan_result,
78     bool has_ie_data,
79     StaScanResult* hidl_scan_result);
80 // |cached_results| is assumed to not include IEs.
81 bool convertLegacyVectorOfCachedGscanResultsToHidl(
82     const std::vector<legacy_hal::wifi_cached_scan_results>&
83         legacy_cached_scan_results,
84     std::vector<StaScanData>* hidl_scan_datas);
85 bool convertLegacyLinkLayerStatsToHidl(
86     const legacy_hal::LinkLayerStats& legacy_stats,
87     StaLinkLayerStats* hidl_stats);
88 bool convertLegacyRoamingCapabilitiesToHidl(
89     const legacy_hal::wifi_roaming_capabilities& legacy_caps,
90     StaRoamingCapabilities* hidl_caps);
91 bool convertHidlRoamingConfigToLegacy(
92     const StaRoamingConfig& hidl_config,
93     legacy_hal::wifi_roaming_config* legacy_config);
94 legacy_hal::fw_roaming_state_t convertHidlRoamingStateToLegacy(
95     StaRoamingState state);
96 bool convertLegacyVectorOfDebugTxPacketFateToHidl(
97     const std::vector<legacy_hal::wifi_tx_report>& legacy_fates,
98     std::vector<WifiDebugTxPacketFateReport>* hidl_fates);
99 bool convertLegacyVectorOfDebugRxPacketFateToHidl(
100     const std::vector<legacy_hal::wifi_rx_report>& legacy_fates,
101     std::vector<WifiDebugRxPacketFateReport>* hidl_fates);
102 
103 // NAN iface conversion methods.
104 void convertToWifiNanStatus(legacy_hal::NanStatusType type, const char* str, size_t max_len,
105     WifiNanStatus* wifiNanStatus);
106 bool convertHidlNanEnableRequestToLegacy(
107     const NanEnableRequest& hidl_request,
108     legacy_hal::NanEnableRequest* legacy_request);
109 bool convertHidlNanConfigRequestToLegacy(
110     const NanConfigRequest& hidl_request,
111     legacy_hal::NanConfigRequest* legacy_request);
112 bool convertHidlNanPublishRequestToLegacy(
113     const NanPublishRequest& hidl_request,
114     legacy_hal::NanPublishRequest* legacy_request);
115 bool convertHidlNanSubscribeRequestToLegacy(
116     const NanSubscribeRequest& hidl_request,
117     legacy_hal::NanSubscribeRequest* legacy_request);
118 bool convertHidlNanTransmitFollowupRequestToLegacy(
119     const NanTransmitFollowupRequest& hidl_request,
120     legacy_hal::NanTransmitFollowupRequest* legacy_request);
121 bool convertHidlNanDataPathInitiatorRequestToLegacy(
122     const NanInitiateDataPathRequest& hidl_request,
123     legacy_hal::NanDataPathInitiatorRequest* legacy_request);
124 bool convertHidlNanDataPathIndicationResponseToLegacy(
125     const NanRespondToDataPathIndicationRequest& hidl_response,
126     legacy_hal::NanDataPathIndicationResponse* legacy_response);
127 bool convertLegacyNanResponseHeaderToHidl(
128     const legacy_hal::NanResponseMsg& legacy_response,
129     WifiNanStatus* wifiNanStatus);
130 bool convertLegacyNanCapabilitiesResponseToHidl(
131     const legacy_hal::NanCapabilities& legacy_response,
132     NanCapabilities* hidl_response);
133 bool convertLegacyNanMatchIndToHidl(const legacy_hal::NanMatchInd& legacy_ind,
134                                     NanMatchInd* hidl_ind);
135 bool convertLegacyNanFollowupIndToHidl(
136     const legacy_hal::NanFollowupInd& legacy_ind, NanFollowupReceivedInd* hidl_ind);
137 bool convertLegacyNanDataPathRequestIndToHidl(
138     const legacy_hal::NanDataPathRequestInd& legacy_ind,
139     NanDataPathRequestInd* hidl_ind);
140 bool convertLegacyNanDataPathConfirmIndToHidl(
141     const legacy_hal::NanDataPathConfirmInd& legacy_ind,
142     NanDataPathConfirmInd* hidl_ind);
143 
144 // RTT controller conversion methods.
145 bool convertHidlVectorOfRttConfigToLegacy(
146     const std::vector<RttConfig>& hidl_configs,
147     std::vector<legacy_hal::wifi_rtt_config>* legacy_configs);
148 bool convertHidlRttLciInformationToLegacy(
149     const RttLciInformation& hidl_info,
150     legacy_hal::wifi_lci_information* legacy_info);
151 bool convertHidlRttLcrInformationToLegacy(
152     const RttLcrInformation& hidl_info,
153     legacy_hal::wifi_lcr_information* legacy_info);
154 bool convertHidlRttResponderToLegacy(
155     const RttResponder& hidl_responder,
156     legacy_hal::wifi_rtt_responder* legacy_responder);
157 bool convertHidlWifiChannelInfoToLegacy(
158     const WifiChannelInfo& hidl_info,
159     legacy_hal::wifi_channel_info* legacy_info);
160 bool convertLegacyRttResponderToHidl(
161     const legacy_hal::wifi_rtt_responder& legacy_responder,
162     RttResponder* hidl_responder);
163 bool convertLegacyRttCapabilitiesToHidl(
164     const legacy_hal::wifi_rtt_capabilities& legacy_capabilities,
165     RttCapabilities* hidl_capabilities);
166 bool convertLegacyVectorOfRttResultToHidl(
167     const std::vector<const legacy_hal::wifi_rtt_result*>& legacy_results,
168     std::vector<RttResult>* hidl_results);
169 }  // namespace hidl_struct_util
170 }  // namespace implementation
171 }  // namespace V1_1
172 }  // namespace wifi
173 }  // namespace hardware
174 }  // namespace android
175 
176 #endif  // HIDL_STRUCT_UTIL_H_
177