aboutsummaryrefslogtreecommitdiff
path: root/Tools/px4params/xmlout.py
diff options
context:
space:
mode:
authorDon Gagne <don@thegagnes.com>2015-04-21 12:31:08 -0700
committerDon Gagne <don@thegagnes.com>2015-04-21 12:31:08 -0700
commit6bf0a2618bf5e2680f61c4d2a1258eed62103f0e (patch)
tree0d944e4fe5edf7fd9fd0c4c69f65bc058aef13be /Tools/px4params/xmlout.py
parent39f6e13c18414ae92e898640c62574d94171ae2d (diff)
downloadpx4-firmware-6bf0a2618bf5e2680f61c4d2a1258eed62103f0e.tar.gz
px4-firmware-6bf0a2618bf5e2680f61c4d2a1258eed62103f0e.tar.bz2
px4-firmware-6bf0a2618bf5e2680f61c4d2a1258eed62103f0e.zip
Add support for board attribute to parse output
This allows for writing parameter meta data which is specific to a board type
Diffstat (limited to 'Tools/px4params/xmlout.py')
-rw-r--r--Tools/px4params/xmlout.py38
1 files changed, 24 insertions, 14 deletions
diff --git a/Tools/px4params/xmlout.py b/Tools/px4params/xmlout.py
index 89f495dc0..07cced478 100644
--- a/Tools/px4params/xmlout.py
+++ b/Tools/px4params/xmlout.py
@@ -18,26 +18,36 @@ def indent(elem, level=0):
class XMLOutput():
- def __init__(self, groups):
+ def __init__(self, groups, board):
xml_parameters = ET.Element("parameters")
xml_version = ET.SubElement(xml_parameters, "version")
- xml_version.text = "2"
+ xml_version.text = "3"
+ last_param_name = ""
+ board_specific_param_set = False
for group in groups:
xml_group = ET.SubElement(xml_parameters, "group")
xml_group.attrib["name"] = group.GetName()
for param in group.GetParams():
- xml_param = ET.SubElement(xml_group, "parameter")
- for code in param.GetFieldCodes():
- value = param.GetFieldValue(code)
- if code == "code":
- xml_param.attrib["name"] = value
- elif code == "default":
- xml_param.attrib["default"] = value
- elif code == "type":
- xml_param.attrib["type"] = value
- else:
- xml_field = ET.SubElement(xml_param, code)
- xml_field.text = value
+ if (last_param_name == param.GetName() and not board_specific_param_set) or last_param_name != param.GetName():
+ xml_param = ET.SubElement(xml_group, "parameter")
+ xml_param.attrib["name"] = param.GetName()
+ xml_param.attrib["default"] = param.GetDefault()
+ xml_param.attrib["type"] = param.GetType()
+ last_param_name = param.GetName()
+ for code in param.GetFieldCodes():
+ value = param.GetFieldValue(code)
+ if code == "board":
+ if value == board:
+ board_specific_param_set = True
+ xml_field = ET.SubElement(xml_param, code)
+ xml_field.text = value
+ else:
+ xml_group.remove(xml_param)
+ else:
+ xml_field = ET.SubElement(xml_param, code)
+ xml_field.text = value
+ if last_param_name != param.GetName():
+ board_specific_param_set = False
indent(xml_parameters)
self.xml_document = ET.ElementTree(xml_parameters)