From 2774a1c2bc2b669a91d54da6eb1f838b4a9dd447 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" <robin.mueller.m@gmail.com> Date: Mon, 30 Dec 2019 01:12:54 +0100 Subject: [PATCH] hk service print init, hk service test plan added --- OBSW_Config.py | 2 ++ OBSW_UdpClient.py | 2 ++ tc/OBSW_TcPacker.py | 22 ++++++++++++++++++++++ tm/OBSW_TmPacket.py | 35 +++++++++++++++++++++++++++++++++-- utility/OBSW_TmTcPrinter.py | 14 ++++++++++++++ 5 files changed, 73 insertions(+), 2 deletions(-) diff --git a/OBSW_Config.py b/OBSW_Config.py index c9712dc..fa09986 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 3f89685..e0e8592 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 a6625d1..dc99d8d 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 b7dbb39..1c82cb0 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 0b97240..45ec59f 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 [" + \ -- GitLab