fast-feedback virtual target task code on STM Nucleo

Dependencies:   mbed

trial.cpp

Committer:
gwappa
Date:
2018-05-14
Revision:
2:0c241937eabd
Child:
3:991c6d5ce19d

File content as of revision 2:0c241937eabd:

#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);
}