Files
paparazzi/sw/lib/python/messages_tool.py
T
Felix Ruess e708b14f4a [python] fix messages_tool
Don't put empty strings in values.
This was a problem if IVY messages have a trailing whitespace,
should be fixed where the bogus messages are generated as well...
2013-03-25 23:30:25 +01:00

66 lines
1.6 KiB
Python

from __future__ import print_function
import messages_xml_map
from ivy.std_api import *
import logging
import time
import os
class Message:
def __init__(self, class_name, name):
messages_xml_map.ParseMessages()
self.field_value = []
self.field_names = messages_xml_map.message_dictionary[class_name][name]
self.field_controls = []
self.index = None
self.last_seen = time.clock()
self.name = name
class Aircraft:
def __init__(self, id):
self.ac_id = id
self.messages = {}
self.messages_book = None
class IvyMessagesInterface():
def __init__(self, callback, initIvy = True):
self.callback = callback
self.ivy_id = 0
self.InitIvy(initIvy)
def Stop(self):
IvyUnBindMsg(self.ivy_id)
def __init__del__(self):
try:
IvyUnBindMsg(self.ivy_id)
except:
pass
def InitIvy(self, initIvy):
if initIvy:
IvyInit("Messages %i" % os.getpid(), "READY", 0, lambda x,y: y, lambda x,y: y)
logging.getLogger('Ivy').setLevel(logging.WARN)
IvyStart("")
self.ivy_id = IvyBindMsg(self.OnIvyMsg, "(.*)")
def OnIvyMsg(self, agent, *larg):
data = larg[0].split(' ')
try:
ac_id = int(data[0])
name = data[1]
values = filter(None, data[2:])
self.callback(ac_id, name, values)
except ValueError:
pass
except:
raise
def test():
message = Message("WHIRLY")
print(message)
print(message.field_names)
if __name__ == '__main__':
test()