add auto discovery mode to multicaster and streamline dependencies

This commit is contained in:
2025-04-03 15:09:35 +02:00
parent 4d401ccee5
commit f2e0d7e7be
3 changed files with 1659 additions and 8 deletions

1634
poetry.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
[project]
name = "auracast"
version = "0.0.1"
requires-python = ">=3.8"
requires-python = ">=3.11"
dependencies = [
"bumble @ git+ssh://git@ssh.pstruebi.xyz:222/auracaster/bumble_mirror.git@12bcdb7770c0d57a094bc0a96cd52e701f97fece",
@@ -10,8 +10,9 @@ dependencies = [
"aioconsole",
"fastapi==0.115.11",
"uvicorn==0.34.0",
"pydantic",
"aiohttp==3.9.3"
"aiohttp==3.9.3",
"sounddevice (>=0.5.1,<0.6.0)",
"aioconsole (>=0.8.1,<0.9.0)"
]
[project.optional-dependencies]

View File

@@ -25,6 +25,7 @@ import itertools
import struct
from typing import cast, Any, AsyncGenerator, Coroutine, List
import itertools
import glob
try:
import lc3 # type: ignore # pylint: disable=E0401
@@ -476,6 +477,20 @@ class Streamer():
async def broadcast(global_conf: auracast_config.AuracastGlobalConfig, big_conf: List[auracast_config.AuracastBigConfig]):
"""Start a broadcast."""
if global_conf.transport == 'auto':
devices = glob.glob('/dev/serial/by-id/*')
logging.info('Found serial devices: %s', devices)
for device in devices:
if 'usb-ZEPHYR_Zephyr_HCI_UART_sample' in device:
logging.info('Using: %s', device)
global_conf.transport = f'serial:{device},115200,rtscts'
break
# check again if transport is still auto
if global_conf.transport == 'auto':
raise AssertionError('No suitable transport found.')
async with create_device(global_conf) as device:
if not device.supports_le_periodic_advertising:
logger.error(color('Periodic advertising not supported', 'red'))
@@ -516,11 +531,12 @@ if __name__ == "__main__":
# TODO: How can we use other iso interval than 10ms ?(medium or low rel) ? - nrf53audio receiver repports I2S tx underrun
config.qos_config=auracast_config.AuracastQosHigh()
#global_conf.transport='serial:/dev/serial/by-id/usb-ZEPHYR_Zephyr_HCI_UART_sample_81BD14B8D71B5662-if00,1000000,rtscts' # transport for nrf52 dongle
#global_conf.transport='serial:/dev/serial/by-id/usb-SEGGER_J-Link_001050076061-if02,1000000,rtscts' # transport for nrf53dk
#global_conf.transport='serial:/dev/serial/by-id/usb-SEGGER_J-Link_001057705357-if02,1000000,rtscts' # transport for nrf54l15dk
config.transport='serial:/dev/serial/by-id/usb-ZEPHYR_Zephyr_HCI_UART_sample_95A087EADB030B24-if00,115200,rtscts' #nrf52dongle hci_uart usb cdc
# global_conf.transport='usb:2fe3:000b' #nrf52dongle hci_usb # TODO: iso packet over usb not supported
#config.transport='serial:/dev/serial/by-id/usb-ZEPHYR_Zephyr_HCI_UART_sample_81BD14B8D71B5662-if00,1000000,rtscts' # transport for nrf52 dongle
#config.transport='serial:/dev/serial/by-id/usb-SEGGER_J-Link_001050076061-if02,1000000,rtscts' # transport for nrf53dk
#config.transport='serial:/dev/serial/by-id/usb-SEGGER_J-Link_001057705357-if02,1000000,rtscts' # transport for nrf54l15dk
#config.transport='serial:/dev/serial/by-id/usb-ZEPHYR_Zephyr_HCI_UART_sample_95A087EADB030B24-if00,115200,rtscts' #nrf52dongle hci_uart usb cdc
#config.transport='usb:2fe3:000b' #nrf52dongle hci_usb # TODO: iso packet over usb not supported
config.transport= 'auto'
for big in config.bigs: # TODO: encrypted streams are not working
#big.code = 'ff'*16 # returns hci/HCI_ENCRYPTION_MODE_NOT_ACCEPTABLE_ERROR