mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-10 23:35:45 +08:00
64 lines
1.4 KiB
Python
64 lines
1.4 KiB
Python
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 __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 = 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()
|