diff --git a/tm/OBSW_TmService3.py b/tm/OBSW_TmService3.py index 87440a9f49d1a7a913e665447ad18c1fa8b466ee..6a9e61002b0c8176c83f19ea88c0bfe148deb71c 100644 --- a/tm/OBSW_TmService3.py +++ b/tm/OBSW_TmService3.py @@ -88,7 +88,10 @@ class Service3TM(PUSTelemetry): self.hkContent = [fixMode, svInFix, gnssWeek, timeOfWeek, latitude, longitude, msa, positionX, positionY, positionZ, vx, vy, vz] self.validityBuffer = self.byteArrayData[72:] - print("Validity Buffer Length: " + str(self.validityBuffer)) + # print(self.validityBuffer) + # print(str(format(self.validityBuffer[0], '#010b'))) + # print(str(format(self.validityBuffer[1], '#010b'))) + # print("Validity Buffer Length: " + str(len(self.validityBuffer))) def handleTestHkData(self): self.numberOfParameters = 6 @@ -101,4 +104,8 @@ class Service3TM(PUSTelemetry): floatVector2 = struct.unpack('>f', self.byteArrayData[16:20])[0] self.hkContent = [testBool, testUint8, testUint16, testUint32, floatVector1, floatVector2] self.validityBuffer = self.byteArrayData[20:] - print("Validity Buffer Length: " + str(self.validityBuffer)) + # print(self.validityBuffer) + # print(str(format(self.validityBuffer[0], '#010b'))) + # print("Validity Buffer Length: " + str(len(self.validityBuffer))) + + diff --git a/utility/OBSW_TmTcPrinter.py b/utility/OBSW_TmTcPrinter.py index 513f0d638969d7701391f4671ac0e04a5ebff610..489c20ef59f6898261ffb7c4e1ce4282d229982a 100644 --- a/utility/OBSW_TmTcPrinter.py +++ b/utility/OBSW_TmTcPrinter.py @@ -13,7 +13,6 @@ import os from config import OBSW_Config as g -# TODO: Print everything in a file class TmtcPrinter: def __init__(self, displayMode="long", doPrintToFile=False, printTc=True): self.printBuffer = "" @@ -71,6 +70,7 @@ class TmtcPrinter: self.printBuffer = "HK Data from SID " self.printBuffer = self.printBuffer + str(hex(packet.sid)) + " :" self.printHk(packet) + self.printValidityBuffer(packet) def handleHkDefinitionPrint(self, packet): if g.printHkData: @@ -87,7 +87,31 @@ class TmtcPrinter: self.printBuffer = str(packet.hkContent) print(self.printBuffer) self.addPrintBufferToFileBuffer() - + + def printValidityBuffer(self, packet): + self.printBuffer = "Valid: " + print(self.printBuffer) + self.addPrintBufferToFileBuffer() + self.handleValidityBufferPrint(packet.validityBuffer, packet.numberOfParameters) + + def handleValidityBufferPrint(self, validityBuffer, numberOfParameters): + self.printBuffer = "[" + parameterCount = 0 + for count in range(len(validityBuffer)): + for bit in range(1, 9): + if self.bitExtractor(validityBuffer[count], bit) == 1: + self.printBuffer = self.printBuffer + "Yes" + else: + self.printBuffer = self.printBuffer + "No" + parameterCount = parameterCount + 1 + if parameterCount == numberOfParameters: + self.printBuffer = self.printBuffer + "]" + break + else: + self.printBuffer = self.printBuffer + ", " + print(self.printBuffer) + self.addPrintBufferToFileBuffer() + def handleWiretappingPacket(self, packet): if packet.getService() == 2 and (packet.getSubservice() == 131 or packet.getSubservice() == 130): self.printBuffer = "Wiretapping Packet or Raw Reply from TM [" + \ @@ -102,36 +126,6 @@ class TmtcPrinter: + self.returnDataString(packet.data) print(self.printBuffer) - # This function handles the printing of Telecommands - def printTelecommand(self, pusPacket, pusPacketInfo=""): - if self.printTc: - if len(pusPacket) == 0: - print("TMTC Printer: Empty packet was sent, configuration error") - exit() - if pusPacketInfo == "": - print("TMTC Printer: No packet info supplied to print") - return - if self.displayMode == "short": - self.handleShortTcPrint(pusPacketInfo) - else: - self.handleLongTcPrint(pusPacketInfo) - - def handleShortTcPrint(self, pusPacketInfo): - self.printBuffer = "Sent TC[" + str(pusPacketInfo["service"]) + "," + str(pusPacketInfo["subservice"]) \ - + "] " + " with SSC " + str(pusPacketInfo["ssc"]) - print(self.printBuffer) - self.addPrintBufferToFileBuffer() - - def handleLongTcPrint(self, pusPacketInfo): - try: - self.printBuffer = "Telecommand TC[" + str(pusPacketInfo["service"]) + "," + str(pusPacketInfo["subservice"]) \ - + "] with SSC " + str(pusPacketInfo["ssc"]) + " sent with data " \ - + self.returnDataString(pusPacketInfo["data"]) - print(self.printBuffer) - self.addPrintBufferToFileBuffer() - except TypeError: - print("TMTC Printer: Type Error !") - def printData(self, byteArray): string = self.returnDataString(byteArray) print(string) @@ -168,3 +162,38 @@ class TmtcPrinter: print("Log file written to " + logName) file.close() + @staticmethod + def bitExtractor(byte, position): + shiftNumber = position + (6 - 2 * (position - 1)) + return (byte >> shiftNumber) & 1 + + # This function handles the printing of Telecommands + def printTelecommand(self, pusPacket, pusPacketInfo=""): + if self.printTc: + if len(pusPacket) == 0: + print("TMTC Printer: Empty packet was sent, configuration error") + exit() + if pusPacketInfo == "": + print("TMTC Printer: No packet info supplied to print") + return + if self.displayMode == "short": + self.handleShortTcPrint(pusPacketInfo) + else: + self.handleLongTcPrint(pusPacketInfo) + + def handleShortTcPrint(self, pusPacketInfo): + self.printBuffer = "Sent TC[" + str(pusPacketInfo["service"]) + "," + str(pusPacketInfo["subservice"]) \ + + "] " + " with SSC " + str(pusPacketInfo["ssc"]) + print(self.printBuffer) + self.addPrintBufferToFileBuffer() + + def handleLongTcPrint(self, pusPacketInfo): + try: + self.printBuffer = "Telecommand TC[" + str(pusPacketInfo["service"]) + "," + str( + pusPacketInfo["subservice"]) \ + + "] with SSC " + str(pusPacketInfo["ssc"]) + " sent with data " \ + + self.returnDataString(pusPacketInfo["data"]) + print(self.printBuffer) + self.addPrintBufferToFileBuffer() + except TypeError: + print("TMTC Printer: Type Error !")