std::shared_ptr<std::vector<uint8_t>> packet) {
bluetooth::hci::PacketView<bluetooth::hci::kLittleEndian> raw_packet(packet);
auto iso = bluetooth::hci::IsoView::Create(raw_packet);
+ ASSERT(iso.IsValid());
link_layer_controller_.HandleIso(iso);
}
H4Packetizer::H4Packetizer(int fd, PacketReadCallback command_cb,
PacketReadCallback event_cb,
PacketReadCallback acl_cb, PacketReadCallback sco_cb,
+ PacketReadCallback iso_cb,
ClientDisconnectCallback disconnect_cb)
: uart_fd_(fd),
command_cb_(std::move(command_cb)),
event_cb_(std::move(event_cb)),
acl_cb_(std::move(acl_cb)),
sco_cb_(std::move(sco_cb)),
+ iso_cb_(std::move(iso_cb)),
disconnect_cb_(std::move(disconnect_cb)) {}
size_t H4Packetizer::Send(uint8_t type, const uint8_t* data, size_t length) {
case PacketType::EVENT:
event_cb_(packet_);
break;
+ case PacketType::ISO:
+ iso_cb_(packet_);
+ break;
default:
LOG_ALWAYS_FATAL("Unimplemented packet type %d",
static_cast<int>(hci_packet_type_));
class H4Packetizer : public HciProtocol {
public:
- H4Packetizer(int fd, PacketReadCallback command_cb, PacketReadCallback event_cb, PacketReadCallback acl_cb,
- PacketReadCallback sco_cb, ClientDisconnectCallback disconnect_cb);
+ H4Packetizer(int fd, PacketReadCallback command_cb,
+ PacketReadCallback event_cb, PacketReadCallback acl_cb,
+ PacketReadCallback sco_cb, PacketReadCallback iso_cb,
+ ClientDisconnectCallback disconnect_cb);
size_t Send(uint8_t type, const uint8_t* data, size_t length) override;
PacketReadCallback event_cb_;
PacketReadCallback acl_cb_;
PacketReadCallback sco_cb_;
+ PacketReadCallback iso_cb_;
ClientDisconnectCallback disconnect_cb_;
bool disconnected_{false};
std::shared_ptr<std::vector<uint8_t>> packet_copy = std::make_shared<std::vector<uint8_t>>(raw_sco);
HandleSco(packet_copy);
},
+ [this](const std::vector<uint8_t>& raw_iso) {
+ std::shared_ptr<std::vector<uint8_t>> packet_copy =
+ std::make_shared<std::vector<uint8_t>>(raw_iso);
+ HandleIso(packet_copy);
+ },
[this]() {
LOG_INFO("HCI socket device disconnected");
socket_file_descriptor_ = -1;
[](const std::vector<uint8_t>&) {},
[](const std::vector<uint8_t>&) {},
[](const std::vector<uint8_t>&) {},
+ [](const std::vector<uint8_t>&) {},
[] {}};
std::function<void()> close_callback_;