Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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("");
        }
Exemplo n.º 5
0
        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;
        }