Loading wifi/1.0/IWifiStaIface.hal +54 −1 Original line number Diff line number Diff line Loading @@ -80,10 +80,14 @@ interface IWifiStaIface extends IWifiIface { * Support for Tunneled Direct Link Setup off channel. */ TDLS_OFFCHANNEL = 1 << 11, /** * Support for keep alive packet offload. */ KEEP_ALIVE = 1 << 12, /** * Support for tracking connection packets' fate. */ DEBUG_PACKET_FATE = 1 << 12 DEBUG_PACKET_FATE = 1 << 13 }; /** Loading Loading @@ -378,6 +382,55 @@ interface IWifiStaIface extends IWifiIface { */ setRoamingState(StaRoamingState state) generates (WifiStatus status); /** * Enable/Disable Neighbour discovery offload functionality in the firmware. * * @param enable true to enable, false to disable. * @return status WifiStatus of the operation. * Possible status codes: * |WifiStatusCode.SUCCESS|, * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, * |WifiStatusCode.ERROR_UNKNOWN| */ enableNdOffload(bool enable) generates (WifiStatus status); /** * Start sending the specified keep alive packets periodically. * * @param cmdId command Id to use for this invocation. * @param ipPacketData IP packet contents to be transmitted. * @param etherType 16 bit ether type to be set in the ethernet frame * transmitted. * @param srcAddress Source MAC address of the packet. * @param dstAddress Destination MAC address of the packet. * @param periodInMs Interval at which this packet must be transmitted. * @return status WifiStatus of the operation. * Possible status codes: * |WifiStatusCode.SUCCESS|, * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, * |WifiStatusCode.ERROR_NOT_SUPPORTED|, * |WifiStatusCode.ERROR_NOT_AVAILABLE|, * |WifiStatusCode.ERROR_UNKNOWN| */ startSendingKeepAlivePackets( CommandId cmdId, vec<uint8_t> ipPacketData, uint16_t etherType, MacAddress srcAddress, MacAddress dstAddress, uint32_t periodInMs) generates (WifiStatus status); /** * Stop sending the specified keep alive packets. * * @param cmdId command Id corresponding to the request. * @return status WifiStatus of the operation. * Possible status codes: * |WifiStatusCode.SUCCESS|, * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, * |WifiStatusCode.ERROR_NOT_SUPPORTED|, * |WifiStatusCode.ERROR_NOT_AVAILABLE|, * |WifiStatusCode.ERROR_UNKNOWN| */ stopSendingKeepAlivePackets(CommandId cmdId) generates (WifiStatus status); /** * API to start packet fate monitoring. * - Once stared, monitoring must remain active until HAL is unloaded. Loading wifi/1.0/default/hidl_struct_util.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -82,6 +82,8 @@ convertLegacyFeatureToHidlStaIfaceCapability(uint32_t feature) { return HidlStaIfaceCaps::TDLS; case WIFI_FEATURE_TDLS_OFFCHANNEL: return HidlStaIfaceCaps::TDLS_OFFCHANNEL; case WIFI_FEATURE_MKEEP_ALIVE: return HidlStaIfaceCaps::KEEP_ALIVE; }; CHECK(false) << "Unknown legacy feature: " << feature; return {}; Loading Loading @@ -239,7 +241,8 @@ bool convertLegacyFeaturesToHidlStaCapabilities( WIFI_FEATURE_HOTSPOT, WIFI_FEATURE_PNO, WIFI_FEATURE_TDLS, WIFI_FEATURE_TDLS_OFFCHANNEL}) { WIFI_FEATURE_TDLS_OFFCHANNEL, WIFI_FEATURE_MKEEP_ALIVE}) { if (feature & legacy_feature_set) { *hidl_caps |= convertLegacyFeatureToHidlStaIfaceCapability(feature); } Loading wifi/1.0/default/wifi_legacy_hal.cpp +35 −4 Original line number Diff line number Diff line Loading @@ -633,15 +633,46 @@ WifiLegacyHal::getRoamingCapabilities() { return {status, caps}; } wifi_error WifiLegacyHal::configureRoaming(const wifi_roaming_config& config) { wifi_roaming_config config_internal = config; return global_func_table_.wifi_configure_roaming(wlan_interface_handle_, &config_internal); } wifi_error WifiLegacyHal::enableFirmwareRoaming(fw_roaming_state_t state) { return global_func_table_.wifi_enable_firmware_roaming(wlan_interface_handle_, state); } wifi_error WifiLegacyHal::configureRoaming(const wifi_roaming_config& config) { wifi_roaming_config config_internal = config; return global_func_table_.wifi_configure_roaming(wlan_interface_handle_, &config_internal); wifi_error WifiLegacyHal::configureNdOffload(bool enable) { return global_func_table_.wifi_configure_nd_offload(wlan_interface_handle_, enable); } wifi_error WifiLegacyHal::startSendingOffloadedPacket( uint32_t cmd_id, const std::vector<uint8_t>& ip_packet_data, const std::array<uint8_t, 6>& src_address, const std::array<uint8_t, 6>& dst_address, uint32_t period_in_ms) { std::vector<uint8_t> ip_packet_data_internal(ip_packet_data); std::vector<uint8_t> src_address_internal( src_address.data(), src_address.data() + src_address.size()); std::vector<uint8_t> dst_address_internal( dst_address.data(), dst_address.data() + dst_address.size()); return global_func_table_.wifi_start_sending_offloaded_packet( cmd_id, wlan_interface_handle_, ip_packet_data_internal.data(), ip_packet_data_internal.size(), src_address_internal.data(), dst_address_internal.data(), period_in_ms); } wifi_error WifiLegacyHal::stopSendingOffloadedPacket(uint32_t cmd_id) { return global_func_table_.wifi_stop_sending_offloaded_packet( cmd_id, wlan_interface_handle_); } std::pair<wifi_error, uint32_t> WifiLegacyHal::getLoggerSupportedFeatureSet() { Loading wifi/1.0/default/wifi_legacy_hal.h +9 −1 Original line number Diff line number Diff line Loading @@ -182,8 +182,16 @@ class WifiLegacyHal { on_threshold_breached_callback); wifi_error stopRssiMonitoring(wifi_request_id id); std::pair<wifi_error, wifi_roaming_capabilities> getRoamingCapabilities(); wifi_error enableFirmwareRoaming(fw_roaming_state_t state); wifi_error configureRoaming(const wifi_roaming_config& config); wifi_error enableFirmwareRoaming(fw_roaming_state_t state); wifi_error configureNdOffload(bool enable); wifi_error startSendingOffloadedPacket( uint32_t cmd_id, const std::vector<uint8_t>& ip_packet_data, const std::array<uint8_t, 6>& src_address, const std::array<uint8_t, 6>& dst_address, uint32_t period_in_ms); wifi_error stopSendingOffloadedPacket(uint32_t cmd_id); // Logger/debug functions. std::pair<wifi_error, uint32_t> getLoggerSupportedFeatureSet(); wifi_error startPktFateMonitoring(); Loading wifi/1.0/default/wifi_sta_iface.cpp +63 −0 Original line number Diff line number Diff line Loading @@ -212,6 +212,44 @@ Return<void> WifiStaIface::setRoamingState(StaRoamingState state, state); } Return<void> WifiStaIface::enableNdOffload(bool enable, enableNdOffload_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, &WifiStaIface::enableNdOffloadInternal, hidl_status_cb, enable); } Return<void> WifiStaIface::startSendingKeepAlivePackets( uint32_t cmd_id, const hidl_vec<uint8_t>& ip_packet_data, uint16_t ether_type, const hidl_array<uint8_t, 6>& src_address, const hidl_array<uint8_t, 6>& dst_address, uint32_t period_in_ms, startSendingKeepAlivePackets_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, &WifiStaIface::startSendingKeepAlivePacketsInternal, hidl_status_cb, cmd_id, ip_packet_data, ether_type, src_address, dst_address, period_in_ms); } Return<void> WifiStaIface::stopSendingKeepAlivePackets( uint32_t cmd_id, stopSendingKeepAlivePackets_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, &WifiStaIface::stopSendingKeepAlivePacketsInternal, hidl_status_cb, cmd_id); } Return<void> WifiStaIface::startDebugPacketFateMonitoring( startDebugPacketFateMonitoring_cb hidl_status_cb) { return validateAndCall(this, Loading Loading @@ -498,6 +536,31 @@ WifiStatus WifiStaIface::setRoamingStateInternal(StaRoamingState state) { return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::enableNdOffloadInternal(bool enable) { legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->configureNdOffload(enable); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::startSendingKeepAlivePacketsInternal( uint32_t cmd_id, const std::vector<uint8_t>& ip_packet_data, uint16_t /* ether_type */, const std::array<uint8_t, 6>& src_address, const std::array<uint8_t, 6>& dst_address, uint32_t period_in_ms) { legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->startSendingOffloadedPacket( cmd_id, ip_packet_data, src_address, dst_address, period_in_ms); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::stopSendingKeepAlivePacketsInternal(uint32_t cmd_id) { legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->stopSendingOffloadedPacket(cmd_id); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::startDebugPacketFateMonitoringInternal() { legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->startPktFateMonitoring(); Loading Loading
wifi/1.0/IWifiStaIface.hal +54 −1 Original line number Diff line number Diff line Loading @@ -80,10 +80,14 @@ interface IWifiStaIface extends IWifiIface { * Support for Tunneled Direct Link Setup off channel. */ TDLS_OFFCHANNEL = 1 << 11, /** * Support for keep alive packet offload. */ KEEP_ALIVE = 1 << 12, /** * Support for tracking connection packets' fate. */ DEBUG_PACKET_FATE = 1 << 12 DEBUG_PACKET_FATE = 1 << 13 }; /** Loading Loading @@ -378,6 +382,55 @@ interface IWifiStaIface extends IWifiIface { */ setRoamingState(StaRoamingState state) generates (WifiStatus status); /** * Enable/Disable Neighbour discovery offload functionality in the firmware. * * @param enable true to enable, false to disable. * @return status WifiStatus of the operation. * Possible status codes: * |WifiStatusCode.SUCCESS|, * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, * |WifiStatusCode.ERROR_UNKNOWN| */ enableNdOffload(bool enable) generates (WifiStatus status); /** * Start sending the specified keep alive packets periodically. * * @param cmdId command Id to use for this invocation. * @param ipPacketData IP packet contents to be transmitted. * @param etherType 16 bit ether type to be set in the ethernet frame * transmitted. * @param srcAddress Source MAC address of the packet. * @param dstAddress Destination MAC address of the packet. * @param periodInMs Interval at which this packet must be transmitted. * @return status WifiStatus of the operation. * Possible status codes: * |WifiStatusCode.SUCCESS|, * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, * |WifiStatusCode.ERROR_NOT_SUPPORTED|, * |WifiStatusCode.ERROR_NOT_AVAILABLE|, * |WifiStatusCode.ERROR_UNKNOWN| */ startSendingKeepAlivePackets( CommandId cmdId, vec<uint8_t> ipPacketData, uint16_t etherType, MacAddress srcAddress, MacAddress dstAddress, uint32_t periodInMs) generates (WifiStatus status); /** * Stop sending the specified keep alive packets. * * @param cmdId command Id corresponding to the request. * @return status WifiStatus of the operation. * Possible status codes: * |WifiStatusCode.SUCCESS|, * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, * |WifiStatusCode.ERROR_NOT_SUPPORTED|, * |WifiStatusCode.ERROR_NOT_AVAILABLE|, * |WifiStatusCode.ERROR_UNKNOWN| */ stopSendingKeepAlivePackets(CommandId cmdId) generates (WifiStatus status); /** * API to start packet fate monitoring. * - Once stared, monitoring must remain active until HAL is unloaded. Loading
wifi/1.0/default/hidl_struct_util.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -82,6 +82,8 @@ convertLegacyFeatureToHidlStaIfaceCapability(uint32_t feature) { return HidlStaIfaceCaps::TDLS; case WIFI_FEATURE_TDLS_OFFCHANNEL: return HidlStaIfaceCaps::TDLS_OFFCHANNEL; case WIFI_FEATURE_MKEEP_ALIVE: return HidlStaIfaceCaps::KEEP_ALIVE; }; CHECK(false) << "Unknown legacy feature: " << feature; return {}; Loading Loading @@ -239,7 +241,8 @@ bool convertLegacyFeaturesToHidlStaCapabilities( WIFI_FEATURE_HOTSPOT, WIFI_FEATURE_PNO, WIFI_FEATURE_TDLS, WIFI_FEATURE_TDLS_OFFCHANNEL}) { WIFI_FEATURE_TDLS_OFFCHANNEL, WIFI_FEATURE_MKEEP_ALIVE}) { if (feature & legacy_feature_set) { *hidl_caps |= convertLegacyFeatureToHidlStaIfaceCapability(feature); } Loading
wifi/1.0/default/wifi_legacy_hal.cpp +35 −4 Original line number Diff line number Diff line Loading @@ -633,15 +633,46 @@ WifiLegacyHal::getRoamingCapabilities() { return {status, caps}; } wifi_error WifiLegacyHal::configureRoaming(const wifi_roaming_config& config) { wifi_roaming_config config_internal = config; return global_func_table_.wifi_configure_roaming(wlan_interface_handle_, &config_internal); } wifi_error WifiLegacyHal::enableFirmwareRoaming(fw_roaming_state_t state) { return global_func_table_.wifi_enable_firmware_roaming(wlan_interface_handle_, state); } wifi_error WifiLegacyHal::configureRoaming(const wifi_roaming_config& config) { wifi_roaming_config config_internal = config; return global_func_table_.wifi_configure_roaming(wlan_interface_handle_, &config_internal); wifi_error WifiLegacyHal::configureNdOffload(bool enable) { return global_func_table_.wifi_configure_nd_offload(wlan_interface_handle_, enable); } wifi_error WifiLegacyHal::startSendingOffloadedPacket( uint32_t cmd_id, const std::vector<uint8_t>& ip_packet_data, const std::array<uint8_t, 6>& src_address, const std::array<uint8_t, 6>& dst_address, uint32_t period_in_ms) { std::vector<uint8_t> ip_packet_data_internal(ip_packet_data); std::vector<uint8_t> src_address_internal( src_address.data(), src_address.data() + src_address.size()); std::vector<uint8_t> dst_address_internal( dst_address.data(), dst_address.data() + dst_address.size()); return global_func_table_.wifi_start_sending_offloaded_packet( cmd_id, wlan_interface_handle_, ip_packet_data_internal.data(), ip_packet_data_internal.size(), src_address_internal.data(), dst_address_internal.data(), period_in_ms); } wifi_error WifiLegacyHal::stopSendingOffloadedPacket(uint32_t cmd_id) { return global_func_table_.wifi_stop_sending_offloaded_packet( cmd_id, wlan_interface_handle_); } std::pair<wifi_error, uint32_t> WifiLegacyHal::getLoggerSupportedFeatureSet() { Loading
wifi/1.0/default/wifi_legacy_hal.h +9 −1 Original line number Diff line number Diff line Loading @@ -182,8 +182,16 @@ class WifiLegacyHal { on_threshold_breached_callback); wifi_error stopRssiMonitoring(wifi_request_id id); std::pair<wifi_error, wifi_roaming_capabilities> getRoamingCapabilities(); wifi_error enableFirmwareRoaming(fw_roaming_state_t state); wifi_error configureRoaming(const wifi_roaming_config& config); wifi_error enableFirmwareRoaming(fw_roaming_state_t state); wifi_error configureNdOffload(bool enable); wifi_error startSendingOffloadedPacket( uint32_t cmd_id, const std::vector<uint8_t>& ip_packet_data, const std::array<uint8_t, 6>& src_address, const std::array<uint8_t, 6>& dst_address, uint32_t period_in_ms); wifi_error stopSendingOffloadedPacket(uint32_t cmd_id); // Logger/debug functions. std::pair<wifi_error, uint32_t> getLoggerSupportedFeatureSet(); wifi_error startPktFateMonitoring(); Loading
wifi/1.0/default/wifi_sta_iface.cpp +63 −0 Original line number Diff line number Diff line Loading @@ -212,6 +212,44 @@ Return<void> WifiStaIface::setRoamingState(StaRoamingState state, state); } Return<void> WifiStaIface::enableNdOffload(bool enable, enableNdOffload_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, &WifiStaIface::enableNdOffloadInternal, hidl_status_cb, enable); } Return<void> WifiStaIface::startSendingKeepAlivePackets( uint32_t cmd_id, const hidl_vec<uint8_t>& ip_packet_data, uint16_t ether_type, const hidl_array<uint8_t, 6>& src_address, const hidl_array<uint8_t, 6>& dst_address, uint32_t period_in_ms, startSendingKeepAlivePackets_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, &WifiStaIface::startSendingKeepAlivePacketsInternal, hidl_status_cb, cmd_id, ip_packet_data, ether_type, src_address, dst_address, period_in_ms); } Return<void> WifiStaIface::stopSendingKeepAlivePackets( uint32_t cmd_id, stopSendingKeepAlivePackets_cb hidl_status_cb) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, &WifiStaIface::stopSendingKeepAlivePacketsInternal, hidl_status_cb, cmd_id); } Return<void> WifiStaIface::startDebugPacketFateMonitoring( startDebugPacketFateMonitoring_cb hidl_status_cb) { return validateAndCall(this, Loading Loading @@ -498,6 +536,31 @@ WifiStatus WifiStaIface::setRoamingStateInternal(StaRoamingState state) { return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::enableNdOffloadInternal(bool enable) { legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->configureNdOffload(enable); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::startSendingKeepAlivePacketsInternal( uint32_t cmd_id, const std::vector<uint8_t>& ip_packet_data, uint16_t /* ether_type */, const std::array<uint8_t, 6>& src_address, const std::array<uint8_t, 6>& dst_address, uint32_t period_in_ms) { legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->startSendingOffloadedPacket( cmd_id, ip_packet_data, src_address, dst_address, period_in_ms); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::stopSendingKeepAlivePacketsInternal(uint32_t cmd_id) { legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->stopSendingOffloadedPacket(cmd_id); return createWifiStatusFromLegacyError(legacy_status); } WifiStatus WifiStaIface::startDebugPacketFateMonitoringInternal() { legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->startPktFateMonitoring(); Loading