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));
            }
        }
Esempio n. 2
0
        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);
        }