diff --git a/OBSW_UdpClient.py b/OBSW_UdpClient.py index e0e8592cbd018acea1aa48e4dac59d13b50b46e4..67fe5a60f62fe8b2a64aa1f635de4f1cc4859a89 100644 --- a/OBSW_UdpClient.py +++ b/OBSW_UdpClient.py @@ -96,9 +96,9 @@ def main(): communicationInterface = EthernetComIF(tmtcPrinter, g.tmTimeout, g.tcSendTimeoutFactor, g.sockSend, g.sockReceive, g.sendAddress) else: - comPort = 'COM8' - baudRate = 9600 - communicationInterface = SerialComIF(tmtcPrinter, comPort, baudRate, 0.2) + comPort = 'COM9' + baudRate = 115200 + communicationInterface = SerialComIF(tmtcPrinter, comPort, baudRate, 0.007) connectToBoard() if g.modeId == "ListenerMode": diff --git a/comIF/OBSW_ComInterface.py b/comIF/OBSW_ComInterface.py index a113c443a0ae01cbb327704752eaaa795a00bf1d..161e579b65ddeb322fc602a30d510545f8174d02 100644 --- a/comIF/OBSW_ComInterface.py +++ b/comIF/OBSW_ComInterface.py @@ -21,7 +21,7 @@ class CommunicationInterface: # Receive telemetry and process it @abstractmethod - def receiveTelemetry(self, parameters): + def receiveTelemetry(self, parameters=0): pass # Poll the interface for data diff --git a/comIF/OBSW_Ethernet_ComIF.py b/comIF/OBSW_Ethernet_ComIF.py index 15347022847e77ad95d5b75879aef9bff2a231c0..a65c2416378a9f38e06b79de7e47db4af1fb8609 100644 --- a/comIF/OBSW_Ethernet_ComIF.py +++ b/comIF/OBSW_Ethernet_ComIF.py @@ -43,9 +43,10 @@ class EthernetComIF(CommunicationInterface): def pollInterface(self, pollTimeout): ready = self.dataAvailable(pollTimeout) if ready is False: - pass + return False elif ready: self.receiveTelemetry() + return True def receiveTelemetry(self, parameters=0): data = self.recvSocket.recvfrom(1024)[0] diff --git a/comIF/OBSW_Serial_ComIF.py b/comIF/OBSW_Serial_ComIF.py index 949976eef23025746e2e82ff1e6f577dcd8b0746..67e5e61fc8ae1c26cef05df2012dc5ffdbea856e 100644 --- a/comIF/OBSW_Serial_ComIF.py +++ b/comIF/OBSW_Serial_ComIF.py @@ -12,8 +12,6 @@ class SerialComIF(CommunicationInterface): self.comPort = comPort self.baudRate = baudRate self.tmtcPrinter = tmtcPrinter - # timeout in seconds - serialTimeout = 0.2 self.serial = serial.Serial(port=comPort, baudrate=self.baudRate, timeout=serialTimeout) # self.serial.open() @@ -21,7 +19,7 @@ class SerialComIF(CommunicationInterface): self.tmtcPrinter.printTelecommand(tcPacket, tcPacketInfo) self.serial.write(tcPacket) - def receiveTelemetry(self, data): + def receiveTelemetry(self, parameters=0): packet = self.pollInterface() return packet @@ -29,34 +27,28 @@ class SerialComIF(CommunicationInterface): if self.dataAvailable(): data = self.pollPusPacket() packet = PUSTelemetryFactory(data) + self.tmtcPrinter.printTelemetry(packet) return packet def dataAvailable(self, timeout=0): - if timeout > 0: + if self.serial.in_waiting > 0: + return True + elif timeout > 0: start_time = time.time() elapsed_time = 0 while elapsed_time < timeout: if self.serial.in_waiting > 0: - print("data available!") - print(self.serial.in_waiting) return True elapsed_time = time.time() - start_time return False - elif self.serial.in_waiting > 0: - print("data available!") - print(self.serial.in_waiting) - return True def pollPusPacket(self): - data = bytearray() - pusHeader = self.serial.read(6) - dataFieldSize = data[5] << 8 | data[6] - 1 - pusData = self.serial.read(dataFieldSize) - data = data + pusHeader - data = data + pusData - if len(data) < 6 + dataFieldSize: + pusData = self.serial.read(1024) + dataFieldSize = (pusData[4] << 8 | pusData[5]) + 1 + readSize = len(pusData) + if readSize < 6 + dataFieldSize: print("Serial Com IF: Size missmatch when polling PUS packet") - return data + return pusData def performListenerMode(self): while True: diff --git a/sendreceive/OBSW_CommandSenderReceiver.py b/sendreceive/OBSW_CommandSenderReceiver.py index 41afdaaeeeeb918b1a06a2ee5e78e85d4edcf3f5..8352a3b771dc0dba598b8c566cffeff00d21d6b4 100644 --- a/sendreceive/OBSW_CommandSenderReceiver.py +++ b/sendreceive/OBSW_CommandSenderReceiver.py @@ -88,9 +88,7 @@ class CommandSenderReceiver: while tmReady: self.comInterface.receiveTelemetry() tmReady = self.comInterface.dataAvailable(self.tmTimeout / 1.5) - if tmReady is None: - return False - else: + if not tmReady: return True diff --git a/sendreceive/OBSW_SequentialSenderReceiver.py b/sendreceive/OBSW_SequentialSenderReceiver.py index 65025e5df3284df5b88d6ecf2b5ca007e68690b8..d160c41081cd6de61d6a61a4228f92f8b1aedd08 100644 --- a/sendreceive/OBSW_SequentialSenderReceiver.py +++ b/sendreceive/OBSW_SequentialSenderReceiver.py @@ -94,9 +94,8 @@ class SequentialCommandSenderReceiver(CommandSenderReceiver): def handleReplyListening(self): if self.firstReplyReceived: tmReady = self.comInterface.dataAvailable(2.0) - if tmReady is not None: - if tmReady[0]: - self.handleTelemetrySequence() + if tmReady: + self.handleTelemetrySequence() else: self.handleFirstReplyListening() diff --git a/sendreceive/OBSW_SingleCommandSenderReceiver.py b/sendreceive/OBSW_SingleCommandSenderReceiver.py index 3dc54d7ba2ec7f47aeef83fd6c066284dfa59616..4b025b7fcdaf2ae202eda8cb62ac111b07ba93f0 100644 --- a/sendreceive/OBSW_SingleCommandSenderReceiver.py +++ b/sendreceive/OBSW_SingleCommandSenderReceiver.py @@ -28,6 +28,7 @@ class SingleCommandSenderReceiver(CommandSenderReceiver): # wait until reply is received time.sleep(3) if self.replyReceived: + print("Listening for packages ...") self.comInterface.performListenerMode() # runs in separate thread. sends TC again if no TM is received after timeout