From 4d6f39b2def49f9f90754781ff56c8e15bcc37fb Mon Sep 17 00:00:00 2001 From: pstruebi Date: Tue, 4 Mar 2025 15:50:49 +0100 Subject: [PATCH] refractoring of the config --- src/auracast/auracast_config.py | 86 +++++++++++++++---------------- src/auracast/multicast.py | 17 +++--- src/auracast/multicast_control.py | 6 +-- src/auracast/multicast_server.py | 6 +-- 4 files changed, 54 insertions(+), 61 deletions(-) diff --git a/src/auracast/auracast_config.py b/src/auracast/auracast_config.py index 63bc690..f1b2b03 100644 --- a/src/auracast/auracast_config.py +++ b/src/auracast/auracast_config.py @@ -43,10 +43,9 @@ global_base_config = AuracastGlobalConfig(qos_config=AuracastQoSConfig()) # "'stdin' -> receive audio from stdin as int16 PCM, " # "'file: -> read audio from a .wav or raw int16 PCM file. " - @dataclass class AuracastBigConfig: - id: int = 123456, + id: int = 123456 random_address: hci.Address = hci.Address('F1:F1:F2:F3:F4:F5') code: str = None # Broadcast_Code – a 16-octet parameter provided by the Host language: str = 'eng' # See: https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes @@ -58,49 +57,48 @@ class AuracastBigConfig: precode_wav: bool = False iso_que_len: int = 64 +# example configurations with inherit +@dataclass +class AuracastBigConfigDe(AuracastBigConfig): + id: int = 12 + random_address: hci.Address=hci.Address('F1:F1:F2:F3:F4:F5') + name: str = 'Broadcast0' + language: str ='deu' + program_info: str = 'Announcements German' + audio_source: str = 'file:./testdata/announcement_de.wav' -# Instanciate some example configurations -broadcast_de = AuracastBigConfig( - id=12, - random_address=hci.Address('F1:F1:F2:F3:F4:F5'), - name = 'Broadcast0', - language='deu', - program_info = 'Announcements German', - audio_source = 'file:./testdata/announcement_de.wav', -) +@dataclass +class AuracastBigConfigEn(AuracastBigConfig): + id: int = 123 + random_address: str =hci.Address('F2:F1:F2:F3:F4:F5') + name: str = 'Broadcast1' + language: str ='eng' + program_info: str = 'Announcements English' + audio_source: str = 'file:./testdata/announcement_en.wav' -broadcast_en = AuracastBigConfig( - id=123, - random_address=hci.Address('F2:F1:F2:F3:F4:F5'), - name = 'Broadcast1', - language='eng', - program_info = 'Announcements English', - audio_source = 'file:./testdata/announcement_en.wav', -) +@dataclass +class AuracastBigConfigFr(AuracastBigConfig): + id: int =1234 + random_address: str =hci.Address('F3:F1:F2:F3:F4:F5') + name: str = 'Broadcast2' + language: str ='fra' + program_info: str = 'Announcements French' + audio_source: str = 'file:./testdata/announcement_fr.wav' -broadcast_fr = AuracastBigConfig( - id=1234, - random_address=hci.Address('F3:F1:F2:F3:F4:F5'), - name = 'Broadcast2', - language='fra', - program_info = 'Announcements French', - audio_source = 'file:./testdata/announcement_fr.wav', -) +@dataclass +class AuracastBigConfigEs(AuracastBigConfig): + id: int =12345 + random_address: str =hci.Address('F4:F1:F2:F3:F4:F5') + name: str = 'Broadcast3' + language: str ='spa' + program_info: str = 'Announcements Spanish' + audio_source: str = 'file:./testdata/announcement_es.wav' -broadcast_es = AuracastBigConfig( - id=12345, - random_address=hci.Address('F4:F1:F2:F3:F4:F5'), - name = 'Broadcast3', - language='spa', - program_info = 'Announcements Spanish', - audio_source = 'file:./testdata/announcement_es.wav', -) - -broadcast_it = AuracastBigConfig( - id=123456, - random_address=hci.Address('F5:F1:F2:F3:F4:F5'), - name = 'Broadcast4', - language='ita', - program_info = 'Announcements Italian', - audio_source = 'file:./testdata/announcement_it.wav', -) \ No newline at end of file +@dataclass +class AuracastBigConfigIt(AuracastBigConfig): + id: int =1234567 + random_address: str =hci.Address('F5:F1:F2:F3:F4:F5') + name: str = 'Broadcast4' + language: str ='ita' + program_info: str = 'Announcements Italian' + audio_source: str = 'file:./testdata/announcement_it.wav' diff --git a/src/auracast/multicast.py b/src/auracast/multicast.py index d1ce5de..e4472e5 100644 --- a/src/auracast/multicast.py +++ b/src/auracast/multicast.py @@ -496,13 +496,8 @@ async def broadcast(global_conf: auracast_config.AuracastGlobalConfig, big_conf: if __name__ == "__main__": import os - if os.environ['LOG_LEVEL']: - log_level = getattr(logging, os.environ['LOG_LEVEL']) - else: - log_level = logging.DEBUG - log_level = os.environ['LOG_LEVEL'] logging.basicConfig( - level=log_level, + level=os.environ.get('LOG_LEVEL', logging.DEBUG), format='%(module)s.py:%(lineno)d %(levelname)s: %(message)s' ) os.chdir(os.path.dirname(__file__)) @@ -525,11 +520,11 @@ if __name__ == "__main__": global_conf.qos_config = auracast_config.qos_config_mono_high_rel bigs = [ - auracast_config.broadcast_de, - auracast_config.broadcast_en, - auracast_config.broadcast_fr, - #auracast_config.broadcast_es, - #auracast_config.broadcast_it, + auracast_config.AuracastBigConfigDe(), + auracast_config.AuracastBigConfigEn(), + auracast_config.AuracastBigConfigFr(), + #auracast_config.AuracastBigConfigEs(), + #auracast_config.AuracastBigConfigIt(), ] for big in bigs: # TODO: encrypted streams are not working #big.code = 'ff'*16 # returns hci/HCI_ENCRYPTION_MODE_NOT_ACCEPTABLE_ERROR diff --git a/src/auracast/multicast_control.py b/src/auracast/multicast_control.py index 8bc3e4d..1e9e5ab 100644 --- a/src/auracast/multicast_control.py +++ b/src/auracast/multicast_control.py @@ -123,9 +123,9 @@ async def main(): global_conf.transport='serial:/dev/serial/by-id/usb-ZEPHYR_Zephyr_HCI_UART_sample_81BD14B8D71B5662-if00,115200,rtscts' #nrf52dongle hci_uart usb cdc big_conf = [ - auracast_config.broadcast_de, - auracast_config.broadcast_en, - auracast_config.broadcast_fr, + auracast_config.AuracastBigConfigDe(), + auracast_config.AuracastBigConfigEn(), + auracast_config.AuracastBigConfigFr(), #auracast_config.broadcast_es, #auracast_config.broadcast_it, ] diff --git a/src/auracast/multicast_server.py b/src/auracast/multicast_server.py index 05849ee..866b5c6 100644 --- a/src/auracast/multicast_server.py +++ b/src/auracast/multicast_server.py @@ -11,9 +11,9 @@ global_conf = auracast_config.global_base_config global_conf.transport='serial:/dev/serial/by-id/usb-ZEPHYR_Zephyr_HCI_UART_sample_81BD14B8D71B5662-if00,115200,rtscts' #nrf52dongle hci_uart usb cdc big_conf = { # TODO: use another dataclass for this to be able to iterate over the names - 'broadcast_de': auracast_config.broadcast_de, - 'broadcast_en': auracast_config.broadcast_en, - 'broadcast_fr': auracast_config.broadcast_fr, + 'broadcast_de': auracast_config.AuracastBigConfigDe(), + 'broadcast_en': auracast_config.AuracastBigConfigEn(), + 'broadcast_fr': auracast_config.AuracastBigConfigFr(), #auracast_config.broadcast_es, #auracast_config.broadcast_it, }