fast-feedback virtual target task code on STM Nucleo

Dependencies:   mbed

Revision:
11:897ecd5413e0
Parent:
8:973dcd190672
Child:
12:06ea96546af1
--- a/trial.cpp	Tue Jun 19 10:11:23 2018 +0000
+++ b/trial.cpp	Thu Jun 21 17:57:22 2018 +0000
@@ -1,7 +1,10 @@
 #include "trial.h"
+#include "rig.h"
 #include "IO.h"
 #include "random.h"
 
+const uint64_t MicrosecondsInSecond = 1000000;
+
 void Trial::reset(const Task& task){
     // reset score
     response      = TrialFlags::Clear;
@@ -10,25 +13,34 @@
     delay_dur_ms  = task.delay_min_ms.value
                     + random::exponential(task.delay_var_ms.value, task.delay_var_ms.value*3);
     
-    // set stim size
-    switch(task.mode.value)
-    {
-    case Appear:
-        if (random::unif(2) == 1) {
-            response |= TrialFlags::Cues;
-        }
-        break;
-    case Pair:
-    default:
-        response |= TrialFlags::Cues;
-        break;
-    }
+    aud_ticker_cycle = MicrosecondsInSecond/(task.aud_tick_hz.value * 2);
+                    
+    // TODO: generate visual stimulus (sequence) here
     
     // reset interrupt events
     licking_events.clear();
     whisking_events.clear();
 }
 
+void Trial::markTrialStart() {
+    starting = timer.read_ms();
+    trialStart.start();
+    timer.start();
+}
+
+void Trial::markEndOfWait() {
+    cuestarting = timer.read_ms();
+    waiting     = cuestarting - starting;
+}
+
+void Trial::markTrialEnd() {
+    trialEnd.start();
+    trialEnd.wait();
+    writeToSerial();
+    timer.stop();
+    timer.reset();
+}
+
 void Trial::writeToSerial() {
     switch(response){
 #define WRITE_SCORE(SC,REPR) case SC: IO::write("%c%s;",IO::RESULT_HEADER,REPR); break;