fork of StateScript

Dependencies:   mbed SOMO_II

Fork of stateScript_v2 by Mattias Karlsson

Committer:
alustig3
Date:
Fri Apr 28 14:47:55 2017 +0000
Revision:
10:f65649c13b5b
Parent:
7:5fe7329751d4
Code is now compatible with FRDM-K64F.; Replaced SMARTWAV with SOMO-II

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>
alustig3 10:f65649c13b5b 7 #include "SOMO.h"
mkarlsso 0:8dbd6bd9167f 8 #include <string.h>
mkarlsso 0:8dbd6bd9167f 9 #include <string>
mkarlsso 0:8dbd6bd9167f 10 #include <vector>
mkarlsso 0:8dbd6bd9167f 11 #include <queue>
mkarlsso 0:8dbd6bd9167f 12 #include <sstream>
mkarlsso 0:8dbd6bd9167f 13
mkarlsso 0:8dbd6bd9167f 14
mkarlsso 0:8dbd6bd9167f 15 //#define MBED_RF
mkarlsso 0:8dbd6bd9167f 16
alustig3 10:f65649c13b5b 17 //Define which mbed board
alustig3 10:f65649c13b5b 18 #define LPC1768
alustig3 10:f65649c13b5b 19 //#define K64
mkarlsso 0:8dbd6bd9167f 20
alustig3 10:f65649c13b5b 21
alustig3 10:f65649c13b5b 22 //the number of ports available on this hardware
mkarlsso 7:5fe7329751d4 23 #define NUMDIGINPORTS 8
mkarlsso 7:5fe7329751d4 24 #define NUMDIGOUTPORTS 8
mkarlsso 7:5fe7329751d4 25 #define NUMANINPORTS 1
mkarlsso 7:5fe7329751d4 26 #define NUMANOUTPORTS 1
mkarlsso 0:8dbd6bd9167f 27
mkarlsso 3:d7b0a0890d96 28 #define NUMEVENTS 50
mkarlsso 3:d7b0a0890d96 29 #define NUMCONDITIONS 150
mkarlsso 3:d7b0a0890d96 30 #define NUMINTCOMPARE 150
mkarlsso 3:d7b0a0890d96 31 #define NUMACTIONS 150
mkarlsso 3:d7b0a0890d96 32 #define NUMPORTMESSAGES 150
mkarlsso 3:d7b0a0890d96 33 #define NUMINTOPERATIONS 150
mkarlsso 3:d7b0a0890d96 34 #define NUMDISPLAYACTIONS 30
mkarlsso 3:d7b0a0890d96 35 #define NUMTRIGGERACTIONS 30
mkarlsso 3:d7b0a0890d96 36 #define NUMFUNCTIONS 50
mkarlsso 3:d7b0a0890d96 37 #define INPUTCHARBUFFERSIZE 3072
mkarlsso 3:d7b0a0890d96 38
mkarlsso 0:8dbd6bd9167f 39
mkarlsso 0:8dbd6bd9167f 40
mkarlsso 0:8dbd6bd9167f 41 /*
mkarlsso 0:8dbd6bd9167f 42 class MBEDTimer : public sTimer
mkarlsso 0:8dbd6bd9167f 43 {
mkarlsso 0:8dbd6bd9167f 44 public:
mkarlsso 0:8dbd6bd9167f 45 sTimer();
mkarlsso 0:8dbd6bd9167f 46 virtual void init() = 0;
mkarlsso 0:8dbd6bd9167f 47 virtual void timeout_callback() = 0;
mkarlsso 0:8dbd6bd9167f 48
mkarlsso 0:8dbd6bd9167f 49 };
mkarlsso 0:8dbd6bd9167f 50
mkarlsso 0:8dbd6bd9167f 51 class MBEDExternalSync : public sExternalSync
mkarlsso 0:8dbd6bd9167f 52 {
mkarlsso 0:8dbd6bd9167f 53 public:
mkarlsso 0:8dbd6bd9167f 54 MBEDExternalSync();
mkarlsso 0:8dbd6bd9167f 55 void init();
mkarlsso 0:8dbd6bd9167f 56 void interrupt_callback();
mkarlsso 0:8dbd6bd9167f 57 void reset_callback();
mkarlsso 0:8dbd6bd9167f 58
mkarlsso 0:8dbd6bd9167f 59 };*/
mkarlsso 0:8dbd6bd9167f 60
mkarlsso 7:5fe7329751d4 61 class MBEDAnalogOut : public sAnalogOut
mkarlsso 7:5fe7329751d4 62 {
mkarlsso 7:5fe7329751d4 63 public:
mkarlsso 7:5fe7329751d4 64 MBEDAnalogOut();
mkarlsso 0:8dbd6bd9167f 65
mkarlsso 7:5fe7329751d4 66 void init(int pin);
mkarlsso 7:5fe7329751d4 67 void write(int value);
mkarlsso 7:5fe7329751d4 68 int read();
mkarlsso 7:5fe7329751d4 69
mkarlsso 7:5fe7329751d4 70 private:
mkarlsso 7:5fe7329751d4 71 //define the hardware output pin
mkarlsso 7:5fe7329751d4 72 uint8_t pinNumber;
mkarlsso 7:5fe7329751d4 73 AnalogOut *outpin;
mkarlsso 7:5fe7329751d4 74 bool pinExists;
mkarlsso 7:5fe7329751d4 75
mkarlsso 7:5fe7329751d4 76 };
mkarlsso 7:5fe7329751d4 77
mkarlsso 7:5fe7329751d4 78 class MBEDAnalogIn : public sAnalogIn
mkarlsso 7:5fe7329751d4 79 {
mkarlsso 7:5fe7329751d4 80 public:
mkarlsso 7:5fe7329751d4 81 MBEDAnalogIn();
mkarlsso 7:5fe7329751d4 82
mkarlsso 7:5fe7329751d4 83 void init(int pin);
mkarlsso 7:5fe7329751d4 84 int read();
mkarlsso 7:5fe7329751d4 85
mkarlsso 7:5fe7329751d4 86 protected:
mkarlsso 7:5fe7329751d4 87
mkarlsso 7:5fe7329751d4 88 private:
mkarlsso 7:5fe7329751d4 89 uint8_t pinNumber;
mkarlsso 7:5fe7329751d4 90 AnalogIn *inpin;
mkarlsso 7:5fe7329751d4 91 bool pinExists;
mkarlsso 7:5fe7329751d4 92
mkarlsso 7:5fe7329751d4 93
mkarlsso 7:5fe7329751d4 94 };
mkarlsso 0:8dbd6bd9167f 95
mkarlsso 0:8dbd6bd9167f 96 class MBEDDigitalOut : public sDigitalOut
mkarlsso 0:8dbd6bd9167f 97 {
mkarlsso 0:8dbd6bd9167f 98 public:
mkarlsso 0:8dbd6bd9167f 99 MBEDDigitalOut();
mkarlsso 0:8dbd6bd9167f 100
mkarlsso 0:8dbd6bd9167f 101 void init(int pin);
mkarlsso 0:8dbd6bd9167f 102 void write(int value);
mkarlsso 0:8dbd6bd9167f 103 int read();
mkarlsso 0:8dbd6bd9167f 104
mkarlsso 0:8dbd6bd9167f 105 private:
mkarlsso 0:8dbd6bd9167f 106 DigitalOut *outpin;
mkarlsso 4:abee20c0bf2a 107 bool pinExists;
mkarlsso 0:8dbd6bd9167f 108
mkarlsso 0:8dbd6bd9167f 109 };
mkarlsso 0:8dbd6bd9167f 110
mkarlsso 0:8dbd6bd9167f 111 class MBEDDigitalIn : public sDigitalIn
mkarlsso 0:8dbd6bd9167f 112 {
mkarlsso 0:8dbd6bd9167f 113 public:
mkarlsso 0:8dbd6bd9167f 114 MBEDDigitalIn();
mkarlsso 0:8dbd6bd9167f 115
mkarlsso 0:8dbd6bd9167f 116 void init(int pin);
mkarlsso 0:8dbd6bd9167f 117 int read();
mkarlsso 0:8dbd6bd9167f 118 void interrupt_up_callback();
mkarlsso 0:8dbd6bd9167f 119 void interrupt_down_callback();
mkarlsso 0:8dbd6bd9167f 120 protected:
mkarlsso 3:d7b0a0890d96 121
mkarlsso 3:d7b0a0890d96 122
mkarlsso 0:8dbd6bd9167f 123
mkarlsso 0:8dbd6bd9167f 124 private:
mkarlsso 0:8dbd6bd9167f 125 DigitalIn *inpin;
mkarlsso 0:8dbd6bd9167f 126 InterruptIn *inpin_interrupt;
mkarlsso 4:abee20c0bf2a 127 bool pinExists;
mkarlsso 0:8dbd6bd9167f 128
mkarlsso 0:8dbd6bd9167f 129 };
mkarlsso 0:8dbd6bd9167f 130
mkarlsso 0:8dbd6bd9167f 131 class MBEDSerialPort : public sSerialPort
mkarlsso 0:8dbd6bd9167f 132 {
mkarlsso 0:8dbd6bd9167f 133 public:
mkarlsso 0:8dbd6bd9167f 134 MBEDSerialPort();
mkarlsso 0:8dbd6bd9167f 135
mkarlsso 0:8dbd6bd9167f 136 void init();
mkarlsso 0:8dbd6bd9167f 137 bool readable();
mkarlsso 0:8dbd6bd9167f 138 char readChar();
mkarlsso 0:8dbd6bd9167f 139 void writeChar(char s);
mkarlsso 3:d7b0a0890d96 140 int requestToWriteString(char *s, int numBytes);
mkarlsso 0:8dbd6bd9167f 141 Serial *serialToPC;
mkarlsso 0:8dbd6bd9167f 142
mkarlsso 0:8dbd6bd9167f 143 private:
mkarlsso 0:8dbd6bd9167f 144 //Serial communication
mkarlsso 3:d7b0a0890d96 145
mkarlsso 0:8dbd6bd9167f 146
mkarlsso 0:8dbd6bd9167f 147 };
mkarlsso 0:8dbd6bd9167f 148
mkarlsso 0:8dbd6bd9167f 149 class MBEDSound: public sSound
mkarlsso 0:8dbd6bd9167f 150 {
mkarlsso 0:8dbd6bd9167f 151 public:
mkarlsso 0:8dbd6bd9167f 152 MBEDSound();
mkarlsso 0:8dbd6bd9167f 153 void execute();
mkarlsso 0:8dbd6bd9167f 154
mkarlsso 0:8dbd6bd9167f 155 private:
mkarlsso 0:8dbd6bd9167f 156
mkarlsso 0:8dbd6bd9167f 157 };
mkarlsso 0:8dbd6bd9167f 158
mkarlsso 0:8dbd6bd9167f 159 class MBEDSystem: public sSystem
mkarlsso 0:8dbd6bd9167f 160 {
mkarlsso 0:8dbd6bd9167f 161 public:
mkarlsso 0:8dbd6bd9167f 162 MBEDSystem();
mkarlsso 0:8dbd6bd9167f 163 void timerinit();
mkarlsso 0:8dbd6bd9167f 164 void setStandAloneClock();
mkarlsso 0:8dbd6bd9167f 165 void setSlaveClock();
mkarlsso 0:8dbd6bd9167f 166 sDigitalOut* getDigitalOutPtr(int portNum);
mkarlsso 0:8dbd6bd9167f 167 sDigitalIn* getDigitalInPtr(int portNum);
mkarlsso 7:5fe7329751d4 168 sAnalogOut* getAnalogOutPtr(int portNum);
mkarlsso 7:5fe7329751d4 169 sAnalogIn* getAnalogInPtr(int portNum);
mkarlsso 0:8dbd6bd9167f 170 sSound* createNewSoundAction();
mkarlsso 3:d7b0a0890d96 171 void pauseInterrupts();
mkarlsso 3:d7b0a0890d96 172 void resumeInterrupts();
mkarlsso 0:8dbd6bd9167f 173 void incrementClock();
mkarlsso 0:8dbd6bd9167f 174 void externalClockReset(); //needs to reset harware timer before calling immediateClockReset();
mkarlsso 0:8dbd6bd9167f 175 void mainLoopToDo();
alustig3 10:f65649c13b5b 176 void tick();
mkarlsso 3:d7b0a0890d96 177
mkarlsso 0:8dbd6bd9167f 178 protected:
mkarlsso 3:d7b0a0890d96 179
mkarlsso 0:8dbd6bd9167f 180 //Pins for clock syncing
mkarlsso 0:8dbd6bd9167f 181 InterruptIn clockResetInt;
mkarlsso 0:8dbd6bd9167f 182 InterruptIn clockExternalIncrement;
mkarlsso 3:d7b0a0890d96 183
mkarlsso 0:8dbd6bd9167f 184 private:
mkarlsso 7:5fe7329751d4 185 MBEDDigitalIn dIn[NUMDIGINPORTS];
mkarlsso 7:5fe7329751d4 186 MBEDDigitalOut dOut[NUMDIGOUTPORTS];
mkarlsso 7:5fe7329751d4 187 MBEDAnalogIn aIn[NUMANINPORTS];
mkarlsso 7:5fe7329751d4 188 MBEDAnalogOut aOut[NUMANOUTPORTS];
mkarlsso 0:8dbd6bd9167f 189 };
mkarlsso 0:8dbd6bd9167f 190
mkarlsso 0:8dbd6bd9167f 191 #endif // MBEDINTERFACE_H