diff --git a/emulator/btdev.c b/emulator/btdev.c
index 742c686..99fe3a1 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
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 */
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), \