New IHM

Dependencies:   Array_Matrix TS_DISCO_F746NG LCD_DISCO_F746NG BSP_DISCO_F746NG

DelayedEnabler.hpp

Committer:
villemejane
Date:
2021-11-14
Revision:
34:bf77bea5aafa
Parent:
33:50b8f7654c36

File content as of revision 34:bf77bea5aafa:

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