public static UInt16 GetPacketCrc(MavLinkPacket p) { UInt16 crc = X25CrcSeed; crc = X25CrcAccumulate(p.PayLoadLength, crc); crc = X25CrcAccumulate(p.InCompatFlags, crc); crc = X25CrcAccumulate(p.CompatFlats, crc); crc = X25CrcAccumulate(p.PacketSequenceNumber, crc); crc = X25CrcAccumulate(p.SystemId, crc); crc = X25CrcAccumulate(p.ComponentId, crc); uint id = p.MessageId; crc = X25CrcAccumulate((byte)(id & 0xFF), crc); crc = X25CrcAccumulate((byte)(id >> 8 & 0xFF), crc); crc = X25CrcAccumulate((byte)(id >> 16 & 0xFF), crc); //crc = X25CrcAccumulate((byte)(id >> 24 & 0xFF), crc); for (int i = 0; i < p.Payload.Length; ++i) { crc = X25CrcAccumulate(p.Payload[i], crc); } crc = X25CrcAccumulate(UasSummary.GetCrcExtraForId(p.MessageId), crc); return(crc); }
public static UInt16 GetPacketCrc(MavLinkPacket p) { UInt16 crc = X25CrcSeed; crc = X25CrcAccumulate(p.PayLoadLength, crc); crc = X25CrcAccumulate(p.PacketSequenceNumber, crc); crc = X25CrcAccumulate(p.SystemId, crc); crc = X25CrcAccumulate(p.ComponentId, crc); crc = X25CrcAccumulate(p.MessageId, crc); for (int i = 0; i < p.Payload.Length; ++i) { crc = X25CrcAccumulate(p.Payload[i], crc); } crc = X25CrcAccumulate(UasSummary.GetCrcExtraForId(p.MessageId), crc); return(crc); }