Example #1
0
 public static ushort CalculateCrc(this MessageFieldModel field, ushort crc)
 {
     crc = X25Crc.Accumulate($"{field.TypeName} {field.Name} ", crc);
     if (field.IsArray)
     {
         crc = X25Crc.Accumulate(field.ArrayLength, crc);
     }
     return(crc);
 }
Example #2
0
        public static void ReorderFieldsAndClacCrc(this MavlinkMessageModel src)
        {
            src.Fields = src.Fields.OrderByDescending(_ => _.FieldTypeByteSize).ToList();

            var crc = X25Crc.Accumulate($"{src.Name} ", X25Crc.CrcSeed);

            crc          = src.Fields.Aggregate(crc, (acc, field) => field.CalculateCrc(acc));
            src.CrcExtra = (byte)((crc & 0xFF) ^ (crc >> 8));
        }