The codebase to run the *spark d-fuser controller www.sparkav.co.uk/dvimixer

Dependencies:   SPK-TVOne DMX DmxArtNet NetServicesMin OSC PinDetect mRotaryEncoder iniparser mbed spk_oled_ssd1305 filter

Revision:
48:c0fedfa8c525
Parent:
24:49c6624119ae
Child:
49:16309f39cead
--- a/spk_utils.h	Thu Dec 06 17:18:37 2012 +0000
+++ b/spk_utils.h	Mon Dec 10 16:45:03 2012 +0000
@@ -192,5 +192,41 @@
     Timeout signErrorTimeout;
 };
 
+class SPKMessageHold {
+public:
 
+    SPKMessageHold() {
+        holding = false;
+        currentMessage = "";
+        waitingMessage = "";
+    }
+    
+    void addMessage(string message, float minimumSeconds) {
+        if (minimumSeconds > 0.0f)
+        {
+            timeout.detach();
+            timeout.attach(this, &SPKMessageHold::handleTimeout, minimumSeconds);
+            holding = true;
+            currentMessage = message;
+        }
+        else
+        {
+            if (holding) waitingMessage = message;
+            else currentMessage = message;
+        }
+    }
+    
+    string message() { return currentMessage; }
 
+private:
+    void handleTimeout() {
+        currentMessage = waitingMessage;
+        waitingMessage = "";
+        holding = false;
+    }
+    
+    bool holding;
+    string currentMessage;
+    string waitingMessage;
+    Timeout timeout;
+};
\ No newline at end of file