From cd68a397f67308a9b915a98837780813750e29c5 Mon Sep 17 00:00:00 2001 From: James Barnett Date: Tue, 1 Aug 2017 12:52:13 +0100 Subject: 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 --- NucLedController/BlinkColourCyclerControlMode.cs | 47 ++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 NucLedController/BlinkColourCyclerControlMode.cs (limited to 'NucLedController/BlinkColourCyclerControlMode.cs') 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(); + } + } +} -- cgit v1.2.3