From 44b82b959d02dfbdd8a592036e8aa14a0872755c Mon Sep 17 00:00:00 2001 From: Keyur Parekh Date: Tue, 16 Mar 2021 07:41:36 -0700 Subject: [PATCH] emulator: Add Create BIG command in emulator This adds support for Create BIG command HCI command in emulator. These changes are needed for making the emulator useful for testing LE Audio broadcast feature. --- emulator/btdev.c | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/emulator/btdev.c b/emulator/btdev.c index 742c6864b..99fe3a13c 100644 --- a/emulator/btdev.c +++ b/emulator/btdev.c @@ -4511,10 +4511,36 @@ static int cmd_reject_cis(struct btdev *dev, const void *data, uint8_t len) static int cmd_create_big(struct btdev *dev, const void *data, uint8_t len) { - /* TODO */ - return -ENOTSUP; + cmd_status(dev, BT_HCI_ERR_SUCCESS, BT_HCI_CMD_LE_CREATE_BIG); + + return 0; } +static int cmd_create_big_complete(struct btdev *dev, const void *data, + uint8_t len) +{ + const struct bt_hci_cmd_le_create_big *cmd = data; + int i; + + for (i = 0; i < cmd->num_bis; i++) { + const struct bt_hci_bis *bis = &cmd->bis[i]; + struct { + struct bt_hci_evt_le_big_complete evt; + uint16_t handle; + } pdu; + + pdu.evt.handle = cmd->handle; + pdu.evt.num_bis = cmd->num_bis; + pdu.evt.phy = bis->phy; + memcpy(&pdu.evt.latency, &(bis->latency), 3); + pdu.evt.handle = cpu_to_le16(ISO_HANDLE + i); + + le_meta_event(dev, BT_HCI_EVT_LE_BIG_COMPLETE, &pdu, + sizeof(pdu)); + } + + return 0; +} static int cmd_create_big_test(struct btdev *dev, const void *data, uint8_t len) { /* TODO */ @@ -4740,7 +4766,8 @@ static int cmd_config_data_path(struct btdev *dev, const void *data, CMD(BT_HCI_CMD_LE_REMOVE_CIG, cmd_remove_cig, NULL), \ CMD(BT_HCI_CMD_LE_ACCEPT_CIS, cmd_accept_cis, NULL), \ CMD(BT_HCI_CMD_LE_REJECT_CIS, cmd_reject_cis, NULL), \ - CMD(BT_HCI_CMD_LE_CREATE_BIG, cmd_create_big, NULL), \ + CMD(BT_HCI_CMD_LE_CREATE_BIG, cmd_create_big, \ + cmd_create_big_complete), \ CMD(BT_HCI_CMD_LE_CREATE_BIG_TEST, cmd_create_big_test, NULL), \ CMD(BT_HCI_CMD_LE_TERM_BIG, cmd_term_big, NULL), \ CMD(BT_HCI_CMD_LE_BIG_CREATE_SYNC, cmd_big_create_sync, NULL), \ -- 2.47.3