diff options
Diffstat (limited to 'mavlink/share/pyshared/pymavlink/generator/gen_MatrixPilot.py')
-rw-r--r-- | mavlink/share/pyshared/pymavlink/generator/gen_MatrixPilot.py | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/mavlink/share/pyshared/pymavlink/generator/gen_MatrixPilot.py b/mavlink/share/pyshared/pymavlink/generator/gen_MatrixPilot.py new file mode 100644 index 000000000..165c1b343 --- /dev/null +++ b/mavlink/share/pyshared/pymavlink/generator/gen_MatrixPilot.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python +''' +Use mavgen.py matrixpilot.xml definitions to generate +C and Python MAVLink routines for sending and parsing the protocol +This python script is soley for MatrixPilot MAVLink impoementation + +Copyright Pete Hollands 2011 +Released under GNU GPL version 3 or later +''' + +import os, sys, glob, re +from shutil import copy +from mavgen import mavgen + +# allow import from the parent directory, where mavutil.py is +# Under Windows, this script must be run from a DOS command window +sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), '..')) + +class options: + """ a class to simulate the options of mavgen OptionsParser""" + def __init__(self, lang, output, wire_protocol): + self.language = lang + self.wire_protocol = wire_protocol + self.output = output + +def remove_include_files(target_directory): + search_pattern = target_directory+'/*.h' + print "search pattern is", search_pattern + files_to_remove = glob.glob(search_pattern) + for afile in files_to_remove : + try: + print "removing", afile + os.remove(afile) + except: + print "error while trying to remove", afile + +def copy_include_files(source_directory,target_directory): + search_pattern = source_directory+'/*.h' + files_to_copy = glob.glob(search_pattern) + for afile in files_to_copy: + basename = os.path.basename(afile) + print "Copying ...", basename + copy(afile, target_directory) + +protocol = "1.0" + +xml_directory = './message_definitions/v'+protocol +print "xml_directory is", xml_directory +xml_file_names = [] +xml_file_names.append(xml_directory+"/"+"matrixpilot.xml") + +for xml_file in xml_file_names: + print "xml file is ", xml_file + opts = options(lang = "C", output = "C/include_v"+protocol, \ + wire_protocol=protocol) + args = [] + args.append(xml_file) + mavgen(opts, args) + xml_file_base = os.path.basename(xml_file) + xml_file_base = re.sub("\.xml","", xml_file_base) + print "xml_file_base is", xml_file_base + opts = options(lang = "python", \ + output="python/mavlink_"+xml_file_base+"_v"+protocol+".py", \ + wire_protocol=protocol) + mavgen(opts,args) + +mavlink_directory_list = ["common","matrixpilot"] +for mavlink_directory in mavlink_directory_list : + # Look specifically for MatrixPilot directory structure + target_directory = "../../../../MAVLink/include/"+mavlink_directory + source_directory = "C/include_v"+protocol+"/"+mavlink_directory + if os.access(source_directory, os.R_OK): + if os.access(target_directory, os.W_OK): + print "Preparing to copy over files..." + print "About to remove all files in",target_directory + print "OK to continue ?[Yes / No]: ", + line = sys.stdin.readline() + if line == "Yes\n" or line == "yes\n" \ + or line == "Y\n" or line == "y\n": + print "passed" + remove_include_files(target_directory) + copy_include_files(source_directory,target_directory) + print "Finished copying over include files" + else : + print "Your answer is No. Exiting Program" + sys.exit() + else : + print "Cannot find " + target_directory + "in MatrixPilot" + sys.exit() + else: + print "Could not find files to copy at", source_directory + print "Exiting Program." + sys.exit() |