From 450416fb2d9fb7779dacffe47f93dc80cae81e0f Mon Sep 17 00:00:00 2001 From: Paul Obernesser Date: Wed, 10 Dec 2025 10:50:45 +0100 Subject: [PATCH] add bap testcases for full qualification --- ...test_str.py => test_bap_bsrc_scc_bv20c.py} | 20 ++++----- .../BAP/test_bap_bsrc_scc_bv22c.py | 42 +++++++++++++++++ .../BAP/test_bap_bsrc_scc_bv28c.py | 42 +++++++++++++++++ .../BAP/test_bap_bsrc_scc_bv30c.py | 42 +++++++++++++++++ .../BAP/test_bap_bsrc_scc_bv32c.py | 42 +++++++++++++++++ .../BAP/test_bap_bsrc_scc_bv38c.py | 45 +++++++++++++++++++ ...t_scc.py => test_bap_bsrc_scc_str_bv01.py} | 2 +- .../BAP/test_bap_bsrc_scc_str_bv06c.py | 41 +++++++++++++++++ .../BAP/test_bap_bsrc_scc_str_bv12c.py | 41 +++++++++++++++++ .../BAP/test_bap_bsrc_scc_str_bv14c.py | 41 +++++++++++++++++ .../BAP/test_bap_bsrc_scc_str_bv16c.py | 41 +++++++++++++++++ .../BAP/test_bap_bsrc_str_bv21c.py | 41 +++++++++++++++++ .../BAP/test_bap_bsrc_str_bv23c.py | 41 +++++++++++++++++ .../BAP/test_bap_bsrc_str_bv29c.py | 41 +++++++++++++++++ .../BAP/test_bap_bsrc_str_bv31c.py | 41 +++++++++++++++++ .../BAP/test_bap_bsrc_str_bv33c.py | 41 +++++++++++++++++ 16 files changed, 592 insertions(+), 12 deletions(-) rename src/qualification/BAP/{BSRC/STR/test_str.py => test_bap_bsrc_scc_bv20c.py} (53%) create mode 100644 src/qualification/BAP/test_bap_bsrc_scc_bv22c.py create mode 100644 src/qualification/BAP/test_bap_bsrc_scc_bv28c.py create mode 100644 src/qualification/BAP/test_bap_bsrc_scc_bv30c.py create mode 100644 src/qualification/BAP/test_bap_bsrc_scc_bv32c.py create mode 100644 src/qualification/BAP/test_bap_bsrc_scc_bv38c.py rename src/qualification/BAP/{BSRC/SCC/test_scc.py => test_bap_bsrc_scc_str_bv01.py} (94%) create mode 100644 src/qualification/BAP/test_bap_bsrc_scc_str_bv06c.py create mode 100644 src/qualification/BAP/test_bap_bsrc_scc_str_bv12c.py create mode 100644 src/qualification/BAP/test_bap_bsrc_scc_str_bv14c.py create mode 100644 src/qualification/BAP/test_bap_bsrc_scc_str_bv16c.py create mode 100644 src/qualification/BAP/test_bap_bsrc_str_bv21c.py create mode 100644 src/qualification/BAP/test_bap_bsrc_str_bv23c.py create mode 100644 src/qualification/BAP/test_bap_bsrc_str_bv29c.py create mode 100644 src/qualification/BAP/test_bap_bsrc_str_bv31c.py create mode 100644 src/qualification/BAP/test_bap_bsrc_str_bv33c.py diff --git a/src/qualification/BAP/BSRC/STR/test_str.py b/src/qualification/BAP/test_bap_bsrc_scc_bv20c.py similarity index 53% rename from src/qualification/BAP/BSRC/STR/test_str.py rename to src/qualification/BAP/test_bap_bsrc_scc_bv20c.py index a36079f..13132f2 100644 --- a/src/qualification/BAP/BSRC/STR/test_str.py +++ b/src/qualification/BAP/test_bap_bsrc_scc_bv20c.py @@ -1,5 +1,7 @@ """ +BAP/BSRC/SCC/BV-20-C: Config Broadcast, LC3 16_2_2 +Configuration: 16kHz, 40 octets/frame, stereo (2 BISes), QoS _2 variant """ import logging @@ -15,26 +17,22 @@ if __name__ == "__main__": format="%(module)s.py:%(lineno)d %(levelname)s: %(message)s", ) - # Ensure relative audio paths like in AuracastBigConfig work (./auracast/...) from src/auracast/ - os.chdir(os.path.join(os.path.dirname(__file__), "../../../../auracast")) + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) - # Start from default global config config = AuracastGlobalConfig() - - # Use same QoS profile as multicast main + # _2 variant uses different QoS (RTN=2, higher latency) config.qos_config = AuracastQosDefault() + config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" - # Transport similar to multicast main; adjust if needed for your setup - # config.transport = "auto" # let multicast auto-detect - config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" # Raspberry Pi default + # 16_2_2: 16kHz, 40 octets/frame + config.auracast_sampling_rate_hz = 16000 + config.octets_per_frame = 40 - # Stereo BIG with 2 BISes (FRONT_LEFT + FRONT_RIGHT) big = AuracastBigConfig() big.random_address = "F1:F1:F2:F3:F4:F5" big.audio_source = "file:./testdata/announcement_en_stereo.wav" big.id = 12 - big.num_bis = 2 # stereo: 2 BISes - big.name = 'Broadcast' + big.num_bis = 2 # stereo run_async( broadcast( diff --git a/src/qualification/BAP/test_bap_bsrc_scc_bv22c.py b/src/qualification/BAP/test_bap_bsrc_scc_bv22c.py new file mode 100644 index 0000000..7185eeb --- /dev/null +++ b/src/qualification/BAP/test_bap_bsrc_scc_bv22c.py @@ -0,0 +1,42 @@ +""" +BAP/BSRC/SCC/BV-22-C: Config Broadcast, LC3 24_2_2 + +Configuration: 24kHz, 60 octets/frame, stereo (2 BISes), QoS _2 variant +""" + +import logging +import os + +from auracast.auracast_config import AuracastGlobalConfig, AuracastBigConfig, AuracastQosDefault +from auracast.multicast import broadcast, run_async + + +if __name__ == "__main__": + logging.basicConfig( + level=os.environ.get("LOG_LEVEL", logging.INFO), + format="%(module)s.py:%(lineno)d %(levelname)s: %(message)s", + ) + + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) + + config = AuracastGlobalConfig() + # _2 variant uses different QoS (RTN=2, higher latency) + config.qos_config = AuracastQosDefault() + config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" + + # 24_2_2: 24kHz, 60 octets/frame + config.auracast_sampling_rate_hz = 24000 + config.octets_per_frame = 60 + + big = AuracastBigConfig() + big.random_address = "F1:F1:F2:F3:F4:F5" + big.audio_source = "file:./testdata/announcement_en_stereo.wav" + big.id = 12 + big.num_bis = 2 # stereo + + run_async( + broadcast( + config, + [big], + ) + ) diff --git a/src/qualification/BAP/test_bap_bsrc_scc_bv28c.py b/src/qualification/BAP/test_bap_bsrc_scc_bv28c.py new file mode 100644 index 0000000..2e82a02 --- /dev/null +++ b/src/qualification/BAP/test_bap_bsrc_scc_bv28c.py @@ -0,0 +1,42 @@ +""" +BAP/BSRC/SCC/BV-28-C: Config Broadcast, LC3 48_2_2 + +Configuration: 48kHz, 100 octets/frame, stereo (2 BISes), QoS _2 variant +""" + +import logging +import os + +from auracast.auracast_config import AuracastGlobalConfig, AuracastBigConfig, AuracastQosDefault +from auracast.multicast import broadcast, run_async + + +if __name__ == "__main__": + logging.basicConfig( + level=os.environ.get("LOG_LEVEL", logging.INFO), + format="%(module)s.py:%(lineno)d %(levelname)s: %(message)s", + ) + + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) + + config = AuracastGlobalConfig() + # _2 variant uses different QoS (RTN=2, higher latency) + config.qos_config = AuracastQosDefault() + config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" + + # 48_2_2: 48kHz, 100 octets/frame + config.auracast_sampling_rate_hz = 48000 + config.octets_per_frame = 100 + + big = AuracastBigConfig() + big.random_address = "F1:F1:F2:F3:F4:F5" + big.audio_source = "file:./testdata/announcement_en_stereo.wav" + big.id = 12 + big.num_bis = 2 # stereo + + run_async( + broadcast( + config, + [big], + ) + ) diff --git a/src/qualification/BAP/test_bap_bsrc_scc_bv30c.py b/src/qualification/BAP/test_bap_bsrc_scc_bv30c.py new file mode 100644 index 0000000..53cf8b7 --- /dev/null +++ b/src/qualification/BAP/test_bap_bsrc_scc_bv30c.py @@ -0,0 +1,42 @@ +""" +BAP/BSRC/SCC/BV-30-C: Config Broadcast, LC3 48_4_2 + +Configuration: 48kHz, 120 octets/frame, stereo (2 BISes), QoS _2 variant +""" + +import logging +import os + +from auracast.auracast_config import AuracastGlobalConfig, AuracastBigConfig, AuracastQosDefault +from auracast.multicast import broadcast, run_async + + +if __name__ == "__main__": + logging.basicConfig( + level=os.environ.get("LOG_LEVEL", logging.INFO), + format="%(module)s.py:%(lineno)d %(levelname)s: %(message)s", + ) + + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) + + config = AuracastGlobalConfig() + # _2 variant uses different QoS (RTN=2, higher latency) + config.qos_config = AuracastQosDefault() + config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" + + # 48_4_2: 48kHz, 120 octets/frame + config.auracast_sampling_rate_hz = 48000 + config.octets_per_frame = 120 + + big = AuracastBigConfig() + big.random_address = "F1:F1:F2:F3:F4:F5" + big.audio_source = "file:./testdata/announcement_en_stereo.wav" + big.id = 12 + big.num_bis = 2 # stereo + + run_async( + broadcast( + config, + [big], + ) + ) diff --git a/src/qualification/BAP/test_bap_bsrc_scc_bv32c.py b/src/qualification/BAP/test_bap_bsrc_scc_bv32c.py new file mode 100644 index 0000000..7f09ebc --- /dev/null +++ b/src/qualification/BAP/test_bap_bsrc_scc_bv32c.py @@ -0,0 +1,42 @@ +""" +BAP/BSRC/SCC/BV-32-C: Config Broadcast, LC3 48_6_2 + +Configuration: 48kHz, 155 octets/frame, stereo (2 BISes), QoS _2 variant +""" + +import logging +import os + +from auracast.auracast_config import AuracastGlobalConfig, AuracastBigConfig, AuracastQosDefault +from auracast.multicast import broadcast, run_async + + +if __name__ == "__main__": + logging.basicConfig( + level=os.environ.get("LOG_LEVEL", logging.INFO), + format="%(module)s.py:%(lineno)d %(levelname)s: %(message)s", + ) + + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) + + config = AuracastGlobalConfig() + # _2 variant uses different QoS (RTN=2, higher latency) + config.qos_config = AuracastQosDefault() + config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" + + # 48_6_2: 48kHz, 155 octets/frame + config.auracast_sampling_rate_hz = 48000 + config.octets_per_frame = 155 + + big = AuracastBigConfig() + big.random_address = "F1:F1:F2:F3:F4:F5" + big.audio_source = "file:./testdata/announcement_en_stereo.wav" + big.id = 12 + big.num_bis = 2 # stereo + + run_async( + broadcast( + config, + [big], + ) + ) diff --git a/src/qualification/BAP/test_bap_bsrc_scc_bv38c.py b/src/qualification/BAP/test_bap_bsrc_scc_bv38c.py new file mode 100644 index 0000000..df36aa0 --- /dev/null +++ b/src/qualification/BAP/test_bap_bsrc_scc_bv38c.py @@ -0,0 +1,45 @@ +""" +BAP/BSRC/SCC/BV-38-C: Multi BIG Configuration + +Configuration: Two BIGs (id=12 and id=13), stereo (2 BISes each) +""" + +import logging +import os + +from auracast.auracast_config import AuracastGlobalConfig, AuracastBigConfig, AuracastQosFast +from auracast.multicast import broadcast, run_async + + +if __name__ == "__main__": + logging.basicConfig( + level=os.environ.get("LOG_LEVEL", logging.INFO), + format="%(module)s.py:%(lineno)d %(levelname)s: %(message)s", + ) + + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) + + config = AuracastGlobalConfig() + config.qos_config = AuracastQosFast() + config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" + + # First BIG + big1 = AuracastBigConfig() + big1.random_address = "F1:F1:F2:F3:F4:F5" + big1.audio_source = "file:./testdata/announcement_en_stereo.wav" + big1.id = 12 + big1.num_bis = 2 # stereo + + # Second BIG + big2 = AuracastBigConfig() + big2.random_address = "F1:F1:F2:F3:F4:F6" + big2.audio_source = "file:./testdata/announcement_en_stereo.wav" + big2.id = 13 + big2.num_bis = 2 # stereo + + run_async( + broadcast( + config, + [big1, big2], + ) + ) diff --git a/src/qualification/BAP/BSRC/SCC/test_scc.py b/src/qualification/BAP/test_bap_bsrc_scc_str_bv01.py similarity index 94% rename from src/qualification/BAP/BSRC/SCC/test_scc.py rename to src/qualification/BAP/test_bap_bsrc_scc_str_bv01.py index 7fd1e93..946ca9a 100644 --- a/src/qualification/BAP/BSRC/SCC/test_scc.py +++ b/src/qualification/BAP/test_bap_bsrc_scc_str_bv01.py @@ -16,7 +16,7 @@ if __name__ == "__main__": ) # Ensure relative audio paths like in AuracastBigConfig work (./auracast/...) from src/auracast/ - os.chdir(os.path.join(os.path.dirname(__file__), "../../../../auracast")) + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) # Start from default global config config = AuracastGlobalConfig() diff --git a/src/qualification/BAP/test_bap_bsrc_scc_str_bv06c.py b/src/qualification/BAP/test_bap_bsrc_scc_str_bv06c.py new file mode 100644 index 0000000..4c5d316 --- /dev/null +++ b/src/qualification/BAP/test_bap_bsrc_scc_str_bv06c.py @@ -0,0 +1,41 @@ +""" +BAP/BSRC/SCC/BV-06-C and BAP/BSRC/STR/BV-06-C: Config Broadcast, LC3 24_2_1 + +Configuration: 24kHz, stereo (2 BISes) +""" + +import logging +import os + +from auracast.auracast_config import AuracastGlobalConfig, AuracastBigConfig, AuracastQosFast +from auracast.multicast import broadcast, run_async + + +if __name__ == "__main__": + logging.basicConfig( + level=os.environ.get("LOG_LEVEL", logging.INFO), + format="%(module)s.py:%(lineno)d %(levelname)s: %(message)s", + ) + + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) + + config = AuracastGlobalConfig() + config.qos_config = AuracastQosFast() + config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" + + # 24_2_1: 24kHz + config.auracast_sampling_rate_hz = 24000 + config.octets_per_frame = 60 + + big = AuracastBigConfig() + big.random_address = "F1:F1:F2:F3:F4:F5" + big.audio_source = "file:./testdata/announcement_en_stereo.wav" + big.id = 12 + big.num_bis = 2 # stereo + + run_async( + broadcast( + config, + [big], + ) + ) diff --git a/src/qualification/BAP/test_bap_bsrc_scc_str_bv12c.py b/src/qualification/BAP/test_bap_bsrc_scc_str_bv12c.py new file mode 100644 index 0000000..7803a66 --- /dev/null +++ b/src/qualification/BAP/test_bap_bsrc_scc_str_bv12c.py @@ -0,0 +1,41 @@ +""" +BAP/BSRC/SCC/BV-12-C and BAP/BSRC/STR/BV-12-C: Config Broadcast, LC3 48_2_1 + +Configuration: 48kHz, 100 octets/frame, stereo (2 BISes) +""" + +import logging +import os + +from auracast.auracast_config import AuracastGlobalConfig, AuracastBigConfig, AuracastQosFast +from auracast.multicast import broadcast, run_async + + +if __name__ == "__main__": + logging.basicConfig( + level=os.environ.get("LOG_LEVEL", logging.INFO), + format="%(module)s.py:%(lineno)d %(levelname)s: %(message)s", + ) + + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) + + config = AuracastGlobalConfig() + config.qos_config = AuracastQosFast() + config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" + + # 48_2_1: 48kHz, 100 octets/frame + config.auracast_sampling_rate_hz = 48000 + config.octets_per_frame = 100 + + big = AuracastBigConfig() + big.random_address = "F1:F1:F2:F3:F4:F5" + big.audio_source = "file:./testdata/announcement_en_stereo.wav" + big.id = 12 + big.num_bis = 2 # stereo + + run_async( + broadcast( + config, + [big], + ) + ) diff --git a/src/qualification/BAP/test_bap_bsrc_scc_str_bv14c.py b/src/qualification/BAP/test_bap_bsrc_scc_str_bv14c.py new file mode 100644 index 0000000..95f96a2 --- /dev/null +++ b/src/qualification/BAP/test_bap_bsrc_scc_str_bv14c.py @@ -0,0 +1,41 @@ +""" +BAP/BSRC/SCC/BV-14-C and BAP/BSRC/STR/BV-14-C: Config Broadcast, LC3 48_4_1 + +Configuration: 48kHz, 120 octets/frame, stereo (2 BISes) +""" + +import logging +import os + +from auracast.auracast_config import AuracastGlobalConfig, AuracastBigConfig, AuracastQosFast +from auracast.multicast import broadcast, run_async + + +if __name__ == "__main__": + logging.basicConfig( + level=os.environ.get("LOG_LEVEL", logging.INFO), + format="%(module)s.py:%(lineno)d %(levelname)s: %(message)s", + ) + + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) + + config = AuracastGlobalConfig() + config.qos_config = AuracastQosFast() + config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" + + # 48_4_1: 48kHz, 120 octets/frame + config.auracast_sampling_rate_hz = 48000 + config.octets_per_frame = 120 + + big = AuracastBigConfig() + big.random_address = "F1:F1:F2:F3:F4:F5" + big.audio_source = "file:./testdata/announcement_en_stereo.wav" + big.id = 12 + big.num_bis = 2 # stereo + + run_async( + broadcast( + config, + [big], + ) + ) diff --git a/src/qualification/BAP/test_bap_bsrc_scc_str_bv16c.py b/src/qualification/BAP/test_bap_bsrc_scc_str_bv16c.py new file mode 100644 index 0000000..0994f42 --- /dev/null +++ b/src/qualification/BAP/test_bap_bsrc_scc_str_bv16c.py @@ -0,0 +1,41 @@ +""" +BAP/BSRC/SCC/BV-16-C and BAP/BSRC/STR/BV-16-C: Config Broadcast, LC3 48_6_1 + +Configuration: 48kHz, 155 octets/frame, stereo (2 BISes) +""" + +import logging +import os + +from auracast.auracast_config import AuracastGlobalConfig, AuracastBigConfig, AuracastQosFast +from auracast.multicast import broadcast, run_async + + +if __name__ == "__main__": + logging.basicConfig( + level=os.environ.get("LOG_LEVEL", logging.INFO), + format="%(module)s.py:%(lineno)d %(levelname)s: %(message)s", + ) + + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) + + config = AuracastGlobalConfig() + config.qos_config = AuracastQosFast() + config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" + + # 48_6_1: 48kHz, 155 octets/frame + config.auracast_sampling_rate_hz = 48000 + config.octets_per_frame = 155 + + big = AuracastBigConfig() + big.random_address = "F1:F1:F2:F3:F4:F5" + big.audio_source = "file:./testdata/announcement_en_stereo.wav" + big.id = 12 + big.num_bis = 2 # stereo + + run_async( + broadcast( + config, + [big], + ) + ) diff --git a/src/qualification/BAP/test_bap_bsrc_str_bv21c.py b/src/qualification/BAP/test_bap_bsrc_str_bv21c.py new file mode 100644 index 0000000..2abc2cd --- /dev/null +++ b/src/qualification/BAP/test_bap_bsrc_str_bv21c.py @@ -0,0 +1,41 @@ +""" +BAP/BSRC/STR/BV-21-C: BSRC, Multiple BISes, LC3 16_2 + +Configuration: 16kHz, 40 octets/frame, stereo (2 BISes) +""" + +import logging +import os + +from auracast.auracast_config import AuracastGlobalConfig, AuracastBigConfig, AuracastQosFast +from auracast.multicast import broadcast, run_async + + +if __name__ == "__main__": + logging.basicConfig( + level=os.environ.get("LOG_LEVEL", logging.INFO), + format="%(module)s.py:%(lineno)d %(levelname)s: %(message)s", + ) + + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) + + config = AuracastGlobalConfig() + config.qos_config = AuracastQosFast() + config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" + + # 16_2: 16kHz, 40 octets/frame + config.auracast_sampling_rate_hz = 16000 + config.octets_per_frame = 40 + + big = AuracastBigConfig() + big.random_address = "F1:F1:F2:F3:F4:F5" + big.audio_source = "file:./testdata/announcement_en_stereo.wav" + big.id = 12 + big.num_bis = 2 # stereo (multiple BISes) + + run_async( + broadcast( + config, + [big], + ) + ) diff --git a/src/qualification/BAP/test_bap_bsrc_str_bv23c.py b/src/qualification/BAP/test_bap_bsrc_str_bv23c.py new file mode 100644 index 0000000..45535fb --- /dev/null +++ b/src/qualification/BAP/test_bap_bsrc_str_bv23c.py @@ -0,0 +1,41 @@ +""" +BAP/BSRC/STR/BV-23-C: BSRC, Multiple BISes, LC3 24_2 + +Configuration: 24kHz, 60 octets/frame, stereo (2 BISes) +""" + +import logging +import os + +from auracast.auracast_config import AuracastGlobalConfig, AuracastBigConfig, AuracastQosFast +from auracast.multicast import broadcast, run_async + + +if __name__ == "__main__": + logging.basicConfig( + level=os.environ.get("LOG_LEVEL", logging.INFO), + format="%(module)s.py:%(lineno)d %(levelname)s: %(message)s", + ) + + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) + + config = AuracastGlobalConfig() + config.qos_config = AuracastQosFast() + config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" + + # 24_2: 24kHz, 60 octets/frame + config.auracast_sampling_rate_hz = 24000 + config.octets_per_frame = 60 + + big = AuracastBigConfig() + big.random_address = "F1:F1:F2:F3:F4:F5" + big.audio_source = "file:./testdata/announcement_en_stereo.wav" + big.id = 12 + big.num_bis = 2 # stereo (multiple BISes) + + run_async( + broadcast( + config, + [big], + ) + ) diff --git a/src/qualification/BAP/test_bap_bsrc_str_bv29c.py b/src/qualification/BAP/test_bap_bsrc_str_bv29c.py new file mode 100644 index 0000000..d139473 --- /dev/null +++ b/src/qualification/BAP/test_bap_bsrc_str_bv29c.py @@ -0,0 +1,41 @@ +""" +BAP/BSRC/STR/BV-29-C: BSRC, Multiple BISes, LC3 48_2 + +Configuration: 48kHz, 100 octets/frame, stereo (2 BISes) +""" + +import logging +import os + +from auracast.auracast_config import AuracastGlobalConfig, AuracastBigConfig, AuracastQosFast +from auracast.multicast import broadcast, run_async + + +if __name__ == "__main__": + logging.basicConfig( + level=os.environ.get("LOG_LEVEL", logging.INFO), + format="%(module)s.py:%(lineno)d %(levelname)s: %(message)s", + ) + + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) + + config = AuracastGlobalConfig() + config.qos_config = AuracastQosFast() + config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" + + # 48_2: 48kHz, 100 octets/frame + config.auracast_sampling_rate_hz = 48000 + config.octets_per_frame = 100 + + big = AuracastBigConfig() + big.random_address = "F1:F1:F2:F3:F4:F5" + big.audio_source = "file:./testdata/announcement_en_stereo.wav" + big.id = 12 + big.num_bis = 2 # stereo (multiple BISes) + + run_async( + broadcast( + config, + [big], + ) + ) diff --git a/src/qualification/BAP/test_bap_bsrc_str_bv31c.py b/src/qualification/BAP/test_bap_bsrc_str_bv31c.py new file mode 100644 index 0000000..64b928b --- /dev/null +++ b/src/qualification/BAP/test_bap_bsrc_str_bv31c.py @@ -0,0 +1,41 @@ +""" +BAP/BSRC/STR/BV-31-C: BSRC, Multiple BISes, LC3 48_4 + +Configuration: 48kHz, 120 octets/frame, stereo (2 BISes) +""" + +import logging +import os + +from auracast.auracast_config import AuracastGlobalConfig, AuracastBigConfig, AuracastQosFast +from auracast.multicast import broadcast, run_async + + +if __name__ == "__main__": + logging.basicConfig( + level=os.environ.get("LOG_LEVEL", logging.INFO), + format="%(module)s.py:%(lineno)d %(levelname)s: %(message)s", + ) + + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) + + config = AuracastGlobalConfig() + config.qos_config = AuracastQosFast() + config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" + + # 48_4: 48kHz, 120 octets/frame + config.auracast_sampling_rate_hz = 48000 + config.octets_per_frame = 120 + + big = AuracastBigConfig() + big.random_address = "F1:F1:F2:F3:F4:F5" + big.audio_source = "file:./testdata/announcement_en_stereo.wav" + big.id = 12 + big.num_bis = 2 # stereo (multiple BISes) + + run_async( + broadcast( + config, + [big], + ) + ) diff --git a/src/qualification/BAP/test_bap_bsrc_str_bv33c.py b/src/qualification/BAP/test_bap_bsrc_str_bv33c.py new file mode 100644 index 0000000..e894981 --- /dev/null +++ b/src/qualification/BAP/test_bap_bsrc_str_bv33c.py @@ -0,0 +1,41 @@ +""" +BAP/BSRC/STR/BV-33-C: BSRC, Multiple BISes, LC3 48_6 + +Configuration: 48kHz, 155 octets/frame, stereo (2 BISes) +""" + +import logging +import os + +from auracast.auracast_config import AuracastGlobalConfig, AuracastBigConfig, AuracastQosFast +from auracast.multicast import broadcast, run_async + + +if __name__ == "__main__": + logging.basicConfig( + level=os.environ.get("LOG_LEVEL", logging.INFO), + format="%(module)s.py:%(lineno)d %(levelname)s: %(message)s", + ) + + os.chdir(os.path.join(os.path.dirname(__file__), "../../auracast")) + + config = AuracastGlobalConfig() + config.qos_config = AuracastQosFast() + config.transport = "serial:/dev/ttyAMA3,1000000,rtscts" + + # 48_6: 48kHz, 155 octets/frame + config.auracast_sampling_rate_hz = 48000 + config.octets_per_frame = 155 + + big = AuracastBigConfig() + big.random_address = "F1:F1:F2:F3:F4:F5" + big.audio_source = "file:./testdata/announcement_en_stereo.wav" + big.id = 12 + big.num_bis = 2 # stereo (multiple BISes) + + run_async( + broadcast( + config, + [big], + ) + )