From 83c8c1e9283d969cd606b04d70f219431408bb76 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Tue, 19 Jan 2021 13:51:12 -0800 Subject: [PATCH] btdev: Fix using CIG settings from the peripheral not the central SetCIGParameters is only used by the central while accept/reject CIS is performed on in the peripheral so le_cis_estabilished shall use the parameters set in the conn->link->dev. --- emulator/btdev.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/emulator/btdev.c b/emulator/btdev.c index 73c0db3e4..2af349e40 100644 --- a/emulator/btdev.c +++ b/emulator/btdev.c @@ -4343,26 +4343,28 @@ static void le_cis_estabilished(struct btdev *dev, struct btdev_conn *conn, evt.status = status; if (!evt.status) { + struct btdev *remote = conn->link->dev; + evt.conn_handle = cpu_to_le16(conn->handle); /* 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; + memcpy(evt.cig_sync_delay, remote->le_cig.params.m_interval, + sizeof(remote->le_cig.params.m_interval)); + memcpy(evt.cis_sync_delay, remote->le_cig.params.s_interval, + sizeof(remote->le_cig.params.s_interval)); + memcpy(evt.m_latency, &remote->le_cig.params.m_latency, + sizeof(remote->le_cig.params.m_latency)); + memcpy(evt.s_latency, &remote->le_cig.params.s_latency, + sizeof(remote->le_cig.params.s_latency)); + evt.m_phy = remote->le_cig.cis.m_phy; + evt.s_phy = remote->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->le_cig.cis.m_sdu; - evt.s_mtu = dev->le_cig.cis.s_sdu; - evt.interval = dev->le_cig.params.m_latency; + evt.m_mtu = remote->le_cig.cis.m_sdu; + evt.s_mtu = remote->le_cig.cis.s_sdu; + evt.interval = remote->le_cig.params.m_latency; } le_meta_event(dev, BT_HCI_EVT_LE_CIS_ESTABLISHED, &evt, sizeof(evt)); -- 2.47.3