예제 #1
0
        private static void ParseMessage(XmlReader rdr, MavlinkMessageModel messageItem)
        {
            var depth          = rdr.Depth + 1;
            var extendedFields = false;

            do
            {
                rdr.Read();
                switch (rdr.Name)
                {
                case "description":
                    messageItem.Desc = ConvertDesc(rdr.ReadElementContentAsString());
                    break;

                case "field":
                    ParseMessageFields(rdr, messageItem, extendedFields);
                    break;

                case "extensions":
                    extendedFields = true;
                    break;
                }
            } while (rdr.Depth >= depth);

            messageItem.ReorderFieldsAndClacCrc();
            messageItem.CalculateLargestArray();
        }
예제 #2
0
        private static void ParseMessagesSection(XmlReader rdr, IList <MavlinkMessageModel> protocolEnums)
        {
            var depth = rdr.Depth + 1;

            do
            {
                rdr.Read();
                if (rdr.Name == "message")
                {
                    var messageItem = new MavlinkMessageModel
                    {
                        Id   = int.Parse(rdr.GetAttribute("id")),
                        Name = rdr.GetAttribute("name"),
                    };
                    protocolEnums.Add(messageItem);
                    ParseMessage(rdr, messageItem);
                }
            } while (rdr.Depth >= depth);
        }
예제 #3
0
        private static void ParseMessageFields(XmlReader rdr, MavlinkMessageModel msg, bool extendedFields)
        {
            bool   isArray;
            byte   arrayLength;
            string baseTypeName;
            var    type   = ParseFieldType(rdr.GetAttribute("type"), out baseTypeName, out isArray, out arrayLength);
            var    fields = extendedFields ?  msg.ExtendedFields : msg.Fields;

            fields.Add(new MessageFieldModel
            {
                IsExtended        = extendedFields,
                Type              = type,
                TypeName          = FieldTypeToString(type),
                FieldTypeByteSize = type.GetFieldTypeByteSize(),
                IsArray           = isArray,
                ArrayLength       = arrayLength,
                Name              = rdr.GetAttribute("name"),
                Units             = rdr.GetAttribute("units"),
                Enum              = rdr.GetAttribute("enum"),
                Desc              = ConvertDesc(rdr.ReadElementContentAsString()),
            });
        }