fast-feedback virtual target task code on STM Nucleo

Dependencies:   mbed

Revision:
15:20f7f737c256
Parent:
13:8ea85a33e37a
Child:
20:4c06d3041337
--- a/pulse.cpp	Mon Jun 25 14:47:41 2018 +0000
+++ b/pulse.cpp	Mon Jun 25 17:43:40 2018 +0000
@@ -2,17 +2,28 @@
 
 Pulse::Pulse(PinName pin, const uint64_t& onset_us, const uint64_t& duration_us):
     out_(pin, 0),
+    enabled_(true),
     stat_(Rest)
 {
     setOnset(onset_us);
     setDuration(duration_us);
 }
 
+void Pulse::setEnabled(const bool& value)
+{
+    enabled_ = value;
+}
+
 void Pulse::setOnset(const uint64_t& value_us)
 {
     onset_ = value_us;
 }
 
+bool Pulse::isEnabled()
+{
+    return enabled_;
+}
+
 void Pulse::setDuration(const uint64_t& value_us)
 {
     dur_ = value_us;
@@ -40,6 +51,8 @@
 
 void Pulse::run()
 {
+    if (!enabled_) return;
+    
     if (onset_ < 10) {
         // do not wait for the onset timeout
         start();
@@ -51,6 +64,8 @@
 
 void Pulse::start()
 {
+    if (!enabled_) return;
+    
     stat_ = Active;
     out_.write(1);
     timer_.attach_us(callback(this, &Pulse::stop), dur_);
@@ -61,6 +76,8 @@
 
 void Pulse::stop()
 {
+    if (!enabled_) return;
+    
     timer_.detach();
     out_.write(0);
     stat_ = Rest;