@@ -144,6 +144,10 @@ struct btdev {
uint8_t le_filter_dup;
uint8_t le_adv_enable;
uint8_t le_ltk[16];
+ struct {
+ struct bt_hci_cmd_le_set_cig_params params;
+ struct bt_hci_cis_params cis;
+ } __attribute__ ((packed)) le_cig;
uint8_t le_local_sk256[32];
@@ -1412,8 +1416,25 @@ static void le_cis_estabilished(struct btdev *dev, uint8_t status)
if (!evt.status) {
evt.conn_handle = cpu_to_le16(ISO_HANDLE);
- evt.m_phy = 0x01;
- evt.m_phy = 0x01;
+ /* TODO: Figure out if these values makes sense */
+ memcpy(evt.cig_sync_delay, dev->le_cig.params.m_interval,
+ sizeof(dev->le_cig.params.m_interval));
+ memcpy(evt.cis_sync_delay, dev->le_cig.params.s_interval,
+ sizeof(dev->le_cig.params.s_interval));
+ memcpy(evt.m_latency, &dev->le_cig.params.m_latency,
+ sizeof(dev->le_cig.params.m_latency));
+ memcpy(evt.s_latency, &dev->le_cig.params.s_latency,
+ sizeof(dev->le_cig.params.s_latency));
+ evt.m_phy = dev->le_cig.cis.m_phy;
+ evt.s_phy = dev->le_cig.cis.s_phy;
+ evt.nse = 0x01;
+ evt.m_bn = 0x01;
+ evt.s_bn = 0x01;
+ evt.m_ft = 0x01;
+ evt.s_ft = 0x01;
+ evt.m_mtu = dev->iso_mtu;
+ evt.s_mtu = dev->iso_mtu;
+ evt.interval = dev->le_cig.params.m_latency;
}
le_meta_event(dev, BT_HCI_EVT_LE_CIS_ESTABLISHED, &evt, sizeof(evt));
@@ -3804,6 +3825,7 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode,
case BT_HCI_CMD_LE_SET_CIG_PARAMS:
if (btdev->type != BTDEV_TYPE_BREDRLE60)
goto unsupported;
+ memcpy(&btdev->le_cig, data, len);
lscp.params.status = BT_HCI_ERR_SUCCESS;
lscp.params.cig_id = 0x00;
lscp.params.num_handles = 1;
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Use Set CIG params to fill CIS Estabilished. --- emulator/btdev.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-)