Keisuke Sehara
/
STM32_Whisking
fast-feedback virtual target task code on STM Nucleo
trial.cpp
- Committer:
- gwappa
- Date:
- 2018-05-31
- Revision:
- 8:973dcd190672
- Parent:
- 6:13d180af7501
- Child:
- 11:897ecd5413e0
File content as of revision 8:973dcd190672:
#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.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; } // reset interrupt events licking_events.clear(); whisking_events.clear(); } 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") #undef WRITE_SCORE case Responses::NA: default: IO::write("%c%s(%x);",IO::RESULT_HEADER,"na",response); } IO::write("wait%u",waiting); trialtime_t zero = (response == Responses::Reset)? starting : cuestarting; IO::write(";whisk"); whisking_events.writeToSerial(zero); IO::write(";lick"); licking_events.writeToSerial(zero); IO::write(";\r\n"); }