From 1b12e5151db6e29e1bbe86419fdaa0eadbb47a7b Mon Sep 17 00:00:00 2001 From: pstruebi Date: Wed, 18 Dec 2024 16:53:55 +0100 Subject: [PATCH] make 4 broadcasters with 16kHz work --- config_broadcaster.py | 44 +++++++++++++++++++++++++++++++------------ src/main.c | 40 +++++++++++++++++++++++++++++++-------- 2 files changed, 64 insertions(+), 20 deletions(-) diff --git a/config_broadcaster.py b/config_broadcaster.py index 8612b6e..11fd00c 100644 --- a/config_broadcaster.py +++ b/config_broadcaster.py @@ -53,33 +53,53 @@ def gen_broadcast_config_cmd(preset, broadcast_config: dict): for ch, file_name in broadcast_config.items(): cmds.append(f"nac preset {preset} {ch}") - cmds.append(f"nac broadcast_name broadcaster{ch} {ch}") + cmds.append(f"nac broadcast_name broadcast{ch} {ch}") cmds.append(f"nac file select {file_name} {ch} 0 0") cmds.append(f"nac num_bises 1 {ch} 0") - #cmds.append(f"nac immediate 1 {ch} 0") return cmds if __name__ == "__main__": import subprocess - serial_port = "/dev/ttyACM0" + PORT = "/dev/ttyACM0" + + SAMPLING_RATE_KHZ = 16 + FRAME_DUR_MS = 10 + PRESET = f'{SAMPLING_RATE_KHZ}_2_1' + + if SAMPLING_RATE_KHZ == 8: + BITRATE_KBPS = 16 + elif SAMPLING_RATE_KHZ == 16: + BITRATE_KBPS = 32 + elif SAMPLING_RATE_KHZ == 24: + BITRATE_KBPS = 48 + else: + raise NotImplemented() + + + # TODO: Advertising interval wird ungelmäßig bei mehr als 3 broadcasts 10ms -> 1s< bei 24kHz sampling rate broadcast_config = { - 0: "announcement_de.lc3", - 1: "announcement_en.lc3", - 2: "announcement_fr.lc3", - 3: "announcement_es.lc3" + 0: f"announcement_{SAMPLING_RATE_KHZ}_{FRAME_DUR_MS}_{BITRATE_KBPS}_de.lc3", + 1: f"announcement_{SAMPLING_RATE_KHZ}_{FRAME_DUR_MS}_{BITRATE_KBPS}_en.lc3", + 2: f"announcement_{SAMPLING_RATE_KHZ}_{FRAME_DUR_MS}_{BITRATE_KBPS}_fr.lc3", + 3: f"announcement_{SAMPLING_RATE_KHZ}_{FRAME_DUR_MS}_{BITRATE_KBPS}_es.lc3", + #4: f"announcement_{SAMPLING_RATE_KHZ}_{FRAME_DUR_MS}_{BITRATE_KBPS}_it.lc3" } - cmds = gen_broadcast_config_cmd("24_2_1", broadcast_config) + cmds = gen_broadcast_config_cmd(PRESET, broadcast_config) subprocess.run(["nrfjprog", "--reset", "-s", "1050109484"], check=True) - time.sleep(1) + + time.sleep(2) for cmd in cmds: - ret = write_to_serial_read_respone(serial_port, cmd, timeout=0.1) + ret = write_to_serial_read_respone(PORT, cmd, timeout=0.1) print("\n".join(ret)) time.sleep(1) - ret = write_to_serial_read_respone(serial_port, "nac start", timeout=0.1) - print("\n".join(ret)) + + for i in broadcast_config.keys(): + ret = write_to_serial_read_respone(PORT, f"nac start_idx {i}", timeout=0.1) + print("\n".join(ret)) + time.sleep(0.2) \ No newline at end of file diff --git a/src/main.c b/src/main.c index e5a563d..3a7a23d 100644 --- a/src/main.c +++ b/src/main.c @@ -735,14 +735,6 @@ int main(void) int ret; LOG_INF("Main started"); - //setup_disk(); - ret = usb_enable(NULL); - if (ret != 0) { - LOG_ERR("Failed to enable USB"); - return 0; - } - LOG_INF("The device is put in USB mass storage mode.\n"); - ret = nrfx_clock_divider_set(NRF_CLOCK_DOMAIN_HFCLK, NRF_CLOCK_HFCLK_DIV_1); ret -= NRFX_ERROR_BASE_NUM; @@ -963,6 +955,18 @@ static void nrf_auraconfig_print(const struct shell *shell, uint8_t group_index) } } +static int cmd_usb_mass_enable(const struct shell *shell, size_t argc, char **argv) +{ + int ret; + ret = usb_enable(NULL); + if (ret != 0) { + LOG_ERR("Failed to enable USB"); + return -1; + } + LOG_INF("The device is put in USB mass storage mode.\n"); + return 0; +} + static int cmd_list(const struct shell *shell, size_t argc, char **argv) { ARG_UNUSED(argc); @@ -1192,6 +1196,23 @@ static int cmd_start(const struct shell *shell, size_t argc, char **argv) return 0; } +static int cmd_start_idx(const struct shell *shell, size_t argc, char **argv) +{ + int ret; + uint8_t big_index; + + big_index = (uint8_t)atoi(argv[1]); + LOG_INF("Enable big %d", big_index); + ret = big_enable(shell, big_index); + if (ret) { + return ret; + } + + led_blink(LED_APP_RGB, LED_COLOR_GREEN); + + return 0; +} + static int enable_broadcast_source_only(const struct shell *shell, uint8_t big_index) { int ret; @@ -2952,9 +2973,12 @@ SHELL_STATIC_SUBCMD_SET_CREATE( configuration_cmd, SHELL_COND_CMD(CONFIG_SHELL, list, NULL, "List presets", cmd_list), SHELL_COND_CMD(CONFIG_SHELL, start, NULL, "Start broadcaster", cmd_start), SHELL_COND_CMD(CONFIG_SHELL, stop, NULL, "Stop broadcaster", cmd_stop), + SHELL_COND_CMD(CONFIG_SHELL, start_idx, NULL, "Start broadcaster with index", cmd_start_idx), SHELL_COND_CMD(CONFIG_SHELL, source_disable, NULL, "Disable broadcast source", cmd_broadcast_source_disable), SHELL_COND_CMD(CONFIG_SHELL, source_enable, NULL, "Enable broadcast source", cmd_broadcast_source_enable), SHELL_COND_CMD(CONFIG_SHELL, stream_close, NULL, "Close lc3 stream", cmd_stream_close), + SHELL_COND_CMD(CONFIG_SHELL, en_usb_mass, NULL, "Enable usb mass storage device", cmd_usb_mass_enable), + SHELL_COND_CMD(CONFIG_SHELL, show, NULL, "Show current configuration", cmd_show), SHELL_COND_CMD(CONFIG_SHELL, packing, NULL, "Set type of packing", cmd_packing),