[python] pep8: 4 spaces, print_function

This commit is contained in:
Felix Ruess
2013-03-25 22:18:04 +01:00
parent e43b35b9eb
commit 8162a35dce
5 changed files with 331 additions and 324 deletions
@@ -18,120 +18,120 @@ HEIGHT = 800
BORDER = 1
class MessagesFrame(wx.Frame):
def message_recv(self, ac_id, name, values):
if self.aircrafts.has_key(ac_id):
if self.aircrafts[ac_id].messages.has_key(name):
if time.time() - self.aircrafts[ac_id].messages[name].last_seen < 0.2:
return
def message_recv(self, ac_id, name, values):
if self.aircrafts.has_key(ac_id) and self.aircrafts[ac_id].messages.has_key(name):
if time.time() - self.aircrafts[ac_id].messages[name].last_seen < 0.2:
return
wx.CallAfter(self.gui_update, ac_id, name, values)
wx.CallAfter(self.gui_update, ac_id, name, values)
def find_page(self, book, name):
if book.GetPageCount() < 1:
return 0
start = 0
end = book.GetPageCount()
def find_page(self, book, name):
if book.GetPageCount() < 1:
return 0
start = 0
end = book.GetPageCount()
while (start < end):
if book.GetPageText(start) > name:
return start
start = start + 1
while (start < end):
if book.GetPageText(start) > name:
return start
start = start + 1
return start
def update_leds(self):
wx.CallAfter(self.update_leds_real)
def update_leds(self):
wx.CallAfter(self.update_leds_real)
def update_leds_real(self):
for ac_id in self.aircrafts:
aircraft = self.aircrafts[ac_id]
for msg_str in aircraft.messages:
message = aircraft.messages[msg_str]
if message.last_seen + 0.2 < time.time():
aircraft.messages_book.SetPageImage(message.index, 0)
def update_leds_real(self):
for ac_id in self.aircrafts:
aircraft = self.aircrafts[ac_id]
for msg_str in aircraft.messages:
message = aircraft.messages[msg_str]
if message.last_seen + 0.2 < time.time():
aircraft.messages_book.SetPageImage(message.index, 0)
self.timer = threading.Timer(0.1, self.update_leds)
self.timer.start()
self.timer = threading.Timer(0.1, self.update_leds)
self.timer.start()
def setup_image_list(self, notebook):
imageList = wx.ImageList(24,24)
def setup_image_list(self, notebook):
imageList = wx.ImageList(24,24)
image = wx.Image(PPRZ_HOME + "/data/pictures/gray_led24.png")
bitmap = wx.BitmapFromImage(image)
imageList.Add(bitmap)
image = wx.Image(PPRZ_HOME + "/data/pictures/gray_led24.png")
bitmap = wx.BitmapFromImage(image)
imageList.Add(bitmap)
image = wx.Image(PPRZ_HOME + "/data/pictures/green_led24.png")
bitmap = wx.BitmapFromImage(image)
imageList.Add(bitmap)
image = wx.Image(PPRZ_HOME + "/data/pictures/green_led24.png")
bitmap = wx.BitmapFromImage(image)
imageList.Add(bitmap)
notebook.AssignImageList(imageList)
notebook.AssignImageList(imageList)
def add_new_aircraft(self, ac_id):
self.aircrafts[ac_id] = messages_tool.Aircraft(ac_id)
ac_panel = wx.Panel(self.notebook, -1)
self.notebook.AddPage(ac_panel, str(ac_id))
messages_book = wx.Notebook(ac_panel, style=wx.NB_LEFT)
self.setup_image_list(messages_book)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(messages_book, 1, wx.EXPAND)
ac_panel.SetSizer(sizer)
sizer.Layout()
self.aircrafts[ac_id].messages_book = messages_book
def add_new_aircraft(self, ac_id):
self.aircrafts[ac_id] = messages_tool.Aircraft(ac_id)
ac_panel = wx.Panel(self.notebook, -1)
self.notebook.AddPage(ac_panel, str(ac_id))
messages_book = wx.Notebook(ac_panel, style=wx.NB_LEFT)
self.setup_image_list(messages_book)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(messages_book, 1, wx.EXPAND)
ac_panel.SetSizer(sizer)
sizer.Layout()
self.aircrafts[ac_id].messages_book = messages_book
def add_new_message(self, aircraft, name):
messages_book = aircraft.messages_book
aircraft.messages[name] = messages_tool.Message("telemetry", name)
field_panel = wx.Panel(messages_book)
grid_sizer = wx.FlexGridSizer(len(aircraft.messages[name].field_names), 2)
def add_new_message(self, aircraft, name):
messages_book = aircraft.messages_book
aircraft.messages[name] = messages_tool.Message("telemetry", name)
field_panel = wx.Panel(messages_book)
grid_sizer = wx.FlexGridSizer(len(aircraft.messages[name].field_names), 2)
index = self.find_page(messages_book, name)
messages_book.InsertPage(index, field_panel, name, imageId = 1)
aircraft.messages[name].index = index
index = self.find_page(messages_book, name)
messages_book.InsertPage(index, field_panel, name, imageId = 1)
aircraft.messages[name].index = index
# update indexes of pages which are to be moved
for message_name in aircraft.messages:
aircraft.messages[message_name].index = self.find_page(messages_book, message_name)
# update indexes of pages which are to be moved
for message_name in aircraft.messages:
aircraft.messages[message_name].index = self.find_page(messages_book, message_name)
for field_name in aircraft.messages[name].field_names:
name_text = wx.StaticText(field_panel, -1, field_name)
size = name_text.GetSize()
size.x = LABEL_WIDTH
name_text.SetMinSize(size)
grid_sizer.Add(name_text, 1, wx.ALL, BORDER)
value_control = wx.StaticText(field_panel, -1, "42", style=wx.ST_NO_AUTORESIZE)
size = value_control.GetSize()
size.x = LABEL_WIDTH
value_control.SetMinSize(size)
grid_sizer.Add(value_control, 1, wx.ALL, BORDER)
aircraft.messages[name].field_controls.append(value_control)
for field_name in aircraft.messages[name].field_names:
name_text = wx.StaticText(field_panel, -1, field_name)
size = name_text.GetSize()
size.x = LABEL_WIDTH
name_text.SetMinSize(size)
grid_sizer.Add(name_text, 1, wx.ALL, BORDER)
value_control = wx.StaticText(field_panel, -1, "42", style=wx.ST_NO_AUTORESIZE)
size = value_control.GetSize()
size.x = LABEL_WIDTH
value_control.SetMinSize(size)
grid_sizer.Add(value_control, 1, wx.ALL, BORDER)
aircraft.messages[name].field_controls.append(value_control)
field_panel.SetAutoLayout(True)
field_panel.SetSizer(grid_sizer)
field_panel.Layout()
field_panel.SetAutoLayout(True)
field_panel.SetSizer(grid_sizer)
field_panel.Layout()
def gui_update(self, ac_id, name, values):
if not self.aircrafts.has_key(ac_id):
self.add_new_aircraft(ac_id)
def gui_update(self, ac_id, name, values):
if not self.aircrafts.has_key(ac_id):
self.add_new_aircraft(ac_id)
aircraft = self.aircrafts[ac_id]
aircraft = self.aircrafts[ac_id]
if not aircraft.messages.has_key(name):
self.add_new_message(aircraft, name)
if not aircraft.messages.has_key(name):
self.add_new_message(aircraft, name)
aircraft.messages_book.SetPageImage(aircraft.messages[name].index, 1)
self.aircrafts[ac_id].messages[name].last_seen = time.time()
aircraft.messages_book.SetPageImage(aircraft.messages[name].index, 1)
self.aircrafts[ac_id].messages[name].last_seen = time.time()
for index in range(0, len(values)):
aircraft.messages[name].field_controls[index].SetLabel(values[index])
for index in range(0, len(values)):
aircraft.messages[name].field_controls[index].SetLabel(values[index])
def __init__(self):
wx.Frame.__init__(self, id=-1, parent=None, name=u'MessagesFrame', size=wx.Size(WIDTH, HEIGHT), style=wx.DEFAULT_FRAME_STYLE, title=u'Messages')
self.notebook = wx.Notebook(self)
self.aircrafts = {}
def __init__(self):
wx.Frame.__init__(self, id=-1, parent=None, name=u'MessagesFrame', size=wx.Size(WIDTH, HEIGHT), style=wx.DEFAULT_FRAME_STYLE, title=u'Messages')
self.notebook = wx.Notebook(self)
self.aircrafts = {}
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.notebook, 1, wx.EXPAND)
self.SetSizer(sizer)
sizer.Layout()
self.timer = threading.Timer(0.1, self.update_leds)
self.timer.start()
self.interface = messages_tool.IvyMessagesInterface(self.message_recv)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.notebook, 1, wx.EXPAND)
self.SetSizer(sizer)
sizer.Layout()
self.timer = threading.Timer(0.1, self.update_leds)
self.timer.start()
self.interface = messages_tool.IvyMessagesInterface(self.message_recv)
+47 -45
View File
@@ -1,3 +1,5 @@
from __future__ import print_function
import messages_xml_map
from ivy.std_api import *
import logging
@@ -5,59 +7,59 @@ 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
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
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 __init__(self, callback, initIvy = True):
self.callback = callback
self.ivy_id = 0
self.InitIvy(initIvy)
def Stop(self):
IvyUnBindMsg(self.ivy_id)
def Stop(self):
IvyUnBindMsg(self.ivy_id)
def __del__(self):
try:
IvyUnBindMsg(self.ivy_id)
except:
pass
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 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 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
message = Message("WHIRLY")
print(message)
print(message.field_names)
if __name__ == '__main__':
test()
test()
+51 -51
View File
@@ -1,5 +1,7 @@
#!/usr/bin/env python
from __future__ import print_function
import os
import sys
import getopt
@@ -12,67 +14,65 @@ message_dictionary_id_name = {}
message_dictionary_name_id = {}
def Usage(scmd):
lpathitem = scmd.split('/')
fmt = '''Usage: %s [-h | --help] [-f FILE | --file=FILE]
lpathitem = scmd.split('/')
fmt = '''Usage: %s [-h | --help] [-f FILE | --file=FILE]
where
\t-h | --help print this message
\t-f FILE | --file=FILE where FILE is path to messages.xml
\t-f FILE | --file=FILE where FILE is path to messages.xml
'''
print fmt % lpathitem[-1]
print(fmt % lpathitem[-1])
def GetOptions():
try:
optlist, left_args = getopt.getopt(sys.argv[1:],'hf:', ['help','file='])
except getopt.GetoptError:
# print help information and exit:
Usage(sys.argv[0])
sys.exit(2)
for o, a in optlist:
if o in ("-h", "--help"):
Usage(sys.argv[0])
sys.exit()
elif o in ("-f", "--file"):
messages_path = a
try:
optlist, left_args = getopt.getopt(sys.argv[1:],'hf:', ['help','file='])
except getopt.GetoptError:
# print help information and exit:
Usage(sys.argv[0])
sys.exit(2)
for o, a in optlist:
if o in ("-h", "--help"):
Usage(sys.argv[0])
sys.exit()
elif o in ("-f", "--file"):
messages_path = a
def ParseMessages():
from lxml import etree
tree = etree.parse( messages_path)
for the_class in tree.xpath("//class[@name]"):
class_name = the_class.attrib['name']
if not message_dictionary.has_key(class_name):
message_dictionary_id_name[class_name] = {}
message_dictionary_name_id[class_name] = {}
message_dictionary[class_name] = {}
message_dictionary_types[class_name] = {}
for the_message in the_class.xpath("message[@name]"):
message_name = the_message.attrib['name']
if the_message.attrib.has_key('id'):
message_id = the_message.attrib['id']
else:
message_id = the_message.attrib['ID']
if (message_id[0:2] == "0x"):
message_id = int(message_id, 16)
else:
message_id = int(message_id)
from lxml import etree
tree = etree.parse( messages_path)
for the_class in tree.xpath("//class[@name]"):
class_name = the_class.attrib['name']
if not message_dictionary.has_key(class_name):
message_dictionary_id_name[class_name] = {}
message_dictionary_name_id[class_name] = {}
message_dictionary[class_name] = {}
message_dictionary_types[class_name] = {}
for the_message in the_class.xpath("message[@name]"):
message_name = the_message.attrib['name']
if the_message.attrib.has_key('id'):
message_id = the_message.attrib['id']
else:
message_id = the_message.attrib['ID']
if (message_id[0:2] == "0x"):
message_id = int(message_id, 16)
else:
message_id = int(message_id)
message_dictionary_id_name[class_name][message_id] = message_name
message_dictionary_name_id[class_name][message_name] = message_id
message_dictionary_id_name[class_name][message_id] = message_name
message_dictionary_name_id[class_name][message_name] = message_id
# insert this message into our dictionary as a list with room for the fields
message_dictionary[class_name][message_name] = []
message_dictionary_types[class_name][message_id] = []
# insert this message into our dictionary as a list with room for the fields
message_dictionary[class_name][message_name] = []
message_dictionary_types[class_name][message_id] = []
for the_field in the_message.xpath('field[@name]'):
# for now, just save the field names -- in the future maybe expand this to save a struct?
message_dictionary[class_name][message_name].append( the_field.attrib['name'])
message_dictionary_types[class_name][message_id].append( the_field.attrib['type'])
for the_field in the_message.xpath('field[@name]'):
# for now, just save the field names -- in the future maybe expand this to save a struct?
message_dictionary[class_name][message_name].append( the_field.attrib['name'])
message_dictionary_types[class_name][message_id].append( the_field.attrib['type'])
def test():
GetOptions()
ParseMessages()
GetOptions()
ParseMessages()
if __name__ == '__main__':
test()
test()
+47 -45
View File
@@ -1,5 +1,7 @@
#!/usr/bin/env python
from __future__ import print_function
from ivy.std_api import *
import os
import logging
@@ -12,73 +14,73 @@ _SHOW_IVY_MSGS_ = False
class IvySettingsInterface(PaparazziACSettings):
def __init__(self, ac_ids):
PaparazziACSettings.__init__(self, ac_ids[0])
self.update_callback = None
self.InitIvy()
self.ac_ids = ac_ids
PaparazziACSettings.__init__(self, ac_ids[0])
self.update_callback = None
self.InitIvy()
self.ac_ids = ac_ids
def ProcessMessage(self, message_values, fromRemote):
# Extract aircraft id from message and ignore if not matching
msg_ac_id = int(message_values[0])
if (msg_ac_id != self.ac_ids[0]):
return
# Extract aircraft id from message and ignore if not matching
msg_ac_id = int(message_values[0])
if (msg_ac_id != self.ac_ids[0]):
return
# Extract setting value
setting_index = int(message_values[1])
setting_value = message_values[2]
# Extract setting value
setting_index = int(message_values[1])
setting_value = message_values[2]
# Store value from message
self.lookup[setting_index].value = setting_value
# Store value from message
self.lookup[setting_index].value = setting_value
# Callback (if present)
if self.update_callback != None:
self.update_callback(setting_index, setting_value, fromRemote)
# Callback (if present)
if self.update_callback != None:
self.update_callback(setting_index, setting_value, fromRemote)
if _SHOW_IVY_MSGS_:
print "index: %s value %s " % (setting_index, setting_value)
if _SHOW_IVY_MSGS_:
print("index: %s value %s " % (setting_index, setting_value))
# Called for DL_VALUE (from aircraft)
def OnValueMsg(self, agent, *larg):
# Extract field values
message_values = larg[0].split(' ')
message_values = message_values[0:1] + message_values[2:]
self.ProcessMessage(message_values, True)
# Extract field values
message_values = larg[0].split(' ')
message_values = message_values[0:1] + message_values[2:]
self.ProcessMessage(message_values, True)
# Called for DL_SETTING (from ground)
def OnSettingMsg(self, agent, *larg):
# Extract field values
message_values = larg[0].split(' ')
self.ProcessMessage(message_values, False)
# Extract field values
message_values = larg[0].split(' ')
self.ProcessMessage(message_values, False)
def RegisterCallback(self, callback_function):
self.update_callback = callback_function
def InitIvy(self):
# initialising the bus
IvyInit("settings_app", # application name for Ivy
"", # 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
)
self.update_callback = callback_function
# starting the bus
logging.getLogger('Ivy').setLevel(logging.WARN)
IvyStart("")
IvyBindMsg(self.OnValueMsg, "(^.* DL_VALUE .*)")
IvyBindMsg(self.OnSettingMsg, "dl DL_SETTING (.*)")
def InitIvy(self):
# initialising the bus
IvyInit("settings_app", # application name for Ivy
"", # 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
logging.getLogger('Ivy').setLevel(logging.WARN)
IvyStart("")
IvyBindMsg(self.OnValueMsg, "(^.* DL_VALUE .*)")
IvyBindMsg(self.OnSettingMsg, "dl DL_SETTING (.*)")
def SendSetting(self, setting_index):
for ac_id in self.ac_ids:
IvySendMsg("dl DL_SETTING %s %s %s" % (ac_id, setting_index, self.lookup[setting_index].value))
for ac_id in self.ac_ids:
IvySendMsg("dl DL_SETTING %s %s %s" % (ac_id, setting_index, self.lookup[setting_index].value))
def OnClose(self):
IvyStop()
def main():
ac_id = [ 11 ]
ivy_interface = IvySettingsInterface(ac_id)
ac_id = [ 11 ]
ivy_interface = IvySettingsInterface(ac_id)
if __name__ == '__main__':
main()
main()
+93 -90
View File
@@ -1,115 +1,118 @@
#!/usr/bin/env python
from __future__ import print_function
import os
import sys
from lxml import etree
# Class for all settings
class PaparazziACSettings:
"Paparazzi Settings Class"
ac_id = 0
groups = []
lookup = []
name_lookup = {}
# Takes a string file path for settings XML file and
# returns a settings AC object
"Paparazzi Settings Class"
ac_id = 0
groups = []
lookup = []
name_lookup = {}
# Takes a string file path for settings XML file and
# returns a settings AC object
def __init__(self, ac_id):
self.ac_id = ac_id
paparazzi_home = os.getenv("PAPARAZZI_HOME")
conf_xml_path = "%s/conf/conf.xml" % paparazzi_home
conf_tree = etree.parse(conf_xml_path)
# extract aircraft node from conf.xml file
ac_node = conf_tree.xpath('/conf/aircraft[@ac_id=%i]' % ac_id)
if (len(ac_node) != 1):
print "Aircraft ID %i not found." % ac_id
def __init__(self, ac_id):
self.ac_id = ac_id
paparazzi_home = os.getenv("PAPARAZZI_HOME")
conf_xml_path = "%s/conf/conf.xml" % paparazzi_home
conf_tree = etree.parse(conf_xml_path)
# extract aircraft node from conf.xml file
ac_node = conf_tree.xpath('/conf/aircraft[@ac_id=%i]' % ac_id)
if (len(ac_node) != 1):
print("Aircraft ID %i not found." % ac_id)
# get settings file path from aircraft xml node
settings_xml_path = "%s/conf/%s" % (paparazzi_home, ac_node[0].attrib['settings'])
# get settings file path from aircraft xml node
settings_xml_path = "%s/conf/%s" % (paparazzi_home, ac_node[0].attrib['settings'])
# save AC name for reference
self.name = ac_node[0].attrib['name']
# save AC name for reference
self.name = ac_node[0].attrib['name']
tree = etree.parse(settings_xml_path)
index = 0 # keep track of index/id of setting starting at 0
for the_tab in tree.xpath("//dl_settings"):
if the_tab.attrib.has_key('NAME'):
setting_group = PaparazziSettingsGroup(the_tab.attrib['NAME'])
elif the_tab.attrib.has_key('NAME'):
setting_group = PaparazziSettingsGroup(the_tab.attrib['name'])
else:
continue
for the_setting in the_tab.xpath('dl_setting'):
if the_setting.attrib.has_key('shortname'):
name = the_setting.attrib['shortname']
elif the_setting.attrib.has_key('VAR'):
name = the_setting.attrib['VAR']
else:
name = the_setting.attrib['var']
settings = PaparazziSetting(name)
settings.index = index
if the_setting.attrib.has_key('MIN'):
settings.min_value = float(the_setting.attrib['MIN'])
else:
settings.min_value = float(the_setting.attrib['min'])
if the_setting.attrib.has_key('MAX'):
settings.max_value = float(the_setting.attrib['MAX'])
else:
settings.max_value = float(the_setting.attrib['max'])
if the_setting.attrib.has_key('STEP'):
settings.step = float(the_setting.attrib['STEP'])
else:
settings.step = float(the_setting.attrib['step'])
if (the_setting.attrib.has_key('values')):
settings.values = the_setting.attrib['values'].split('|')
count = int((settings.max_value - settings.min_value + settings.step) / settings.step)
if (len(settings.values) != count):
print "Warning: wrong number of values (%i) for %s (expected %i)" % (len(settings.values), name, count)
setting_group.member_list.append(settings)
self.lookup.append(settings)
self.name_lookup[name] = settings
index = index + 1
self.groups.append(setting_group)
def GetACName(self):
return self.name
tree = etree.parse(settings_xml_path)
index = 0 # keep track of index/id of setting starting at 0
for the_tab in tree.xpath("//dl_settings"):
if the_tab.attrib.has_key('NAME'):
setting_group = PaparazziSettingsGroup(the_tab.attrib['NAME'])
elif the_tab.attrib.has_key('NAME'):
setting_group = PaparazziSettingsGroup(the_tab.attrib['name'])
else:
continue
for the_setting in the_tab.xpath('dl_setting'):
if the_setting.attrib.has_key('shortname'):
name = the_setting.attrib['shortname']
elif the_setting.attrib.has_key('VAR'):
name = the_setting.attrib['VAR']
else:
name = the_setting.attrib['var']
settings = PaparazziSetting(name)
settings.index = index
if the_setting.attrib.has_key('MIN'):
settings.min_value = float(the_setting.attrib['MIN'])
else:
settings.min_value = float(the_setting.attrib['min'])
if the_setting.attrib.has_key('MAX'):
settings.max_value = float(the_setting.attrib['MAX'])
else:
settings.max_value = float(the_setting.attrib['max'])
if the_setting.attrib.has_key('STEP'):
settings.step = float(the_setting.attrib['STEP'])
else:
settings.step = float(the_setting.attrib['step'])
if (the_setting.attrib.has_key('values')):
settings.values = the_setting.attrib['values'].split('|')
count = int((settings.max_value - settings.min_value + settings.step) / settings.step)
if (len(settings.values) != count):
print("Warning: wrong number of values (%i) for %s (expected %i)" % (len(settings.values), name, count))
setting_group.member_list.append(settings)
self.lookup.append(settings)
self.name_lookup[name] = settings
index = index + 1
self.groups.append(setting_group)
def GetACName(self):
return self.name
# Class for named group of settings
class PaparazziSettingsGroup:
"Paparazzi Setting Group Class"
name = 0
member_list = []
"Paparazzi Setting Group Class"
name = 0
member_list = []
def __init__(self, name):
self.name = name
self.member_list = []
def __init__(self, name):
self.name = name
self.member_list = []
# Class for a single paparazzi setting
class PaparazziSetting:
"Paparazzi Setting Class"
shortname = ""
min_value = 0
max_value = 1
step = 1
index = 0
value = None
values = None
def __init__(self, shortname):
self.shortname = shortname
"Paparazzi Setting Class"
shortname = ""
min_value = 0
max_value = 1
step = 1
index = 0
value = None
values = None
def __init__(self, shortname):
self.shortname = shortname
def test():
ac_id = 164
ac_settings = PaparazziACSettings(ac_id)
for setting_group in ac_settings.groups:
print setting_group.name
ac_id = 164
ac_settings = PaparazziACSettings(ac_id)
for setting_group in ac_settings.groups:
print(setting_group.name)
for setting in setting_group.member_list:
print " " + setting.shortname
print(" " + setting.shortname)
if __name__ == '__main__':
test()
test()