コード例 #1
0
        protected override void Read(PayloadReader reader)
        {
            CommandClass = (CommandClass)reader.ReadByte();
            CommandID    = reader.ReadByte();
            Payload      = new Payload(reader.ReadBytes(reader.Length - reader.Position - 2));

            var actualChecksum = reader.ReadInt16();
            var expectedChecksum = new byte[] { (byte)CommandClass, CommandID }.Concat(Payload.ToArray()).CalculateCrc16Checksum();

            if (actualChecksum != expectedChecksum)
            {
                throw new ChecksumException("CRC-16 encapsulated command checksum failure");
            }
        }
コード例 #2
0
        protected override void Read(PayloadReader reader)
        {
            Parameter = reader.ReadByte();
            Size      = (byte)(reader.ReadByte() & 0x07);

            switch (Size)
            {
            case 1:
                Value = reader.ReadByte();
                break;

            case 2:
                Value = reader.ReadInt16();
                break;

            case 4:
                Value = reader.ReadInt32();
                break;

            default:
                throw new NotSupportedException($"Size: {Size} is not supported");
            }
        }
コード例 #3
0
 protected override void Read(PayloadReader reader)
 {
     ManufacturerID = reader.ReadInt16();
     ProductType    = reader.ReadInt16();
     ProductID      = reader.ReadInt16();
 }
コード例 #4
0
 protected override void Read(PayloadReader reader)
 {
     ManufacturerID = reader.ReadInt16();
     FirmwareID     = reader.ReadInt16();
     Checksum       = reader.ReadInt16();
 }