Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb92adb2 authored by Myles Watson's avatar Myles Watson Committed by Gerrit Code Review
Browse files

Merge changes I87a3c48d,I8ceb203e,I21075c2c into main

* changes:
  Use ControllerMockInterface in StackAclTest
  Use new controller mock in stack_btm_test
  HCI: Make a pure virtual controller interface
parents 82fd928f 90532995
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@
#include "common/message_loop_thread.h"
#include "device/include/controller.h"
#include "device/include/device_iot_config.h"
#include "hci/controller.h"
#include "hci/controller_interface.h"
#include "internal_include/bt_target.h"
#include "internal_include/bt_trace.h"
#include "main/shim/entry.h"
+1 −1
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@

#include "base/logging.h"
#include "check.h"
#include "hci/controller.h"
#include "hci/controller_interface.h"
#include "main/shim/entry.h"

static const enh_esco_params_t default_esco_parameters[ESCO_NUM_CODECS] = {
+1 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@

#include "common/init_flags.h"
#include "dumpsys_data_generated.h"
#include "hci/controller_interface.h"
#include "hci/event_checkers.h"
#include "hci/hci_layer.h"
#include "hci_controller_generated.h"
+148 −163
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <vector>

#include "hci/address.h"
#include "hci/controller_interface.h"
#include "hci/hci_packets.h"
#include "hci/le_rand_callback.h"
#include "module.h"
@@ -29,7 +30,7 @@
namespace bluetooth {
namespace hci {

class Controller : public Module {
class Controller : public Module, public ControllerInterface {
 public:
  Controller();
  Controller(const Controller&) = delete;
@@ -37,183 +38,167 @@ class Controller : public Module {

  virtual ~Controller();

  using CompletedAclPacketsCallback =
      common::ContextualCallback<void(uint16_t /* handle */, uint16_t /* num_packets */)>;
  virtual void RegisterCompletedAclPacketsCallback(CompletedAclPacketsCallback cb);

  virtual void UnregisterCompletedAclPacketsCallback();

  virtual void RegisterCompletedMonitorAclPacketsCallback(CompletedAclPacketsCallback cb);
  virtual void UnregisterCompletedMonitorAclPacketsCallback();

  virtual std::string GetLocalName() const;

  virtual LocalVersionInformation GetLocalVersionInformation() const;

  virtual bool SupportsSimplePairing() const;
  virtual bool SupportsSecureConnections() const;
  virtual bool SupportsSimultaneousLeBrEdr() const;
  virtual bool SupportsInterlacedInquiryScan() const;
  virtual bool SupportsRssiWithInquiryResults() const;
  virtual bool SupportsExtendedInquiryResponse() const;
  virtual bool SupportsRoleSwitch() const;
  virtual bool Supports3SlotPackets() const;
  virtual bool Supports5SlotPackets() const;
  virtual bool SupportsClassic2mPhy() const;
  virtual bool SupportsClassic3mPhy() const;
  virtual bool Supports3SlotEdrPackets() const;
  virtual bool Supports5SlotEdrPackets() const;
  virtual bool SupportsSco() const;
  virtual bool SupportsHv2Packets() const;
  virtual bool SupportsHv3Packets() const;
  virtual bool SupportsEv3Packets() const;
  virtual bool SupportsEv4Packets() const;
  virtual bool SupportsEv5Packets() const;
  virtual bool SupportsEsco2mPhy() const;
  virtual bool SupportsEsco3mPhy() const;
  virtual bool Supports3SlotEscoEdrPackets() const;
  virtual bool SupportsHoldMode() const;
  virtual bool SupportsSniffMode() const;
  virtual bool SupportsParkMode() const;
  virtual bool SupportsNonFlushablePb() const;
  virtual bool SupportsSniffSubrating() const;
  virtual bool SupportsEncryptionPause() const;
  virtual bool SupportsBle() const;

  virtual bool SupportsBleEncryption() const;
  virtual bool SupportsBleConnectionParametersRequest() const;
  virtual bool SupportsBleExtendedReject() const;
  virtual bool SupportsBlePeripheralInitiatedFeaturesExchange() const;
  virtual bool SupportsBlePing() const;
  virtual bool SupportsBleDataPacketLengthExtension() const;
  virtual bool SupportsBlePrivacy() const;
  virtual bool SupportsBleExtendedScannerFilterPolicies() const;
  virtual bool SupportsBle2mPhy() const;
  virtual bool SupportsBleStableModulationIndexTx() const;
  virtual bool SupportsBleStableModulationIndexRx() const;
  virtual bool SupportsBleCodedPhy() const;
  virtual bool SupportsBleExtendedAdvertising() const;
  virtual bool SupportsBlePeriodicAdvertising() const;
  virtual bool SupportsBleChannelSelectionAlgorithm2() const;
  virtual bool SupportsBlePowerClass1() const;
  virtual bool SupportsBleMinimumUsedChannels() const;
  virtual bool SupportsBleConnectionCteRequest() const;
  virtual bool SupportsBleConnectionCteResponse() const;
  virtual bool SupportsBleConnectionlessCteTransmitter() const;
  virtual bool SupportsBleConnectionlessCteReceiver() const;
  virtual bool SupportsBleAntennaSwitchingDuringCteTx() const;
  virtual bool SupportsBleAntennaSwitchingDuringCteRx() const;
  virtual bool SupportsBleReceivingConstantToneExtensions() const;
  virtual bool SupportsBlePeriodicAdvertisingSyncTransferSender() const;
  virtual bool SupportsBlePeriodicAdvertisingSyncTransferRecipient() const;
  virtual bool SupportsBleSleepClockAccuracyUpdates() const;
  virtual bool SupportsBleRemotePublicKeyValidation() const;
  virtual bool SupportsBleConnectedIsochronousStreamCentral() const;
  virtual bool SupportsBleConnectedIsochronousStreamPeripheral() const;
  virtual bool SupportsBleIsochronousBroadcaster() const;
  virtual bool SupportsBleSynchronizedReceiver() const;
  virtual bool SupportsBleIsochronousChannelsHostSupport() const;
  virtual bool SupportsBlePowerControlRequest() const;
  virtual bool SupportsBlePowerChangeIndication() const;
  virtual bool SupportsBlePathLossMonitoring() const;
  virtual bool SupportsBlePeriodicAdvertisingAdi() const;
  virtual bool SupportsBleConnectionSubrating() const;
  virtual bool SupportsBleConnectionSubratingHost() const;

  virtual uint16_t GetAclPacketLength() const;

  virtual uint16_t GetNumAclPacketBuffers() const;

  virtual uint8_t GetScoPacketLength() const;

  virtual uint16_t GetNumScoPacketBuffers() const;

  virtual Address GetMacAddress() const;

  virtual void SetEventMask(uint64_t event_mask);

  virtual void Reset();

  virtual void LeRand(LeRandCallback cb);

  virtual void SetEventFilterClearAll();

  virtual void SetEventFilterInquiryResultAllDevices();

  virtual void SetEventFilterInquiryResultClassOfDevice(ClassOfDevice class_of_device,
                                                        ClassOfDevice class_of_device_mask);

  virtual void SetEventFilterInquiryResultAddress(Address address);

  virtual void SetEventFilterConnectionSetupAllDevices(AutoAcceptFlag auto_accept_flag);

  virtual void SetEventFilterConnectionSetupClassOfDevice(ClassOfDevice class_of_device,
  virtual void RegisterCompletedAclPacketsCallback(CompletedAclPacketsCallback cb) override;

  virtual void UnregisterCompletedAclPacketsCallback() override;

  virtual void RegisterCompletedMonitorAclPacketsCallback(CompletedAclPacketsCallback cb) override;
  virtual void UnregisterCompletedMonitorAclPacketsCallback() override;

  virtual std::string GetLocalName() const override;

  virtual LocalVersionInformation GetLocalVersionInformation() const override;

  virtual bool SupportsSimplePairing() const override;
  virtual bool SupportsSecureConnections() const override;
  virtual bool SupportsSimultaneousLeBrEdr() const override;
  virtual bool SupportsInterlacedInquiryScan() const override;
  virtual bool SupportsRssiWithInquiryResults() const override;
  virtual bool SupportsExtendedInquiryResponse() const override;
  virtual bool SupportsRoleSwitch() const override;
  virtual bool Supports3SlotPackets() const override;
  virtual bool Supports5SlotPackets() const override;
  virtual bool SupportsClassic2mPhy() const override;
  virtual bool SupportsClassic3mPhy() const override;
  virtual bool Supports3SlotEdrPackets() const override;
  virtual bool Supports5SlotEdrPackets() const override;
  virtual bool SupportsSco() const override;
  virtual bool SupportsHv2Packets() const override;
  virtual bool SupportsHv3Packets() const override;
  virtual bool SupportsEv3Packets() const override;
  virtual bool SupportsEv4Packets() const override;
  virtual bool SupportsEv5Packets() const override;
  virtual bool SupportsEsco2mPhy() const override;
  virtual bool SupportsEsco3mPhy() const override;
  virtual bool Supports3SlotEscoEdrPackets() const override;
  virtual bool SupportsHoldMode() const override;
  virtual bool SupportsSniffMode() const override;
  virtual bool SupportsParkMode() const override;
  virtual bool SupportsNonFlushablePb() const override;
  virtual bool SupportsSniffSubrating() const override;
  virtual bool SupportsEncryptionPause() const override;
  virtual bool SupportsBle() const override;

  virtual bool SupportsBleEncryption() const override;
  virtual bool SupportsBleConnectionParametersRequest() const override;
  virtual bool SupportsBleExtendedReject() const override;
  virtual bool SupportsBlePeripheralInitiatedFeaturesExchange() const override;
  virtual bool SupportsBlePing() const override;
  virtual bool SupportsBleDataPacketLengthExtension() const override;
  virtual bool SupportsBlePrivacy() const override;
  virtual bool SupportsBleExtendedScannerFilterPolicies() const override;
  virtual bool SupportsBle2mPhy() const override;
  virtual bool SupportsBleStableModulationIndexTx() const override;
  virtual bool SupportsBleStableModulationIndexRx() const override;
  virtual bool SupportsBleCodedPhy() const override;
  virtual bool SupportsBleExtendedAdvertising() const override;
  virtual bool SupportsBlePeriodicAdvertising() const override;
  virtual bool SupportsBleChannelSelectionAlgorithm2() const override;
  virtual bool SupportsBlePowerClass1() const override;
  virtual bool SupportsBleMinimumUsedChannels() const override;
  virtual bool SupportsBleConnectionCteRequest() const override;
  virtual bool SupportsBleConnectionCteResponse() const override;
  virtual bool SupportsBleConnectionlessCteTransmitter() const override;
  virtual bool SupportsBleConnectionlessCteReceiver() const override;
  virtual bool SupportsBleAntennaSwitchingDuringCteTx() const override;
  virtual bool SupportsBleAntennaSwitchingDuringCteRx() const override;
  virtual bool SupportsBleReceivingConstantToneExtensions() const override;
  virtual bool SupportsBlePeriodicAdvertisingSyncTransferSender() const override;
  virtual bool SupportsBlePeriodicAdvertisingSyncTransferRecipient() const override;
  virtual bool SupportsBleSleepClockAccuracyUpdates() const override;
  virtual bool SupportsBleRemotePublicKeyValidation() const override;
  virtual bool SupportsBleConnectedIsochronousStreamCentral() const override;
  virtual bool SupportsBleConnectedIsochronousStreamPeripheral() const override;
  virtual bool SupportsBleIsochronousBroadcaster() const override;
  virtual bool SupportsBleSynchronizedReceiver() const override;
  virtual bool SupportsBleIsochronousChannelsHostSupport() const override;
  virtual bool SupportsBlePowerControlRequest() const override;
  virtual bool SupportsBlePowerChangeIndication() const override;
  virtual bool SupportsBlePathLossMonitoring() const override;
  virtual bool SupportsBlePeriodicAdvertisingAdi() const override;
  virtual bool SupportsBleConnectionSubrating() const override;
  virtual bool SupportsBleConnectionSubratingHost() const override;

  virtual uint16_t GetAclPacketLength() const override;

  virtual uint16_t GetNumAclPacketBuffers() const override;

  virtual uint8_t GetScoPacketLength() const override;

  virtual uint16_t GetNumScoPacketBuffers() const override;

  virtual Address GetMacAddress() const override;

  virtual void SetEventMask(uint64_t event_mask) override;

  virtual void Reset() override;

  virtual void LeRand(LeRandCallback cb) override;

  virtual void SetEventFilterClearAll() override;

  virtual void SetEventFilterInquiryResultAllDevices() override;

  virtual void SetEventFilterInquiryResultClassOfDevice(
      ClassOfDevice class_of_device, ClassOfDevice class_of_device_mask) override;

  virtual void SetEventFilterInquiryResultAddress(Address address) override;

  virtual void SetEventFilterConnectionSetupAllDevices(AutoAcceptFlag auto_accept_flag) override;

  virtual void SetEventFilterConnectionSetupClassOfDevice(
      ClassOfDevice class_of_device,
      ClassOfDevice class_of_device_mask,
                                                          AutoAcceptFlag auto_accept_flag);
      AutoAcceptFlag auto_accept_flag) override;

  virtual void SetEventFilterConnectionSetupAddress(Address address, AutoAcceptFlag auto_accept_flag);
  virtual void SetEventFilterConnectionSetupAddress(
      Address address, AutoAcceptFlag auto_accept_flag) override;

  virtual void WriteLocalName(std::string local_name);
  virtual void WriteLocalName(std::string local_name) override;

  virtual void HostBufferSize(uint16_t host_acl_data_packet_length, uint8_t host_synchronous_data_packet_length,
  virtual void HostBufferSize(
      uint16_t host_acl_data_packet_length,
      uint8_t host_synchronous_data_packet_length,
      uint16_t host_total_num_acl_data_packets,
                              uint16_t host_total_num_synchronous_data_packets);
      uint16_t host_total_num_synchronous_data_packets) override;

  // LE controller commands
  virtual void LeSetEventMask(uint64_t le_event_mask);
  virtual void LeSetEventMask(uint64_t le_event_mask) override;

  virtual LeBufferSize GetLeBufferSize() const;
  virtual LeBufferSize GetLeBufferSize() const override;

  virtual uint64_t GetLeSupportedStates() const;
  virtual uint64_t GetLeSupportedStates() const override;

  virtual LeBufferSize GetControllerIsoBufferSize() const;
  virtual LeBufferSize GetControllerIsoBufferSize() const override;

  virtual uint64_t GetControllerLeLocalSupportedFeatures() const;
  virtual uint64_t GetControllerLeLocalSupportedFeatures() const override;

  virtual uint8_t GetLeFilterAcceptListSize() const;
  virtual uint8_t GetLeFilterAcceptListSize() const override;

  virtual uint8_t GetLeResolvingListSize() const;
  virtual uint8_t GetLeResolvingListSize() const override;

  virtual LeMaximumDataLength GetLeMaximumDataLength() const;
  virtual LeMaximumDataLength GetLeMaximumDataLength() const override;

  virtual uint16_t GetLeMaximumAdvertisingDataLength() const;
  virtual uint16_t GetLeMaximumAdvertisingDataLength() const override;

  virtual uint16_t GetLeSuggestedDefaultDataLength() const;
  virtual uint16_t GetLeSuggestedDefaultDataLength() const override;

  virtual uint8_t GetLeNumberOfSupportedAdverisingSets() const;
  virtual uint8_t GetLeNumberOfSupportedAdverisingSets() const override;

  virtual uint8_t GetLePeriodicAdvertiserListSize() const;
  virtual uint8_t GetLePeriodicAdvertiserListSize() const override;

  // 7.4.8 Read Local Supported Codecs command v1 only returns codecs on the BR/EDR transport
  virtual std::vector<uint8_t> GetLocalSupportedBrEdrCodecIds() const;

  struct VendorCapabilities {
    uint8_t is_supported_;
    uint8_t max_advt_instances_;
    uint8_t offloaded_resolution_of_private_address_;
    uint16_t total_scan_results_storage_;
    uint8_t max_irk_list_sz_;
    uint8_t filtering_support_;
    uint8_t max_filter_;
    uint8_t activity_energy_info_support_;
    uint16_t version_supported_;
    uint16_t total_num_of_advt_tracked_;
    uint8_t extended_scan_support_;
    uint8_t debug_logging_supported_;
    uint8_t le_address_generation_offloading_support_;
    uint32_t a2dp_source_offload_capability_mask_;
    uint8_t bluetooth_quality_report_support_;
    uint32_t dynamic_audio_buffer_support_;
  };
  virtual std::vector<uint8_t> GetLocalSupportedBrEdrCodecIds() const override;

  virtual VendorCapabilities GetVendorCapabilities() const;
  virtual VendorCapabilities GetVendorCapabilities() const override;

  virtual uint32_t GetDabSupportedCodecs() const;
  virtual const std::array<DynamicAudioBufferCodecCapability, 32>& GetDabCodecCapabilities() const;
  virtual uint32_t GetDabSupportedCodecs() const override;
  virtual const std::array<DynamicAudioBufferCodecCapability, 32>& GetDabCodecCapabilities()
      const override;

  virtual void SetDabAudioBufferTime(uint16_t buffer_time_ms);
  virtual void SetDabAudioBufferTime(uint16_t buffer_time_ms) override;

  virtual bool IsSupported(OpCode op_code) const;
  virtual bool IsSupported(OpCode op_code) const override;

  static const ModuleFactory Factory;

+217 −0
Original line number Diff line number Diff line
/*
 * Copyright 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#pragma once

#include "common/contextual_callback.h"
#include "hci/address.h"
#include "hci/class_of_device.h"
#include "hci/hci_packets.h"
#include "hci/le_rand_callback.h"

namespace bluetooth {
namespace hci {

class ControllerInterface {
 public:
  ControllerInterface() = default;
  virtual ~ControllerInterface() = default;

  using CompletedAclPacketsCallback =
      common::ContextualCallback<void(uint16_t /* handle */, uint16_t /* num_packets */)>;
  virtual void RegisterCompletedAclPacketsCallback(CompletedAclPacketsCallback cb) = 0;

  virtual void UnregisterCompletedAclPacketsCallback() = 0;

  virtual void RegisterCompletedMonitorAclPacketsCallback(CompletedAclPacketsCallback cb) = 0;
  virtual void UnregisterCompletedMonitorAclPacketsCallback() = 0;

  virtual std::string GetLocalName() const = 0;
  virtual LocalVersionInformation GetLocalVersionInformation() const = 0;

  virtual bool SupportsSimplePairing() const = 0;
  virtual bool SupportsSecureConnections() const = 0;
  virtual bool SupportsSimultaneousLeBrEdr() const = 0;
  virtual bool SupportsInterlacedInquiryScan() const = 0;
  virtual bool SupportsRssiWithInquiryResults() const = 0;
  virtual bool SupportsExtendedInquiryResponse() const = 0;
  virtual bool SupportsRoleSwitch() const = 0;
  virtual bool Supports3SlotPackets() const = 0;
  virtual bool Supports5SlotPackets() const = 0;
  virtual bool SupportsClassic2mPhy() const = 0;
  virtual bool SupportsClassic3mPhy() const = 0;
  virtual bool Supports3SlotEdrPackets() const = 0;
  virtual bool Supports5SlotEdrPackets() const = 0;
  virtual bool SupportsSco() const = 0;
  virtual bool SupportsHv2Packets() const = 0;
  virtual bool SupportsHv3Packets() const = 0;
  virtual bool SupportsEv3Packets() const = 0;
  virtual bool SupportsEv4Packets() const = 0;
  virtual bool SupportsEv5Packets() const = 0;
  virtual bool SupportsEsco2mPhy() const = 0;
  virtual bool SupportsEsco3mPhy() const = 0;
  virtual bool Supports3SlotEscoEdrPackets() const = 0;
  virtual bool SupportsHoldMode() const = 0;
  virtual bool SupportsSniffMode() const = 0;
  virtual bool SupportsParkMode() const = 0;
  virtual bool SupportsNonFlushablePb() const = 0;
  virtual bool SupportsSniffSubrating() const = 0;
  virtual bool SupportsEncryptionPause() const = 0;
  virtual bool SupportsBle() const = 0;

  virtual bool SupportsBleEncryption() const = 0;
  virtual bool SupportsBleConnectionParametersRequest() const = 0;
  virtual bool SupportsBleExtendedReject() const = 0;
  virtual bool SupportsBlePeripheralInitiatedFeaturesExchange() const = 0;
  virtual bool SupportsBlePing() const = 0;
  virtual bool SupportsBleDataPacketLengthExtension() const = 0;
  virtual bool SupportsBlePrivacy() const = 0;
  virtual bool SupportsBleExtendedScannerFilterPolicies() const = 0;
  virtual bool SupportsBle2mPhy() const = 0;
  virtual bool SupportsBleStableModulationIndexTx() const = 0;
  virtual bool SupportsBleStableModulationIndexRx() const = 0;
  virtual bool SupportsBleCodedPhy() const = 0;
  virtual bool SupportsBleExtendedAdvertising() const = 0;
  virtual bool SupportsBlePeriodicAdvertising() const = 0;
  virtual bool SupportsBleChannelSelectionAlgorithm2() const = 0;
  virtual bool SupportsBlePowerClass1() const = 0;
  virtual bool SupportsBleMinimumUsedChannels() const = 0;
  virtual bool SupportsBleConnectionCteRequest() const = 0;
  virtual bool SupportsBleConnectionCteResponse() const = 0;
  virtual bool SupportsBleConnectionlessCteTransmitter() const = 0;
  virtual bool SupportsBleConnectionlessCteReceiver() const = 0;
  virtual bool SupportsBleAntennaSwitchingDuringCteTx() const = 0;
  virtual bool SupportsBleAntennaSwitchingDuringCteRx() const = 0;
  virtual bool SupportsBleReceivingConstantToneExtensions() const = 0;
  virtual bool SupportsBlePeriodicAdvertisingSyncTransferSender() const = 0;
  virtual bool SupportsBlePeriodicAdvertisingSyncTransferRecipient() const = 0;
  virtual bool SupportsBleSleepClockAccuracyUpdates() const = 0;
  virtual bool SupportsBleRemotePublicKeyValidation() const = 0;
  virtual bool SupportsBleConnectedIsochronousStreamCentral() const = 0;
  virtual bool SupportsBleConnectedIsochronousStreamPeripheral() const = 0;
  virtual bool SupportsBleIsochronousBroadcaster() const = 0;
  virtual bool SupportsBleSynchronizedReceiver() const = 0;
  virtual bool SupportsBleIsochronousChannelsHostSupport() const = 0;
  virtual bool SupportsBlePowerControlRequest() const = 0;
  virtual bool SupportsBlePowerChangeIndication() const = 0;
  virtual bool SupportsBlePathLossMonitoring() const = 0;
  virtual bool SupportsBlePeriodicAdvertisingAdi() const = 0;
  virtual bool SupportsBleConnectionSubrating() const = 0;
  virtual bool SupportsBleConnectionSubratingHost() const = 0;

  virtual uint16_t GetAclPacketLength() const = 0;

  virtual uint16_t GetNumAclPacketBuffers() const = 0;

  virtual uint8_t GetScoPacketLength() const = 0;

  virtual uint16_t GetNumScoPacketBuffers() const = 0;

  virtual Address GetMacAddress() const = 0;

  virtual void SetEventMask(uint64_t event_mask) = 0;

  virtual void Reset() = 0;

  virtual void LeRand(LeRandCallback cb) = 0;

  virtual void SetEventFilterClearAll() = 0;

  virtual void SetEventFilterInquiryResultAllDevices() = 0;

  virtual void SetEventFilterInquiryResultClassOfDevice(
      ClassOfDevice class_of_device, ClassOfDevice class_of_device_mask) = 0;

  virtual void SetEventFilterInquiryResultAddress(Address address) = 0;

  virtual void SetEventFilterConnectionSetupAllDevices(AutoAcceptFlag auto_accept_flag) = 0;

  virtual void SetEventFilterConnectionSetupClassOfDevice(
      ClassOfDevice class_of_device,
      ClassOfDevice class_of_device_mask,
      AutoAcceptFlag auto_accept_flag) = 0;

  virtual void SetEventFilterConnectionSetupAddress(
      Address address, AutoAcceptFlag auto_accept_flag) = 0;

  virtual void WriteLocalName(std::string local_name) = 0;

  virtual void HostBufferSize(
      uint16_t host_acl_data_packet_length,
      uint8_t host_synchronous_data_packet_length,
      uint16_t host_total_num_acl_data_packets,
      uint16_t host_total_num_synchronous_data_packets) = 0;

  // LE controller commands
  virtual void LeSetEventMask(uint64_t le_event_mask) = 0;

  virtual LeBufferSize GetLeBufferSize() const = 0;

  virtual uint64_t GetLeSupportedStates() const = 0;

  virtual LeBufferSize GetControllerIsoBufferSize() const = 0;

  virtual uint64_t GetControllerLeLocalSupportedFeatures() const = 0;

  virtual uint8_t GetLeFilterAcceptListSize() const = 0;

  virtual uint8_t GetLeResolvingListSize() const = 0;

  virtual LeMaximumDataLength GetLeMaximumDataLength() const = 0;

  virtual uint16_t GetLeMaximumAdvertisingDataLength() const = 0;

  virtual uint16_t GetLeSuggestedDefaultDataLength() const = 0;

  virtual uint8_t GetLeNumberOfSupportedAdverisingSets() const = 0;

  virtual uint8_t GetLePeriodicAdvertiserListSize() const = 0;

  // 7.4.8 Read Local Supported Codecs command v1 only returns codecs on the BR/EDR transport
  virtual std::vector<uint8_t> GetLocalSupportedBrEdrCodecIds() const = 0;

  struct VendorCapabilities {
    uint8_t is_supported_;
    uint8_t max_advt_instances_;
    uint8_t offloaded_resolution_of_private_address_;
    uint16_t total_scan_results_storage_;
    uint8_t max_irk_list_sz_;
    uint8_t filtering_support_;
    uint8_t max_filter_;
    uint8_t activity_energy_info_support_;
    uint16_t version_supported_;
    uint16_t total_num_of_advt_tracked_;
    uint8_t extended_scan_support_;
    uint8_t debug_logging_supported_;
    uint8_t le_address_generation_offloading_support_;
    uint32_t a2dp_source_offload_capability_mask_;
    uint8_t bluetooth_quality_report_support_;
    uint32_t dynamic_audio_buffer_support_;
  };

  virtual uint32_t GetDabSupportedCodecs() const = 0;
  virtual const std::array<DynamicAudioBufferCodecCapability, 32>& GetDabCodecCapabilities()
      const = 0;

  virtual void SetDabAudioBufferTime(uint16_t buffer_time_ms) = 0;

  virtual VendorCapabilities GetVendorCapabilities() const = 0;

  virtual bool IsSupported(OpCode op_code) const = 0;
};

}  // namespace hci
}  // namespace bluetooth
Loading