Skip to content

Commit

Permalink
Merge pull request #617 from zxzxwu/iso
Browse files Browse the repository at this point in the history
Unify ISO methods
  • Loading branch information
zxzxwu authored Jan 6, 2025
2 parents c3b2bb1 + 27fcd43 commit fe3fa3d
Show file tree
Hide file tree
Showing 4 changed files with 127 additions and 94 deletions.
24 changes: 4 additions & 20 deletions apps/auracast.py
Original file line number Diff line number Diff line change
Expand Up @@ -712,16 +712,8 @@ def sink(index: int, packet: hci.HCI_IsoDataPacket):
sdus = [b''] * num_bis

bis_link.sink = functools.partial(sink, i)
await device.send_command(
hci.HCI_LE_Setup_ISO_Data_Path_Command(
connection_handle=bis_link.handle,
data_path_direction=hci.HCI_LE_Setup_ISO_Data_Path_Command.Direction.CONTROLLER_TO_HOST,
data_path_id=0,
codec_id=hci.CodingFormat(codec_id=hci.CodecID.TRANSPARENT),
controller_delay=0,
codec_configuration=b'',
),
check_result=True,
await bis_link.setup_data_path(
direction=bis_link.Direction.CONTROLLER_TO_HOST
)

terminated = asyncio.Event()
Expand Down Expand Up @@ -834,16 +826,8 @@ async def run_broadcast(
)
print('Setup ISO Data Path')
for bis_link in big.bis_links:
await device.send_command(
hci.HCI_LE_Setup_ISO_Data_Path_Command(
connection_handle=bis_link.handle,
data_path_direction=hci.HCI_LE_Setup_ISO_Data_Path_Command.Direction.HOST_TO_CONTROLLER,
data_path_id=0,
codec_id=hci.CodingFormat(hci.CodecID.TRANSPARENT),
controller_delay=0,
codec_configuration=b'',
),
check_result=True,
await bis_link.setup_data_path(
direction=bis_link.Direction.HOST_TO_CONTROLLER
)

for frame in itertools.cycle(frames):
Expand Down
20 changes: 5 additions & 15 deletions apps/lea_unicast/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
import bumble
from bumble.core import AdvertisingData
from bumble.colors import color
from bumble.device import Device, DeviceConfiguration, AdvertisingParameters
from bumble.device import Device, DeviceConfiguration, AdvertisingParameters, CisLink
from bumble.transport import open_transport
from bumble.profiles import ascs, bap, pacs
from bumble.hci import Address, CodecID, CodingFormat, HCI_IsoDataPacket
Expand Down Expand Up @@ -110,7 +110,7 @@ async def lc3_source_task(
sdu_length: int,
frame_duration_us: int,
device: Device,
cis_handle: int,
cis_link: CisLink,
) -> None:
logger.info(
"lc3_source_task filename=%s, sdu_length=%d, frame_duration=%.1f",
Expand All @@ -120,7 +120,6 @@ async def lc3_source_task(
)
with wave.open(filename, 'rb') as wav:
bits_per_sample = wav.getsampwidth() * 8
packet_sequence_number = 0

encoder: lc3.Encoder | None = None

Expand Down Expand Up @@ -150,18 +149,8 @@ async def lc3_source_task(
num_bytes=sdu_length,
bit_depth=bits_per_sample,
)
cis_link.write(sdu)

iso_packet = HCI_IsoDataPacket(
connection_handle=cis_handle,
data_total_length=sdu_length + 4,
packet_sequence_number=packet_sequence_number,
pb_flag=0b10,
packet_status_flag=0,
iso_sdu_length=sdu_length,
iso_sdu_fragment=sdu,
)
device.host.send_hci_packet(iso_packet)
packet_sequence_number += 1
sleep_time = next_round - datetime.datetime.now()
await asyncio.sleep(sleep_time.total_seconds() * 0.9)

Expand Down Expand Up @@ -309,6 +298,7 @@ async def run(self) -> None:
advertising_interval_min=25,
advertising_interval_max=25,
address=Address('F1:F2:F3:F4:F5:F6'),
identity_address_type=Address.RANDOM_DEVICE_ADDRESS,
)

device_config.le_enabled = True
Expand Down Expand Up @@ -393,7 +383,7 @@ def on_ase_state_change(ase: ascs.AseStateMachine) -> None:
),
frame_duration_us=codec_config.frame_duration.us,
device=self.device,
cis_handle=ase.cis_link.handle,
cis_link=ase.cis_link,
),
)
else:
Expand Down
Loading

0 comments on commit fe3fa3d

Please sign in to comment.