Keisuke Sehara
/
STM32_Whisking
fast-feedback virtual target task code on STM Nucleo
task.cpp@1:871d3066c2ab, 2018-05-14 (annotated)
- 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?
User | Revision | Line number | New 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 | } |