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(); }
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); }
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()), }); }