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:
5:849446d19406
Child:
11:897ecd5413e0
add WithCue mode in place of Pair

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gwappa 1:871d3066c2ab 1 #ifndef TASK_H_
gwappa 1:871d3066c2ab 2 #define TASK_H_
gwappa 1:871d3066c2ab 3
gwappa 1:871d3066c2ab 4 #include "mbed.h"
gwappa 5:849446d19406 5 #include "config.h"
gwappa 1:871d3066c2ab 6
gwappa 1:871d3066c2ab 7 /*
gwappa 1:871d3066c2ab 8 * command characters
gwappa 1:871d3066c2ab 9 */
gwappa 9:e136394bdb39 10
gwappa 1:871d3066c2ab 11 #define CMD_TEST_REWARD 'T'
gwappa 1:871d3066c2ab 12 #define CMD_EXECUTE 'x'
gwappa 1:871d3066c2ab 13
gwappa 1:871d3066c2ab 14 #define CHR_DELAY_MIN 'm'
gwappa 1:871d3066c2ab 15 #define CHR_DELAY_VAR 'v'
gwappa 1:871d3066c2ab 16 #define CHR_PREP_DUR 'p'
gwappa 1:871d3066c2ab 17 #define CHR_CUE_DUR 'c'
gwappa 1:871d3066c2ab 18 #define CHR_POST_DUR 'n'
gwappa 1:871d3066c2ab 19 #define CHR_REWARD_DUR 'r'
gwappa 1:871d3066c2ab 20
gwappa 1:871d3066c2ab 21 enum Mode {
gwappa 1:871d3066c2ab 22 Pair,
gwappa 9:e136394bdb39 23 WithCue,
gwappa 4:fcf597f82632 24 Report,
gwappa 1:871d3066c2ab 25 Appear
gwappa 1:871d3066c2ab 26 };
gwappa 1:871d3066c2ab 27
gwappa 5:849446d19406 28 struct ModeSelection: public config::CommandResponder
gwappa 5:849446d19406 29 {
gwappa 9:e136394bdb39 30 static const char CMD_ID_MODE;
gwappa 9:e136394bdb39 31 static const char CMD_MODE_PAIR;
gwappa 9:e136394bdb39 32 static const char CMD_MODE_WITHCUE;
gwappa 9:e136394bdb39 33 static const char CMD_MODE_REPORT;
gwappa 9:e136394bdb39 34 static const char CMD_MODE_APPEAR;
gwappa 9:e136394bdb39 35
gwappa 5:849446d19406 36 ModeSelection(); // not allowed
gwappa 5:849446d19406 37
gwappa 5:849446d19406 38 explicit ModeSelection(const Mode& defaultValue);
gwappa 1:871d3066c2ab 39
gwappa 5:849446d19406 40 virtual ~ModeSelection();
gwappa 5:849446d19406 41
gwappa 5:849446d19406 42 virtual bool parse(const char& c);
gwappa 5:849446d19406 43
gwappa 5:849446d19406 44 virtual bool writeSettings();
gwappa 1:871d3066c2ab 45
gwappa 5:849446d19406 46 virtual void echoback();
gwappa 5:849446d19406 47
gwappa 5:849446d19406 48 Mode value;
gwappa 5:849446d19406 49 };
gwappa 5:849446d19406 50
gwappa 5:849446d19406 51 struct Task {
gwappa 5:849446d19406 52 ModeSelection mode; // the trial mode.
gwappa 5:849446d19406 53
gwappa 5:849446d19406 54 Property<uint16_t> delay_min_ms; // the minimum duration for the delay.
gwappa 5:849446d19406 55
gwappa 5:849446d19406 56 Property<uint16_t> delay_var_ms; // the average for the (exponential) variable
gwappa 5:849446d19406 57 // duration of the delay.
gwappa 1:871d3066c2ab 58
gwappa 5:849446d19406 59 Property<uint16_t> prep_dur_ms; // the duration of the "preparatory period",
gwappa 1:871d3066c2ab 60 // during which licking is not allowed.
gwappa 1:871d3066c2ab 61
gwappa 5:849446d19406 62 Property<uint16_t> cue_dur_ms; // the cue duration.
gwappa 5:849446d19406 63
gwappa 5:849446d19406 64 Property<uint16_t> post_dur_ms; // the post-reward recording duration.
gwappa 1:871d3066c2ab 65
gwappa 5:849446d19406 66 Property<uint16_t> reward_ms; // the duration of reward.
gwappa 1:871d3066c2ab 67
gwappa 5:849446d19406 68 Action test_reward;
gwappa 5:849446d19406 69
gwappa 5:849446d19406 70 Action run;
gwappa 1:871d3066c2ab 71
gwappa 1:871d3066c2ab 72 explicit Task(const Mode& mode=Pair);
gwappa 1:871d3066c2ab 73
gwappa 1:871d3066c2ab 74 void parseFromSerial();
gwappa 1:871d3066c2ab 75
gwappa 1:871d3066c2ab 76 private:
gwappa 5:849446d19406 77 void testReward();
gwappa 5:849446d19406 78 void runTrial();
gwappa 1:871d3066c2ab 79 void writeSettingsToSerial();
gwappa 1:871d3066c2ab 80 };
gwappa 1:871d3066c2ab 81 #endif