fast-feedback virtual target task code on STM Nucleo

Dependencies:   mbed

Committer:
gwappa
Date:
Mon May 14 17:37:26 2018 +0000
Revision:
1:871d3066c2ab
Child:
4:fcf597f82632
separated task-related parameters

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gwappa 1:871d3066c2ab 1 #include "task.h"
gwappa 1:871d3066c2ab 2 #include "IO.h"
gwappa 1:871d3066c2ab 3 #include "utils.h"
gwappa 1:871d3066c2ab 4
gwappa 1:871d3066c2ab 5 Task::Task(const Mode& mode):
gwappa 1:871d3066c2ab 6 mode(mode),
gwappa 1:871d3066c2ab 7 delay_min_ms(3000),
gwappa 1:871d3066c2ab 8 delay_var_ms(3000),
gwappa 1:871d3066c2ab 9 prep_dur_ms (3000),
gwappa 1:871d3066c2ab 10 cue_dur_ms (3000),
gwappa 1:871d3066c2ab 11 post_dur_ms (4000),
gwappa 1:871d3066c2ab 12 reward_ms (10)
gwappa 1:871d3066c2ab 13 { }
gwappa 1:871d3066c2ab 14
gwappa 1:871d3066c2ab 15
gwappa 1:871d3066c2ab 16
gwappa 1:871d3066c2ab 17 void Task::writeModeToSerial(bool newline){
gwappa 1:871d3066c2ab 18 IO::write(IO::CONFIG_HEADER);
gwappa 1:871d3066c2ab 19 #define WRITE(CHR, VAL) if (mode == (VAL)) { IO::write("[%c]",CHR); } else { IO::write("%c",CHR); }
gwappa 1:871d3066c2ab 20 WRITE(CMD_MODE_PAIR, Pair)
gwappa 1:871d3066c2ab 21 WRITE(CMD_MODE_APPEAR, Appear)
gwappa 1:871d3066c2ab 22 #undef WRITE
gwappa 1:871d3066c2ab 23 if (newline) {
gwappa 1:871d3066c2ab 24 IO::write(STR_NEWLINE);
gwappa 1:871d3066c2ab 25 }
gwappa 1:871d3066c2ab 26 }
gwappa 1:871d3066c2ab 27
gwappa 1:871d3066c2ab 28
gwappa 1:871d3066c2ab 29 void Task::writeSettingsToSerial()
gwappa 1:871d3066c2ab 30 {
gwappa 1:871d3066c2ab 31 writeModeToSerial(false);
gwappa 1:871d3066c2ab 32 IO::write(STR_DELIMITER);
gwappa 1:871d3066c2ab 33 #define WRITE(CHR, PARAM, END) IO::write("%c%u",CHR,PARAM); if (END) { IO::write(STR_NEWLINE); } else { IO::write(STR_DELIMITER); }
gwappa 1:871d3066c2ab 34 WRITE(CHR_DELAY_MIN, delay_min_ms, false)
gwappa 1:871d3066c2ab 35 WRITE(CHR_DELAY_VAR, delay_var_ms, false)
gwappa 1:871d3066c2ab 36 WRITE(CHR_PREP_DUR, prep_dur_ms, false)
gwappa 1:871d3066c2ab 37 WRITE(CHR_CUE_DUR, cue_dur_ms, false)
gwappa 1:871d3066c2ab 38 WRITE(CHR_POST_DUR, post_dur_ms, false)
gwappa 1:871d3066c2ab 39 WRITE(CHR_REWARD_DUR, reward_ms, true)
gwappa 1:871d3066c2ab 40 #undef WRITE
gwappa 1:871d3066c2ab 41 }
gwappa 1:871d3066c2ab 42
gwappa 1:871d3066c2ab 43 void Task::parseFromSerial() {
gwappa 1:871d3066c2ab 44 char in = IO::getc();
gwappa 1:871d3066c2ab 45
gwappa 1:871d3066c2ab 46 if (isWhitespace(in)) {
gwappa 1:871d3066c2ab 47 return;
gwappa 1:871d3066c2ab 48 }
gwappa 1:871d3066c2ab 49
gwappa 1:871d3066c2ab 50 switch(in) {
gwappa 1:871d3066c2ab 51 case CMD_TEST_REWARD:
gwappa 1:871d3066c2ab 52 // Cued::turnOnReward();
gwappa 1:871d3066c2ab 53 // while(Cued::phase != Cued::Done);
gwappa 1:871d3066c2ab 54 // LOG_REWARDED
gwappa 1:871d3066c2ab 55 IO::result("done");
gwappa 1:871d3066c2ab 56 break;
gwappa 1:871d3066c2ab 57
gwappa 1:871d3066c2ab 58 case CMD_EXECUTE:
gwappa 1:871d3066c2ab 59 // TRIAL_STARTING
gwappa 1:871d3066c2ab 60 // automaton::run();
gwappa 1:871d3066c2ab 61 IO::result("done");
gwappa 1:871d3066c2ab 62 break;
gwappa 1:871d3066c2ab 63
gwappa 1:871d3066c2ab 64 case '?': writeSettingsToSerial(); break;
gwappa 1:871d3066c2ab 65 case CMD_MODE_PAIR: mode = Pair; writeModeToSerial(); break;
gwappa 1:871d3066c2ab 66 case CMD_MODE_APPEAR: mode = Appear; writeModeToSerial(); break;
gwappa 1:871d3066c2ab 67 #define PARSE(CHR, PARAM) case (CHR): PARAM = parseUnsignedFromSerial<uint16_t>(PARAM);\
gwappa 1:871d3066c2ab 68 IO::config("%c%u",(CHR),(PARAM)); break;
gwappa 1:871d3066c2ab 69
gwappa 1:871d3066c2ab 70 PARSE(CHR_DELAY_MIN, delay_min_ms)
gwappa 1:871d3066c2ab 71 PARSE(CHR_DELAY_VAR, delay_var_ms)
gwappa 1:871d3066c2ab 72 PARSE(CHR_PREP_DUR, prep_dur_ms)
gwappa 1:871d3066c2ab 73 PARSE(CHR_CUE_DUR, cue_dur_ms)
gwappa 1:871d3066c2ab 74 PARSE(CHR_POST_DUR, post_dur_ms)
gwappa 1:871d3066c2ab 75 PARSE(CHR_REWARD_DUR, reward_ms)
gwappa 1:871d3066c2ab 76 #undef PARSE
gwappa 1:871d3066c2ab 77 default:
gwappa 1:871d3066c2ab 78 IO::error("%c",in);
gwappa 1:871d3066c2ab 79 break;
gwappa 1:871d3066c2ab 80 }
gwappa 1:871d3066c2ab 81 }