FreeDATA/modem/command.py

48 lines
1.2 KiB
Python

from data_frame_factory import DataFrameFactory
from modem.modem import RF
import queue
from codec2 import FREEDV_MODE
class TxCommand():
def __init__(self, config, logger, apiParams):
self.config = config
self.logger = logger
self.set_params_from_api(apiParams)
self.frame_factory = DataFrameFactory()
def set_params_from_api(self, apiParams):
pass
def get_name(self):
return type(self).__name__
def emit_event(self, event_queue):
pass
def log_message(self):
return f"TX Command {self.get_name()}"
def build_frame(self):
pass
def get_c2_mode(self):
c2_mode = FREEDV_MODE.fsk_ldpc_0.value if self.config.enable_fsk else FREEDV_MODE.sig0.value
return c2_mode
def transmit(self, tx_frame_queue):
frame = self.build_frame()
tx_queue_item = {
'mode': self.get_c2_mode(),
'repeat': 1,
'repeat_delay': 0,
'frame': frame
}
tx_frame_queue.put(tx_queue_item)
def run(self, event_queue: queue.Queue, tx_frame_queue: queue.Queue):
self.emit_event(event_queue)
self.logger.info(self.log_message)
self.transmit(tx_frame_queue)
pass