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); }
private void DeserializeMessage() { UasMessage result = UasSummary.CreateFromId(MessageId); if (result == null) { return; // Unknown type } using (MemoryStream ms = new MemoryStream(Payload)) { using (BinaryReader br = GetBinaryReader(ms)) { result.DeserializeBody(br); } } Message = result; IsValid = true; }
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); }
private static string GetCommandParamDescription(int command, string paramIndexString) { int paramIndex; if (!Int32.TryParse(paramIndexString, out paramIndex)) { return(""); } foreach (UasEnumEntryMetadata entry in UasSummary.GetEnumMetadata("MavCmd").Entries) { if (command != entry.Value) { continue; } return(entry.Params[paramIndex - 1]); } return(""); }
private void DeserializeMessage() { UasMessage result = UasSummary.CreateFromId(MessageId); if (result == null) { return; // Unknown type } using (MemoryStream ms = new MemoryStream(Payload)) //在组装包的时候进行解密(未完成) { using (BinaryReader br = GetBinaryReader(ms)) { try { result.DeserializeBody(br); } catch { }//mavlinkv2会精简为0的包PayLoad从零开始就不发了 } } Message = result; IsValid = true; }