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
Diff: spk_utils.h
- 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