コード例 #1
0
        public byte GetMinByteSize() => 33; // of byte sized of fields (exclude extended)

        public void Deserialize(ref ReadOnlySpan <byte> buffer, int payloadSize)
        {
            var index     = 0;
            var endIndex  = payloadSize;
            var arraySize = 0;

            arraySize = /*ArrayLength*/ 4 - Math.Max(0, ((/*PayloadByteSize*/ 33 - payloadSize - /*ExtendedFieldsLength*/ 0) / 4 /*FieldTypeByteSize*/));
            ArU32     = new uint[arraySize];
            for (var i = 0; i < arraySize; i++)
            {
                ArU32[i] = BinSerialize.ReadUInt(ref buffer); index += 4;
            }
            arraySize = 4;
            for (var i = 0; i < arraySize; i++)
            {
                ArU16[i] = BinSerialize.ReadUShort(ref buffer); index += 2;
            }
            V1        = (byte)BinSerialize.ReadByte(ref buffer); index += 1;
            arraySize = 4;
            for (var i = 0; i < arraySize; i++)
            {
                ArI8[i] = (sbyte)BinSerialize.ReadByte(ref buffer); index += 1;
            }
            arraySize = 4;
            for (var i = 0; i < arraySize; i++)
            {
                ArU8[i] = (byte)BinSerialize.ReadByte(ref buffer); index += 1;
            }
        }
コード例 #2
0
 public static void WriteHeader(ref Span <byte> span, ushort methodInterfaceId, ushort methodMethodId,
                                byte requestId)
 {
     BinSerialize.WriteByte(ref span, requestId);
     BinSerialize.WritePackedUnsignedInteger(ref span, methodInterfaceId);
     BinSerialize.WritePackedUnsignedInteger(ref span, methodMethodId);
 }
コード例 #3
0
        public void Serialize(ref Span <byte> buffer)
        {
            BinSerialize.WritePackedUnsignedInteger(ref buffer, Index);
            BinSerialize.WritePackedUnsignedInteger(ref buffer, (uint)Type.TypeEnum);
            var typeSize  = Type.GetByteSize();
            var valueSize = int.MaxValue; // if value == null, we wouldn't serialize it

            if (Value != null)
            {
                valueSize = Value.GetByteSize();
            }
            if (Value == null || typeSize + valueSize + 1 > PayloadV2Helper.MaxMessageSize)
            {
                // send only type
                BinSerialize.WriteBool(ref buffer, false);
                Type.Serialize(ref buffer);
            }
            else
            {
                // send type + value
                BinSerialize.WriteBool(ref buffer, true);
                Type.Serialize(ref buffer);
                Value.Serialize(ref buffer);
            }
        }
コード例 #4
0
        public void Deserialize(ref ReadOnlySpan <byte> buffer)
        {
            var type = (Pv2ParamTypeEnum)BinSerialize.ReadPackedUnsignedInteger(ref buffer);

            Value = Pv2ParamInterface.CreateValue(type);
            Value.Deserialize(ref buffer);
        }
コード例 #5
0
 public void Deserialize(ref ReadOnlySpan <byte> buffer)
 {
     Comment    = BinSerialize.ReadString(ref buffer);
     Version    = BinSerialize.ReadByte(ref buffer);
     Hash       = BinSerialize.ReadUInt(ref buffer);
     ItemsCount = BinSerialize.ReadInt(ref buffer);
 }
コード例 #6
0
 public void Serialize(ref Span <byte> buffer)
 {
     SessionId.Serialize(ref buffer);
     BinSerialize.WritePackedUnsignedInteger(ref buffer, FieldId);
     BinSerialize.WritePackedUnsignedInteger(ref buffer, StartIndex);
     BinSerialize.WritePackedUnsignedInteger(ref buffer, Take);
 }
コード例 #7
0
 public void Serialize(ref Span <byte> buffer)
 {
     BinSerialize.WriteString(ref buffer, Comment);
     BinSerialize.WriteByte(ref buffer, Version);
     BinSerialize.WriteUInt(ref buffer, Hash);
     BinSerialize.WriteInt(ref buffer, ItemsCount);
 }
コード例 #8
0
ファイル: ualberta.cs プロジェクト: asvol/mavlink.net
        public int Serialize(ref Span <byte> buffer)
        {
            var index = 0;

            for (var i = 0; i < Aileron.Length; i++)
            {
                BinSerialize.WriteUShort(ref buffer, Aileron[i]); index += 2;
            }
            for (var i = 0; i < Elevator.Length; i++)
            {
                BinSerialize.WriteUShort(ref buffer, Elevator[i]); index += 2;
            }
            for (var i = 0; i < Rudder.Length; i++)
            {
                BinSerialize.WriteUShort(ref buffer, Rudder[i]); index += 2;
            }
            for (var i = 0; i < Gyro.Length; i++)
            {
                BinSerialize.WriteUShort(ref buffer, Gyro[i]); index += 2;
            }
            for (var i = 0; i < Pitch.Length; i++)
            {
                BinSerialize.WriteUShort(ref buffer, Pitch[i]); index += 2;
            }
            for (var i = 0; i < Throttle.Length; i++)
            {
                BinSerialize.WriteUShort(ref buffer, Throttle[i]); index += 2;
            }
            return(index); // /*PayloadByteSize*/42;
        }
