static void Main(string[] args) { string xmlInput = null; string outputFolder = null; if (args.Length == 0) { Console.WriteLine("USAGE: -xml:<pathToXML> -out:<pathToOutDir>"); return; } for (int i = 0; i < args.Length; i++) { string arg = args[i]; string colonArg = null; if (arg.StartsWith("/") || arg.StartsWith("-")) { var colonIndex = arg.IndexOf(':'); if (colonIndex >= 0) { arg = args[i].Substring(1, colonIndex - 1); colonArg = args[i].Substring(colonIndex + 1); } switch (arg) { case "xml": xmlInput = colonArg; break; case "out": outputFolder = colonArg; break; default: Console.WriteLine("USAGE: -xml:<pathToXML> -out:<pathToOutDir>"); return; } } } if (!File.Exists(xmlInput)) { Console.WriteLine("File not found: {0}", xmlInput); return; } if (!Directory.Exists(outputFolder)) { Console.WriteLine("Output directory not found: {0}", outputFolder); return; } string pTypeFileName = String.Format("\\P_{0}_MessageTypes.p", Path.GetFileNameWithoutExtension(xmlInput)); string pTypeFunctionsFileName = String.Format("\\P_{0}_MessageTypeFunctions.h", Path.GetFileNameWithoutExtension(xmlInput)); string pEnumsFileName = String.Format("\\P_{0}_Enums.p", Path.GetFileNameWithoutExtension(xmlInput)); //parse the XML var parser = new MavXMLParser(); MavLink mavlink = parser.Parse(xmlInput); //generate the P type for each message var generator = new PCodeGenerator(); generator.GeneratePTypes(mavlink, outputFolder + pTypeFileName); generator.GeneratePEnums(mavlink, outputFolder + pEnumsFileName, outputFolder); //generate the two functions for encoding and decoding P Message types generator.GeneratePTypeHelperFun(mavlink.messages, outputFolder + pTypeFunctionsFileName); }