Files
bumble-auracast/auracast/auracast_config.py
2025-02-12 17:36:11 +01:00

91 lines
3.2 KiB
Python

from bumble import hci
from bumble.profiles import bap
from dataclasses import dataclass
# Define some base dataclasses to hold the relevant parameters
@dataclass
class AuracastQoSConfig:
iso_interval_us: int = 10000
number_of_retransmissions:int = 4
max_transport_latency_ms:int = 43 # TODO: varies from the default value in bumble (was 65)
qos_config_mono_high_rel = AuracastQoSConfig() #highest rel + lowest latency
qos_config_mono_medium_rel = AuracastQoSConfig(
iso_interval_us = 10000,
number_of_retransmissions = 3,
max_transport_latency_ms = 65
)
qos_config_mono_low_rel = AuracastQoSConfig( #highest latency
iso_interval_us = 10000,
number_of_retransmissions = 2,
max_transport_latency_ms = 65
)
@dataclass
class AuracastGlobalConfig:
qos_config: AuracastQoSConfig
device_name: str = 'Auracaster'
transport: str = ''
auracast_device_address: hci.Address = hci.Address('F0:F1:F2:F3:F4:F5')
auracast_sampling_rate_hz: int = 24000
octets_per_frame: int = 60 #48kbps@24kHz # bitrate = octets_per_frame * 8 / frame len
frame_duration_us: int = 10000
presentation_delay_us: int = 40000
@dataclass
class AuracastBigConfig:
broadcast_id: int =123456,
broadcast_random_address: hci.Address = hci.Address('F1:F1:F2:F3:F4:F5')
broadcast_code: str = None # a hexstr
broadcast_language: str = 'eng' # See: https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes
broadcast_name: str = 'Broadcast0'
broadcast_program_info: str = 'Some Announcements'
broacast_wav_file_path: str = './auracast/announcement_48_10_96000_en.wav'
global_base_config = AuracastGlobalConfig(qos_config=AuracastQoSConfig())
# Instanciate some example configurations
broadcast_de = AuracastBigConfig(
broadcast_id=12,
broadcast_random_address=hci.Address('F1:F1:F2:F3:F4:F5'),
broadcast_name = 'Broadcast0',
broadcast_language='deu',
broadcast_program_info = 'Announcements German',
broacast_wav_file_path = './auracast/announcement_48_10_96000_de.wav',
)
broadcast_en = AuracastBigConfig(
broadcast_id=123,
broadcast_random_address=hci.Address('F2:F1:F2:F3:F4:F5'),
broadcast_name = 'Broadcast1',
broadcast_language='eng',
broadcast_program_info = 'Announcements English',
broacast_wav_file_path = './auracast/announcement_48_10_96000_en.wav',
)
broadcast_fr = AuracastBigConfig(
broadcast_id=1234,
broadcast_random_address=hci.Address('F3:F1:F2:F3:F4:F5'),
broadcast_name = 'Broadcast2',
broadcast_language='fra',
broadcast_program_info = 'Announcements French',
broacast_wav_file_path = './auracast/announcement_48_10_96000_fr.wav',
)
broadcast_es = AuracastBigConfig(
broadcast_id=12345,
broadcast_random_address=hci.Address('F4:F1:F2:F3:F4:F5'),
broadcast_name = 'Broadcast3',
broadcast_language='spa',
broadcast_program_info = 'Announcements Spanish',
broacast_wav_file_path = './auracast/announcement_48_10_96_es.wav',
)
broadcast_it = AuracastBigConfig(
broadcast_id=123456,
broadcast_random_address=hci.Address('F5:F1:F2:F3:F4:F5'),
broadcast_name = 'Broadcast4',
broadcast_language='ita',
broadcast_program_info = 'Announcements Italian',
broacast_wav_file_path = './auracast/announcement_48_10_96_it.wav',
)