FreeDATA/freedata_server/command_norm.py

50 lines
1.7 KiB
Python

from freedata_server.command import TxCommand
from freedata_server import api_validations
import base64
import threading
from freedata_server.norm.norm_transmission_iss import NormTransmissionISS
class Norm(TxCommand):
def set_params_from_api(self, apiParams):
self.origin = apiParams["origin"]
if not api_validations.validate_freedata_callsign(self.origin):
self.origin = f"{self.origin}-0"
self.domain = apiParams["domain"]
if not api_validations.validate_freedata_callsign(self.domain):
self.domain = f"{self.domain}-0"
# strip data to maximum payload
self.data = base64.b64decode(apiParams["data"])
self.data = self.data[: 15 * 26]
if "priority" not in apiParams:
self.priority = 1
else:
self.priority = apiParams["priority"]
self.msgtype = apiParams["type"]
self.gridsquare = apiParams["gridsquare"]
def run(self):
try:
if not self.ctx.config_manager.config["EXP"]["enable_groupchat"]:
return False
self.emit_event()
self.logger.info(self.log_message())
# NormTransmissionISS(self.ctx).prepare_and_transmit_data(self.origin, self.domain, self.gridsquare, self.data, self.priority, self.msgtype)
tx_thread = threading.Thread(
target=NormTransmissionISS(self.ctx).prepare_and_transmit_data,
args=(self.origin, self.domain, self.gridsquare, self.data, self.priority, self.msgtype),
)
tx_thread.start()
except Exception as e:
self.log(f"Error starting NORM transmission: {e}", isWarning=True)
return False