fast-feedback virtual target task code on STM Nucleo

Dependencies:   mbed

Committer:
gwappa
Date:
Mon Jun 25 17:43:40 2018 +0000
Revision:
15:20f7f737c256
Parent:
14:af3adf5d5ddf
Child:
16:33c17c62840e
fix weird behavior and validate visual stim duration

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 11:897ecd5413e0 11 #define CMD_TEST_REWARD 'T'
gwappa 11:897ecd5413e0 12 #define CMD_EXECUTE 'X'
gwappa 1:871d3066c2ab 13
gwappa 11:897ecd5413e0 14 #define CHR_DELAY_MIN 'm'
gwappa 11:897ecd5413e0 15 #define CHR_DELAY_VAR 'd'
gwappa 11:897ecd5413e0 16 #define CHR_PREP_DUR 'p'
gwappa 11:897ecd5413e0 17 #define CHR_AUD_DUR 'a'
gwappa 11:897ecd5413e0 18 #define CHR_AUD_FREQ 'f'
gwappa 13:8ea85a33e37a 19 #define CHR_RESP_DUR 'y'
gwappa 11:897ecd5413e0 20 #define CHR_POST_DUR 'n'
gwappa 11:897ecd5413e0 21 #define CHR_REWARD_DUR 'r'
gwappa 15:20f7f737c256 22 #define CHR_PRE_MIN 'o'
gwappa 14:af3adf5d5ddf 23 #define CHR_VIS_MIN 'j'
gwappa 14:af3adf5d5ddf 24 #define CHR_VIS_AVG 'v'
gwappa 13:8ea85a33e37a 25 #define CHR_VIS_FAIL 'q'
gwappa 1:871d3066c2ab 26
gwappa 1:871d3066c2ab 27 enum Mode {
gwappa 1:871d3066c2ab 28 Pair,
gwappa 4:fcf597f82632 29 Report,
gwappa 11:897ecd5413e0 30 Associate,
gwappa 11:897ecd5413e0 31 Motion
gwappa 1:871d3066c2ab 32 };
gwappa 1:871d3066c2ab 33
gwappa 5:849446d19406 34 struct ModeSelection: public config::CommandResponder
gwappa 5:849446d19406 35 {
gwappa 9:e136394bdb39 36 static const char CMD_ID_MODE;
gwappa 9:e136394bdb39 37 static const char CMD_MODE_PAIR;
gwappa 9:e136394bdb39 38 static const char CMD_MODE_REPORT;
gwappa 11:897ecd5413e0 39 static const char CMD_MODE_ASSOCIATE;
gwappa 11:897ecd5413e0 40 static const char CMD_MODE_MOTION;
gwappa 9:e136394bdb39 41
gwappa 5:849446d19406 42 ModeSelection(); // not allowed
gwappa 5:849446d19406 43
gwappa 5:849446d19406 44 explicit ModeSelection(const Mode& defaultValue);
gwappa 1:871d3066c2ab 45
gwappa 5:849446d19406 46 virtual ~ModeSelection();
gwappa 5:849446d19406 47
gwappa 5:849446d19406 48 virtual bool parse(const char& c);
gwappa 5:849446d19406 49
gwappa 5:849446d19406 50 virtual bool writeSettings();
gwappa 1:871d3066c2ab 51
gwappa 5:849446d19406 52 virtual void echoback();
gwappa 5:849446d19406 53
gwappa 5:849446d19406 54 Mode value;
gwappa 5:849446d19406 55 };
gwappa 5:849446d19406 56
gwappa 5:849446d19406 57 struct Task {
gwappa 5:849446d19406 58 ModeSelection mode; // the trial mode.
gwappa 5:849446d19406 59
gwappa 5:849446d19406 60 Property<uint16_t> delay_min_ms; // the minimum duration for the delay.
gwappa 5:849446d19406 61
gwappa 5:849446d19406 62 Property<uint16_t> delay_var_ms; // the average for the (exponential) variable
gwappa 5:849446d19406 63 // duration of the delay.
gwappa 1:871d3066c2ab 64
gwappa 5:849446d19406 65 Property<uint16_t> prep_dur_ms; // the duration of the "preparatory period",
gwappa 1:871d3066c2ab 66 // during which licking is not allowed.
gwappa 1:871d3066c2ab 67
gwappa 11:897ecd5413e0 68 Property<uint16_t> aud_dur_ms; // the auditory cue duration.
gwappa 11:897ecd5413e0 69
gwappa 11:897ecd5413e0 70 Property<uint16_t> aud_tick_hz; // the frequency of auditory cue flickering.
gwappa 5:849446d19406 71
gwappa 13:8ea85a33e37a 72 Property<uint16_t> resp_dur_ms; // the size of the minimal 'response window' for the passive paradigms.
gwappa 13:8ea85a33e37a 73
gwappa 5:849446d19406 74 Property<uint16_t> post_dur_ms; // the post-reward recording duration.
gwappa 1:871d3066c2ab 75
gwappa 5:849446d19406 76 Property<uint16_t> reward_ms; // the duration of reward.
gwappa 1:871d3066c2ab 77
gwappa 15:20f7f737c256 78 Property<uint16_t> pre_min_ms; // the minimum onset for the (passive) visual cue.
gwappa 15:20f7f737c256 79
gwappa 11:897ecd5413e0 80 Property<uint16_t> vis_min_ms; // the minimum duration for the (passive) visual cue.
gwappa 11:897ecd5413e0 81
gwappa 14:af3adf5d5ddf 82 Property<uint16_t> vis_avg_ms; // the average duration for the (passive) visual cue.
gwappa 14:af3adf5d5ddf 83
gwappa 13:8ea85a33e37a 84 Property<uint16_t> vis_fail_perc; // the 'failure rate' of the (passive) visual cue.
gwappa 11:897ecd5413e0 85
gwappa 5:849446d19406 86 Action test_reward;
gwappa 5:849446d19406 87
gwappa 5:849446d19406 88 Action run;
gwappa 1:871d3066c2ab 89
gwappa 1:871d3066c2ab 90 explicit Task(const Mode& mode=Pair);
gwappa 1:871d3066c2ab 91
gwappa 1:871d3066c2ab 92 void parseFromSerial();
gwappa 1:871d3066c2ab 93
gwappa 1:871d3066c2ab 94 private:
gwappa 5:849446d19406 95 void testReward();
gwappa 5:849446d19406 96 void runTrial();
gwappa 1:871d3066c2ab 97 void writeSettingsToSerial();
gwappa 1:871d3066c2ab 98 };
gwappa 1:871d3066c2ab 99 #endif