CQエレクトロニクス・セミナ「実習・マイコンを動かしながら学ぶディジタル・フィルタ」で使うプログラム.1次IIRフィルタの係数をターミナルから変更できる. http://seminar.cqpub.co.jp/ccm/ES18-0020

Dependencies:   mbed Array_Matrix BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG

MyFiles/DelayedEnabler.hpp

Committer:
MikamiUitOpen
Date:
2017-11-08
Revision:
2:aa11055138a2
Parent:
0:47718d3154d9

File content as of revision 2:aa11055138a2:

//-----------------------------------------------------------
//  ある機能を一定の時間が経過するまでは無効にし,その後有効に
//  するためのクラス
//
//  2017/08/21, Copyright (c) 2017 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; }
    };
}
#endif  // DELAYED_ENABLER_HPP