mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
WIP ARQ - cleanup and fixes
This commit is contained in:
parent
30996c03b6
commit
ad6f913aab
7 changed files with 15 additions and 41 deletions
|
@ -90,7 +90,7 @@ class ARQSessionIRS(arq_session.ARQSession):
|
|||
self.dxcall,
|
||||
self.version,
|
||||
self.snr[0])
|
||||
self.launch_transmit_and_wait(ack_frame, self.TIMEOUT_CONNECT, mode=FREEDV_MODE.datac13)
|
||||
self.launch_transmit_and_wait(ack_frame, self.TIMEOUT_CONNECT, mode=FREEDV_MODE.signalling)
|
||||
self.set_state(self.STATE_OPEN_ACK_SENT)
|
||||
|
||||
def send_info_ack(self, info_frame):
|
||||
|
@ -104,7 +104,7 @@ class ARQSessionIRS(arq_session.ARQSession):
|
|||
info_ack = self.frame_factory.build_arq_session_info_ack(
|
||||
self.id, self.total_crc, self.snr[0],
|
||||
self.speed_level, self.frames_per_burst)
|
||||
self.launch_transmit_and_wait(info_ack, self.TIMEOUT_CONNECT, mode=FREEDV_MODE.datac13)
|
||||
self.launch_transmit_and_wait(info_ack, self.TIMEOUT_CONNECT, mode=FREEDV_MODE.signalling)
|
||||
self.set_state(self.STATE_INFO_ACK_SENT)
|
||||
|
||||
def send_burst_nack(self):
|
||||
|
|
|
@ -71,7 +71,7 @@ class ARQSessionISS(arq_session.ARQSession):
|
|||
|
||||
def start(self):
|
||||
session_open_frame = self.frame_factory.build_arq_session_open(self.dxcall, self.id)
|
||||
self.launch_twr(session_open_frame, self.TIMEOUT_CONNECT_ACK, self.RETRIES_CONNECT, mode=FREEDV_MODE.datac13)
|
||||
self.launch_twr(session_open_frame, self.TIMEOUT_CONNECT_ACK, self.RETRIES_CONNECT, mode=FREEDV_MODE.signalling)
|
||||
self.set_state(self.STATE_OPEN_SENT)
|
||||
|
||||
def set_speed_and_frames_per_burst(self, frame):
|
||||
|
@ -84,7 +84,7 @@ class ARQSessionISS(arq_session.ARQSession):
|
|||
info_frame = self.frame_factory.build_arq_session_info(self.id, len(self.data),
|
||||
helpers.get_crc_32(self.data),
|
||||
self.snr[0])
|
||||
self.launch_twr(info_frame, self.TIMEOUT_CONNECT_ACK, self.RETRIES_CONNECT, mode=FREEDV_MODE.datac13)
|
||||
self.launch_twr(info_frame, self.TIMEOUT_CONNECT_ACK, self.RETRIES_CONNECT, mode=FREEDV_MODE.signalling)
|
||||
self.set_state(self.STATE_INFO_SENT)
|
||||
|
||||
def send_data(self, irs_frame):
|
||||
|
|
|
@ -24,8 +24,7 @@ class FREEDV_MODE(Enum):
|
|||
"""
|
||||
Enumeration for codec2 modes and names
|
||||
"""
|
||||
sig0 = 19
|
||||
sig1 = 19
|
||||
signalling = 19
|
||||
datac0 = 14
|
||||
datac1 = 10
|
||||
datac3 = 12
|
||||
|
|
|
@ -30,11 +30,7 @@ class TxCommand():
|
|||
pass
|
||||
|
||||
def get_tx_mode(self):
|
||||
return (
|
||||
FREEDV_MODE.fsk_ldpc_0.value
|
||||
if self.config['MODEM']['enable_fsk']
|
||||
else FREEDV_MODE.sig0.value
|
||||
)
|
||||
return FREEDV_MODE.signalling
|
||||
|
||||
def make_modem_queue_item(self, mode, repeat, repeat_delay, frame):
|
||||
return {
|
||||
|
|
|
@ -14,7 +14,6 @@ import ctypes
|
|||
import queue
|
||||
import threading
|
||||
import time
|
||||
from collections import deque
|
||||
import codec2
|
||||
import numpy as np
|
||||
import sounddevice as sd
|
||||
|
@ -47,8 +46,6 @@ class RF:
|
|||
|
||||
self.tx_audio_level = config['AUDIO']['tx_audio_level']
|
||||
self.enable_audio_auto_tune = config['AUDIO']['enable_auto_tune']
|
||||
#Dynamically enable FFT data stream when a client connects to FFT web socket
|
||||
self.enable_fft_stream = False
|
||||
self.tx_delay = config['MODEM']['tx_delay']
|
||||
|
||||
self.radiocontrol = config['RADIO']['control']
|
||||
|
@ -272,11 +269,12 @@ class RF:
|
|||
self.demodulator.reset_data_sync()
|
||||
# get freedv instance by mode
|
||||
mode_transition = {
|
||||
codec2.FREEDV_MODE.datac0.value: self.freedv_datac0_tx,
|
||||
codec2.FREEDV_MODE.datac1.value: self.freedv_datac1_tx,
|
||||
codec2.FREEDV_MODE.datac3.value: self.freedv_datac3_tx,
|
||||
codec2.FREEDV_MODE.datac4.value: self.freedv_datac4_tx,
|
||||
codec2.FREEDV_MODE.datac13.value: self.freedv_datac13_tx,
|
||||
codec2.FREEDV_MODE.signalling: self.freedv_datac13_tx,
|
||||
codec2.FREEDV_MODE.datac0: self.freedv_datac0_tx,
|
||||
codec2.FREEDV_MODE.datac1: self.freedv_datac1_tx,
|
||||
codec2.FREEDV_MODE.datac3: self.freedv_datac3_tx,
|
||||
codec2.FREEDV_MODE.datac4: self.freedv_datac4_tx,
|
||||
codec2.FREEDV_MODE.datac13: self.freedv_datac13_tx,
|
||||
}
|
||||
if mode in mode_transition:
|
||||
freedv = mode_transition[mode]
|
||||
|
@ -711,18 +709,12 @@ class RF:
|
|||
# When our channel busy counter reaches 0, toggle state to False
|
||||
if self.channel_busy_delay == 0:
|
||||
self.states.set("channel_busy", False)
|
||||
if (self.enable_fft_stream):
|
||||
# erase queue if greater than 10
|
||||
if self.fft_queue.qsize() >= 10:
|
||||
self.fft_queue = queue.Queue()
|
||||
self.fft_queue.put(dfftlist[:315]) # 315 --> bandwidth 3200
|
||||
if self.fft_queue.qsize() >= 10:
|
||||
self.fft_queue = queue.Queue()
|
||||
self.fft_queue.put(dfftlist[:315]) # 315 --> bandwidth 3200
|
||||
except Exception as err:
|
||||
self.log.error(f"[MDM] calculate_fft: Exception: {err}")
|
||||
self.log.debug("[MDM] Setting fft=0")
|
||||
# else 0
|
||||
self.fft_queue.put([0])
|
||||
|
||||
def set_FFT_stream(self, enable: bool):
|
||||
# Set config boolean regarding wheter it should sent FFT data to queue
|
||||
self.enable_fft_stream = enable
|
||||
|
||||
|
|
|
@ -240,9 +240,6 @@ def sock_events(sock):
|
|||
|
||||
@sock.route('/fft')
|
||||
def sock_fft(sock):
|
||||
if len(wsm.fft_client_list) == 0:
|
||||
app.modem_service.put("fft:true")
|
||||
print("Streaming data to FFT socket since a client is connected")
|
||||
wsm.handle_connection(sock, wsm.fft_client_list, app.modem_fft)
|
||||
|
||||
@sock.route('/states')
|
||||
|
|
|
@ -17,7 +17,6 @@ class SM:
|
|||
self.config = self.app.config_manager.read()
|
||||
self.modem_events = app.modem_events
|
||||
self.modem_fft = app.modem_fft
|
||||
self.enable_fft_stream = False
|
||||
self.modem_service = app.modem_service
|
||||
self.states = app.state_manager
|
||||
|
||||
|
@ -49,14 +48,6 @@ class SM:
|
|||
threading.Event().wait(0.5)
|
||||
if self.start_modem():
|
||||
self.modem_events.put(json.dumps({"freedata": "modem-event", "event": "restart"}))
|
||||
elif cmd in ['fft:true']:
|
||||
# Tell modem it should put FFT data in the queue
|
||||
self.modem.set_FFT_stream(True)
|
||||
self.enable_fft_stream=True
|
||||
elif cmd in ['fft:false']:
|
||||
# Tell modem it should not put FFT data in the queue
|
||||
self.modem.set_FFT_stream(False)
|
||||
self.enable_fft_stream=False
|
||||
else:
|
||||
self.log.warning("[SVC] modem command processing failed", cmd=cmd, state=self.states.is_modem_running)
|
||||
|
||||
|
@ -88,7 +79,6 @@ class SM:
|
|||
self.frame_dispatcher.start()
|
||||
|
||||
self.states.set("is_modem_running", True)
|
||||
self.modem.set_FFT_stream(self.enable_fft_stream)
|
||||
self.modem.start_modem()
|
||||
|
||||
return True
|
||||
|
|
Loading…
Reference in a new issue