blob: 274ec3aa1051b78a6c5ac18a02627d3c3c777ec8 [file] [log] [blame]
// Copyright 2021 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_TRANSPORT_FAKE_SCO_DATA_CHANNEL_H_
#define SRC_CONNECTIVITY_BLUETOOTH_CORE_BT_HOST_TRANSPORT_FAKE_SCO_DATA_CHANNEL_H_
#include "src/connectivity/bluetooth/core/bt-host/transport/sco_data_channel.h"
namespace bt::hci {
class FakeScoDataChannel final : public ScoDataChannel {
public:
struct RegisteredConnection {
fxl::WeakPtr<ConnectionInterface> connection;
};
explicit FakeScoDataChannel(uint16_t max_data_length) : max_data_length_(max_data_length) {}
~FakeScoDataChannel() override = default;
const auto& connections() { return connections_; }
uint16_t readable_count() const { return readable_count_; }
// ScoDataChannel overrides:
void RegisterConnection(fxl::WeakPtr<ConnectionInterface> connection) override;
void UnregisterConnection(hci_spec::ConnectionHandle handle) override;
void OnOutboundPacketReadable() override;
void ClearControllerPacketCount(hci_spec::ConnectionHandle handle) override {}
uint16_t max_data_length() const override { return max_data_length_; }
private:
uint16_t max_data_length_;
uint16_t readable_count_ = 0;
std::unordered_map<hci_spec::ConnectionHandle, RegisteredConnection> connections_;
};
} // namespace bt::hci
#endif // SRC_CONNECTIVITY_BLUETOOTH_CORE_BT_HOST_TRANSPORT_FAKE_SCO_DATA_CHANNEL_H_