mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-24 13:55:51 +08:00
[python] used updated IvyMessagesInterface
This commit is contained in:
@@ -66,7 +66,8 @@ class RadioWatchFrame(wx.Frame):
|
||||
sizer.Add(self.rc_statusText, 1, wx.EXPAND)
|
||||
self.SetSizer(sizer)
|
||||
sizer.Layout()
|
||||
self.interface = IvyMessagesInterface(self.message_recv)
|
||||
self.interface = IvyMessagesInterface("radiowatchframe")
|
||||
self.interface.subscribe(self.message_recv)
|
||||
self.update_timer = wx.CallLater(UPDATE_INTERVAL, self.gui_update)
|
||||
|
||||
def OnClose(self, event):
|
||||
|
||||
@@ -35,16 +35,13 @@ class Guidance(object):
|
||||
except Exception as e:
|
||||
print(e)
|
||||
print("auto2 setting not found, mode change not possible.")
|
||||
self._interface = IvyMessagesInterface(self.message_recv)
|
||||
|
||||
def message_recv(self, ac_id, msg):
|
||||
if self.verbose:
|
||||
print("Got msg %s" % msg.name)
|
||||
self._interface = IvyMessagesInterface("guided mode example")
|
||||
|
||||
def shutdown(self):
|
||||
if self._interface is not None:
|
||||
print("Shutting down ivy interface...")
|
||||
self._interface.shutdown()
|
||||
self._interface = None
|
||||
|
||||
def __del__(self):
|
||||
self.shutdown()
|
||||
|
||||
@@ -24,7 +24,8 @@ server = None
|
||||
class Ivy2RedisServer():
|
||||
def __init__(self, redishost, redisport, verbose=False):
|
||||
self.verbose = verbose
|
||||
self.interface = IvyMessagesInterface(self.message_recv)
|
||||
self.interface = IvyMessagesInterface("Ivy2Redis")
|
||||
self.interface.subscribe(self.message_recv)
|
||||
self.r = redis.StrictRedis(host=redishost, port=redisport, db=0)
|
||||
self.keep_running = True
|
||||
print("Connected to redis server %s on port %i" % (redishost, redisport))
|
||||
|
||||
@@ -172,7 +172,9 @@ class MessagesFrame(wx.Frame):
|
||||
self.timer = threading.Timer(0.1, self.update_leds)
|
||||
self.timer.start()
|
||||
self.msg_class = msg_class
|
||||
self.interface = IvyMessagesInterface(self.message_recv)
|
||||
self.interface = IvyMessagesInterface("Paparazzi Messages Viewer")
|
||||
self.interface.subscribe(self.message_recv)
|
||||
|
||||
|
||||
def OnClose(self, event):
|
||||
self.timer.cancel()
|
||||
|
||||
@@ -18,11 +18,7 @@ from pprzlink.message import PprzMessage
|
||||
class WaypointMover(object):
|
||||
def __init__(self, verbose=False):
|
||||
self.verbose = verbose
|
||||
self._interface = IvyMessagesInterface(self.message_recv)
|
||||
|
||||
def message_recv(self, ac_id, msg):
|
||||
if self.verbose:
|
||||
print("Got msg %s" % msg.name)
|
||||
self._interface = IvyMessagesInterface("WaypointMover")
|
||||
|
||||
def shutdown(self):
|
||||
print("Shutting down ivy interface...")
|
||||
|
||||
@@ -32,7 +32,7 @@ class Aircraft(object):
|
||||
|
||||
|
||||
class MessagePicker(wx.Frame):
|
||||
def __init__(self, parent, callback, initIvy=True):
|
||||
def __init__(self, parent, callback, ivy_interface=None):
|
||||
wx.Frame.__init__(self, parent, name="MessagePicker", title=u'Message Picker', size=wx.Size(320,640))
|
||||
|
||||
self.aircrafts = {}
|
||||
@@ -43,7 +43,11 @@ class MessagePicker(wx.Frame):
|
||||
self.tree.Bind(wx.EVT_LEFT_DCLICK, self.OnDoubleClick)
|
||||
self.tree.Bind(wx.EVT_CHAR, self.OnKeyChar)
|
||||
self.Bind(wx.EVT_CLOSE, self.OnClose)
|
||||
self.message_interface = IvyMessagesInterface(self.msg_recv, initIvy)
|
||||
if ivy_interface is None:
|
||||
self.message_interface = IvyMessagesInterface("MessagePicker")
|
||||
else:
|
||||
self.message_interface = ivy_interface
|
||||
self.message_interface.subscribe(self.msg_recv)
|
||||
|
||||
def OnClose(self, event):
|
||||
# if we have a parent (like the plotpanel) only hide instead of shutdown
|
||||
|
||||
@@ -19,7 +19,8 @@ sys.path.append(PPRZ_SRC + "/sw/ext/pprzlink/lib/v1.0/python")
|
||||
|
||||
import pprz_env
|
||||
from pprzlink import messages_xml_map
|
||||
|
||||
from ivy_msg_interface import IvyMessagesInterface
|
||||
from pprzlink.message import PprzMessage
|
||||
|
||||
class PlotData:
|
||||
def __init__(self, ivy_msg_id, title, width, color=None, scale=1.0):
|
||||
@@ -172,7 +173,6 @@ class PlotPanel(object):
|
||||
self.frame = frame # the frame owns any controls we might need to update
|
||||
|
||||
parent.SetDropTarget(TextDropTarget(self)) # calls self.OnDropText when drag and drop complete
|
||||
self.InitIvy()
|
||||
|
||||
self.width = 800
|
||||
self.height = 200
|
||||
@@ -191,6 +191,8 @@ class PlotPanel(object):
|
||||
|
||||
messages_xml_map.parse_messages()
|
||||
|
||||
self.ivy_interface = IvyMessagesInterface(_IVY_APPNAME)
|
||||
|
||||
# start the timer
|
||||
self.timer = wx.FutureCall(self.plot_interval, self.OnTimer)
|
||||
|
||||
@@ -229,29 +231,9 @@ class PlotPanel(object):
|
||||
pass
|
||||
|
||||
def ShowMessagePicker(self, parent):
|
||||
frame = messagepicker.MessagePicker(parent, self.BindCurve, False)
|
||||
frame = messagepicker.MessagePicker(parent, self.BindCurve, self.ivy_interface)
|
||||
frame.Show()
|
||||
|
||||
def InitIvy(self):
|
||||
# initialising the bus
|
||||
IvyInit(_IVY_APPNAME, # application name for Ivy
|
||||
"", # "[%s is ready]" % IVYAPPNAME, # ready message
|
||||
0, # main loop is local (ie. using IvyMainloop)
|
||||
lambda x, y: y, # handler called on connection/deconnection
|
||||
lambda x, y: y # handler called when a diemessage is received
|
||||
)
|
||||
|
||||
# starting the bus
|
||||
# Note: env variable IVYBUS will be used if no parameter or empty string
|
||||
# is given ; this is performed by IvyStart (C)
|
||||
try:
|
||||
logging.getLogger('Ivy').setLevel(logging.WARN)
|
||||
IvyStart(pprz_env.IVY_BUS)
|
||||
# binding to every message
|
||||
# IvyBindMsg(self.OnIvyMsg, "(.*)")
|
||||
except:
|
||||
IvyStop()
|
||||
|
||||
def OnDropText(self, data):
|
||||
[ac_id, category, message, field, scale] = data.encode('ASCII').split(':')
|
||||
self.BindCurve(int(ac_id), message, field, scale=float(scale))
|
||||
@@ -299,7 +281,7 @@ class PlotPanel(object):
|
||||
random.randint(0, 255))
|
||||
return
|
||||
|
||||
ivy_id = IvyBindMsg(self.OnIvyMsg, str(message_string))
|
||||
ivy_id = self.ivy_interface.bind_raw(self.OnIvyMsg, str(message_string))
|
||||
title = '%i:%s:%s' % (ac_id, message, field)
|
||||
self.plots[ac_id][message][field] = PlotData(ivy_id, title, self.plot_size, color, scale)
|
||||
self.frame.AddCurve(ivy_id, title, use_as_x)
|
||||
@@ -336,7 +318,7 @@ class PlotPanel(object):
|
||||
if (self.x_axis is not None) and (self.x_axis.id == ivy_id):
|
||||
self.x_axis = None
|
||||
|
||||
IvyUnBindMsg(ivy_id)
|
||||
self.ivy_interface.unbind(ivy_id)
|
||||
del self.plots[ac_id][msg][field]
|
||||
if len(self.plots[ac_id][msg]) == 0:
|
||||
del self.plots[ac_id][msg]
|
||||
|
||||
Reference in New Issue
Block a user