コード例 #9
0
 public int GetByteSize()
 {
     return(SessionId.GetByteSize() +
            BinSerialize.GetSizeForPackedUnsignedInteger(FieldId) +
            BinSerialize.GetSizeForPackedUnsignedInteger(StartIndex) +
            BinSerialize.GetSizeForPackedUnsignedInteger(Take));
 }
コード例 #10
0
        public void Deserialize(ref ReadOnlySpan <byte> buffer)
        {
            Count = BinSerialize.ReadPackedUnsignedInteger(ref buffer);
            var arraySize = BinSerialize.ReadPackedUnsignedInteger(ref buffer);

            Data = BinSerialize.ReadBlock(ref buffer, (int)arraySize);
        }
コード例 #11
0
 public override void Deserialize(ref ReadOnlySpan <byte> buffer)
 {
     UavIdFilterEnabled = BinSerialize.ReadBool(ref buffer);
     UavSystemId        = BinSerialize.ReadByte(ref buffer);
     UavComponentId     = BinSerialize.ReadByte(ref buffer);
     WpIndex            = BinSerialize.ReadUShort(ref buffer);
 }
コード例 #12
0
        public int Serialize(ref Span <byte> buffer)
        {
            var index = 0;

            BinSerialize.WriteByte(ref buffer, (byte)Rfhealth); index += 1;
            return(index); // /*PayloadByteSize*/1;
        }
コード例 #13
0
ファイル: PacketV2.cs プロジェクト: asvol/mavlink.net
        public void Serialize(ref Span <byte> buffer)
        {
            var fillBuffer    = buffer.Slice(0);
            var payloadBuffer = buffer.Slice(10);
            var payloadSize   = Payload.Serialize(ref payloadBuffer);

            Debug.Assert(payloadSize <= byte.MaxValue, $"Wrong payload serialize size (must be {byte.MaxValue} size)");

            BinSerialize.WriteByte(ref fillBuffer, PacketV2Helper.MagicMarkerV2);
            BinSerialize.WriteByte(ref fillBuffer, (byte)payloadSize);
            BinSerialize.WriteByte(ref fillBuffer, IncompatFlags);
            BinSerialize.WriteByte(ref fillBuffer, CompatFlags);
            BinSerialize.WriteByte(ref fillBuffer, Sequence);
            BinSerialize.WriteByte(ref fillBuffer, SystemId);
            BinSerialize.WriteByte(ref fillBuffer, ComponenId);
            BinSerialize.WriteByte(ref fillBuffer, (byte)((MessageId) & 0xFF));
            BinSerialize.WriteByte(ref fillBuffer, (byte)((MessageId >> 8) & 0xFF));
            BinSerialize.WriteByte(ref fillBuffer, (byte)((MessageId >> 16) & 0xFF));
            var crcBuff = buffer.Slice(1, 9);
            var crc     = X25Crc.Accumulate(ref crcBuff, X25Crc.CrcSeed);

            crcBuff    = buffer.Slice(10, payloadSize);
            crc        = X25Crc.Accumulate(ref crcBuff, crc);
            crc        = X25Crc.Accumulate(GetCrcEtra(), crc);
            fillBuffer = fillBuffer.Slice(payloadSize);
            BinSerialize.WriteUShort(ref fillBuffer, crc);
            if (Signature.IsPresent)
            {
                Signature.Serialize(ref fillBuffer);
            }
            // Debug.Assert((payloadSize + Signature.ByteSize + PacketV2Helper.PacketV2FrameSize) == (buffer.Length - fillBuffer.Length));
            buffer = fillBuffer;
        }
