fast-feedback virtual target task code on STM Nucleo

Dependencies:   mbed

Revision:
16:33c17c62840e
Parent:
15:20f7f737c256
Child:
17:0b241aa1f5b6
--- a/trial.cpp	Mon Jun 25 17:43:40 2018 +0000
+++ b/trial.cpp	Sat Jun 30 12:28:18 2018 +0000
@@ -18,21 +18,28 @@
                     
     // generate visual stimulus
     visualOut.setEnabled(false);
-    vis_dur_ms      = 0;
-    vis_onset_ms    = 0;
+    vis_dur_us      = 0;
+    vis_onset_us    = 0;
     
     switch (task.mode.value) {
     case Pair:
-        vis_onset_ms    = task.pre_min_ms.value;
-        vis_dur_ms      = task.vis_avg_ms.value;
+        vis_onset_us    = ms_to_us(task.pre_min_ms.value);
+        vis_dur_us      = ms_to_us(task.vis_avg_ms.value);
         visualOut.setEnabled(true);
-        visualOut.setOnset(ms_to_us(vis_onset_ms));
-        visualOut.setDuration(ms_to_us(vis_dur_ms));
+        visualOut.setOnset(vis_onset_us);
+        visualOut.setDuration(vis_dur_us);
+        rewardOut.setOnset(ms_to_us(task.reward_on_ms.value));
+        rewardOut.setDuration(ms_to_us(task.reward_dur_ms.value));
         break;
     case Report:
     case Associate:
+        assignRandomStim(task);
         visualOut.attachTurnOnCallback(&events::gate);
-        assignRandomStim(task);
+        // fallthrough
+    case Motion:
+    case MotionAlt:
+        rewardOut.setOnset(0);
+        rewardOut.setDuration(ms_to_us(task.reward_dur_ms.value));
         break;
     }
     
@@ -65,13 +72,13 @@
         visualOut.setDuration(duration);
         visualOut.setOnset(onset);
         
-        vis_dur_ms      = (duration + 500)/1000;
-        vis_onset_ms    = (onset + 500)/1000;
+        vis_dur_us      = duration;
+        vis_onset_us    = onset;
     } else {
         // no pulse
         visualOut.setEnabled(false);
-        vis_dur_ms      = 0;
-        vis_onset_ms    = 0;
+        vis_dur_us      = 0;
+        vis_onset_us    = 0;
     }
 }
 
@@ -110,8 +117,8 @@
     
     IO::write("wait%u",waiting);
     
-    if (visualOut.isEnabled()) {
-        IO::write(";visual(onset%u,duration%u)",vis_onset_ms,vis_dur_ms);
+    if (visualOut.isEnabled() && (response != Responses::Reset)) {
+        IO::write(";visual(onset%u,duration%u)",vis_onset_us,vis_dur_us);
     }
     
     trialtime_t zero = (response == Responses::Reset)? starting : cuestarting;