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)); } }
public Task SetInterval(TimeSpan interval, byte targetNodeID, CancellationToken cancellationToken = default) { using (var writer = new PayloadWriter()) { writer.WriteInt24((int)interval.TotalSeconds); writer.WriteByte(targetNodeID); var command = new Command(CommandClass, WakeUpCommand.IntervalSet, writer.ToPayload()); return(Send(command, cancellationToken)); } }