A DTMF sequence editor and player for HAM radio equipment command & control.

Dependencies:   mbed ExtTextLCD

Revision:
0:1324e7d9d471
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/KeyboardManager/kbd_mgr/KeyboardEventServer.h	Mon Mar 07 22:51:19 2011 +0000
@@ -0,0 +1,54 @@
+#ifndef KEYBOARD_EVENT_SERVER_H_
+#define KEYBOARD_EVENT_SERVER_H_
+
+#include <cstdlib>
+
+namespace kbd_mgr {
+
+template <class HandlerClass>
+class KeyboardEventServer {
+protected:
+    KeyboardEventServer() : handler_(NULL), ownHandler_(false) { }
+
+    ~KeyboardEventServer()
+    {
+        clearHandler();
+    }
+    
+    void setHandler(HandlerClass *h, bool owner = true) {
+        this->handler_ = h;
+        this->ownHandler_ = owner;
+    }
+    
+    void clearHandler() {
+        if (this->ownHandler_) {
+            delete this->handler_;
+        }
+        this->handler_ = NULL;
+        this->ownHandler_ = false;
+    }
+
+    HandlerClass *handler() const { return this->handler_; }
+
+    bool hasHandler() const { return this->handler_ != NULL; }
+    
+public:
+    void attach(HandlerClass *handler) {
+        setHandler(handler, false);
+    }
+    void attach(HandlerClass &handler) {
+        setHandler(&handler, false);
+    }
+    
+    void detach() {
+        clearHandler();
+    }
+
+private:
+    HandlerClass *handler_;
+    bool ownHandler_;
+};
+
+} // kbd_mgr
+
+#endif // KEYBOARD_EVENT_SERVER_H_