refractoring and more tests
This commit is contained in:
@@ -2,6 +2,20 @@ import serial
|
||||
import time
|
||||
import logging as log
|
||||
|
||||
|
||||
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()
|
||||
|
||||
def write_to_serial_read_respone(port, cmd, timeout = 2):
|
||||
# Initialize serial connection
|
||||
ser = serial.Serial(timeout = timeout)
|
||||
@@ -40,7 +54,7 @@ def write_to_serial_read_respone(port, cmd, timeout = 2):
|
||||
|
||||
|
||||
|
||||
def gen_broadcast_config_cmd(serial_port, preset, broadcast_config: dict):
|
||||
def gen_broadcast_config_cmd(preset, broadcast_config: dict):
|
||||
"""
|
||||
Writes broadcaster configuration to the given serial port.
|
||||
|
||||
@@ -50,45 +64,55 @@ def gen_broadcast_config_cmd(serial_port, preset, broadcast_config: dict):
|
||||
broadcast_names (list): List of names for each broadcast group
|
||||
"""
|
||||
cmds = []
|
||||
with serial.Serial(serial_port, 115200) as ser:
|
||||
ser.write(f"nac stop".encode() + b'\r\n')
|
||||
ser.write(f"nac clear".encode() + b'\r\n')
|
||||
|
||||
time.sleep(.5)
|
||||
|
||||
for ch, d in enumerate(broadcast_config.items()):
|
||||
broadcast_name, file_name = d
|
||||
|
||||
left_channel_file = file_name
|
||||
for ch, file_name in broadcast_config.items():
|
||||
|
||||
cmds.append(f"nac preset {preset} {ch}")
|
||||
cmds.append(f"nac broadcast_name {broadcast_name} {ch}")
|
||||
cmds.append(f"nac file select_play_once {left_channel_file} {ch} 0 0")
|
||||
cmds.append(f"nac broadcast_name broadcast{ch} {ch}")
|
||||
cmds.append(f"nac file select_play_once {file_name} {ch} 0 0")
|
||||
cmds.append(f"nac num_bises 1 {ch} 0")
|
||||
#cmds.append(f"nac immediate 1 {ch} 0")
|
||||
|
||||
cmds.append(f"nac start")
|
||||
|
||||
return cmds
|
||||
|
||||
def broadcaster_config():
|
||||
serial_port = "/dev/ttyACM0"
|
||||
broadcast_config = {
|
||||
"broadcast1": "left24kHz_48kbps.lc3",
|
||||
"broadcast2": "right-channel_24kHz_left_48kbps_10ms.lc3"
|
||||
}
|
||||
# TODO: Advertising interval wird ungelmäßig bei mehr als 3 broadcasts 10ms -> 1s< bei 24kHz sampling rate
|
||||
BROADCAST_CONFIG = {
|
||||
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"
|
||||
}
|
||||
|
||||
def broadcaster_config():
|
||||
|
||||
import subprocess
|
||||
|
||||
PORT = "/dev/ttyACM0"
|
||||
|
||||
total_ret= ""
|
||||
|
||||
cmds = gen_broadcast_config_cmd(PRESET, BROADCAST_CONFIG)
|
||||
|
||||
subprocess.run(["nrfjprog", "--reset", "-s", "1050109484"], check=True)
|
||||
|
||||
time.sleep(2)
|
||||
ret = write_to_serial_read_respone(PORT, f"nac en_usb_mass", timeout=0.1)
|
||||
total_ret += "\n".join(ret)
|
||||
log.info("\n".join(ret))
|
||||
time.sleep(1)
|
||||
|
||||
#write_config_to_tty(serial_port, "24_2_1", broadcast_config)
|
||||
# Example usage:
|
||||
cmds = gen_broadcast_config_cmd(serial_port, "24_2_1", broadcast_config)
|
||||
|
||||
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)
|
||||
log.info("\n".join(ret))
|
||||
|
||||
ret = write_to_serial_read_respone(serial_port, "nac show", timeout=0.1)
|
||||
|
||||
ret_str = "\n".join(ret)
|
||||
log.info(ret_str)
|
||||
total_ret += "\n".join(ret)
|
||||
|
||||
time.sleep(1)
|
||||
|
||||
for i in BROADCAST_CONFIG.keys():
|
||||
ret = write_to_serial_read_respone(PORT, f"nac start_idx {i}", timeout=0.1)
|
||||
total_ret += "\n".join(ret)
|
||||
log.info("\n".join(ret))
|
||||
time.sleep(0.2)
|
||||
|
||||
return total_ret
|
||||
|
||||
return ret_str
|
||||
|
||||
Reference in New Issue
Block a user