Fix error handling for data construct on init.

This commit is contained in:
Nick Foster
2012-07-02 07:17:21 -07:00
parent 19436349dc
commit fe6aa0c6de
3 changed files with 15 additions and 8 deletions
+4 -1
View File
@@ -223,7 +223,10 @@ if __name__ == '__main__':
msg = queue.delete_head() #blocking read msg = queue.delete_head() #blocking read
for out in outputs: for out in outputs:
out(msg.to_string()) try:
out(msg.to_string())
except ADSBError:
pass
elif runner.done: elif runner.done:
raise KeyboardInterrupt raise KeyboardInterrupt
+10 -6
View File
@@ -51,12 +51,16 @@ class data_field:
#done once on init so you don't have to iterate down every time you grab a field #done once on init so you don't have to iterate down every time you grab a field
def parse(self): def parse(self):
fields = {} fields = {}
for field in self.types[self.get_type()]: mytype = self.get_type()
bits = self.types[self.get_type()][field] if mytype in self.types:
if len(bits) == 3: for field in self.types[mytype]:
obj = bits[2](self.get_bits(bits[0], bits[1])) bits = self.types[self.get_type()][field]
fields.update(obj.parse()) if len(bits) == 3:
fields.update({field: self.get_bits(bits[0], bits[1])}) obj = bits[2](self.get_bits(bits[0], bits[1]))
fields.update(obj.parse())
fields.update({field: self.get_bits(bits[0], bits[1])})
else:
raise NoHandlerError(mytype)
return fields return fields
def get_type(self): def get_type(self):
+1 -1
View File
@@ -32,7 +32,6 @@ class modes_output_print(modes_parse.modes_parse):
def parse(self, message): def parse(self, message):
[data, ecc, reference, timestamp] = message.split() [data, ecc, reference, timestamp] = message.split()
data = modes_parse.modes_reply(long(data, 16))
ecc = long(ecc, 16) ecc = long(ecc, 16)
reference = float(reference) reference = float(reference)
timestamp = float(timestamp) timestamp = float(timestamp)
@@ -45,6 +44,7 @@ class modes_output_print(modes_parse.modes_parse):
output = "(%.0f %.10f) " % (refdb, timestamp); output = "(%.0f %.10f) " % (refdb, timestamp);
try: try:
data = modes_parse.modes_reply(long(data, 16))
msgtype = data["df"] msgtype = data["df"]
if msgtype == 0: if msgtype == 0:
output += self.print0(data, ecc) output += self.print0(data, ecc)