From bfe580bbbe01b32ce763778ce0d31b78252df563 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Thu, 14 May 2020 13:08:33 -0700 Subject: [PATCH] Bluetooth: H5: Add support for ISO packets This adds supports for ISO packets so then can be transmitted and received with H5 driver. Signed-off-by: Luiz Augusto von Dentz --- drivers/bluetooth/hci/h5.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/bluetooth/hci/h5.c b/drivers/bluetooth/hci/h5.c index 863f5462afa..8be49ef025b 100644 --- a/drivers/bluetooth/hci/h5.c +++ b/drivers/bluetooth/hci/h5.c @@ -43,6 +43,7 @@ static struct k_delayed_work retx_work; #define HCI_ACLDATA_PKT 0x02 #define HCI_SCODATA_PKT 0x03 #define HCI_EVENT_PKT 0x04 +#define HCI_ISODATA_PKT 0x05 #define HCI_3WIRE_LINK_PKT 0x0f #define HCI_VENDOR_PKT 0xff @@ -52,6 +53,7 @@ static bool reliable_packet(uint8_t type) case HCI_COMMAND_PKT: case HCI_ACLDATA_PKT: case HCI_EVENT_PKT: + case HCI_ISODATA_PKT: return true; default: return false; @@ -394,6 +396,7 @@ static void h5_process_complete_packet(uint8_t *hdr) break; case HCI_EVENT_PKT: case HCI_ACLDATA_PKT: + case HCI_ISODATA_PKT: hexdump("=> ", buf->data, buf->len); bt_recv(buf); break; @@ -479,6 +482,17 @@ static void bt_uart_isr(const struct device *unused, void *user_data) continue; } + h5.rx_state = PAYLOAD; + break; + case HCI_ISODATA_PKT: + h5.rx_buf = bt_buf_get_rx(BT_BUF_ISO_IN, + K_NO_WAIT); + if (!h5.rx_buf) { + BT_WARN("No available data buffers"); + h5_reset_rx(); + continue; + } + h5.rx_state = PAYLOAD; break; case HCI_3WIRE_LINK_PKT: @@ -573,6 +587,9 @@ static int h5_queue(struct net_buf *buf) case BT_BUF_ACL_OUT: type = HCI_ACLDATA_PKT; break; + case BT_BUF_ISO_OUT: + type = HCI_ISODATA_PKT; + break; default: BT_ERR("Unknown packet type %u", bt_buf_get_type(buf)); return -1;