fast-feedback virtual target task code on STM Nucleo

Dependencies:   mbed

duration.cpp

Committer:
gwappa
Date:
2018-06-21
Revision:
11:897ecd5413e0

File content as of revision 11:897ecd5413e0:

#include "duration.h"

Duration::Duration(PinName pin, const uint64_t& duration_us):
    out_(pin, 0),
    dur_(duration_us),
    stat_(Rest)
{
    setDuration(duration_us);
}

void Duration::setDuration(const uint64_t& value_us)
{
    dur_ = value_us;
}

void Duration::start()
{
    stat_ = Active;
    out_.write(1);
    timer_.attach_us(callback(this, &Duration::stop), dur_);
}

void Duration::stop()
{
    timer_.detach();
    out_.write(0);
    stat_ = Rest;
}

Duration::Status Duration::getStatus()
{
    return stat_;
}

void Duration::wait()
{
    while(stat_ != Rest);
}