コード例 #14
0
        public byte GetMinByteSize() => 20; // of byte sized of fields (exclude extended)

        public void Deserialize(ref ReadOnlySpan <byte> buffer, int payloadSize)
        {
            var index     = 0;
            var endIndex  = payloadSize;
            var arraySize = 0;

            Icao       = BinSerialize.ReadUInt(ref buffer); index += 4;
            Stallspeed = BinSerialize.ReadUShort(ref buffer); index += 2;
            arraySize  = /*ArrayLength*/ 9 - Math.Max(0, ((/*PayloadByteSize*/ 20 - payloadSize - /*ExtendedFieldsLength*/ 0) / 1 /*FieldTypeByteSize*/));
            Callsign   = new char[arraySize];
            unsafe
            {
                fixed(byte *bytePointer = buffer)
                fixed(char *charPointer = Callsign)
                {
                    Encoding.ASCII.GetChars(bytePointer, arraySize, charPointer, Callsign.Length);
                }
            }
            buffer       = buffer.Slice(arraySize);
            index       += arraySize;
            Emittertype  = (AdsbEmitterType)BinSerialize.ReadByte(ref buffer); index += 1;
            Aircraftsize = (UavionixAdsbOutCfgAircraftSize)BinSerialize.ReadByte(ref buffer); index += 1;
            Gpsoffsetlat = (UavionixAdsbOutCfgGpsOffsetLat)BinSerialize.ReadByte(ref buffer); index += 1;
            Gpsoffsetlon = (UavionixAdsbOutCfgGpsOffsetLon)BinSerialize.ReadByte(ref buffer); index += 1;
            Rfselect     = (UavionixAdsbOutRfSelect)BinSerialize.ReadByte(ref buffer); index += 1;
        }
コード例 #15
0
 public override void Serialize(ref Span <byte> buffer)
 {
     BinSerialize.WriteBool(ref buffer, UavIdFilterEnabled);
     BinSerialize.WriteByte(ref buffer, UavSystemId);
     BinSerialize.WriteByte(ref buffer, UavComponentId);
     BinSerialize.WriteUShort(ref buffer, WpIndex);
 }
コード例 #16
0
        public byte GetMinByteSize() => 84; // of byte sized of fields (exclude extended)

        public void Deserialize(ref ReadOnlySpan <byte> buffer, int payloadSize)
        {
            var index     = 0;
            var endIndex  = payloadSize;
            var arraySize = 0;

            arraySize = 2;
            for (var i = 0; i < arraySize; i++)
            {
                ArD[i] = BinSerialize.ReadDouble(ref buffer); index += 8;
            }
            arraySize = 2;
            for (var i = 0; i < arraySize; i++)
            {
                ArF[i] = BinSerialize.ReadFloat(ref buffer); index += 4;
            }
            arraySize = 2;
            for (var i = 0; i < arraySize; i++)
            {
                ArU32[i] = BinSerialize.ReadUInt(ref buffer); index += 4;
            }
            arraySize = 2;
            for (var i = 0; i < arraySize; i++)
            {
                ArI32[i] = BinSerialize.ReadInt(ref buffer); index += 4;
            }
            arraySize = 2;
            for (var i = 0; i < arraySize; i++)
            {
                ArU16[i] = BinSerialize.ReadUShort(ref buffer); index += 2;
            }
            arraySize = 2;
            for (var i = 0; i < arraySize; i++)
            {
                ArI16[i] = BinSerialize.ReadShort(ref buffer); index += 2;
            }
            arraySize = 2;
            for (var i = 0; i < arraySize; i++)
            {
                ArU8[i] = (byte)BinSerialize.ReadByte(ref buffer); index += 1;
            }
            arraySize = 2;
            for (var i = 0; i < arraySize; i++)
            {
                ArI8[i] = (sbyte)BinSerialize.ReadByte(ref buffer); index += 1;
            }
            arraySize = /*ArrayLength*/ 32 - Math.Max(0, ((/*PayloadByteSize*/ 84 - payloadSize - /*ExtendedFieldsLength*/ 0) / 1 /*FieldTypeByteSize*/));
            ArC       = new char[arraySize];
            unsafe
            {
                fixed(byte *bytePointer = buffer)
                fixed(char *charPointer = ArC)
                {
                    Encoding.ASCII.GetChars(bytePointer, arraySize, charPointer, ArC.Length);
                }
            }
            buffer = buffer.Slice(arraySize);
            index += arraySize;
        }
コード例 #17
0
        public byte GetMinByteSize() => 1; // of byte sized of fields (exclude extended)

        public void Deserialize(ref ReadOnlySpan <byte> buffer, int payloadSize)
        {
            var index     = 0;
            var endIndex  = payloadSize;
            var arraySize = 0;

            Rfhealth = (UavionixAdsbRfHealth)BinSerialize.ReadByte(ref buffer); index += 1;
        }
コード例 #18
0
 public void Serialize(ref Span <byte> buffer)
 {
     BinSerialize.WriteBool(ref buffer, IsEnabled);
     if (IsEnabled && Session != null)
     {
         Session.Serialize(ref buffer);
     }
 }
コード例 #19
0
        public int Serialize(ref Span <byte> buffer)
        {
            var index = 0;

            BinSerialize.WriteUInt(ref buffer, Checksum); index          += 4;
            BinSerialize.WriteByte(ref buffer, (byte)MissionType); index += 1;
            return(index); // /*PayloadByteSize*/5;
        }
