From 452896f153c48a90e8b04b53ef8923ef542d8db7 Mon Sep 17 00:00:00 2001 From: Jonathan Currie Date: Thu, 27 Oct 2016 08:48:17 +1300 Subject: [PATCH 1/4] Added functionality to CSharpGenerator to create an enum with the message IDs. --- mavlinkobjectgenerator/CSharpGenerator.cs | 25 +++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/mavlinkobjectgenerator/CSharpGenerator.cs b/mavlinkobjectgenerator/CSharpGenerator.cs index c77a85c..60d49b6 100644 --- a/mavlinkobjectgenerator/CSharpGenerator.cs +++ b/mavlinkobjectgenerator/CSharpGenerator.cs @@ -55,6 +55,7 @@ public override void Write(ProtocolData data, TextWriter w) WriteHeader(); WriteEnums(); + WriteMsgIds(); WriteClasses(); WriteSummary(); WriteFooter(); @@ -94,6 +95,30 @@ private void WriteEnums() } + private void WriteMsgIds() + { + List escapedEnum = new List(); + + foreach (MessageData m in mProtocolData.Messages.Values) + { + if (m.Description != null) + { + escapedEnum.Add(string.Format("\r\n\r\n /// {0} \r\n {1} = {2}", + GetSanitizedComment(m.Description), + GetClassName(m), + m.Id)); + } + else + { + escapedEnum.Add(string.Format("\r\n\r\n {0} = {1}", + GetClassName(m), + m.Id)); + } + } + WL(" public enum MavMsgIds{{ {0} }};", GetCommaSeparatedValues(escapedEnum, "")); + WL(); + } + private void WriteClasses() { foreach (MessageData m in mProtocolData.Messages.Values) From fe5be0e9ddf88e966beb05f76bb637555d9ed10a Mon Sep 17 00:00:00 2001 From: Jonathan Currie Date: Thu, 27 Oct 2016 08:58:36 +1300 Subject: [PATCH 2/4] Added [Serializable] attribute to generated message classes to allow BinaryFormatter::Serialize functionality. --- mavlinkobjectgenerator/CSharpGenerator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mavlinkobjectgenerator/CSharpGenerator.cs b/mavlinkobjectgenerator/CSharpGenerator.cs index 60d49b6..29fd087 100644 --- a/mavlinkobjectgenerator/CSharpGenerator.cs +++ b/mavlinkobjectgenerator/CSharpGenerator.cs @@ -263,7 +263,7 @@ private void WriteClassHeader(MessageData m) WL(" /// {0}", GetSanitizedComment(m.Description)); WL(" /// "); } - + WL(" [Serializable]"); WL(" public class {0}: UasMessage", GetClassName(m)); WL(" {"); } From c3e6805db46505da394e3bef93bc3939e1f94058 Mon Sep 17 00:00:00 2001 From: Jonathan Currie Date: Thu, 27 Oct 2016 09:04:15 +1300 Subject: [PATCH 3/4] Added functionality to CSharpGenerator to timestamp output file. --- mavlinkobjectgenerator/CSharpGenerator.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/mavlinkobjectgenerator/CSharpGenerator.cs b/mavlinkobjectgenerator/CSharpGenerator.cs index 29fd087..90bba91 100644 --- a/mavlinkobjectgenerator/CSharpGenerator.cs +++ b/mavlinkobjectgenerator/CSharpGenerator.cs @@ -68,6 +68,7 @@ public override void Write(ProtocolData data, TextWriter w) private void WriteHeader() { WL("/* This file is automatically generated. Any changes made to it may be overwritten. */"); + WL("/* Generated by MAVLink.NET on {0} at {1} */", DateTime.Now.ToLongDateString(),DateTime.Now.ToLongTimeString()); WL(); WL("using System;"); WL("using System.IO;"); From 76ffb24bb05f0cb9fd5e2440702f5de3aef05807 Mon Sep 17 00:00:00 2001 From: Jonathan Currie Date: Thu, 27 Oct 2016 09:59:32 +1300 Subject: [PATCH 4/4] Added serializable attribute to UasMessage class and sub fields. --- mavlink.net/UasMessage.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mavlink.net/UasMessage.cs b/mavlink.net/UasMessage.cs index df1992d..6b388fd 100644 --- a/mavlink.net/UasMessage.cs +++ b/mavlink.net/UasMessage.cs @@ -28,6 +28,7 @@ THE SOFTWARE. namespace MavLinkNet { + [Serializable] public class UasMessage { public byte CrcExtra @@ -78,14 +79,14 @@ protected virtual void InitMetadata() protected UasMessageMetadata mMetadata; } - + [Serializable] public class UasMessageMetadata { public string Description; public List Fields = new List(); } - + [Serializable] public class UasFieldMetadata { public string Name; @@ -94,7 +95,7 @@ public class UasFieldMetadata public UasEnumMetadata EnumMetadata; } - + [Serializable] public class UasEnumMetadata { public string Name; @@ -102,7 +103,7 @@ public class UasEnumMetadata public List Entries = new List(); } - + [Serializable] public class UasEnumEntryMetadata { public int Value;