diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test.xml b/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test.xml index dcfcd0df7b7366efee538de12dabb91310c435e8..f986218222250ff00a9211a838a94ae6fbcb303f 100644 --- a/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test.xml +++ b/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test.xml @@ -12,8 +12,8 @@ <option name="ADD_CONTENT_ROOTS" value="true" /> <option name="ADD_SOURCE_ROOTS" value="true" /> <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" /> - <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" /> - <option name="PARAMETERS" value="-m 3 -s 17 -p" /> + <option name="SCRIPT_NAME" value="$PROJECT_DIR$/OBSW_TmTcClient.py" /> + <option name="PARAMETERS" value="-m 3 -s 17 -p -t 5" /> <option name="SHOW_COMMAND_LINE" value="false" /> <option name="EMULATE_TERMINAL" value="true" /> <option name="MODULE_MODE" value="false" /> diff --git a/OBSW_TmTcClient.py b/OBSW_TmTcClient.py index f15a84c5c31cec382957817c2492dd6a5b3fb351..8ed30bd3dabbd5f69934bc4f351ca60a528e4959 100644 --- a/OBSW_TmTcClient.py +++ b/OBSW_TmTcClient.py @@ -91,7 +91,6 @@ def main(): exit() else: communicationInterface = setCommunicationInterface(tmtcPrinter) - print(communicationInterface) atexit.register(keyboardInterruptHandler, comInterface=communicationInterface) tmListener = TmListener( comInterface=communicationInterface, tmTimeout=g.tmTimeout, tcTimeoutFactor=g.tcSendTimeoutFactor) @@ -126,10 +125,10 @@ def main(): """ Set up test suite and run it with runner. Verbosity specifies detail level """ - # noinspection PyTypeChecker g.tmListener = tmListener g.comInterface = communicationInterface g.tmtcPrinter = tmtcPrinter + # noinspection PyTypeChecker suite = unittest.TestLoader().loadTestsFromModule(OBSW_PusServiceTest) unittest.TextTestRunner(verbosity=2).run(suite) diff --git a/comIF/OBSW_Ethernet_ComIF.py b/comIF/OBSW_Ethernet_ComIF.py index 5e3aded6e24ad9a07577fbc0eed7733343d354ff..762de6830c387cca631a308855a6b390f698b203 100644 --- a/comIF/OBSW_Ethernet_ComIF.py +++ b/comIF/OBSW_Ethernet_ComIF.py @@ -44,18 +44,21 @@ class EthernetComIF(CommunicationInterface): def pollInterface(self, pollTimeout: float = 0) -> Tuple[bool, pusTmListT]: ready = self.dataAvailable(pollTimeout) - if ready is False: - return False, [] - elif ready: - packetList = self.receiveTelemetry() + if ready: + data = self.sockReceive.recvfrom(1024)[0] + packet = PUSTelemetryFactory(data) + self.tmtcPrinter.printTelemetry(packet) + packetList = [packet] return True, packetList + else: + return False, [] def receiveTelemetry(self, parameters: any = 0) -> list: - data = self.sockReceive.recvfrom(1024)[0] - packet = PUSTelemetryFactory(data) - self.tmtcPrinter.printTelemetry(packet) - packetList = [packet] - return packetList + (packetReceived, packetList) = self.pollInterface() + if packetReceived: + return packetList + else: + return [] def receiveTelemetryAndStoreInfo(self, tmInfoQueue: pusTmInfoQueueT) -> Union[None, pusTmInfoQueueT]: packets = self.receiveTelemetry() diff --git a/comIF/OBSW_Serial_ComIF.py b/comIF/OBSW_Serial_ComIF.py index ce14c6c9ca5fb2989f27aacfd428cf5327a4ff27..d7a5ed7b1c53ee0157efec1c905e0400c8d3555a 100644 --- a/comIF/OBSW_Serial_ComIF.py +++ b/comIF/OBSW_Serial_ComIF.py @@ -42,7 +42,7 @@ class SerialComIF(CommunicationInterface): self.tmtcPrinter.printTelecommand(tcPacket, tcPacketInfo) self.serial.write(tcPacket) - def receiveTelemetry(self, parameters=0) -> list: + def receiveTelemetry(self, parameters: any = 0) -> list: (packetReceived, packetList) = self.pollInterface() if packetReceived: return packetList diff --git a/config/OBSW_Config.py b/config/OBSW_Config.py index 4bb665d56fd1ab8d9a0c1b16dd0471b844e7ecd4..6fcab66932f60dd7d9c442a7d4fcd6ddf5a27502 100644 --- a/config/OBSW_Config.py +++ b/config/OBSW_Config.py @@ -26,6 +26,11 @@ class ModeList(enum.Enum): UnitTest = 5 +class ComIF(enum.Enum): + Ethernet = 0 + Serial = 1 + + """ Mission/Device specific information. """ @@ -97,7 +102,7 @@ def setGlobals(args): sendAddressToSet = (args.boardIP, portSend) if 0 <= args.mode <= 5: if args.mode == 0: - modeId = ModeList.GUIMode + modeId = ModeList.GUIMode elif args.mode == 1: modeId = ModeList.ListenerMode elif args.mode == 2: @@ -111,6 +116,15 @@ def setGlobals(args): else: print("Invalid mode argument, setting default mode (1)") modeId = ModeList[1] + + if args.comIF == ComIF.Ethernet: + comIF = ComIF.Ethernet + elif args.comIF == ComIF.Serial: + comIF = ComIF.Serial + else: + print("Invalid Communication Interface, setting serial (1)") + comIF = ComIF.Serial + service = str(args.service) if service.isdigit(): service = int(args.service) @@ -119,8 +133,6 @@ def setGlobals(args): recAddress = recAddressToSet sendAddress = sendAddressToSet comIF = args.comIF - # sockReceive = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - # sockSend = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) modeId = modeId comPort = args.COM printHkData = args.hk diff --git a/sendreceive/OBSW_CommandSenderReceiver.py b/sendreceive/OBSW_CommandSenderReceiver.py index 8695b8bccc9e1db8a436b54dc3945191f0c1c889..c56d115b2f635eeae7c753f1efb83547028c3075 100644 --- a/sendreceive/OBSW_CommandSenderReceiver.py +++ b/sendreceive/OBSW_CommandSenderReceiver.py @@ -117,7 +117,7 @@ class CommandSenderReceiver: self._comInterface.sendTelecommand(self.lastTc, self.lastTcInfo) self.timeoutCounter = self.timeoutCounter + 1 self.start_time = time.time() - time.sleep(1) + time.sleep(0.5) diff --git a/sendreceive/OBSW_SequentialSenderReceiver.py b/sendreceive/OBSW_SequentialSenderReceiver.py index 9d09c1eabd1456dfc08108e0e83651d2472c408e..a78428884ec9f73ec869b4bd056cb7a2a7ac658f 100644 --- a/sendreceive/OBSW_SequentialSenderReceiver.py +++ b/sendreceive/OBSW_SequentialSenderReceiver.py @@ -41,6 +41,7 @@ class SequentialCommandSenderReceiver(CommandSenderReceiver): self.start_time = 0 self.elapsed_time = 0 self.abortFlag = False + self.modeOpFinished = False def sendQueueTcAndReceiveTmSequentially(self): self._tmListener.modeId = g.ModeList.ServiceTestMode @@ -61,12 +62,12 @@ class SequentialCommandSenderReceiver(CommandSenderReceiver): if self.tcQueue.__len__() == 0: self.start_time = time.time() self.checkForTimeout() + if not self.modeOpFinished: + self._tmListener.modeOpFinished.set() print("Sequential SenderReceiver: All replies received!") - self._tmListener.modeOpFinished.set() if self.doPrintToFile: print("Sequential SenderReceiver: Exporting output to log file.") self._tmtcPrinter.printToFile() - print("Listening for packages ...") def performNextTcSend(self): if self._tmListener.replyEvent.is_set(): diff --git a/sendreceive/OBSW_TmListener.py b/sendreceive/OBSW_TmListener.py index 6d8321c5ea61951e1b4f0a445850c23d41126830..bd8c4f85a52cb002939414b9c4a9729afbf672de 100644 --- a/sendreceive/OBSW_TmListener.py +++ b/sendreceive/OBSW_TmListener.py @@ -68,6 +68,7 @@ class TmListener: while not self.modeOpFinished.is_set(): self.performModeOperation() self.modeOpFinished.clear() + print("Transitioning to listener mode") self.modeId = g.ModeList.ListenerMode def performModeOperation(self):