コード例 #20
0
 public int GetByteSize()
 {
     return(SessionId.GetByteSize() +
            BinSerialize.GetSizeForPackedUnsignedInteger(Counter) +
            sizeof(byte) /* Flags */ +
            sizeof(byte) /* Count */ +
            (Groups?.Count * sizeof(ushort) ?? 0));
 }
コード例 #21
0
        public byte GetMinByteSize() => 1; // of byte sized of fields (exclude extended)

        public void Deserialize(ref ReadOnlySpan <byte> buffer, int payloadSize)
        {
            var index     = 0;
            var endIndex  = payloadSize;
            var arraySize = 0;

            Status = (IcarousFmsState)BinSerialize.ReadByte(ref buffer); index += 1;
        }
コード例 #22
0
 public void Deserialize(ref ReadOnlySpan <byte> buffer)
 {
     SessionId ??= new SessionId();
     SessionId.Deserialize(ref buffer);
     FieldId    = BinSerialize.ReadPackedUnsignedInteger(ref buffer);
     StartIndex = BinSerialize.ReadPackedUnsignedInteger(ref buffer);
     Take       = BinSerialize.ReadPackedUnsignedInteger(ref buffer);
 }
コード例 #23
0
ファイル: Pv2EnumParamType.cs プロジェクト: asvol/mavlink.net
 public override void Serialize(ref Span <byte> buffer)
 {
     base.Serialize(ref buffer);
     BinSerialize.WritePackedUnsignedInteger(ref buffer, (uint)_list.Count);
     foreach (var t in Items)
     {
         BinSerialize.WriteString(ref buffer, t);
     }
 }
コード例 #24
0
        public byte GetMinByteSize() => 5; // of byte sized of fields (exclude extended)

        public void Deserialize(ref ReadOnlySpan <byte> buffer, int payloadSize)
        {
            var index     = 0;
            var endIndex  = payloadSize;
            var arraySize = 0;

            Checksum    = BinSerialize.ReadUInt(ref buffer); index += 4;
            MissionType = (MavMissionType)BinSerialize.ReadByte(ref buffer); index += 1;
        }
コード例 #25
0
ファイル: ualberta.cs プロジェクト: asvol/mavlink.net
        public int Serialize(ref Span <byte> buffer)
        {
            var index = 0;

            BinSerialize.WriteByte(ref buffer, (byte)Mode); index    += 1;
            BinSerialize.WriteByte(ref buffer, (byte)NavMode); index += 1;
            BinSerialize.WriteByte(ref buffer, (byte)Pilot); index   += 1;
            return(index); // /*PayloadByteSize*/3;
        }
コード例 #26
0
 public void Serialize(ref Span <byte> buffer)
 {
     BinSerialize.WritePackedUnsignedInteger(ref buffer, (uint)Items.Count);
     foreach (var item in Items)
     {
         Debug.Assert(item != null, nameof(item) + " != null");
         item.Serialize(ref buffer);
     }
 }
コード例 #27
0
ファイル: ualberta.cs プロジェクト: asvol/mavlink.net
        public byte GetMinByteSize() => 3; // of byte sized of fields (exclude extended)

        public void Deserialize(ref ReadOnlySpan <byte> buffer, int payloadSize)
        {
            var index     = 0;
            var endIndex  = payloadSize;
            var arraySize = 0;

            Mode    = (byte)BinSerialize.ReadByte(ref buffer); index += 1;
            NavMode = (byte)BinSerialize.ReadByte(ref buffer); index += 1;
            Pilot   = (byte)BinSerialize.ReadByte(ref buffer); index += 1;
        }
コード例 #28
0
        public int Serialize(ref Span <byte> buffer)
        {
            var index = 0;

            for (var i = 0; i < ArU32.Length; i++)
            {
                BinSerialize.WriteUInt(ref buffer, ArU32[i]); index += 4;
            }
            return(index); // /*PayloadByteSize*/16;
        }
コード例 #29
0
 public void Deserialize(ref ReadOnlySpan <byte> buffer)
 {
     IsEnabled = BinSerialize.ReadBool(ref buffer);
     if (!IsEnabled)
     {
         return;
     }
     Session = new SessionMetadata();
     Session.Deserialize(ref buffer);
 }
コード例 #30
0
        public void Deserialize(ref ReadOnlySpan <byte> buffer)
        {
            var count = BinSerialize.ReadPackedUnsignedInteger(ref buffer);

            for (var i = 0; i < count; i++)
            {
                var item = new Pv2ParamValueItem();
                item.Deserialize(ref buffer);
                Items.Add(item);
            }
        }