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"); } }
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"); } }
protected override void Read(PayloadReader reader) { ManufacturerID = reader.ReadInt16(); ProductType = reader.ReadInt16(); ProductID = reader.ReadInt16(); }
protected override void Read(PayloadReader reader) { ManufacturerID = reader.ReadInt16(); FirmwareID = reader.ReadInt16(); Checksum = reader.ReadInt16(); }