diff options
| author | James Barnett <james.barnett@fivium.co.uk> | 2017-08-01 12:52:13 +0100 |
|---|---|---|
| committer | James Barnett <james.barnett@fivium.co.uk> | 2017-08-01 12:52:13 +0100 |
| commit | cd68a397f67308a9b915a98837780813750e29c5 (patch) | |
| tree | fcd3694a286c5a98f3a7904ffdc6b446557065d8 /NucLedController/BlinkColourCyclerControlMode.cs | |
| parent | 36776bfbff6f15f7239924777651392945ebb2a0 (diff) | |
| download | intel-nuc-led-controller-cd68a397f67308a9b915a98837780813750e29c5.tar.xz intel-nuc-led-controller-cd68a397f67308a9b915a98837780813750e29c5.zip | |
Add options to disable LED and cycle colours
- Add disable option in manual LED control
- Add mode to cycle through all colours at a given rate
Diffstat (limited to 'NucLedController/BlinkColourCyclerControlMode.cs')
| -rw-r--r-- | NucLedController/BlinkColourCyclerControlMode.cs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/NucLedController/BlinkColourCyclerControlMode.cs b/NucLedController/BlinkColourCyclerControlMode.cs new file mode 100644 index 0000000..dac0a51 --- /dev/null +++ b/NucLedController/BlinkColourCyclerControlMode.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Timers; + +namespace NucLedController +{ + class BlinkColourCyclerControlMode : IControlMode + { + + private readonly Timer timer; + private int currentColourIndex; + private readonly int maxColourIndex = LEDColour.AvailableColours.Count - 1; + + public BlinkColourCyclerControlMode(int intervalMs) + { + timer = new Timer(); + timer.Elapsed += new ElapsedEventHandler(Tick); + timer.Interval = intervalMs; + } + + private void Tick(object source, ElapsedEventArgs e) + { + LEDController.SetLEDState(LEDTransition.AvailableTransitions.Find(t => t.Identifier.ToString() == "ALWAYS_ON"), LEDColour.AvailableColours.ElementAt(currentColourIndex)); + if (currentColourIndex == maxColourIndex) + { + currentColourIndex = 0; + } + else + { + currentColourIndex++; + } + } + + public void Start() + { + timer.Start(); + } + + public void Stop() + { + timer.Stop(); + } + } +} |