diff --git a/wifi/1.0/default/wifi_rtt_controller.cpp b/wifi/1.0/default/wifi_rtt_controller.cpp index b7eab89d9f..dbe836b22f 100644 --- a/wifi/1.0/default/wifi_rtt_controller.cpp +++ b/wifi/1.0/default/wifi_rtt_controller.cpp @@ -34,6 +34,7 @@ WifiRttController::WifiRttController( void WifiRttController::invalidate() { legacy_hal_.reset(); + event_callbacks_.clear(); is_valid_ = false; } @@ -48,11 +49,226 @@ Return WifiRttController::getBoundIface(getBoundIface_cb hidl_status_cb) { hidl_status_cb); } +Return WifiRttController::registerEventCallback( + const sp& callback, + registerEventCallback_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::registerEventCallbackInternal, + hidl_status_cb, + callback); +} + +Return WifiRttController::rangeRequest( + uint32_t cmd_id, + const hidl_vec& rtt_configs, + rangeRequest_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::rangeRequestInternal, + hidl_status_cb, + cmd_id, + rtt_configs); +} + +Return WifiRttController::rangeCancel( + uint32_t cmd_id, + const hidl_vec>& addrs, + rangeCancel_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::rangeCancelInternal, + hidl_status_cb, + cmd_id, + addrs); +} + +Return WifiRttController::setChannelMap(uint32_t cmd_id, + const RttChannelMap& params, + uint32_t num_dw, + setChannelMap_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::setChannelMapInternal, + hidl_status_cb, + cmd_id, + params, + num_dw); +} + +Return WifiRttController::clearChannelMap( + uint32_t cmd_id, clearChannelMap_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::clearChannelMapInternal, + hidl_status_cb, + cmd_id); +} + +Return WifiRttController::getCapabilities( + getCapabilities_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::getCapabilitiesInternal, + hidl_status_cb); +} + +Return WifiRttController::setDebugCfg(RttDebugType type, + setDebugCfg_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::setDebugCfgInternal, + hidl_status_cb, + type); +} + +Return WifiRttController::getDebugInfo(getDebugInfo_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::getDebugInfoInternal, + hidl_status_cb); +} + +Return WifiRttController::setLci(uint32_t cmd_id, + const RttLciInformation& lci, + setLci_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::setLciInternal, + hidl_status_cb, + cmd_id, + lci); +} + +Return WifiRttController::setLcr(uint32_t cmd_id, + const RttLcrInformation& lcr, + setLcr_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::setLcrInternal, + hidl_status_cb, + cmd_id, + lcr); +} + +Return WifiRttController::getResponderInfo( + getResponderInfo_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::getResponderInfoInternal, + hidl_status_cb); +} + +Return WifiRttController::enableResponder( + uint32_t cmd_id, + const WifiChannelInfo& channel_hint, + uint32_t maxDurationSeconds, + const RttResponder& info, + enableResponder_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::enableResponderInternal, + hidl_status_cb, + cmd_id, + channel_hint, + maxDurationSeconds, + info); +} + +Return WifiRttController::disableResponder( + uint32_t cmd_id, disableResponder_cb hidl_status_cb) { + return validateAndCall(this, + WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID, + &WifiRttController::disableResponderInternal, + hidl_status_cb, + cmd_id); +} + std::pair> WifiRttController::getBoundIfaceInternal() { return {createWifiStatus(WifiStatusCode::SUCCESS), bound_iface_}; } +WifiStatus WifiRttController::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 WifiRttController::rangeRequestInternal( + uint32_t /* cmd_id */, const std::vector& /* rtt_configs */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +WifiStatus WifiRttController::rangeCancelInternal( + uint32_t /* cmd_id */, + const std::vector>& /* addrs */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +WifiStatus WifiRttController::setChannelMapInternal( + uint32_t /* cmd_id */, + const RttChannelMap& /* params */, + uint32_t /* num_dw */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +WifiStatus WifiRttController::clearChannelMapInternal(uint32_t /* cmd_id */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +std::pair +WifiRttController::getCapabilitiesInternal() { + // TODO implement + return {createWifiStatus(WifiStatusCode::SUCCESS), {}}; +} + +WifiStatus WifiRttController::setDebugCfgInternal(RttDebugType /* type */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +std::pair WifiRttController::getDebugInfoInternal() { + // TODO implement + return {createWifiStatus(WifiStatusCode::SUCCESS), {}}; +} + +WifiStatus WifiRttController::setLciInternal( + uint32_t /* cmd_id */, const RttLciInformation& /* lci */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +WifiStatus WifiRttController::setLcrInternal( + uint32_t /* cmd_id */, const RttLcrInformation& /* lcr */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +std::pair +WifiRttController::getResponderInfoInternal() { + // TODO implement + return {createWifiStatus(WifiStatusCode::SUCCESS), {}}; +} + +WifiStatus WifiRttController::enableResponderInternal( + uint32_t /* cmd_id */, + const WifiChannelInfo& /* channel_hint */, + uint32_t /* maxDurationSeconds */, + const RttResponder& /* info */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +WifiStatus WifiRttController::disableResponderInternal(uint32_t /* cmd_id */) { + // TODO implement + return createWifiStatus(WifiStatusCode::SUCCESS); +} } // namespace implementation } // namespace V1_0 } // namespace wifi diff --git a/wifi/1.0/default/wifi_rtt_controller.h b/wifi/1.0/default/wifi_rtt_controller.h index afb6a0009c..5ebd4bcf8e 100644 --- a/wifi/1.0/default/wifi_rtt_controller.h +++ b/wifi/1.0/default/wifi_rtt_controller.h @@ -20,6 +20,7 @@ #include #include #include +#include #include "wifi_legacy_hal.h" @@ -42,13 +43,68 @@ class WifiRttController : public IWifiRttController { // HIDL methods exposed. Return getBoundIface(getBoundIface_cb hidl_status_cb) override; + Return registerEventCallback( + const sp& callback, + registerEventCallback_cb hidl_status_cb) override; + Return rangeRequest(uint32_t cmd_id, + const hidl_vec& rtt_configs, + rangeRequest_cb hidl_status_cb) override; + Return rangeCancel(uint32_t cmd_id, + const hidl_vec>& addrs, + rangeCancel_cb hidl_status_cb) override; + Return setChannelMap(uint32_t cmd_id, + const RttChannelMap& params, + uint32_t num_dw, + setChannelMap_cb hidl_status_cb) override; + Return clearChannelMap(uint32_t cmd_id, + clearChannelMap_cb hidl_status_cb) override; + Return getCapabilities(getCapabilities_cb hidl_status_cb) override; + Return setDebugCfg(RttDebugType type, + setDebugCfg_cb hidl_status_cb) override; + Return getDebugInfo(getDebugInfo_cb hidl_status_cb) override; + Return setLci(uint32_t cmd_id, + const RttLciInformation& lci, + setLci_cb hidl_status_cb) override; + Return setLcr(uint32_t cmd_id, + const RttLcrInformation& lcr, + setLcr_cb hidl_status_cb) override; + Return getResponderInfo(getResponderInfo_cb hidl_status_cb) override; + Return enableResponder(uint32_t cmd_id, + const WifiChannelInfo& channel_hint, + uint32_t maxDurationSeconds, + const RttResponder& info, + enableResponder_cb hidl_status_cb) override; + Return disableResponder(uint32_t cmd_id, + disableResponder_cb hidl_status_cb) override; private: // Corresponding worker functions for the HIDL methods. std::pair> getBoundIfaceInternal(); + WifiStatus registerEventCallbackInternal( + const sp& callback); + WifiStatus rangeRequestInternal(uint32_t cmd_id, + const std::vector& rtt_configs); + WifiStatus rangeCancelInternal( + uint32_t cmd_id, const std::vector>& addrs); + WifiStatus setChannelMapInternal(uint32_t cmd_id, + const RttChannelMap& params, + uint32_t num_dw); + WifiStatus clearChannelMapInternal(uint32_t cmd_id); + std::pair getCapabilitiesInternal(); + WifiStatus setDebugCfgInternal(RttDebugType type); + std::pair getDebugInfoInternal(); + WifiStatus setLciInternal(uint32_t cmd_id, const RttLciInformation& lci); + WifiStatus setLcrInternal(uint32_t cmd_id, const RttLcrInformation& lcr); + std::pair getResponderInfoInternal(); + WifiStatus enableResponderInternal(uint32_t cmd_id, + const WifiChannelInfo& channel_hint, + uint32_t maxDurationSeconds, + const RttResponder& info); + WifiStatus disableResponderInternal(uint32_t cmd_id); sp bound_iface_; std::weak_ptr legacy_hal_; + std::vector> event_callbacks_; bool is_valid_; DISALLOW_COPY_AND_ASSIGN(WifiRttController);