fast-feedback virtual target task code on STM Nucleo

Dependencies:   mbed

Committer:
gwappa
Date:
Mon Jun 18 10:43:45 2018 +0000
Revision:
9:e136394bdb39
Parent:
8:973dcd190672
Child:
10:7c216d528c35
add WithCue mode in place of Pair

Who changed what in which revision?

UserRevisionLine numberNew 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 5:849446d19406 8 delay_min_ms(CHR_DELAY_MIN, 3000),
gwappa 5:849446d19406 9 delay_var_ms(CHR_DELAY_VAR, 3000),
gwappa 5:849446d19406 10 prep_dur_ms (CHR_PREP_DUR, 3000),
gwappa 5:849446d19406 11 cue_dur_ms (CHR_CUE_DUR, 3000),
gwappa 5:849446d19406 12 post_dur_ms (CHR_POST_DUR, 4000),
gwappa 5:849446d19406 13 reward_ms (CHR_REWARD_DUR,10),
gwappa 5:849446d19406 14 test_reward (CMD_TEST_REWARD, callback(this, &Task::testReward)),
gwappa 5:849446d19406 15 run (CMD_EXECUTE, callback(this, &Task::runTrial))
gwappa 1:871d3066c2ab 16 { }
gwappa 5:849446d19406 17
gwappa 9:e136394bdb39 18 const char ModeSelection::CMD_ID_MODE = '_';
gwappa 9:e136394bdb39 19 const char ModeSelection::CMD_MODE_PAIR = 'P';
gwappa 9:e136394bdb39 20 const char ModeSelection::CMD_MODE_WITHCUE = 'W';
gwappa 9:e136394bdb39 21 const char ModeSelection::CMD_MODE_REPORT = 'R';
gwappa 9:e136394bdb39 22 const char ModeSelection::CMD_MODE_APPEAR = 'A';
gwappa 9:e136394bdb39 23
gwappa 5:849446d19406 24 ModeSelection::ModeSelection(const Mode& defaultValue):
gwappa 5:849446d19406 25 value(defaultValue) {
gwappa 5:849446d19406 26 config::addCommand(CMD_ID_MODE, this);
gwappa 5:849446d19406 27 }
gwappa 5:849446d19406 28
gwappa 5:849446d19406 29 ModeSelection::~ModeSelection() {
gwappa 5:849446d19406 30 config::removeCommand(CMD_ID_MODE);
gwappa 5:849446d19406 31 }
gwappa 1:871d3066c2ab 32
gwappa 5:849446d19406 33 bool ModeSelection::parse(const char& c) {
gwappa 5:849446d19406 34 switch(c) {
gwappa 5:849446d19406 35 case CMD_MODE_PAIR: value = Pair; return true;
gwappa 9:e136394bdb39 36 case CMD_MODE_WITHCUE: value = WithCue; return true;
gwappa 5:849446d19406 37 case CMD_MODE_REPORT: value = Report; return true;
gwappa 5:849446d19406 38 case CMD_MODE_APPEAR: value = Appear; return true;
gwappa 5:849446d19406 39 default:
gwappa 5:849446d19406 40 return false;
gwappa 5:849446d19406 41 }
gwappa 5:849446d19406 42 }
gwappa 5:849446d19406 43
gwappa 5:849446d19406 44 bool ModeSelection::writeSettings() {
gwappa 5:849446d19406 45 #define WRITE(CHR, VAL) if (value == (VAL)) { IO::write("[%c]",CHR); } else { IO::write("%c",CHR); }
gwappa 1:871d3066c2ab 46 WRITE(CMD_MODE_PAIR, Pair)
gwappa 5:849446d19406 47 WRITE(CMD_MODE_REPORT, Report)
gwappa 1:871d3066c2ab 48 WRITE(CMD_MODE_APPEAR, Appear)
gwappa 1:871d3066c2ab 49 #undef WRITE
gwappa 5:849446d19406 50 return true;
gwappa 1:871d3066c2ab 51 }
gwappa 5:849446d19406 52
gwappa 5:849446d19406 53 void ModeSelection::echoback() {
gwappa 5:849446d19406 54 IO::write(IO::CONFIG_HEADER);
gwappa 5:849446d19406 55 writeSettings();
gwappa 6:13d180af7501 56 IO::write("\r\n");
gwappa 1:871d3066c2ab 57 }
gwappa 1:871d3066c2ab 58
gwappa 5:849446d19406 59
gwappa 5:849446d19406 60 void Task::testReward() {
gwappa 8:973dcd190672 61 automaton::init<TestReward>();
gwappa 8:973dcd190672 62 automaton::run();
gwappa 8:973dcd190672 63 IO::result("reward");
gwappa 5:849446d19406 64 }
gwappa 5:849446d19406 65
gwappa 5:849446d19406 66 void Task::runTrial() {
gwappa 8:973dcd190672 67 automaton::init<Delay>();
gwappa 5:849446d19406 68 automaton::run();
gwappa 5:849446d19406 69 }
gwappa 5:849446d19406 70
gwappa 5:849446d19406 71 void Task::parseFromSerial() {
gwappa 5:849446d19406 72 config::handleSerial();
gwappa 5:849446d19406 73 }
gwappa 5:849446d19406 74
gwappa 5:849446d19406 75 void Task::writeSettingsToSerial() {
gwappa 5:849446d19406 76 config::writeSettingsToSerial();
gwappa 5:849446d19406 77 }