improve handling of bad telemetry packets
This commit is contained in:
parent
a2e7d508ca
commit
f86c36f8fd
|
|
@ -101,10 +101,16 @@ def parse_telemetry_config(body):
|
|||
|
||||
|
||||
def parse_telemetry_report(text):
|
||||
temp = text.split(",")
|
||||
parsed = {}
|
||||
rest = ""
|
||||
|
||||
if len(temp) == 7:
|
||||
match = re.findall("(^#\d{3},(\d+(\.\d+)?,){5}[01]{8}$)", text)
|
||||
|
||||
if match:
|
||||
logger.debug("Attempting to parse telemetry-message packet")
|
||||
|
||||
temp = text.split(",")
|
||||
parsed.update({'format': 'telemetry-report'})
|
||||
|
||||
seq = int(temp[0].replace('#', ''))
|
||||
values = list(map(float, temp[1:6]))
|
||||
|
|
@ -116,5 +122,7 @@ def parse_telemetry_report(text):
|
|||
'bits': temp[6]
|
||||
}
|
||||
})
|
||||
else:
|
||||
rest = text
|
||||
|
||||
return '', parsed
|
||||
return rest, parsed
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@ Telemetry report
|
|||
'vals': [13.21, 0.39, 5.1, 14.94, 36.12],
|
||||
'bits': '11111100'
|
||||
},
|
||||
'format': 'beacon',
|
||||
'format': 'telemetry-report',
|
||||
'text': 'T#165,13.21,0.39,5.10,14.94,36.12,11111100'
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,15 +8,24 @@ class ParseTelemetryReport(unittest.TestCase):
|
|||
self.maxDiff = None
|
||||
|
||||
def test_valid_telemetry_report(self):
|
||||
packet = "#111,13.64,0.37,5.10,16.96,33.38,11110000"
|
||||
expected = {'telemetry':
|
||||
{'bits': '11110000',
|
||||
'seq': 111,
|
||||
'vals': [13.64, 0.37, 5.1, 16.96, 33.38]}}
|
||||
packet = "#111,13.64,0.37,5,16.96,33.38,11110000"
|
||||
expected = {'format': 'telemetry-report',
|
||||
'telemetry':
|
||||
{'bits': '11110000',
|
||||
'seq': 111,
|
||||
'vals': [13.64, 0.37, 5, 16.96, 33.38]}}
|
||||
|
||||
_, result = parse_telemetry_report(packet)
|
||||
self.assertEqual(expected, result)
|
||||
|
||||
def test_invalid_telemetry_report(self):
|
||||
packet = "#111a,Nan,0.37,5.10,16.96,33.38,11110000"
|
||||
expected = {}
|
||||
|
||||
rest, result = parse_telemetry_report(packet)
|
||||
self.assertEqual(expected, result)
|
||||
self.assertEqual(rest,packet)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
|
|
|||
Loading…
Reference in New Issue