From c2901849ffc123a9927bdcf1d05a4c6af8ccc503 Mon Sep 17 00:00:00 2001 From: pstruebi Date: Thu, 10 Jul 2025 15:14:59 +0200 Subject: [PATCH] implement stopping of advertising --- src/auracast/multicast.py | 10 +++++----- src/auracast/multicast_control.py | 10 +++++----- src/auracast/server/multicast_frontend.py | 7 +++++-- src/auracast/server/multicast_server.py | 2 ++ 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/auracast/multicast.py b/src/auracast/multicast.py index 5352ec3..37a7f07 100644 --- a/src/auracast/multicast.py +++ b/src/auracast/multicast.py @@ -216,7 +216,7 @@ async def init_broadcast( primary_advertising_interval_max=200, advertising_sid=i, primary_advertising_phy=hci.Phy.LE_1M, # 2m phy config throws error - because for primary advertising channels, 1mbit is only supported - secondary_advertising_phy=hci.Phy.LE_2M, # this is the secondary advertising beeing send on non advertising channels (extendend advertising) + secondary_advertising_phy=hci.Phy.LE_1M, # this is the secondary advertising beeing send on non advertising channels (extendend advertising) #advertising_tx_power= # tx power in dbm (max 20) #secondary_advertising_max_skip=10, ), @@ -641,8 +641,8 @@ if __name__ == "__main__": config = auracast_config.AuracastConfigGroup( bigs = [ auracast_config.AuracastBigConfigDeu(), - auracast_config.AuracastBigConfigEng(), - auracast_config.AuracastBigConfigFra(), + #auracast_config.AuracastBigConfigEng(), + #auracast_config.AuracastBigConfigFra(), #auracast_config.AuracastBigConfigEs(), #auracast_config.AuracastBigConfigIt(), ] @@ -656,8 +656,8 @@ if __name__ == "__main__": #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' - #config.transport='serial:/dev/ttyAMA3,1000000,rtscts' # transport for raspberry pi + #config.transport= 'auto' + config.transport='serial:/dev/ttyAMA3,1000000,rtscts' # transport for raspberry pi # TODO: encrypted streams are not working diff --git a/src/auracast/multicast_control.py b/src/auracast/multicast_control.py index a551b83..ac9b540 100644 --- a/src/auracast/multicast_control.py +++ b/src/auracast/multicast_control.py @@ -79,10 +79,11 @@ class Multicaster: self.is_auracast_init = False self.is_audio_init = False - for big in self.bigs.values(): - if big.get('audio_input'): - if hasattr(big['audio_input'], 'aclose'): - await big['audio_input'].aclose() + if self.bigs: + for big in self.bigs.values(): + if big.get('audio_input'): + if hasattr(big['audio_input'], 'aclose'): + await big['audio_input'].aclose() if self.device: await self.device.stop_advertising() @@ -93,7 +94,6 @@ class Multicaster: await self.device_acm.__aexit__(None, None, None) # Manually triggering teardown - # example commandline ui async def command_line_ui(caster: Multicaster): while True: diff --git a/src/auracast/server/multicast_frontend.py b/src/auracast/server/multicast_frontend.py index e6cc0e5..332670b 100644 --- a/src/auracast/server/multicast_frontend.py +++ b/src/auracast/server/multicast_frontend.py @@ -13,8 +13,11 @@ if 'stream_started' not in st.session_state: # Global: desired packetization time in ms for Opus (should match backend) PTIME = 40 BACKEND_URL = "http://localhost:5000" -TRANSPORT1 = "serial:/dev/serial/by-id/usb-ZEPHYR_Zephyr_HCI_UART_sample_B53C372677E14460-if00,115200,rtscts" #'serial:/dev/ttyAMA3,1000000,rtscts', # transport for raspberry pi gpio header -TRANSPORT2 = "serial:/dev/serial/by-id/usb-ZEPHYR_Zephyr_HCI_UART_sample_CC69A2912F84AE5E-if00,115200,rtscts" #'serial:/dev/ttyAMA4,1000000,rtscts', # transport for raspberry pi gpio header +#TRANSPORT1 = "serial:/dev/serial/by-id/usb-ZEPHYR_Zephyr_HCI_UART_sample_B53C372677E14460-if00,115200,rtscts" +#TRANSPORT2 = "serial:/dev/serial/by-id/usb-ZEPHYR_Zephyr_HCI_UART_sample_CC69A2912F84AE5E-if00,115200,rtscts" + +TRANSPORT1 = 'serial:/dev/ttyAMA3,1000000,rtscts' # transport for raspberry pi gpio header +TRANSPORT2 = 'serial:/dev/ttyAMA2,1000000,rtscts' # transport for raspberry pi gpio header QUALITY_MAP = { "High (48kHz)": {"rate": 48000, "octets": 120}, "Good (32kHz)": {"rate": 32000, "octets": 80}, diff --git a/src/auracast/server/multicast_server.py b/src/auracast/server/multicast_server.py index 739ba84..ca1979d 100644 --- a/src/auracast/server/multicast_server.py +++ b/src/auracast/server/multicast_server.py @@ -186,9 +186,11 @@ async def stop_audio(): running = False if multicaster1 is not None: await multicaster1.stop_streaming() + await multicaster1.reset() # Fully reset controller and advertising running = True if multicaster2 is not None: await multicaster2.stop_streaming() + await multicaster2.reset() # Fully reset controller and advertising running = True return {"status": "stopped", "was_running": running}