GUI parts for DISCO-F746NG. GuiBase, Button, ButtonGroup, ResetButton, Label, BlinkLabel, NumericLabel, SeekBar, SeekbarGroup, NumericUpDown

Dependencies:   Array_Matrix BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG

Dependents:   F746_AudioOutQSPI F746_AudioPlayerSD DISCO-F746NG_test001 F746_SD_WavPlayer ... more

Revision:
33:50b8f7654c36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DelayedEnabler.hpp	Mon Mar 12 04:22:48 2018 +0000
@@ -0,0 +1,46 @@
+//-----------------------------------------------------------
+//  ある機能を一定の時間が経過するまでは無効にし,その後有効に
+//  するためのクラス
+//
+//  2018/03/12, Copyright (c) 2018 MIKAMI, Naoki
+//-----------------------------------------------------------
+
+#ifndef DELAYED_ENABLER_HPP
+#define DELAYED_ENABLER_HPP
+
+#include "mbed.h"
+
+namespace Mikami
+{
+    class DelayedEnabler
+    {
+    public:
+        DelayedEnabler(float delayTime = 0.3f)
+            : DELAY_TIME_(delayTime), enable_(true) {}
+
+        // このメンバ関数の実行直後から指定された時間,IsEnabled() は false を
+        // 返し,その後 InEnabled() は true を返す
+        void Disable()
+        {
+            enable_ = false;
+            Enabler_.attach(callback(this, &DelayedEnabler::TimeoutIsr),
+                            DELAY_TIME_);
+        }
+
+        bool IsEnabled() { return enable_; }
+
+    private:
+        const float DELAY_TIME_;    // 無効になっている時間
+
+        __IO bool enable_;
+        Timeout Enabler_;
+
+        // 有効にする(Timeout 割り込みに対応する ISR)
+        void TimeoutIsr() { enable_ = true; }
+
+        // disallow copy constructor and assignment operator
+        DelayedEnabler(const DelayedEnabler&);
+        DelayedEnabler& operator=(const DelayedEnabler&);      
+    };
+}
+#endif  // DELAYED_ENABLER_HPP