various improvements

This commit is contained in:
2025-02-04 08:55:00 +01:00
parent b9f6f66d4f
commit b664551865

View File

@@ -84,6 +84,7 @@ async def create_device(config: auracast_config.AuracastGlobalConfig) -> AsyncGe
name=config.device_name,
address=config.auracast_device_address,
keystore='JsonKeyStore',
le_simultaneous_enabled=True #TODO: needed ?
)
device = bumble.device.Device.from_config_with_hci(
@@ -111,6 +112,9 @@ def run_async(async_command: Coroutine) -> None:
color('!!! An error occurred while executing the command:', 'red'), message
)
PKGS_COUNT = 0
ADVERTISING_INTERVAL_SLOWDOWN_FACTOR = 2
async def run_broadcast(
global_config : auracast_config.AuracastGlobalConfig,
big_config: List[auracast_config.AuracastBigConfig]
@@ -184,9 +188,9 @@ async def run_broadcast(
advertising_event_properties=bumble.device.AdvertisingEventProperties(
is_connectable=False
),
primary_advertising_interval_min=100,
primary_advertising_interval_max=200,
advertising_sid=0
primary_advertising_interval_min=100*ADVERTISING_INTERVAL_SLOWDOWN_FACTOR,
primary_advertising_interval_max=200*ADVERTISING_INTERVAL_SLOWDOWN_FACTOR,
advertising_sid=i
# TODO: use 2mbit phy
),
advertising_data=(
@@ -198,8 +202,8 @@ async def run_broadcast(
)
),
periodic_advertising_parameters=bumble.device.PeriodicAdvertisingParameters(
periodic_advertising_interval_min=80,
periodic_advertising_interval_max=160,
periodic_advertising_interval_min=80*ADVERTISING_INTERVAL_SLOWDOWN_FACTOR,
periodic_advertising_interval_max=160*ADVERTISING_INTERVAL_SLOWDOWN_FACTOR,
),
periodic_advertising_data=bigs[f'big{i}']['basic_audio_announcement'].get_advertising_data(),
auto_restart=True,
@@ -234,11 +238,21 @@ async def run_broadcast(
bigs[f'big{i}']['frames_iterator'] = itertools.cycle(frames)
LOOP_FINITE_PKGS = -1 # set -1 to loop infinitely
logging.info("Broadcasting...")
def on_packet_complete(event):
for val in bigs.values():
frame = next(val['frames_iterator'] )
val['big'].bis_links[0].write(frame)
global PKGS_COUNT
#for val in bigs.values(): # loop over bigs
#frame = next(val['frames_iterator'] )
#val['big'].bis_links[0].write(frame)
#global pkgs_count
PKGS_COUNT = PKGS_COUNT + 1
if PKGS_COUNT < LOOP_FINITE_PKGS or LOOP_FINITE_PKGS == -1 :
frame = next(bigs[f'big0']['frames_iterator'] )
bigs[f'big0']['big'].bis_links[0].write(frame)
bigs[f'big1']['big'].bis_links[0].write(frame)
device.host.on('hci_number_of_completed_packets_event', on_packet_complete)
@@ -264,7 +278,7 @@ def broadcast(global_conf: auracast_config.AuracastGlobalConfig, big_conf: List[
# -----------------------------------------------------------------------------
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
logging.basicConfig(level=logging.DEBUG)
global_conf = auracast_config.global_base_config
@@ -273,14 +287,16 @@ if __name__ == "__main__":
#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
# TODO: why are nrf54l15 and nrf52 not streaming - no sound can be heard. Advertising starts, streaming too but no sound
# nrf5340 audio dk log says: audio_datapath: Pres comp state never gets to locked
# Look at le audio transmitted packages with wireshark next ??
bigs = [
auracast_config.broadcast_de,
#auracast_config.broadcast_en
auracast_config.broadcast_en
]
global_conf.octets_per_frame=60# 48kbps@24kHz