fuck this

Dependencies:   BMP280

Committer:
mwthewsey
Date:
Tue Jan 09 08:57:57 2018 +0000
Revision:
12:03589f1d5c30
Parent:
10:261f2b69c4c7
Child:
19:40c721f01ed2
Sampling,LCD,Serial, SD working. Stability problem exists with RXISR!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Swaggie 4:2e6d9492b76d 1 #ifndef __Sampling__
Swaggie 4:2e6d9492b76d 2 #define __Sampling__
Swaggie 4:2e6d9492b76d 3
Swaggie 6:8e1795a5886b 4 #include "mbed.h"
Swaggie 5:bea93c8e50b7 5 #include "BMP280.h"
Swaggie 8:dbb57b4d5ba4 6 #include "rtos.h"
Swaggie 5:bea93c8e50b7 7
mwthewsey 12:03589f1d5c30 8 #define BUFFERSIZE 120
mwthewsey 12:03589f1d5c30 9 #define SAMPLERATE 7
Swaggie 6:8e1795a5886b 10
Swaggie 7:bf9f92ff02e8 11
Swaggie 6:8e1795a5886b 12 //Thread Sync Tools
mwthewsey 9:ac5673cca703 13 extern Mutex tempReadingsLock;
mwthewsey 9:ac5673cca703 14 extern Mutex presReadingsLock;
mwthewsey 9:ac5673cca703 15 extern Mutex LDRReadingsLock;
mwthewsey 9:ac5673cca703 16 extern Mutex timeReadingsLock;
Swaggie 6:8e1795a5886b 17
Swaggie 6:8e1795a5886b 18 //Buffers
mwthewsey 9:ac5673cca703 19 extern float tempReadings[BUFFERSIZE];
mwthewsey 9:ac5673cca703 20 extern float presReadings[BUFFERSIZE];
mwthewsey 9:ac5673cca703 21 extern float LDRReadings[BUFFERSIZE];
mwthewsey 10:261f2b69c4c7 22 extern time_t timeReadings[BUFFERSIZE];
Swaggie 6:8e1795a5886b 23
mwthewsey 10:261f2b69c4c7 24 extern volatile unsigned short currentIndex;
Swaggie 6:8e1795a5886b 25 //Position in the buffer of the newest sample
mwthewsey 10:261f2b69c4c7 26 extern volatile unsigned short nextIndex;
mwthewsey 9:ac5673cca703 27 //Position in the buffer where the next sample needs to be writen to
mwthewsey 10:261f2b69c4c7 28 extern volatile unsigned short oldestIndex;
Swaggie 6:8e1795a5886b 29 //Position in the buffer of the oldest sample
Swaggie 6:8e1795a5886b 30
Swaggie 8:dbb57b4d5ba4 31 extern bool firstSample;
Swaggie 7:bf9f92ff02e8 32 //Used to indicate this is the first sample to be taken. used in IncrementIndex func
Swaggie 7:bf9f92ff02e8 33
mwthewsey 9:ac5673cca703 34 extern Thread t1; //Sample Enviromental Sensor
mwthewsey 9:ac5673cca703 35 extern Thread t2; //Sample LDR Sensor
Swaggie 6:8e1795a5886b 36
mwthewsey 9:ac5673cca703 37 extern Ticker sampleRate;
mwthewsey 9:ac5673cca703 38 extern Timeout SampleLEDTimeout;
mwthewsey 12:03589f1d5c30 39 //Hardware
Swaggie 8:dbb57b4d5ba4 40 extern BMP280 sensor;
Swaggie 8:dbb57b4d5ba4 41 extern AnalogIn LDRSensor; //Input pin for LDR
Swaggie 8:dbb57b4d5ba4 42 extern DigitalOut SamplingLED; //Onboard LED showing when a sample happens
Swaggie 6:8e1795a5886b 43
Swaggie 6:8e1795a5886b 44 /*These can be deleted I think
Swaggie 6:8e1795a5886b 45 extern float fLatestTemp;
Swaggie 6:8e1795a5886b 46 extern float fLatestLDR;
Swaggie 6:8e1795a5886b 47 extern float fLatestPres;
Swaggie 6:8e1795a5886b 48 */
Swaggie 6:8e1795a5886b 49
mwthewsey 9:ac5673cca703 50 extern bool NewEnvSample; //Is there new data from the envirom sensor to output?
mwthewsey 9:ac5673cca703 51 extern bool NewLDRSample; //Is there new data from the LDR to output?
Swaggie 6:8e1795a5886b 52
Swaggie 4:2e6d9492b76d 53 void SampleTimerISR(void);
Swaggie 4:2e6d9492b76d 54 //Called by ticker. Calls the sample funcs of each device by flagging the threads
Swaggie 4:2e6d9492b76d 55
Swaggie 4:2e6d9492b76d 56 void ConfigThreadsAndIR(void);
Swaggie 4:2e6d9492b76d 57 //Setup Interrupts and Threads
Swaggie 4:2e6d9492b76d 58
Swaggie 7:bf9f92ff02e8 59 void ThreadSampleEnvSensor(void);
Swaggie 6:8e1795a5886b 60 //when flagged by interrupt will capture a sample then calls the addtobufferfuncs
Swaggie 6:8e1795a5886b 61
Swaggie 7:bf9f92ff02e8 62 void AddTempSample(float temp);
Swaggie 6:8e1795a5886b 63 //Producer function
Swaggie 6:8e1795a5886b 64
Swaggie 7:bf9f92ff02e8 65 void AddPresSample(float pres);
Swaggie 6:8e1795a5886b 66 //Producer Function
Swaggie 6:8e1795a5886b 67
Swaggie 6:8e1795a5886b 68 void ThreadSampleLDR(void);
Swaggie 7:bf9f92ff02e8 69 //When flagged by interrupt will read time and LDR value.
Swaggie 6:8e1795a5886b 70
Swaggie 7:bf9f92ff02e8 71 void AddLDRSample(float LDR);
mwthewsey 10:261f2b69c4c7 72 //Producer Function
Swaggie 4:2e6d9492b76d 73
mwthewsey 10:261f2b69c4c7 74 void AddTimeSample(time_t sampledTime);
Swaggie 7:bf9f92ff02e8 75 //Producer Function
Swaggie 7:bf9f92ff02e8 76
Swaggie 7:bf9f92ff02e8 77 void IncrementIndex(void);
Swaggie 7:bf9f92ff02e8 78 //Called after samples are added. Increments the index and moves the oldest
Swaggie 7:bf9f92ff02e8 79 //along if necessary
Swaggie 7:bf9f92ff02e8 80
Swaggie 8:dbb57b4d5ba4 81 void FlipSamplingLED(void);
Swaggie 8:dbb57b4d5ba4 82 //Called by timeout, turns of LED
Swaggie 8:dbb57b4d5ba4 83
mwthewsey 9:ac5673cca703 84 unsigned short IndexIncrement(unsigned short thisIndex);
mwthewsey 10:261f2b69c4c7 85 //Incrementing the index with respect for the buffersize. Used to prevent overflow.
mwthewsey 10:261f2b69c4c7 86
mwthewsey 10:261f2b69c4c7 87 unsigned short IndexDecrement(unsigned short thisIndex);
mwthewsey 10:261f2b69c4c7 88 //Decrementing the index with respect for the buffersize. Used to prevent overflow.
mwthewsey 10:261f2b69c4c7 89
mwthewsey 10:261f2b69c4c7 90 void Sampling(bool inputState);
mwthewsey 10:261f2b69c4c7 91 //Start or stop sampling. true = start, false = stop.
mwthewsey 10:261f2b69c4c7 92
mwthewsey 10:261f2b69c4c7 93 void TakeKeys(bool inputState);
mwthewsey 10:261f2b69c4c7 94 //Lock or unlock sampling variables. true = take keys. false = return keys
mwthewsey 9:ac5673cca703 95
Swaggie 4:2e6d9492b76d 96 #endif