Keisuke Sehara
/
STM32_Whisking
fast-feedback virtual target task code on STM Nucleo
task.cpp@32:1416e015016c, 2018-12-13 (annotated)
- Committer:
- gwappa
- Date:
- Thu Dec 13 07:18:43 2018 +0000
- Revision:
- 32:1416e015016c
- Parent:
- 31:b320ca61a8c0
change to use the Staged state
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 "utils.h" |
gwappa | 8:973dcd190672 | 3 | #include "states.h" |
gwappa | 4:fcf597f82632 | 4 | #include "automaton.h" |
gwappa | 1:871d3066c2ab | 5 | |
gwappa | 1:871d3066c2ab | 6 | Task::Task(const Mode& mode): |
gwappa | 1:871d3066c2ab | 7 | mode(mode), |
gwappa | 25:56c4b22ec034 | 8 | delay_min_ms (CFG_DELAY_MIN), |
gwappa | 25:56c4b22ec034 | 9 | delay_var_ms (CFG_DELAY_VAR), |
gwappa | 25:56c4b22ec034 | 10 | prep_dur_ms (CFG_PREP_DUR), |
gwappa | 25:56c4b22ec034 | 11 | aud_dur_ms (CFG_AUD_DUR), |
gwappa | 25:56c4b22ec034 | 12 | aud_tick_hz (CFG_AUD_FREQ), |
gwappa | 25:56c4b22ec034 | 13 | resp_dur_ms (CFG_RESP_DUR), |
gwappa | 25:56c4b22ec034 | 14 | post_dur_ms (CFG_POST_DUR), |
gwappa | 25:56c4b22ec034 | 15 | reward_dur_ms (CFG_REWARD_DUR), |
gwappa | 29:1fb060aab1f8 | 16 | onset_min_ms (CFG_ONSET_MIN), |
gwappa | 29:1fb060aab1f8 | 17 | onset_steps_n (CFG_ONSET_STEPS), |
gwappa | 29:1fb060aab1f8 | 18 | vis_dur_ms (CFG_VIS_DUR), |
gwappa | 29:1fb060aab1f8 | 19 | vis_test_every (CFG_VIS_TEST_EVERY), |
gwappa | 25:56c4b22ec034 | 20 | whisk_debounce_ms (CFG_WHISK_DEBOUNCE), |
gwappa | 25:56c4b22ec034 | 21 | lick_debounce_ms (CFG_LICK_DEBOUNCE), |
gwappa | 30:5f975f572ffb | 22 | test_reward (CMD_TEST_REWARD, callback(this, &Task::testReward) ), |
gwappa | 30:5f975f572ffb | 23 | clear_index (CMD_CLEAR_INDEX, callback(this, &Task::clearTrialIndex) ), |
gwappa | 30:5f975f572ffb | 24 | run (CMD_EXECUTE, callback(this, &Task::runTrial) ) |
gwappa | 1:871d3066c2ab | 25 | { } |
gwappa | 5:849446d19406 | 26 | |
gwappa | 11:897ecd5413e0 | 27 | const char ModeSelection::CMD_ID_MODE = '_'; |
gwappa | 32:1416e015016c | 28 | const char ModeSelection::CMD_MODE_PAIR = 'P'; |
gwappa | 32:1416e015016c | 29 | const char ModeSelection::CMD_MODE_STAGE = 'S'; |
gwappa | 11:897ecd5413e0 | 30 | const char ModeSelection::CMD_MODE_REPORT = 'R'; |
gwappa | 11:897ecd5413e0 | 31 | const char ModeSelection::CMD_MODE_ASSOCIATE = 'A'; |
gwappa | 11:897ecd5413e0 | 32 | const char ModeSelection::CMD_MODE_MOTION = 'M'; |
gwappa | 16:33c17c62840e | 33 | const char ModeSelection::CMD_MODE_MOTION_ALT= 'N'; |
gwappa | 9:e136394bdb39 | 34 | |
gwappa | 5:849446d19406 | 35 | ModeSelection::ModeSelection(const Mode& defaultValue): |
gwappa | 5:849446d19406 | 36 | value(defaultValue) { |
gwappa | 5:849446d19406 | 37 | config::addCommand(CMD_ID_MODE, this); |
gwappa | 5:849446d19406 | 38 | } |
gwappa | 5:849446d19406 | 39 | |
gwappa | 5:849446d19406 | 40 | ModeSelection::~ModeSelection() { |
gwappa | 5:849446d19406 | 41 | config::removeCommand(CMD_ID_MODE); |
gwappa | 5:849446d19406 | 42 | } |
gwappa | 1:871d3066c2ab | 43 | |
gwappa | 5:849446d19406 | 44 | bool ModeSelection::parse(const char& c) { |
gwappa | 5:849446d19406 | 45 | switch(c) { |
gwappa | 32:1416e015016c | 46 | case CMD_MODE_PAIR: value = Pair; return true; |
gwappa | 11:897ecd5413e0 | 47 | case CMD_MODE_REPORT: value = Report; return true; |
gwappa | 32:1416e015016c | 48 | case CMD_MODE_STAGE: value = Stage; return true; |
gwappa | 11:897ecd5413e0 | 49 | case CMD_MODE_ASSOCIATE: value = Associate; return true; |
gwappa | 11:897ecd5413e0 | 50 | case CMD_MODE_MOTION: value = Motion; return true; |
gwappa | 16:33c17c62840e | 51 | case CMD_MODE_MOTION_ALT: value = MotionAlt; return true; |
gwappa | 5:849446d19406 | 52 | default: |
gwappa | 5:849446d19406 | 53 | return false; |
gwappa | 5:849446d19406 | 54 | } |
gwappa | 5:849446d19406 | 55 | } |
gwappa | 5:849446d19406 | 56 | |
gwappa | 5:849446d19406 | 57 | bool ModeSelection::writeSettings() { |
gwappa | 5:849446d19406 | 58 | #define WRITE(CHR, VAL) if (value == (VAL)) { IO::write("[%c]",CHR); } else { IO::write("%c",CHR); } |
gwappa | 32:1416e015016c | 59 | WRITE(CMD_MODE_PAIR, Pair) |
gwappa | 11:897ecd5413e0 | 60 | WRITE(CMD_MODE_REPORT, Report) |
gwappa | 32:1416e015016c | 61 | WRITE(CMD_MODE_STAGE, Stage) |
gwappa | 11:897ecd5413e0 | 62 | WRITE(CMD_MODE_ASSOCIATE, Associate) |
gwappa | 11:897ecd5413e0 | 63 | WRITE(CMD_MODE_MOTION, Motion) |
gwappa | 16:33c17c62840e | 64 | WRITE(CMD_MODE_MOTION_ALT, MotionAlt) |
gwappa | 1:871d3066c2ab | 65 | #undef WRITE |
gwappa | 5:849446d19406 | 66 | return true; |
gwappa | 1:871d3066c2ab | 67 | } |
gwappa | 5:849446d19406 | 68 | |
gwappa | 5:849446d19406 | 69 | void ModeSelection::echoback() { |
gwappa | 5:849446d19406 | 70 | IO::write(IO::CONFIG_HEADER); |
gwappa | 5:849446d19406 | 71 | writeSettings(); |
gwappa | 6:13d180af7501 | 72 | IO::write("\r\n"); |
gwappa | 1:871d3066c2ab | 73 | } |
gwappa | 1:871d3066c2ab | 74 | |
gwappa | 5:849446d19406 | 75 | |
gwappa | 5:849446d19406 | 76 | void Task::testReward() { |
gwappa | 8:973dcd190672 | 77 | automaton::init<TestReward>(); |
gwappa | 8:973dcd190672 | 78 | automaton::run(); |
gwappa | 31:b320ca61a8c0 | 79 | IO::result("out"); |
gwappa | 5:849446d19406 | 80 | } |
gwappa | 30:5f975f572ffb | 81 | |
gwappa | 30:5f975f572ffb | 82 | void Task::clearTrialIndex() { |
gwappa | 30:5f975f572ffb | 83 | automaton::init<ClearTrialIndex>(); |
gwappa | 30:5f975f572ffb | 84 | automaton::run(); |
gwappa | 31:b320ca61a8c0 | 85 | IO::result("cleared"); |
gwappa | 30:5f975f572ffb | 86 | } |
gwappa | 5:849446d19406 | 87 | |
gwappa | 5:849446d19406 | 88 | void Task::runTrial() { |
gwappa | 8:973dcd190672 | 89 | automaton::init<Delay>(); |
gwappa | 5:849446d19406 | 90 | automaton::run(); |
gwappa | 5:849446d19406 | 91 | } |
gwappa | 5:849446d19406 | 92 | |
gwappa | 5:849446d19406 | 93 | void Task::parseFromSerial() { |
gwappa | 5:849446d19406 | 94 | config::handleSerial(); |
gwappa | 5:849446d19406 | 95 | } |
gwappa | 5:849446d19406 | 96 | |
gwappa | 5:849446d19406 | 97 | void Task::writeSettingsToSerial() { |
gwappa | 5:849446d19406 | 98 | config::writeSettingsToSerial(); |
gwappa | 5:849446d19406 | 99 | } |