diff --git a/OBSW_Config.py b/OBSW_Config.py index c9712dc2326ea5d1e0614b6396802a8bb6faaaf2..fa099860a4dfc2e053cb8f7c2e748a0afcc7a656 100644 --- a/OBSW_Config.py +++ b/OBSW_Config.py @@ -17,6 +17,7 @@ modeId = 0 service = 17 displayMode = "long" + comIF = 0 # Time related tmTimeout = 10 @@ -30,6 +31,7 @@ sockReceive = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # Print Settings printToFile = False +printHkData = False printRawTmData = False diff --git a/OBSW_UdpClient.py b/OBSW_UdpClient.py index 3f8968552464ab0749c907d6e8be2e360a15fcd9..e0e8592cbd018acea1aa48e4dac59d13b50b46e4 100644 --- a/OBSW_UdpClient.py +++ b/OBSW_UdpClient.py @@ -162,6 +162,7 @@ def parseInputArguments(): argParser.add_argument('-o', '--tcTimeoutFactor', type=float, help='TC Timeout Factor. Default: 2.0', default=2.0) argParser.add_argument('-r', '--rawDataPrint', help='Supply -r to print all raw data directly', action='store_true') argParser.add_argument('-d', '--shortDisplayMode', help='Supply -d to print short output', action='store_true') + argParser.add_argument('-k', '--hk', help='Supply -k or --hk to print HK data', action='store_true') if len(sys.argv) == 1: print("No Input Arguments specified, setting default values.") argParser.print_help() @@ -199,6 +200,7 @@ def setGlobals(args): g.sockReceive = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) g.sockSend = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) g.modeId = modeId + g.printHkData = args.hk g.tmTimeout = args.tmTimeout g.printRawTmData = args.rawDataPrint g.displayMode = displayMode diff --git a/tc/OBSW_TcPacker.py b/tc/OBSW_TcPacker.py index a6625d1f258dc213198417e564b23fc81acb2531..dc99d8dcd036aeb1044c79c45f46c04674baab09 100644 --- a/tc/OBSW_TcPacker.py +++ b/tc/OBSW_TcPacker.py @@ -56,6 +56,28 @@ def serviceTestSelect(service, serviceQueue): def packService3TestInto(tcQueue): tcQueue.put(("print", "Testing Service 3")) + # adding custom defintion to hk using test pool variables + # adding custom definition to diagnostics using test pool variables + # enable custom hk definition + # enable custom diag definition + # disable custom hk definition + # disable custom diag definition + # report custom hk definition + # report custom diag definition + # generate one custom hk definition + # generate one custom diag definition + # modify custom hk definition interval + # modify custom diag definition interval + # report custom hk definition + # report custom diag definition + # append parameter to custom hk definiton + # append parameter to custom diag definition + # report custom hk definition + # report custom diag definition + # delete custom hk definition + # delete custom diag definition + # do some basic testing on predefined structs too + # e.g. add one variable, change interval, report them.... def packService5TestInto(tcQueue): diff --git a/tm/OBSW_TmPacket.py b/tm/OBSW_TmPacket.py index b7dbb395fb3fc7dba075b75e0f9b04b0bc96de94..1c82cb088c689667bd4b28b91a8321714be080d5 100644 --- a/tm/OBSW_TmPacket.py +++ b/tm/OBSW_TmPacket.py @@ -134,10 +134,41 @@ class Service3TM(PUSTelemetry): def __init__(self, byteArray): super().__init__(byteArray) self.sid = struct.unpack('>I', self.byteArrayData[0:4])[0] + self.hkHeader = [] + self.hkContent = [] if self.getSubservice() == 25: self.paramLength = len(self.byteArrayData) - 4 - if self.sid == 0x1f00: - pass + # TODO: This can be automated by using the MIB parser pool names and pool datatypes + if self.sid == 0x1f00 or 0x2f00: + self.hkHeader = ["Fix Mode", "SV in Fix", "GNSS Week", "Time of Week", "Latitude", "Longitude", + "Mean Sea Altitude", "Position X", "Position Y", "Position Z", + "Velocity X", "Velocity Y", "Velocity Z"] + self.fixMode = self.byteArrayData[4] + self.svInFix = self.byteArrayData[5] + self.gnssWeek = struct.unpack('>H', self.byteArrayData[5:7])[0] + self.timeOfWeek = struct.unpack('>I', self.byteArrayData[7:11])[0] + self.latitude = struct.unpack('>I', self.byteArrayData[11:15])[0] + self.longitude = struct.unpack('>I', self.byteArrayData[15:19])[0] + self.msa = struct.unpack('>I', self.byteArrayData[19:23])[0] + self.positionX = struct.unpack('>d', self.byteArrayData[23:31])[0] + self.positionY = struct.unpack('>d', self.byteArrayData[31:39])[0] + self.positionZ = struct.unpack('>d', self.byteArrayData[39:47])[0] + self.vx = struct.unpack('>d', self.byteArrayData[47:55])[0] + self.vy = struct.unpack('>d', self.byteArrayData[55:63])[0] + self.vz = struct.unpack('>d', self.byteArrayData[63:71])[0] + self.hkContent.append(self.fixMode) + self.hkContent.append(self.svInFix) + self.hkContent.append(self.gnssWeek) + self.hkContent.append(self.timeOfWeek) + self.hkContent.append(self.latitude) + self.hkContent.append(self.longitude) + self.hkContent.append(self.msa) + self.hkContent.append(self.positionX) + self.hkContent.append(self.positionY) + self.hkContent.append(self.positionZ) + self.hkContent.append(self.vx) + self.hkContent.append(self.vy) + self.hkContent.append(self.vz) def printTelemetryHeader(self, array): super().printTelemetryHeader(array) diff --git a/utility/OBSW_TmTcPrinter.py b/utility/OBSW_TmTcPrinter.py index 0b97240aba0994943a5a71ab36e00e2c15f811cf..45ec59feaa28f49c0ba6cd7c84763ff284e0a605 100644 --- a/utility/OBSW_TmTcPrinter.py +++ b/utility/OBSW_TmTcPrinter.py @@ -28,6 +28,8 @@ class TmtcPrinter: self.handleLongPrint(packet) self.handleWiretappingPacket(packet) self.handleDataReplyPacket(packet) + if packet.getService == 3 and packet.getSubservice == 25 or 26: + self.handleHkPrint(packet) if g.printRawTmData: self.printBuffer = "TM Data:" + "\n" + self.returnDataString(packet.data) print(self.printBuffer) @@ -60,6 +62,18 @@ class TmtcPrinter: print(self.printBuffer) self.addPrintBufferToFileBuffer() + def handleHkPrint(self, packet): + if g.printHkData: + self.printBuffer = "HK Data:" + print(self.printBuffer) + self.addPrintBufferToFileBuffer() + self.printBuffer = str(packet.hkHeader) + print(self.printBuffer) + self.addPrintBufferToFileBuffer() + self.printBuffer = str(packet.hkContent) + 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 [" + \