}
struct proxy {
- /* Receive commands, ACL and SCO data */
+ /* Receive commands, ACL, SCO and ISO data */
int host_fd;
uint8_t host_buf[4096];
uint16_t host_len;
bool host_shutdown;
bool host_skip_first_zero;
- /* Receive events, ACL and SCO data */
+ /* Receive events, ACL, SCO and ISO data */
int dev_fd;
uint8_t dev_buf[4096];
uint16_t dev_len;
struct bt_hci_cmd_hdr *cmd_hdr;
struct bt_hci_acl_hdr *acl_hdr;
struct bt_hci_sco_hdr *sco_hdr;
+ struct bt_hci_iso_hdr *iso_hdr;
ssize_t len;
uint16_t pktlen;
sco_hdr = (void *) (proxy->host_buf + 1);
pktlen = 1 + sizeof(*sco_hdr) + sco_hdr->dlen;
break;
+ case BT_H4_ISO_PKT:
+ if (proxy->host_len < 1 + sizeof(*iso_hdr))
+ return;
+
+ iso_hdr = (void *) (proxy->host_buf + 1);
+ pktlen = 1 + sizeof(*iso_hdr) + cpu_to_le16(iso_hdr->dlen);
+ break;
case 0xff:
/* Notification packet from /dev/vhci - ignore */
proxy->host_len = 0;
struct bt_hci_evt_hdr *evt_hdr;
struct bt_hci_acl_hdr *acl_hdr;
struct bt_hci_sco_hdr *sco_hdr;
+ struct bt_hci_iso_hdr *iso_hdr;
ssize_t len;
uint16_t pktlen;
sco_hdr = (void *) (proxy->dev_buf + 1);
pktlen = 1 + sizeof(*sco_hdr) + sco_hdr->dlen;
break;
+ case BT_H4_ISO_PKT:
+ if (proxy->dev_len < 1 + sizeof(*iso_hdr))
+ return;
+
+ iso_hdr = (void *) (proxy->dev_buf + 1);
+ pktlen = 1 + sizeof(*iso_hdr) + cpu_to_le16(iso_hdr->dlen);
+ break;
default:
fprintf(stderr, "Received unknown device packet type 0x%02x\n",
proxy->dev_buf[0]);