Something went wrong on our end
Forked from an inaccessible project.
-
Robin.Mueller authored
tm listener
Robin.Mueller authoredtm listener
OBSW_SingleCommandSenderReceiver.py 2.42 KiB
#!/usr/bin/python3.8
"""
@file
OBSW_Config.py
@date
01.11.2019
@brief
Used to send single tcs and listen for replies after that
"""
from sendreceive.OBSW_CommandSenderReceiver import CommandSenderReceiver
from comIF.OBSW_ComInterface import ComIF_T
from utility.OBSW_TmTcPrinter import TmTcPrinterT
from sendreceive.OBSW_TmListener import TmListenerT
import config.OBSW_Config as g
import logging
# Specific implementation of CommandSenderReceiver to send a single telecommand
class SingleCommandSenderReceiver(CommandSenderReceiver):
""" This object can be used by instantiating it and calling sendSingleTcAndReceiveTm() """
def __init__(self, comInterface: ComIF_T, tmtcPrinter: TmTcPrinterT, tmListener: TmListenerT,
pusPacketTuple: tuple, tmTimeout: int, tcTimeoutFactor: int, doPrintToFile: bool):
"""
:param comInterface: CommunicationInterface object, passed on to CommandSenderReceiver
:param tmListener: TmListener object which runs in the background and receives all TM
:param tmtcPrinter: TmTcPrinter object, passed on to CommandSenderReceiver
:param tmTimeout: TM Timeout. After each sent telecommand, listen for TMs for this time period
:param tcTimeoutFactor: If TM is not received, resend TC after tmTimeout * tcSendTimeoutFactor
:param doPrintToFile: Specify whether output is also printed to a file
"""
super().__init__(comInterface=comInterface, tmListener=tmListener, tmtcPrinter=tmtcPrinter, tmTimeout=tmTimeout,
tcSendTimeoutFactor=tcTimeoutFactor, doPrintToFile=doPrintToFile)
self.pusPacketTuple = pusPacketTuple
try:
(self.pusPacketInfo, self.pusPacket) = self.pusPacketTuple
except TypeError:
print("Invalid queue entry detected")
logging.exception("Error: ")
exit()
def sendSingleTcAndReceiveTm(self):
self.tmListener.modeId = g.modeList[2]
self.tmListener.modeChangeEvent.set()
self.comInterface.sendTelecommand(self.pusPacket, self.pusPacketInfo)
while not self.replyReceived:
# wait until reply is received
super().checkForFirstReply()
if self.replyReceived:
print("Single Command SenderReceiver: Reply received")
self.tmListener.modeOpFinished.set()
print("Listening for packages ...")