Ejemplo n.º 1
0
        public static void GenerateFiles(string messageDefinitionPath, string outputPath, string language, MessageDefinitions.Data.MavLink mavLink)
        {
            String messagesPath = Path.Combine(outputPath, ConstantHelper.MessagesFolderName);

            System.IO.Directory.CreateDirectory(messagesPath);

            string serializationOutputPath = Path.Combine(outputPath, ConstantHelper.MessagesSerializationFolderName);

            System.IO.Directory.CreateDirectory(serializationOutputPath);

            string messagesCommonPath = Path.Combine(messagesPath, ConstantHelper.CommonName);

            System.IO.Directory.CreateDirectory(messagesCommonPath);

            string serializerCommonOutputPath = Path.Combine(serializationOutputPath, ConstantHelper.CommonName);

            System.IO.Directory.CreateDirectory(serializerCommonOutputPath);

            TypeInfo messageBaseClassTypeInfo       = TypeInfoHelper.GetMessageClassTypeInfo();
            TypeInfo messageInterfaceTypeInfo       = TypeInfoHelper.GetMessageInterfaceTypeInfo();
            TypeInfo messageTypeEnumTypeInfo        = TypeInfoHelper.GetMavMessageTypeTypeInfo();
            TypeInfo serializerInterfaceTypeInfo    = TypeInfoHelper.GetSerializerInterfaceTypeInfo();
            TypeInfo serializerFactoryClassTypeInfo = TypeInfoHelper.GetSerializerFactoryTypeInfo();
            TypeInfo messageFactoryClassTypeInfo    = TypeInfoHelper.GetMessageFactoryTypeInfo();
            TypeInfo crcExtraProviderClassTypeInfo  = TypeInfoHelper.GetCrcExtraProviderTypeInfo();

            CodeGeneratorOptions options = new CodeGeneratorOptions()
            {
                BracingStyle = "C"
            };
            CodeDomProvider codeProvider = CreateCodeDomProvider(language);

            GenerateMessageTypeEnum(codeProvider, options, messageTypeEnumTypeInfo, messagesPath, mavLink.Messages);

            GenerateCrcExtraProvider(codeProvider, options, crcExtraProviderClassTypeInfo, mavLink.Messages, messagesPath, messageTypeEnumTypeInfo);

            IDictionary <MessageDefinitions.Data.Enum, TypeInfo> typeInfoByEnum = GetTypeInfoByEnum(mavLink.Enums, ConstantHelper.Namespaces.Root_Messages_Common);

            GenerateEnumFiles(codeProvider, options, messagesCommonPath, typeInfoByEnum);

            GenerateMessageClassFiles(codeProvider, options, messagesCommonPath, messageBaseClassTypeInfo, messageTypeEnumTypeInfo, mavLink.Messages, typeInfoByEnum);

            GenerateSerializerClassFiles(codeProvider, options, serializerCommonOutputPath, mavLink.Messages, serializerInterfaceTypeInfo, messageInterfaceTypeInfo);

            GenerateSerializerFactory(codeProvider, options, serializerFactoryClassTypeInfo, mavLink.Messages, serializationOutputPath, messageTypeEnumTypeInfo, serializerInterfaceTypeInfo);

            GenerateMessageFactory(codeProvider, options, messageFactoryClassTypeInfo, mavLink.Messages, messagesPath, messageTypeEnumTypeInfo, messageInterfaceTypeInfo);
        }
Ejemplo n.º 2
0
 public static void GenerateFiles(string messageDefinitionPath, string outputPath, string language)
 {
     MessageDefinitions.Data.MavLink result = MavLinkHelper.LoadMavLink(messageDefinitionPath);
     GenerateFiles(messageDefinitionPath, outputPath, language, result);
 }