fast-feedback virtual target task code on STM Nucleo

Dependencies:   mbed

Revision:
2:0c241937eabd
Child:
3:991c6d5ce19d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/trial.cpp	Mon May 14 18:07:57 2018 +0000
@@ -0,0 +1,48 @@
+#include "trial.h"
+#include "IO.h"
+#include "random.h"
+
+void Trial::reset(const Task& task){
+    // reset score
+    response      = TrialFlags::Clear;
+    
+    // set delay duration
+    delay_dur_ms  = task.delay_min_ms
+                    + random::exponential(task.delay_var_ms, task.delay_var_ms*3);
+    
+    // set stim size
+    switch(task.mode)
+    {
+    case Appear:
+        if (random::unif(2) == 1) {
+            response |= TrialFlags::Cues;
+        }
+        break;
+    case Pair:
+    default:
+        response |= TrialFlags::Cues;
+        break;
+    }
+    
+    // TODO: reset interrupt events
+    // LICK::clearEvents();
+    // WHISK::clearEvents();
+}
+
+void Trial::writeToSerial() {
+    switch(response){
+#define WRITE_SCORE(SC,REPR) case SC: IO::write("%c%s;",IO::RESULT_HEADER,REPR); break;
+        WRITE_SCORE(Responses::Hit,     "hit")
+        WRITE_SCORE(Responses::Miss,    "miss")
+        WRITE_SCORE(Responses::Catch,   "catch")
+        WRITE_SCORE(Responses::Reject,  "reject")
+        WRITE_SCORE(Responses::Reset,   "reset")
+        WRITE_SCORE(Responses::NA,      "na")
+#undef WRITE_SCORE
+    }
+    
+    IO::write("wait%u\r\n",waiting);
+    //unsigned long zero = (response == Responses::Reset)? starting : cuestarting;
+    //Serial.print("whisk"); WHISK::writeLogToSerial(zero); Serial.print(DELIMITER);
+    //Serial.print("lick"); LICK::writeLogToSerial(zero); Serial.print(DELIMITER);
+}
\ No newline at end of file