Karpova Lab fork of stateScript

Dependencies:   SMARTWAV SOMO_II mbed

Fork of stateScript_v2_karpova by Andy Lustig

Committer:
alustig3
Date:
Thu Jan 28 16:47:32 2016 +0000
Revision:
9:f15ad8d18881
Parent:
8:436cf2ab961c
Added pin designations for Karpova Lab's Ephys module 1.2 and Max module 1.1.; Code is now compatible with SOMO II sound module.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mkarlsso 0:8dbd6bd9167f 1 #ifndef MBEDINTERFACE_H
mkarlsso 0:8dbd6bd9167f 2 #define MBEDINTERFACE_H
mkarlsso 0:8dbd6bd9167f 3
mkarlsso 0:8dbd6bd9167f 4 #include "hardwareInterface.h"
mkarlsso 0:8dbd6bd9167f 5 #include "mbed.h"
mkarlsso 0:8dbd6bd9167f 6 #include <stdint.h>
mkarlsso 0:8dbd6bd9167f 7 #include "SMARTWAV.h"
alustig3 9:f15ad8d18881 8 #include "SOMO.h"
mkarlsso 0:8dbd6bd9167f 9 #include <string.h>
mkarlsso 0:8dbd6bd9167f 10 #include <string>
mkarlsso 0:8dbd6bd9167f 11 #include <vector>
mkarlsso 0:8dbd6bd9167f 12 #include <queue>
mkarlsso 0:8dbd6bd9167f 13 #include <sstream>
mkarlsso 0:8dbd6bd9167f 14
mkarlsso 0:8dbd6bd9167f 15
mkarlsso 0:8dbd6bd9167f 16 //#define MBED_RF
mkarlsso 0:8dbd6bd9167f 17
mkarlsso 0:8dbd6bd9167f 18
alustig3 8:436cf2ab961c 19 #define NUMPORTS 9 //the number of ports available on this hardware
mkarlsso 5:abee20c0bf2a 20 #define NUMINPORTS 9
alustig3 8:436cf2ab961c 21 #define NUMOUTPORTS 9
mkarlsso 0:8dbd6bd9167f 22
mkarlsso 3:d7b0a0890d96 23 #define NUMEVENTS 50
mkarlsso 3:d7b0a0890d96 24 #define NUMCONDITIONS 150
mkarlsso 3:d7b0a0890d96 25 #define NUMINTCOMPARE 150
mkarlsso 3:d7b0a0890d96 26 #define NUMACTIONS 150
mkarlsso 3:d7b0a0890d96 27 #define NUMPORTMESSAGES 150
mkarlsso 3:d7b0a0890d96 28 #define NUMINTOPERATIONS 150
mkarlsso 3:d7b0a0890d96 29 #define NUMDISPLAYACTIONS 30
mkarlsso 3:d7b0a0890d96 30 #define NUMTRIGGERACTIONS 30
mkarlsso 3:d7b0a0890d96 31 #define NUMFUNCTIONS 50
mkarlsso 3:d7b0a0890d96 32 #define INPUTCHARBUFFERSIZE 3072
mkarlsso 3:d7b0a0890d96 33
mkarlsso 0:8dbd6bd9167f 34
mkarlsso 0:8dbd6bd9167f 35
mkarlsso 0:8dbd6bd9167f 36 /*
mkarlsso 0:8dbd6bd9167f 37 class MBEDTimer : public sTimer
mkarlsso 0:8dbd6bd9167f 38 {
mkarlsso 0:8dbd6bd9167f 39 public:
mkarlsso 0:8dbd6bd9167f 40 sTimer();
mkarlsso 0:8dbd6bd9167f 41 virtual void init() = 0;
mkarlsso 0:8dbd6bd9167f 42 virtual void timeout_callback() = 0;
mkarlsso 0:8dbd6bd9167f 43
mkarlsso 0:8dbd6bd9167f 44 };
mkarlsso 0:8dbd6bd9167f 45
mkarlsso 0:8dbd6bd9167f 46 class MBEDExternalSync : public sExternalSync
mkarlsso 0:8dbd6bd9167f 47 {
mkarlsso 0:8dbd6bd9167f 48 public:
mkarlsso 0:8dbd6bd9167f 49 MBEDExternalSync();
mkarlsso 0:8dbd6bd9167f 50 void init();
mkarlsso 0:8dbd6bd9167f 51 void interrupt_callback();
mkarlsso 0:8dbd6bd9167f 52 void reset_callback();
mkarlsso 0:8dbd6bd9167f 53
mkarlsso 0:8dbd6bd9167f 54 };*/
mkarlsso 0:8dbd6bd9167f 55
mkarlsso 0:8dbd6bd9167f 56
mkarlsso 0:8dbd6bd9167f 57
mkarlsso 0:8dbd6bd9167f 58 class MBEDDigitalOut : public sDigitalOut
mkarlsso 0:8dbd6bd9167f 59 {
mkarlsso 0:8dbd6bd9167f 60 public:
mkarlsso 0:8dbd6bd9167f 61 MBEDDigitalOut();
mkarlsso 0:8dbd6bd9167f 62
mkarlsso 0:8dbd6bd9167f 63 void init(int pin);
mkarlsso 0:8dbd6bd9167f 64 void write(int value);
mkarlsso 0:8dbd6bd9167f 65 int read();
mkarlsso 0:8dbd6bd9167f 66
mkarlsso 0:8dbd6bd9167f 67 private:
mkarlsso 0:8dbd6bd9167f 68 DigitalOut *outpin;
mkarlsso 5:abee20c0bf2a 69 bool pinExists;
mkarlsso 0:8dbd6bd9167f 70
mkarlsso 0:8dbd6bd9167f 71 };
mkarlsso 0:8dbd6bd9167f 72
mkarlsso 0:8dbd6bd9167f 73 class MBEDDigitalIn : public sDigitalIn
mkarlsso 0:8dbd6bd9167f 74 {
mkarlsso 0:8dbd6bd9167f 75 public:
mkarlsso 0:8dbd6bd9167f 76 MBEDDigitalIn();
mkarlsso 0:8dbd6bd9167f 77
mkarlsso 0:8dbd6bd9167f 78 void init(int pin);
mkarlsso 0:8dbd6bd9167f 79 int read();
mkarlsso 0:8dbd6bd9167f 80 void interrupt_up_callback();
mkarlsso 0:8dbd6bd9167f 81 void interrupt_down_callback();
mkarlsso 0:8dbd6bd9167f 82 protected:
mkarlsso 3:d7b0a0890d96 83
mkarlsso 3:d7b0a0890d96 84
mkarlsso 0:8dbd6bd9167f 85
mkarlsso 0:8dbd6bd9167f 86 private:
mkarlsso 0:8dbd6bd9167f 87 DigitalIn *inpin;
mkarlsso 0:8dbd6bd9167f 88 InterruptIn *inpin_interrupt;
mkarlsso 5:abee20c0bf2a 89 bool pinExists;
mkarlsso 0:8dbd6bd9167f 90
mkarlsso 0:8dbd6bd9167f 91 };
mkarlsso 0:8dbd6bd9167f 92
mkarlsso 0:8dbd6bd9167f 93 class MBEDSerialPort : public sSerialPort
mkarlsso 0:8dbd6bd9167f 94 {
mkarlsso 0:8dbd6bd9167f 95 public:
mkarlsso 0:8dbd6bd9167f 96 MBEDSerialPort();
mkarlsso 0:8dbd6bd9167f 97
mkarlsso 0:8dbd6bd9167f 98 void init();
mkarlsso 0:8dbd6bd9167f 99 bool readable();
mkarlsso 0:8dbd6bd9167f 100 char readChar();
mkarlsso 0:8dbd6bd9167f 101 void writeChar(char s);
mkarlsso 3:d7b0a0890d96 102 int requestToWriteString(char *s, int numBytes);
mkarlsso 0:8dbd6bd9167f 103 Serial *serialToPC;
mkarlsso 0:8dbd6bd9167f 104
mkarlsso 0:8dbd6bd9167f 105 private:
mkarlsso 0:8dbd6bd9167f 106 //Serial communication
mkarlsso 3:d7b0a0890d96 107
mkarlsso 0:8dbd6bd9167f 108
mkarlsso 0:8dbd6bd9167f 109 };
mkarlsso 0:8dbd6bd9167f 110
mkarlsso 0:8dbd6bd9167f 111 class MBEDSound: public sSound
mkarlsso 0:8dbd6bd9167f 112 {
mkarlsso 0:8dbd6bd9167f 113 public:
mkarlsso 0:8dbd6bd9167f 114 MBEDSound();
mkarlsso 0:8dbd6bd9167f 115 void execute();
mkarlsso 0:8dbd6bd9167f 116
mkarlsso 0:8dbd6bd9167f 117 private:
mkarlsso 0:8dbd6bd9167f 118
mkarlsso 0:8dbd6bd9167f 119 };
mkarlsso 0:8dbd6bd9167f 120
mkarlsso 0:8dbd6bd9167f 121 class MBEDSystem: public sSystem
mkarlsso 0:8dbd6bd9167f 122 {
mkarlsso 0:8dbd6bd9167f 123 public:
mkarlsso 0:8dbd6bd9167f 124 MBEDSystem();
mkarlsso 0:8dbd6bd9167f 125 void timerinit();
mkarlsso 0:8dbd6bd9167f 126 void setStandAloneClock();
mkarlsso 0:8dbd6bd9167f 127 void setSlaveClock();
mkarlsso 0:8dbd6bd9167f 128 sDigitalOut* getDigitalOutPtr(int portNum);
mkarlsso 0:8dbd6bd9167f 129 sDigitalIn* getDigitalInPtr(int portNum);
mkarlsso 0:8dbd6bd9167f 130 sSound* createNewSoundAction();
mkarlsso 3:d7b0a0890d96 131 void pauseInterrupts();
mkarlsso 3:d7b0a0890d96 132 void resumeInterrupts();
mkarlsso 0:8dbd6bd9167f 133 void incrementClock();
mkarlsso 0:8dbd6bd9167f 134 void externalClockReset(); //needs to reset harware timer before calling immediateClockReset();
mkarlsso 0:8dbd6bd9167f 135 void mainLoopToDo();
mkarlsso 3:d7b0a0890d96 136
mkarlsso 0:8dbd6bd9167f 137 protected:
mkarlsso 3:d7b0a0890d96 138
mkarlsso 0:8dbd6bd9167f 139 //Pins for clock syncing
mkarlsso 0:8dbd6bd9167f 140 InterruptIn clockResetInt;
mkarlsso 0:8dbd6bd9167f 141 InterruptIn clockExternalIncrement;
mkarlsso 3:d7b0a0890d96 142
mkarlsso 0:8dbd6bd9167f 143 private:
mkarlsso 0:8dbd6bd9167f 144 MBEDDigitalIn dIn[NUMPORTS];
mkarlsso 0:8dbd6bd9167f 145 MBEDDigitalOut dOut[NUMPORTS];
mkarlsso 0:8dbd6bd9167f 146 };
mkarlsso 0:8dbd6bd9167f 147
mkarlsso 0:8dbd6bd9167f 148 #endif // MBEDINTERFACE_H