mirror of https://github.com/DJ2LS/FreeDATA.git
50 lines
1.7 KiB
Python
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
|