2 * Copyright (C) 2016 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 #include <android-base/logging.h>
19 #include "hidl_return_util.h"
20 #include "wifi_nan_iface.h"
21 #include "wifi_status_util.h"
27 namespace implementation {
28 using hidl_return_util::validateAndCall;
30 WifiNanIface::WifiNanIface(const std::string& ifname,
31 const std::weak_ptr<WifiLegacyHal> legacy_hal)
32 : ifname_(ifname), legacy_hal_(legacy_hal), is_valid_(true) {}
34 void WifiNanIface::invalidate() {
36 event_callbacks_.clear();
40 bool WifiNanIface::isValid() {
44 Return<void> WifiNanIface::getName(getName_cb hidl_status_cb) {
45 return validateAndCall(this,
46 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
47 &WifiNanIface::getNameInternal,
51 Return<void> WifiNanIface::registerEventCallback(
52 const sp<IWifiNanIfaceEventCallback>& callback,
53 registerEventCallback_cb hidl_status_cb) {
54 return validateAndCall(this,
55 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
56 &WifiNanIface::registerEventCallbackInternal,
61 Return<void> WifiNanIface::enableRequest(uint32_t cmd_id,
62 const NanEnableRequest& msg,
63 enableRequest_cb hidl_status_cb) {
64 return validateAndCall(this,
65 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
66 &WifiNanIface::enableRequestInternal,
72 Return<void> WifiNanIface::disableRequest(uint32_t cmd_id,
73 disableRequest_cb hidl_status_cb) {
74 return validateAndCall(this,
75 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
76 &WifiNanIface::disableRequestInternal,
81 Return<void> WifiNanIface::publishRequest(uint32_t cmd_id,
82 const NanPublishRequest& msg,
83 publishRequest_cb hidl_status_cb) {
84 return validateAndCall(this,
85 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
86 &WifiNanIface::publishRequestInternal,
92 Return<void> WifiNanIface::publishCancelRequest(
94 const NanPublishCancelRequest& msg,
95 publishCancelRequest_cb hidl_status_cb) {
96 return validateAndCall(this,
97 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
98 &WifiNanIface::publishCancelRequestInternal,
104 Return<void> WifiNanIface::subscribeRequest(
106 const NanSubscribeRequest& msg,
107 subscribeRequest_cb hidl_status_cb) {
108 return validateAndCall(this,
109 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
110 &WifiNanIface::subscribeRequestInternal,
116 Return<void> WifiNanIface::subscribeCancelRequest(
118 const NanSubscribeCancelRequest& msg,
119 subscribeCancelRequest_cb hidl_status_cb) {
120 return validateAndCall(this,
121 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
122 &WifiNanIface::subscribeCancelRequestInternal,
128 Return<void> WifiNanIface::transmitFollowupRequest(
130 const NanTransmitFollowupRequest& msg,
131 transmitFollowupRequest_cb hidl_status_cb) {
132 return validateAndCall(this,
133 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
134 &WifiNanIface::transmitFollowupRequestInternal,
140 Return<void> WifiNanIface::configRequest(uint32_t cmd_id,
141 const NanConfigRequest& msg,
142 configRequest_cb hidl_status_cb) {
143 return validateAndCall(this,
144 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
145 &WifiNanIface::configRequestInternal,
151 Return<void> WifiNanIface::beaconSdfPayloadRequest(
153 const NanBeaconSdfPayloadRequest& msg,
154 beaconSdfPayloadRequest_cb hidl_status_cb) {
155 return validateAndCall(this,
156 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
157 &WifiNanIface::beaconSdfPayloadRequestInternal,
163 Return<void> WifiNanIface::getVersion(getVersion_cb hidl_status_cb) {
164 return validateAndCall(this,
165 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
166 &WifiNanIface::getVersionInternal,
170 Return<void> WifiNanIface::getCapabilities(uint32_t cmd_id,
171 getCapabilities_cb hidl_status_cb) {
172 return validateAndCall(this,
173 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
174 &WifiNanIface::getCapabilitiesInternal,
179 Return<void> WifiNanIface::dataInterfaceCreate(
181 const hidl_string& iface_name,
182 dataInterfaceCreate_cb hidl_status_cb) {
183 return validateAndCall(this,
184 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
185 &WifiNanIface::dataInterfaceCreateInternal,
191 Return<void> WifiNanIface::dataInterfaceDelete(
193 const hidl_string& iface_name,
194 dataInterfaceDelete_cb hidl_status_cb) {
195 return validateAndCall(this,
196 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
197 &WifiNanIface::dataInterfaceDeleteInternal,
203 Return<void> WifiNanIface::dataRequestInitiator(
205 const NanDataPathInitiatorRequest& msg,
206 dataRequestInitiator_cb hidl_status_cb) {
207 return validateAndCall(this,
208 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
209 &WifiNanIface::dataRequestInitiatorInternal,
215 Return<void> WifiNanIface::dataIndicationResponse(
217 const NanDataPathIndicationResponse& msg,
218 dataIndicationResponse_cb hidl_status_cb) {
219 return validateAndCall(this,
220 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
221 &WifiNanIface::dataIndicationResponseInternal,
227 Return<void> WifiNanIface::dataEnd(uint32_t cmd_id,
228 const NanDataPathEndRequest& msg,
229 dataEnd_cb hidl_status_cb) {
230 return validateAndCall(this,
231 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
232 &WifiNanIface::dataEndInternal,
238 Return<void> WifiNanIface::getType(getType_cb hidl_status_cb) {
239 return validateAndCall(this,
240 WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
241 &WifiNanIface::getTypeInternal,
245 std::pair<WifiStatus, std::string> WifiNanIface::getNameInternal() {
246 return {createWifiStatus(WifiStatusCode::SUCCESS), ifname_};
249 std::pair<WifiStatus, IfaceType> WifiNanIface::getTypeInternal() {
250 return {createWifiStatus(WifiStatusCode::SUCCESS), IfaceType::NAN};
253 WifiStatus WifiNanIface::registerEventCallbackInternal(
254 const sp<IWifiNanIfaceEventCallback>& callback) {
255 // TODO(b/31632518): remove the callback when the client is destroyed
256 event_callbacks_.emplace_back(callback);
257 return createWifiStatus(WifiStatusCode::SUCCESS);
260 WifiStatus WifiNanIface::enableRequestInternal(
261 uint32_t /* cmd_id */, const NanEnableRequest& /* msg */) {
263 return createWifiStatus(WifiStatusCode::SUCCESS);
266 WifiStatus WifiNanIface::disableRequestInternal(uint32_t /* cmd_id */) {
268 return createWifiStatus(WifiStatusCode::SUCCESS);
271 WifiStatus WifiNanIface::publishRequestInternal(
272 uint32_t /* cmd_id */, const NanPublishRequest& /* msg */) {
274 return createWifiStatus(WifiStatusCode::SUCCESS);
277 WifiStatus WifiNanIface::publishCancelRequestInternal(
278 uint32_t /* cmd_id */, const NanPublishCancelRequest& /* msg */) {
280 return createWifiStatus(WifiStatusCode::SUCCESS);
282 WifiStatus WifiNanIface::subscribeRequestInternal(
283 uint32_t /* cmd_id */, const NanSubscribeRequest& /* msg */) {
285 return createWifiStatus(WifiStatusCode::SUCCESS);
287 WifiStatus WifiNanIface::subscribeCancelRequestInternal(
288 uint32_t /* cmd_id */, const NanSubscribeCancelRequest& /* msg */) {
290 return createWifiStatus(WifiStatusCode::SUCCESS);
292 WifiStatus WifiNanIface::transmitFollowupRequestInternal(
293 uint32_t /* cmd_id */, const NanTransmitFollowupRequest& /* msg */) {
295 return createWifiStatus(WifiStatusCode::SUCCESS);
297 WifiStatus WifiNanIface::configRequestInternal(
298 uint32_t /* cmd_id */, const NanConfigRequest& /* msg */) {
300 return createWifiStatus(WifiStatusCode::SUCCESS);
302 WifiStatus WifiNanIface::beaconSdfPayloadRequestInternal(
303 uint32_t /* cmd_id */, const NanBeaconSdfPayloadRequest& /* msg */) {
305 return createWifiStatus(WifiStatusCode::SUCCESS);
307 std::pair<WifiStatus, NanVersion> WifiNanIface::getVersionInternal() {
309 return {createWifiStatus(WifiStatusCode::SUCCESS), 0};
311 WifiStatus WifiNanIface::getCapabilitiesInternal(uint32_t /* cmd_id */) {
313 return createWifiStatus(WifiStatusCode::SUCCESS);
315 WifiStatus WifiNanIface::dataInterfaceCreateInternal(
316 uint32_t /* cmd_id */, const std::string& /* iface_name */) {
318 return createWifiStatus(WifiStatusCode::SUCCESS);
320 WifiStatus WifiNanIface::dataInterfaceDeleteInternal(
321 uint32_t /* cmd_id */, const std::string& /* iface_name */) {
323 return createWifiStatus(WifiStatusCode::SUCCESS);
325 WifiStatus WifiNanIface::dataRequestInitiatorInternal(
326 uint32_t /* cmd_id */, const NanDataPathInitiatorRequest& /* msg */) {
328 return createWifiStatus(WifiStatusCode::SUCCESS);
330 WifiStatus WifiNanIface::dataIndicationResponseInternal(
331 uint32_t /* cmd_id */, const NanDataPathIndicationResponse& /* msg */) {
333 return createWifiStatus(WifiStatusCode::SUCCESS);
335 WifiStatus WifiNanIface::dataEndInternal(
336 uint32_t /* cmd_id */, const NanDataPathEndRequest& /* msg */) {
338 return createWifiStatus(WifiStatusCode::SUCCESS);
340 } // namespace implementation
343 } // namespace hardware
344 } // namespace android