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

DelayedEnabler.hpp

Committer:
MikamiUitOpen
Date:
2018-03-12
Revision:
33:50b8f7654c36

File content as of revision 33:50b8f7654c36:

//-----------------------------------------------------------
//  ある機能を一定の時間が経過するまでは無効にし,その後有効に
//  するためのクラス
//
//  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