| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace TeamAAS_VP.Core.Lights
- {
- public class KCSLightChannel : ILightChannel
- {
- private readonly KCSLightController _controller;
- private int _brightness;
- private bool _isOn;
- public int ChannelIndex { get; }
- public string ChannelName { get; set; }
- public int Brightness => _brightness;
- public bool IsOn => _isOn;
- internal int CurrentBrightness => _brightness;
- public KCSLightChannel(int index, KCSLightController controller)
- {
- ChannelIndex = index;
- ChannelName = $"Channel {index + 1}";
- _controller = controller;
- }
- public async Task<bool> SetBrightnessAsync(int brightness)
- {
- if (brightness < 0 || brightness > 255)
- throw new ArgumentOutOfRangeException(nameof(brightness));
- var result = await _controller.SetChannelBrightnessInternal(ChannelIndex, brightness);
- if (result)
- {
- _brightness = brightness;
- _isOn = brightness > 0;
- }
- return result;
- }
- public async Task<bool> TurnOnAsync()
- {
- return await SetBrightnessAsync(_brightness > 0 ? _brightness : 100);
- }
- public async Task<bool> TurnOffAsync()
- {
- return await SetBrightnessAsync(0);
- }
- public async Task<int> GetBrightnessAsync()
- {
- _brightness = await _controller.GetChannelBrightnessInternal(ChannelIndex);
- _isOn = _brightness > 0;
- return _brightness;
- }
- public async Task<bool> GetStatusAsync()
- {
- await GetBrightnessAsync();
- return _isOn;
- }
- }
- }
|