diff --git a/Tools/px4airframes/markdownout.py b/Tools/px4airframes/markdownout.py new file mode 100644 index 0000000000..71fa3a1f16 --- /dev/null +++ b/Tools/px4airframes/markdownout.py @@ -0,0 +1,71 @@ +from xml.sax.saxutils import escape +import codecs + +class MarkdownTablesOutput(): + def __init__(self, groups, board): + result = ("# Airframes Reference\n" + "> **Note** **This list is auto-generated from the source code** and contains the most recent airframes documentation.\n" + "\n") + + # TODO: describe meaning of green + blue color... + + for group in groups: + + result += '## %s\n\n' % group.GetName() + + # Display an image of the frame + image_name = group.GetImageName() + if image_name != 'AirframeUnknown': + result += '\n' % (image_name) + + result += '\n' + result += ' \n' + result += ' \n' + result += ' \n' + result += ' \n' + result += '\n' + + for param in group.GetParams(): + + # check if there is an exclude tag for this airframe + excluded = False + for code in param.GetArchCodes(): + if "CONFIG_ARCH_BOARD_{0}".format(code) == board and param.GetArchValue(code) == "exclude": + excluded = True + + if not excluded: + #print("generating: {0} {1}".format(param.GetName(), excluded)) + name = param.GetName() + airframe_id = param.GetId() + airframe_id_entry = '

SYS_AUTOSTART = %s

' % (airframe_id) + maintainer = param.GetMaintainer() + maintainer_entry = '' + if maintainer != '': + maintainer_entry = '

Maintainer: %s

' % (maintainer) + url = param.GetFieldValue('url') + name_entry = name + if url != '': + name_entry = '%s' % (url, name) + outputs = '' + + result += '\n \n \n \n\n' % (name_entry, maintainer_entry, airframe_id_entry, outputs) + + + #Close the table. + result += '
NameOutputs
%s%s%s%s
\n\n' + + self.output = result + + def Save(self, filename): + with codecs.open(filename, 'w', 'utf-8') as f: + f.write(self.output) diff --git a/Tools/px4airframes/srcparser.py b/Tools/px4airframes/srcparser.py index e9c8343662..e3041af6ba 100644 --- a/Tools/px4airframes/srcparser.py +++ b/Tools/px4airframes/srcparser.py @@ -102,6 +102,14 @@ class Parameter(object): "min": 5, "max": 4, "unit": 3, + "AUX1": -10, + "AUX2": -10, + "AUX3": -10, + "AUX4": -10, + "AUX5": -10, + "AUX6": -10, + "AUX7": -10, + "AUX8": -10, # all others == 0 (sorted alphabetically) } diff --git a/Tools/px_process_airframes.py b/Tools/px_process_airframes.py index 05f9c85f2a..6b8e6f25d4 100755 --- a/Tools/px_process_airframes.py +++ b/Tools/px_process_airframes.py @@ -46,7 +46,7 @@ from __future__ import print_function import sys import os import argparse -from px4airframes import srcscanner, srcparser, xmlout, rcout +from px4airframes import srcscanner, srcparser, xmlout, rcout, markdownout def main(): # Parse command line arguments @@ -61,6 +61,12 @@ def main(): metavar="FILENAME", help="Create XML file" " (default FILENAME: airframes.xml)") + parser.add_argument("-m", "--markdown", + nargs='?', + const="airframes.md", + metavar="FILENAME", + help="Create Markdown file" + " (default FILENAME: airframes.md)") parser.add_argument("-s", "--start-script", nargs='?', const="rc.autostart", @@ -75,7 +81,7 @@ def main(): args = parser.parse_args() # Check for valid command - if not (args.xml) and not (args.start_script): + if not (args.xml) and not (args.start_script) and not args.markdown: print("Error: You need to specify at least one output method!\n") parser.print_usage() sys.exit(1) @@ -99,6 +105,12 @@ def main(): out = xmlout.XMLOutput(param_groups, args.board) out.Save(args.xml) + # Output to markdown file + if args.markdown: + if args.verbose: print("Creating markdown file " + args.markdown) + out = markdownout.MarkdownTablesOutput(param_groups, args.board) + out.Save(args.markdown) + if args.start_script: if args.verbose: print("Creating start script " + args.start_script) out = rcout.RCOutput(param_groups, args.board)