From: Keyur Parekh <kpare@xxxxxxxxx> 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 | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/emulator/btdev.c b/emulator/btdev.c index c824f48ff..d78d472b1 100644 --- a/emulator/btdev.c +++ b/emulator/btdev.c @@ -4473,10 +4473,32 @@ 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 bt_hci_evt_le_big_complete evt; + + evt.big_id = cmd->big_id; + evt.num_bis = cmd->num_bis; + evt.phy = bis->phy; + memcpy(&evt.latency, &(bis->latency), 3); + + le_meta_event(dev, BT_HCI_EVT_LE_BIG_COMPLETE, &evt, + sizeof(evt)); + } + + return 0; +} static int cmd_create_big_test(struct btdev *dev, const void *data, uint8_t len) { /* TODO */ @@ -4625,7 +4647,8 @@ static int cmd_set_host_feature(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.21.0 (Apple Git-122.2)