Keisuke Sehara
/
STM32_Whisking
fast-feedback virtual target task code on STM Nucleo
Diff: trial.cpp
- 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;