diff --git a/MAVProxy/modules/mavproxy_asterix.py b/MAVProxy/modules/mavproxy_asterix.py index 37e27cf63e..7745daa8d2 100644 --- a/MAVProxy/modules/mavproxy_asterix.py +++ b/MAVProxy/modules/mavproxy_asterix.py @@ -4,7 +4,7 @@ This listens for SDPS on UDP and translates to ADSB_VEHICLE messages ''' -import pickle +import json from math import * from MAVProxy.modules.lib import mp_module @@ -200,12 +200,14 @@ def idle_task(self): return try: if pkt.startswith(b'PICKLED:'): - pkt = pkt[8:] - # pickled packet - try: - amsg = [pickle.loads(pkt)] - except pickle.UnpicklingError: - amsg = asterix.parse(pkt) + print("bad packet") + return + if pkt.startswith(b'JSON:'): + pkt = pkt[5:] + decoded = json.loads(pkt.decode('utf-8')) + if not isinstance(decoded, dict): + raise ValueError("JSON packet root is not a dictionary") + amsg = [decoded] else: amsg = asterix.parse(pkt) self.pkt_count += 1 @@ -358,4 +360,3 @@ def init(mpstate): #amsg = asterix.parse(pkt) #print(amsg) - diff --git a/MAVProxy/modules/mavproxy_genobstacles.py b/MAVProxy/modules/mavproxy_genobstacles.py index cf282d288c..c2d84c2876 100644 --- a/MAVProxy/modules/mavproxy_genobstacles.py +++ b/MAVProxy/modules/mavproxy_genobstacles.py @@ -2,7 +2,7 @@ generate dynamic obstacles for OBC 2018 ''' -import time, pickle +import time, json from math import * from MAVProxy.modules.lib import mp_module @@ -196,8 +196,8 @@ def update(self, deltat=1.0): def __str__(self): return str(self.pkt) - def pickled(self): - return b'PICKLED:' + pickle.dumps(self.pkt) + def json_packet(self): + return b'JSON:' + json.dumps(self.pkt).encode('utf-8') class Aircraft(DNFZ): '''an aircraft that flies in a circuit''' @@ -459,7 +459,7 @@ def mavlink_packet(self, m): for a in self.aircraft: if not gen_settings.stop: a.update(1.0) - self.pkt_queue.append(a.pickled()) + self.pkt_queue.append(a.json_packet()) while len(self.pkt_queue) > len(self.aircraft)*2: self.pkt_queue.pop(0)