public Task Set(byte parameter, object value, byte size, CancellationToken cancellationToken = default) { if (size < 1 || size > 4) { throw new ArgumentOutOfRangeException(nameof(size), size, "Size must be between 1 and 4"); } using (var writer = new PayloadWriter()) { writer.WriteByte(parameter); writer.WriteByte(size); switch (size) { case 1: writer.WriteByte(Convert.ToByte(value)); break; case 2: writer.WriteInt16(Convert.ToInt16(value)); break; case 3: writer.WriteInt24(Convert.ToInt16(value)); break; case 4: writer.WriteInt32(Convert.ToInt32(value)); break; } var command = new Command(CommandClass, ConfigurationCommand.Set, writer.ToPayload()); return(Send(command, cancellationToken)); } }
protected override void Write(PayloadWriter writer) { writer.WriteByte((byte)CommandClass); writer.WriteByte(CommandID); writer.WriteObject(Payload); var checksum = new byte[] { (byte)CommandClass, CommandID }.Concat(Payload.ToArray()).CalculateCrc16Checksum(); writer.WriteInt16(checksum); }