fast-feedback virtual target task code on STM Nucleo

Dependencies:   mbed

Revision:
11:897ecd5413e0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/duration.cpp	Thu Jun 21 17:57:22 2018 +0000
@@ -0,0 +1,39 @@
+#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);
+}
+    
\ No newline at end of file