add iso support to bench app

This commit is contained in:
Gilles Boccon-Gibod
2025-07-06 14:08:16 +02:00
parent 1c1b947455
commit 43a8cc37f8
15 changed files with 820 additions and 196 deletions
+28 -16
View File
@@ -20,7 +20,7 @@ import logging
import sys
import os
from bumble import utils
from bumble.device import Device, Connection
from bumble.device import Device, CigParameters, CisLink, Connection
from bumble.hci import (
OwnAddressType,
)
@@ -61,27 +61,39 @@ async def main() -> None:
devices[0].random_address, own_address_type=OwnAddressType.RANDOM
)
cid_ids = [2, 3]
cis_handles = await devices[1].setup_cig(
cig_id=1,
cis_id=cid_ids,
sdu_interval=(10000, 255),
framing=0,
max_sdu=(120, 0),
retransmission_number=13,
max_transport_latency=(100, 5),
CigParameters(
cig_id=1,
cis_parameters=[
CigParameters.CisParameters(
cis_id=2,
max_sdu_c_to_p=120,
max_sdu_p_to_c=0,
rtn_c_to_p=13,
rtn_p_to_c=13,
),
CigParameters.CisParameters(
cis_id=3,
max_sdu_c_to_p=120,
max_sdu_p_to_c=0,
rtn_c_to_p=13,
rtn_p_to_c=13,
),
],
sdu_interval_c_to_p=10000,
sdu_interval_p_to_c=255,
framing=CigParameters.Framing.UNFRAMED,
max_transport_latency_c_to_p=100,
max_transport_latency_p_to_c=5,
),
)
def on_cis_request(
connection: Connection, cis_handle: int, _cig_id: int, _cis_id: int
):
connection.cancel_on_disconnection(devices[0].accept_cis_request(cis_handle))
def on_cis_request(connection: Connection, cis_link: CisLink):
connection.cancel_on_disconnection(devices[0].accept_cis_request(cis_link))
devices[0].on('cis_request', on_cis_request)
cis_links = await devices[1].create_cis(
[(cis, connection.handle) for cis in cis_handles]
)
cis_links = await devices[1].create_cis([(cis, connection) for cis in cis_handles])
for cis_link in cis_links:
await cis_link.disconnect()
+4 -7
View File
@@ -77,7 +77,7 @@ file_outputs: dict[AseStateMachine, io.BufferedWriter] = {}
# -----------------------------------------------------------------------------
async def main() -> None:
if len(sys.argv) < 3:
print('Usage: run_cig_setup.py <config-file>' '<transport-spec-for-device>')
print('Usage: run_cig_setup.py <config-file> <transport-spec-for-device>')
return
print('<<< connecting to HCI...')
@@ -149,12 +149,9 @@ async def main() -> None:
sdu += pdu.iso_sdu_fragment
file_outputs[ase].write(sdu)
def on_ase_state_change(
state: AseStateMachine.State,
ase: AseStateMachine,
) -> None:
if state != AseStateMachine.State.STREAMING:
if file_output := file_outputs.pop(ase):
def on_ase_state_change(ase: AseStateMachine) -> None:
if ase.state != AseStateMachine.State.STREAMING:
if file_output := file_outputs.pop(ase, None):
file_output.close()
else:
file_output = open(f'{datetime.datetime.now().isoformat()}.lc3', 'wb')