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