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 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 TurnOnAsync() { return await SetBrightnessAsync(_brightness > 0 ? _brightness : 100); } public async Task TurnOffAsync() { return await SetBrightnessAsync(0); } public async Task GetBrightnessAsync() { _brightness = await _controller.GetChannelBrightnessInternal(ChannelIndex); _isOn = _brightness > 0; return _brightness; } public async Task GetStatusAsync() { await GetBrightnessAsync(); return _isOn; } } }