Added scan flag to create unique SSRC for scan use cases

pull/936/head
Andrew Koenig 2024-11-09 19:13:23 -06:00
rodzic 81143b1acb
commit e733dd4124
3 zmienionych plików z 30 dodań i 11 usunięć

Wyświetl plik

@ -16,17 +16,23 @@ from .utils import timeout_cmd
def ka9q_setup_channel(
sdr_hostname,
frequency,
sample_rate
sample_rate,
scan
):
if scan:
ssrc="04"
else:
ssrc="01"
# tune --samprate 48000 --frequency 404m09 --mode iq --ssrc 404090000 --radio sonde.local
_cmd = (
f"{timeout_cmd()} 5 " # Add a timeout, because connections to non-existing servers block for ages
f"tune "
f"--samprate {int(sample_rate)} "
f"--mode iq "
f"--low {int(sample_rate) / (-2.4)} --high {int(sample_rate) / 2.4} "
f"--low {int(int(sample_rate) / (-2.4))} --high {int(int(sample_rate) / 2.4)} "
f"--frequency {int(frequency)} "
f"--ssrc {round(frequency / 1000)}01 "
f"--ssrc {round(frequency / 1000)}{ssrc} "
f"--radio {sdr_hostname}"
)
@ -62,8 +68,13 @@ def ka9q_setup_channel(
def ka9q_close_channel(
sdr_hostname,
frequency
frequency,
scan
):
if scan:
ssrc="04"
else:
ssrc="01"
_cmd = (
f"{timeout_cmd()} 5 " # Add a timeout, because connections to non-existing servers block for ages
@ -71,7 +82,7 @@ def ka9q_close_channel(
f"--samprate 48000 "
f"--mode iq "
f"--frequency 0 "
f"--ssrc {round(frequency / 1000)}01 "
f"--ssrc {round(frequency / 1000)}{ssrc} "
f"--radio {sdr_hostname}"
)
@ -108,11 +119,16 @@ def ka9q_close_channel(
def ka9q_get_iq_cmd(
sdr_hostname,
frequency,
sample_rate
sample_rate,
scan
):
if scan:
ssrc="04"
else:
ssrc="01"
# We need to setup a channel before we can use it!
_setup_success = ka9q_setup_channel(sdr_hostname, frequency, sample_rate)
_setup_success = ka9q_setup_channel(sdr_hostname, frequency, sample_rate, scan)
if not _setup_success:
logging.critical(f"KA9Q ({sdr_hostname}) - Could not setup rx channel! Decoder will likely timeout.")
@ -124,7 +140,7 @@ def ka9q_get_iq_cmd(
# -2 option was removed sometime in early 2024.
_cmd = (
f"pcmcat "
f"-s {round(frequency / 1000)}01 "
f"-s {round(frequency / 1000)}{ssrc} "
f"{_pcm_host} |"
)

Wyświetl plik

@ -330,7 +330,8 @@ def detect_sonde(
bias = bias,
sdr_hostname = sdr_hostname,
sdr_port = sdr_port,
ss_iq_path = ss_iq_path
ss_iq_path = ss_iq_path,
scan = True
)
# rx_test_command = (

Wyświetl plik

@ -279,7 +279,8 @@ def get_sdr_iq_cmd(
bias = False,
sdr_hostname = "",
sdr_port = 5555,
ss_iq_path = "./ss_iq"
ss_iq_path = "./ss_iq",
scan = False
):
"""
Get a command-line argument to get IQ (signed 16-bit) from a SDR
@ -301,6 +302,7 @@ def get_sdr_iq_cmd(
Arguments for KA9Q SDR Server / SpyServer:
sdr_hostname (str): Hostname of KA9Q Server
sdr_port (int): Port number of KA9Q Server
scan (bool): Create unique SSRC for scan attempts
Arguments for SpyServer Client:
ss_iq_path (str): Path to spyserver IQ client utility.
@ -358,7 +360,7 @@ def get_sdr_iq_cmd(
return _cmd
if sdr_type == "KA9Q":
_cmd = ka9q_get_iq_cmd(sdr_hostname, frequency, sample_rate)
_cmd = ka9q_get_iq_cmd(sdr_hostname, frequency, sample_rate, scan)
if dc_block:
_cmd += _dc_remove