| // Copyright 2022 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SRC_CONNECTIVITY_BLUETOOTH_CORE_BT_HOST_GAP_ANDROID_VENDOR_CAPABILITIES_H_ |
| #define SRC_CONNECTIVITY_BLUETOOTH_CORE_BT_HOST_GAP_ANDROID_VENDOR_CAPABILITIES_H_ |
| |
| #include "src/connectivity/bluetooth/core/bt-host/hci-spec/vendor_protocol.h" |
| |
| namespace bt::gap { |
| |
| namespace hci_android = hci_spec::vendor::android; |
| |
| class AndroidVendorCapabilities final { |
| public: |
| void Initialize(const hci_android::LEGetVendorCapabilitiesReturnParams& c); |
| bool IsInitialized() const { return initialized_; } |
| |
| // Number of advertisement instances supported. |
| // |
| // This parameter is deprecated in the Google feature spec v0.98 and higher in favor of the LE |
| // Extended Advertising available in the BT spec version 5.0 and higher. |
| uint8_t max_simultaneous_advertisements() const { return max_simultaneous_advertisement_; } |
| |
| // BT chip capability of resolution of private addresses. If supported by a chip, it needs |
| // enablement by the host. |
| // |
| // This parameter is deprecated in the Google feature spec v0.98 and higher in favor of the |
| // Privacy feature available in the BT spec version 4.2 and higher. |
| bool supports_offloaded_rpa() const { return supports_offloaded_rpa_; } |
| |
| // Storage for scan results in bytes |
| uint16_t scan_results_storage_bytes() const { return scan_results_storage_bytes_; } |
| |
| // Number of IRK entries supported in the firmware |
| uint8_t irk_list_size() const { return irk_list_size_; } |
| |
| // Support for filtering in the controller |
| bool supports_filtering() const { return supports_filtering_; } |
| |
| // Number of filters supported |
| uint8_t max_filters() const { return max_filters_; } |
| |
| // Supports reporting of activity and energy information |
| bool supports_activity_energy_info() const { return supports_activity_energy_info_; } |
| |
| // Specifies the minor version of the Google feature spec supported |
| uint8_t version_minor() const { return version_minor_; } |
| |
| // Specifies the major version of the Google feature spec supported |
| uint8_t version_major() const { return version_major_; } |
| |
| // Total number of advertisers tracked for OnLost/OnFound purposes |
| uint16_t max_advertisers_tracked() const { return max_advertisers_tracked_; } |
| |
| // Supports extended scan window and interval |
| bool supports_extended_scan() const { return supports_extended_scan_; } |
| |
| // Supports logging of binary debug information from controller |
| bool supports_debug_logging() const { return supports_debug_logging_; } |
| |
| // This parameter is deprecated in the Google feature spec v0.98 and higher in favor of the |
| // Privacy feature available in the BT spec version 4.2 and higher. |
| bool supports_offloading_le_address_generation() const { |
| return supports_offloading_le_address_generation_; |
| } |
| |
| // Get a bitmask of the codec types supported for A2DP source offload. See A2dpCodecType in |
| // src/connectivity/bluetooth/core/bt-host/hci_spec/vendor_protocol.h. |
| uint32_t a2dp_source_offload_capability_mask() const { |
| return a2dp_source_offload_capability_mask_; |
| } |
| |
| // Supports reporting of Bluetooth Quality events |
| bool supports_bluetooth_quality_report() const { return supports_bluetooth_quality_report_; } |
| |
| // Get a bitmask of the codec types where dynamic audio buffering in the Bluetooth controller is |
| // supported. See A2dpCodecType in |
| // src/connectivity/bluetooth/core/bt-host/hci_spec/vendor_protocol.h. |
| uint32_t supports_dynamic_audio_buffer() const { return supports_dynamic_audio_buffer_; } |
| |
| private: |
| bool initialized_ = false; |
| uint8_t max_simultaneous_advertisement_ = 0; |
| bool supports_offloaded_rpa_ = false; |
| uint16_t scan_results_storage_bytes_ = 0; |
| uint8_t irk_list_size_ = 0; |
| bool supports_filtering_ = false; |
| uint8_t max_filters_ = 0; |
| bool supports_activity_energy_info_ = false; |
| uint8_t version_minor_ = 0; |
| uint8_t version_major_ = 0; |
| uint16_t max_advertisers_tracked_ = 0; |
| bool supports_extended_scan_ = false; |
| bool supports_debug_logging_ = false; |
| bool supports_offloading_le_address_generation_ = false; |
| uint32_t a2dp_source_offload_capability_mask_ = 0; |
| bool supports_bluetooth_quality_report_ = false; |
| uint32_t supports_dynamic_audio_buffer_ = 0; |
| }; |
| } // namespace bt::gap |
| |
| #endif // SRC_CONNECTIVITY_BLUETOOTH_CORE_BT_HOST_GAP_ANDROID_VENDOR_CAPABILITIES_H_ |