Skip to content
Snippets Groups Projects
Commit 4c8eb518 authored by Robin Mueller's avatar Robin Mueller
Browse files

com if exception handling, hk3 valdidity buffer

validity buffer length is printed ti check whether it works
exception handling for setting up com if
parent c9a4e8e7
No related branches found
No related tags found
No related merge requests found
...@@ -124,7 +124,7 @@ def commandPreparation(): ...@@ -124,7 +124,7 @@ def commandPreparation():
# file = bytearray([1, 2, 3, 4, 5]) # file = bytearray([1, 2, 3, 4, 5])
# command = PUSTelecommand(service=23, subservice=1, SSC=21, data=file) # command = PUSTelecommand(service=23, subservice=1, SSC=21, data=file)
# command.packCommandTuple() # command.packCommandTuple()
# return command.packCommandTuple() return command.packCommandTuple()
def setUpSocket(): def setUpSocket():
...@@ -141,17 +141,21 @@ def setUpSocket(): ...@@ -141,17 +141,21 @@ def setUpSocket():
def setCommunicationInterface(tmtcPrinter): def setCommunicationInterface(tmtcPrinter):
if g.comIF == 0: try:
setUpSocket() if g.comIF == 0:
connectToBoard() setUpSocket()
communicationInterface = EthernetComIF(tmtcPrinter, g.tmTimeout, g.tcSendTimeoutFactor, connectToBoard()
g.sockSend, g.sockReceive, g.sendAddress) communicationInterface = EthernetComIF(tmtcPrinter, g.tmTimeout, g.tcSendTimeoutFactor,
else: g.sockSend, g.sockReceive, g.sendAddress)
comPort = g.comPort else:
baudRate = 115200 comPort = g.comPort
g.serialTimeout = 0.05 baudRate = 115200
communicationInterface = SerialComIF(tmtcPrinter, comPort, baudRate, g.serialTimeout) g.serialTimeout = 0.05
return communicationInterface communicationInterface = SerialComIF(tmtcPrinter, comPort, baudRate, g.serialTimeout)
return communicationInterface
except (IOError, OSError) as e:
print("Error setting up communication interface, Error: " + str(e))
return exit()
class GracefulKiller: class GracefulKiller:
......
...@@ -13,11 +13,14 @@ import struct ...@@ -13,11 +13,14 @@ import struct
class Service3TM(PUSTelemetry): class Service3TM(PUSTelemetry):
def __init__(self, byteArray): def __init__(self, byteArray):
super().__init__(byteArray) super().__init__(byteArray)
print("Length of data: " + str(len(self.byteArrayData)))
self.sid = struct.unpack('>I', self.byteArrayData[0:4])[0] self.sid = struct.unpack('>I', self.byteArrayData[0:4])[0]
self.hkHeader = [] self.hkHeader = []
self.hkContent = [] self.hkContent = []
self.hkDefinitionHeader = [] self.hkDefinitionHeader = []
self.hkDefinition = [] self.hkDefinition = []
self.numberOfParameters = 0
self.validityBuffer = []
self.printPacketInfo("Housekeeping Packet") self.printPacketInfo("Housekeeping Packet")
self.paramLength = 0 self.paramLength = 0
if self.getSubservice() == 10 or self.getSubservice() == 12: if self.getSubservice() == 10 or self.getSubservice() == 12:
...@@ -60,30 +63,42 @@ class Service3TM(PUSTelemetry): ...@@ -60,30 +63,42 @@ class Service3TM(PUSTelemetry):
self.paramLength = len(self.byteArrayData) - 4 self.paramLength = len(self.byteArrayData) - 4
# TODO: This can be automated by using the MIB parser pool names and pool datatypes # TODO: This can be automated by using the MIB parser pool names and pool datatypes
if self.sid == 0x1f00 or self.sid == 0x2f00: if self.sid == 0x1f00 or self.sid == 0x2f00:
self.hkHeader = ["Fix Mode", "SV in Fix", "GNSS Week", "Time of Week", "Latitude", "Longitude", self.handleGpsHkData()
"Mean Sea Altitude", "Position X", "Position Y", "Position Z",
"Velocity X", "Velocity Y", "Velocity Z"]
fixMode = self.byteArrayData[4]
svInFix = self.byteArrayData[5]
gnssWeek = struct.unpack('>H', self.byteArrayData[6:8])[0]
timeOfWeek = struct.unpack('>I', self.byteArrayData[8:12])[0]
latitude = struct.unpack('>I', self.byteArrayData[12:16])[0]
longitude = struct.unpack('>I', self.byteArrayData[16:20])[0]
msa = struct.unpack('>I', self.byteArrayData[20:24])[0]
positionX = struct.unpack('>d', self.byteArrayData[24:32])[0]
positionY = struct.unpack('>d', self.byteArrayData[32:40])[0]
positionZ = struct.unpack('>d', self.byteArrayData[40:48])[0]
vx = struct.unpack('>d', self.byteArrayData[48:56])[0]
vy = struct.unpack('>d', self.byteArrayData[56:64])[0]
vz = struct.unpack('>d', self.byteArrayData[64:72])[0]
self.hkContent = [fixMode, svInFix, gnssWeek, timeOfWeek, latitude, longitude, msa, positionX, positionY,
positionZ, vx, vy, vz]
elif self.sid == 0x4300 or self.sid == 0x4400: elif self.sid == 0x4300 or self.sid == 0x4400:
self.hkHeader = ["Bool", "UINT8", "UINT16", "UINT32", "FLOAT1", "FLOAT2"] self.handleTestHkData()
testBool = self.byteArrayData[4]
testUint8 = self.byteArrayData[5] def handleGpsHkData(self):
testUint16 = (self.byteArrayData[6] << 8) | self.byteArrayData[7] self.numberOfParameters = 9
testUint32 = struct.unpack('>I', self.byteArrayData[8:12])[0] self.hkHeader = ["Fix Mode", "SV in Fix", "GNSS Week", "Time of Week", "Latitude", "Longitude",
floatVector1 = struct.unpack('>f', self.byteArrayData[12:16])[0] "Mean Sea Altitude", "Position X", "Position Y", "Position Z",
floatVector2 = struct.unpack('>f', self.byteArrayData[16:20])[0] "Velocity X", "Velocity Y", "Velocity Z"]
self.hkContent = [testBool, testUint8, testUint16, testUint32, floatVector1, floatVector2] fixMode = self.byteArrayData[4]
svInFix = self.byteArrayData[5]
gnssWeek = struct.unpack('>H', self.byteArrayData[6:8])[0]
timeOfWeek = struct.unpack('>I', self.byteArrayData[8:12])[0]
latitude = struct.unpack('>I', self.byteArrayData[12:16])[0]
longitude = struct.unpack('>I', self.byteArrayData[16:20])[0]
msa = struct.unpack('>I', self.byteArrayData[20:24])[0]
positionX = struct.unpack('>d', self.byteArrayData[24:32])[0]
positionY = struct.unpack('>d', self.byteArrayData[32:40])[0]
positionZ = struct.unpack('>d', self.byteArrayData[40:48])[0]
vx = struct.unpack('>d', self.byteArrayData[48:56])[0]
vy = struct.unpack('>d', self.byteArrayData[56:64])[0]
vz = struct.unpack('>d', self.byteArrayData[64:72])[0]
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))
def handleTestHkData(self):
self.numberOfParameters = 6
self.hkHeader = ["Bool", "UINT8", "UINT16", "UINT32", "FLOAT1", "FLOAT2"]
testBool = self.byteArrayData[4]
testUint8 = self.byteArrayData[5]
testUint16 = (self.byteArrayData[6] << 8) | self.byteArrayData[7]
testUint32 = struct.unpack('>I', self.byteArrayData[8:12])[0]
floatVector1 = struct.unpack('>f', self.byteArrayData[12:16])[0]
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))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment