diff --git a/wifi/1.0/default/wifi_nan_iface.cpp b/wifi/1.0/default/wifi_nan_iface.cpp index c018e67090..a2190a815d 100644 --- a/wifi/1.0/default/wifi_nan_iface.cpp +++ b/wifi/1.0/default/wifi_nan_iface.cpp @@ -33,6 +33,7 @@ WifiNanIface::WifiNanIface(const std::string& ifname, void WifiNanIface::invalidate() { legacy_hal_.reset(); + event_callbacks_.clear(); is_valid_ = false; } @@ -47,6 +48,193 @@ Return WifiNanIface::getName(getName_cb hidl_status_cb) { hidl_status_cb); } +Return WifiNanIface::registerEventCallback( + const sp& callback, + registerEventCallback_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::registerEventCallbackInternal, + hidl_status_cb, + callback); +} + +Return WifiNanIface::enableRequest(uint32_t cmd_id, + const NanEnableRequest& msg, + enableRequest_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::enableRequestInternal, + hidl_status_cb, + cmd_id, + msg); +} + +Return WifiNanIface::disableRequest(uint32_t cmd_id, + disableRequest_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::disableRequestInternal, + hidl_status_cb, + cmd_id); +} + +Return WifiNanIface::publishRequest(uint32_t cmd_id, + const NanPublishRequest& msg, + publishRequest_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::publishRequestInternal, + hidl_status_cb, + cmd_id, + msg); +} + +Return WifiNanIface::publishCancelRequest( + uint32_t cmd_id, + const NanPublishCancelRequest& msg, + publishCancelRequest_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::publishCancelRequestInternal, + hidl_status_cb, + cmd_id, + msg); +} + +Return WifiNanIface::subscribeRequest( + uint32_t cmd_id, + const NanSubscribeRequest& msg, + subscribeRequest_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::subscribeRequestInternal, + hidl_status_cb, + cmd_id, + msg); +} + +Return WifiNanIface::subscribeCancelRequest( + uint32_t cmd_id, + const NanSubscribeCancelRequest& msg, + subscribeCancelRequest_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::subscribeCancelRequestInternal, + hidl_status_cb, + cmd_id, + msg); +} + +Return WifiNanIface::transmitFollowupRequest( + uint32_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 WifiNanIface::configRequest(uint32_t cmd_id, + const NanConfigRequest& msg, + configRequest_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::configRequestInternal, + hidl_status_cb, + cmd_id, + msg); +} + +Return WifiNanIface::beaconSdfPayloadRequest( + uint32_t cmd_id, + const NanBeaconSdfPayloadRequest& msg, + beaconSdfPayloadRequest_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::beaconSdfPayloadRequestInternal, + hidl_status_cb, + cmd_id, + msg); +} + +Return WifiNanIface::getVersion(getVersion_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::getVersionInternal, + hidl_status_cb); +} + +Return WifiNanIface::getCapabilities(uint32_t cmd_id, + getCapabilities_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::getCapabilitiesInternal, + hidl_status_cb, + cmd_id); +} + +Return WifiNanIface::dataInterfaceCreate( + uint32_t cmd_id, + const hidl_string& iface_name, + dataInterfaceCreate_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::dataInterfaceCreateInternal, + hidl_status_cb, + cmd_id, + iface_name); +} + +Return WifiNanIface::dataInterfaceDelete( + uint32_t cmd_id, + const hidl_string& iface_name, + dataInterfaceDelete_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::dataInterfaceDeleteInternal, + hidl_status_cb, + cmd_id, + iface_name); +} + +Return WifiNanIface::dataRequestInitiator( + uint32_t cmd_id, + const NanDataPathInitiatorRequest& msg, + dataRequestInitiator_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::dataRequestInitiatorInternal, + hidl_status_cb, + cmd_id, + msg); +} + +Return WifiNanIface::dataIndicationResponse( + uint32_t cmd_id, + const NanDataPathIndicationResponse& msg, + dataIndicationResponse_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::dataIndicationResponseInternal, + hidl_status_cb, + cmd_id, + msg); +} + +Return WifiNanIface::dataEnd(uint32_t cmd_id, + const NanDataPathEndRequest& msg, + dataEnd_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiNanIface::dataEndInternal, + hidl_status_cb, + cmd_id, + msg); +} + Return WifiNanIface::getType(getType_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, @@ -62,6 +250,93 @@ std::pair WifiNanIface::getTypeInternal() { return {createWifiStatus(WifiStatusCode::SUCCESS), IfaceType::NAN}; } +WifiStatus WifiNanIface::registerEventCallbackInternal( + const sp& callback) { + // TODO(b/31632518): remove the callback when the client is destroyed + event_callbacks_.emplace_back(callback); + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +WifiStatus WifiNanIface::enableRequestInternal( + uint32_t /* cmd_id */, const NanEnableRequest& /* msg */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +WifiStatus WifiNanIface::disableRequestInternal(uint32_t /* cmd_id */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +WifiStatus WifiNanIface::publishRequestInternal( + uint32_t /* cmd_id */, const NanPublishRequest& /* msg */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +WifiStatus WifiNanIface::publishCancelRequestInternal( + uint32_t /* cmd_id */, const NanPublishCancelRequest& /* msg */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} +WifiStatus WifiNanIface::subscribeRequestInternal( + uint32_t /* cmd_id */, const NanSubscribeRequest& /* msg */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} +WifiStatus WifiNanIface::subscribeCancelRequestInternal( + uint32_t /* cmd_id */, const NanSubscribeCancelRequest& /* msg */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} +WifiStatus WifiNanIface::transmitFollowupRequestInternal( + uint32_t /* cmd_id */, const NanTransmitFollowupRequest& /* msg */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} +WifiStatus WifiNanIface::configRequestInternal( + uint32_t /* cmd_id */, const NanConfigRequest& /* msg */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} +WifiStatus WifiNanIface::beaconSdfPayloadRequestInternal( + uint32_t /* cmd_id */, const NanBeaconSdfPayloadRequest& /* msg */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} +std::pair WifiNanIface::getVersionInternal() { + // TODO implement + return {createWifiStatus(WifiStatusCode::SUCCESS), 0}; +} +WifiStatus WifiNanIface::getCapabilitiesInternal(uint32_t /* cmd_id */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} +WifiStatus WifiNanIface::dataInterfaceCreateInternal( + uint32_t /* cmd_id */, const std::string& /* iface_name */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} +WifiStatus WifiNanIface::dataInterfaceDeleteInternal( + uint32_t /* cmd_id */, const std::string& /* iface_name */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} +WifiStatus WifiNanIface::dataRequestInitiatorInternal( + uint32_t /* cmd_id */, const NanDataPathInitiatorRequest& /* msg */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} +WifiStatus WifiNanIface::dataIndicationResponseInternal( + uint32_t /* cmd_id */, const NanDataPathIndicationResponse& /* msg */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} +WifiStatus WifiNanIface::dataEndInternal( + uint32_t /* cmd_id */, const NanDataPathEndRequest& /* msg */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} } // namespace implementation } // namespace V1_0 } // namespace wifi diff --git a/wifi/1.0/default/wifi_nan_iface.h b/wifi/1.0/default/wifi_nan_iface.h index 31e0c7ffe4..f3c06406ed 100644 --- a/wifi/1.0/default/wifi_nan_iface.h +++ b/wifi/1.0/default/wifi_nan_iface.h @@ -19,6 +19,7 @@ #include #include +#include #include "wifi_legacy_hal.h" @@ -42,14 +43,100 @@ class WifiNanIface : public IWifiNanIface { // HIDL methods exposed. Return getName(getName_cb hidl_status_cb) override; Return getType(getType_cb hidl_status_cb) override; + Return registerEventCallback( + const sp& callback, + registerEventCallback_cb hidl_status_cb) override; + Return enableRequest(uint32_t cmd_id, + const NanEnableRequest& msg, + enableRequest_cb hidl_status_cb) override; + Return disableRequest(uint32_t cmd_id, + disableRequest_cb hidl_status_cb) override; + Return publishRequest(uint32_t cmd_id, + const NanPublishRequest& msg, + publishRequest_cb hidl_status_cb) override; + Return publishCancelRequest( + uint32_t cmd_id, + const NanPublishCancelRequest& msg, + publishCancelRequest_cb hidl_status_cb) override; + Return subscribeRequest(uint32_t cmd_id, + const NanSubscribeRequest& msg, + subscribeRequest_cb hidl_status_cb) override; + Return subscribeCancelRequest( + uint32_t cmd_id, + const NanSubscribeCancelRequest& msg, + subscribeCancelRequest_cb hidl_status_cb) override; + Return transmitFollowupRequest( + uint32_t cmd_id, + const NanTransmitFollowupRequest& msg, + transmitFollowupRequest_cb hidl_status_cb) override; + Return configRequest(uint32_t cmd_id, + const NanConfigRequest& msg, + configRequest_cb hidl_status_cb) override; + Return beaconSdfPayloadRequest( + uint32_t cmd_id, + const NanBeaconSdfPayloadRequest& msg, + beaconSdfPayloadRequest_cb hidl_status_cb) override; + Return getVersion(getVersion_cb hidl_status_cb) override; + Return getCapabilities(uint32_t cmd_id, + getCapabilities_cb hidl_status_cb) override; + Return dataInterfaceCreate( + uint32_t cmd_id, + const hidl_string& iface_name, + dataInterfaceCreate_cb hidl_status_cb) override; + Return dataInterfaceDelete( + uint32_t cmd_id, + const hidl_string& iface_name, + dataInterfaceDelete_cb hidl_status_cb) override; + Return dataRequestInitiator( + uint32_t cmd_id, + const NanDataPathInitiatorRequest& msg, + dataRequestInitiator_cb hidl_status_cb) override; + Return dataIndicationResponse( + uint32_t cmd_id, + const NanDataPathIndicationResponse& msg, + dataIndicationResponse_cb hidl_status_cb) override; + Return dataEnd(uint32_t cmd_id, + const NanDataPathEndRequest& msg, + dataEnd_cb hidl_status_cb) override; private: // Corresponding worker functions for the HIDL methods. std::pair getNameInternal(); std::pair getTypeInternal(); + WifiStatus registerEventCallbackInternal( + const sp& callback); + WifiStatus enableRequestInternal(uint32_t cmd_id, + const NanEnableRequest& msg); + WifiStatus disableRequestInternal(uint32_t cmd_id); + WifiStatus publishRequestInternal(uint32_t cmd_id, + const NanPublishRequest& msg); + WifiStatus publishCancelRequestInternal(uint32_t cmd_id, + const NanPublishCancelRequest& msg); + WifiStatus subscribeRequestInternal(uint32_t cmd_id, + const NanSubscribeRequest& msg); + WifiStatus subscribeCancelRequestInternal( + uint32_t cmd_id, const NanSubscribeCancelRequest& msg); + WifiStatus transmitFollowupRequestInternal( + uint32_t cmd_id, const NanTransmitFollowupRequest& msg); + WifiStatus configRequestInternal(uint32_t cmd_id, + const NanConfigRequest& msg); + WifiStatus beaconSdfPayloadRequestInternal( + uint32_t cmd_id, const NanBeaconSdfPayloadRequest& msg); + std::pair getVersionInternal(); + WifiStatus getCapabilitiesInternal(uint32_t cmd_id); + WifiStatus dataInterfaceCreateInternal(uint32_t cmd_id, + const std::string& iface_name); + WifiStatus dataInterfaceDeleteInternal(uint32_t cmd_id, + const std::string& iface_name); + WifiStatus dataRequestInitiatorInternal( + uint32_t cmd_id, const NanDataPathInitiatorRequest& msg); + WifiStatus dataIndicationResponseInternal( + uint32_t cmd_id, const NanDataPathIndicationResponse& msg); + WifiStatus dataEndInternal(uint32_t cmd_id, const NanDataPathEndRequest& msg); std::string ifname_; std::weak_ptr legacy_hal_; + std::vector> event_callbacks_; bool is_valid_; DISALLOW_COPY_AND_ASSIGN(WifiNanIface);