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.
This commit is contained in:
Keyur Parekh 2021-03-16 07:41:36 -07:00 committed by Luiz Augusto von Dentz
parent a2d34c6197
commit 44b82b959d

View File

@ -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), \