introduced static.LISTEN state

This commit is contained in:
DJ2LS 2022-12-01 10:05:24 +01:00
parent b57fb299b4
commit 65cfd52d81
3 changed files with 48 additions and 21 deletions

View file

@ -580,12 +580,19 @@ class RF:
audiobuffer.pop(nin) audiobuffer.pop(nin)
nin = codec2.api.freedv_nin(freedv) nin = codec2.api.freedv_nin(freedv)
if nbytes == bytes_per_frame: if nbytes == bytes_per_frame:
self.log.debug( # process commands only if static.LISTEN = True
"[MDM] [demod_audio] Pushing received data to received_queue" if static.LISTEN:
) self.log.debug(
self.modem_received_queue.put([bytes_out, freedv, bytes_per_frame]) "[MDM] [demod_audio] Pushing received data to received_queue"
self.get_scatter(freedv) )
self.calculate_snr(freedv) self.modem_received_queue.put([bytes_out, freedv, bytes_per_frame])
self.get_scatter(freedv)
self.calculate_snr(freedv)
else:
self.log.warning(
"[MDM] [demod_audio] received frame but ignored processing",
listen=static.LISTEN
)
except Exception as e: except Exception as e:
self.log.warning("[MDM] [demod_audio] Stream not active anymore", e=e) self.log.warning("[MDM] [demod_audio] Stream not active anymore", e=e)
return nin return nin
@ -680,7 +687,6 @@ class RF:
self.sig1_datac0_bytes_per_frame, self.sig1_datac0_bytes_per_frame,
) )
def audio_dat0_datac1(self) -> None: def audio_dat0_datac1(self) -> None:
"""Receive data encoded with datac1""" """Receive data encoded with datac1"""
self.dat0_datac1_nin = self.demodulate_audio( self.dat0_datac1_nin = self.demodulate_audio(

View file

@ -204,6 +204,38 @@ def process_tnc_commands(data):
# convert data to json object # convert data to json object
received_json = json.loads(data) received_json = json.loads(data)
log.debug("[SCK] CMD", command=received_json) log.debug("[SCK] CMD", command=received_json)
# ENABLE TNC LISTENING STATE -----------------------------------------------------
if received_json["type"] == "set" and received_json["command"] == "listen":
try:
static.LISTEN = received_json["state"] in ['true', 'True', True, "ON", "on"]
command_response("listen", True)
# if tnc is connected, force disconnect when static.LISTEN == False
if not static.LISTEN and static.ARQ_SESSION_STATE not in ["disconnecting", "disconnected", "failed"]:
DATA_QUEUE_TRANSMIT.put(["DISCONNECT"])
# set early disconnecting state so we can interrupt connection attempts
static.ARQ_SESSION_STATE = "disconnecting"
command_response("disconnect", True)
except Exception as err:
command_response("listen", False)
log.warning(
"[SCK] CQ command execution error", e=err, command=received_json
)
# SET ENABLE RESPOND TO CQ -----------------------------------------------------
if received_json["type"] == "set" and received_json["command"] == "respond_to_cq":
try:
static.RESPOND_TO_CQ = received_json["state"] in ['true', 'True', True]
command_response("respond_to_cq", True)
except Exception as err:
command_response("respond_to_cq", False)
log.warning(
"[SCK] CQ command execution error", e=err, command=received_json
)
# SET TX AUDIO LEVEL ----------------------------------------------------- # SET TX AUDIO LEVEL -----------------------------------------------------
if ( if (
received_json["type"] == "set" received_json["type"] == "set"
@ -221,18 +253,6 @@ def process_tnc_commands(data):
command=received_json, command=received_json,
) )
# SET ENABLE RESPOND TO CQ -----------------------------------------------------
if received_json["type"] == "set" and received_json["command"] == "respond_to_cq":
try:
static.RESPOND_TO_CQ = received_json["state"] in ['true', 'True', True]
command_response("respond_to_cq", True)
except Exception as err:
command_response("respond_to_cq", False)
log.warning(
"[SCK] CQ command execution error", e=err, command=received_json
)
# TRANSMIT TEST FRAME ---------------------------------------------------- # TRANSMIT TEST FRAME ----------------------------------------------------
if ( if (
received_json["type"] == "set" received_json["type"] == "set"
@ -372,7 +392,7 @@ def process_tnc_commands(data):
# DISCONNECT ---------------------------------------------------------- # DISCONNECT ----------------------------------------------------------
if received_json["type"] == "arq" and received_json["command"] == "disconnect": if received_json["type"] == "arq" and received_json["command"] == "disconnect":
try: try:
if not static.ARQ_SESSION_STATE in ["disconnecting", "disconnected", "failed"]: if static.ARQ_SESSION_STATE not in ["disconnecting", "disconnected", "failed"]:
DATA_QUEUE_TRANSMIT.put(["DISCONNECT"]) DATA_QUEUE_TRANSMIT.put(["DISCONNECT"])
# set early disconnecting state so we can interrupt connection attempts # set early disconnecting state so we can interrupt connection attempts
@ -558,6 +578,7 @@ def send_tnc_state():
"dxcallsign": str(static.DXCALLSIGN, encoding), "dxcallsign": str(static.DXCALLSIGN, encoding),
"dxgrid": str(static.DXGRID, encoding), "dxgrid": str(static.DXGRID, encoding),
"hamlib_status": static.HAMLIB_STATUS, "hamlib_status": static.HAMLIB_STATUS,
"listen": str(static.LISTEN),
} }
# add heard stations to heard stations object # add heard stations to heard stations object

View file

@ -43,7 +43,7 @@ SOCKET_TIMEOUT: int = 1 # seconds
# --------------------------------- # ---------------------------------
SERIAL_DEVICES: list = [] SERIAL_DEVICES: list = []
# --------------------------------- # ---------------------------------
LISTEN: bool = True
PTT_STATE: bool = False PTT_STATE: bool = False
TRANSMITTING: bool = False TRANSMITTING: bool = False