fuck this
Dependencies: BMP280
Sampling.h@10:261f2b69c4c7, 2018-01-07 (annotated)
- Committer:
- mwthewsey
- Date:
- Sun Jan 07 23:40:10 2018 +0000
- Revision:
- 10:261f2b69c4c7
- Parent:
- 9:ac5673cca703
- Child:
- 12:03589f1d5c30
Before removing serial variables;
Who changed what in which revision?
User | Revision | Line number | New 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 | 10:261f2b69c4c7 | 8 | #define BUFFERSIZE 16 |
mwthewsey | 10:261f2b69c4c7 | 9 | #define SAMPLERATE 1 |
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; |
Swaggie | 8:dbb57b4d5ba4 | 39 | extern BMP280 sensor; |
Swaggie | 8:dbb57b4d5ba4 | 40 | extern AnalogIn LDRSensor; //Input pin for LDR |
Swaggie | 8:dbb57b4d5ba4 | 41 | extern DigitalOut SamplingLED; //Onboard LED showing when a sample happens |
Swaggie | 6:8e1795a5886b | 42 | |
Swaggie | 6:8e1795a5886b | 43 | /*These can be deleted I think |
Swaggie | 6:8e1795a5886b | 44 | extern float fLatestTemp; |
Swaggie | 6:8e1795a5886b | 45 | extern float fLatestLDR; |
Swaggie | 6:8e1795a5886b | 46 | extern float fLatestPres; |
Swaggie | 6:8e1795a5886b | 47 | */ |
Swaggie | 6:8e1795a5886b | 48 | |
mwthewsey | 9:ac5673cca703 | 49 | extern bool NewEnvSample; //Is there new data from the envirom sensor to output? |
mwthewsey | 9:ac5673cca703 | 50 | extern bool NewLDRSample; //Is there new data from the LDR to output? |
Swaggie | 6:8e1795a5886b | 51 | |
Swaggie | 4:2e6d9492b76d | 52 | void SampleTimerISR(void); |
Swaggie | 4:2e6d9492b76d | 53 | //Called by ticker. Calls the sample funcs of each device by flagging the threads |
Swaggie | 4:2e6d9492b76d | 54 | |
Swaggie | 4:2e6d9492b76d | 55 | void ConfigThreadsAndIR(void); |
Swaggie | 4:2e6d9492b76d | 56 | //Setup Interrupts and Threads |
Swaggie | 4:2e6d9492b76d | 57 | |
Swaggie | 7:bf9f92ff02e8 | 58 | void ThreadSampleEnvSensor(void); |
Swaggie | 6:8e1795a5886b | 59 | //when flagged by interrupt will capture a sample then calls the addtobufferfuncs |
Swaggie | 6:8e1795a5886b | 60 | |
Swaggie | 7:bf9f92ff02e8 | 61 | void AddTempSample(float temp); |
Swaggie | 6:8e1795a5886b | 62 | //Producer function |
Swaggie | 6:8e1795a5886b | 63 | |
Swaggie | 7:bf9f92ff02e8 | 64 | void AddPresSample(float pres); |
Swaggie | 6:8e1795a5886b | 65 | //Producer Function |
Swaggie | 6:8e1795a5886b | 66 | |
Swaggie | 6:8e1795a5886b | 67 | void ThreadSampleLDR(void); |
Swaggie | 7:bf9f92ff02e8 | 68 | //When flagged by interrupt will read time and LDR value. |
Swaggie | 6:8e1795a5886b | 69 | |
Swaggie | 7:bf9f92ff02e8 | 70 | void AddLDRSample(float LDR); |
mwthewsey | 10:261f2b69c4c7 | 71 | //Producer Function |
Swaggie | 4:2e6d9492b76d | 72 | |
mwthewsey | 10:261f2b69c4c7 | 73 | void AddTimeSample(time_t sampledTime); |
Swaggie | 7:bf9f92ff02e8 | 74 | //Producer Function |
Swaggie | 7:bf9f92ff02e8 | 75 | |
Swaggie | 7:bf9f92ff02e8 | 76 | void IncrementIndex(void); |
Swaggie | 7:bf9f92ff02e8 | 77 | //Called after samples are added. Increments the index and moves the oldest |
Swaggie | 7:bf9f92ff02e8 | 78 | //along if necessary |
Swaggie | 7:bf9f92ff02e8 | 79 | |
Swaggie | 8:dbb57b4d5ba4 | 80 | void FlipSamplingLED(void); |
Swaggie | 8:dbb57b4d5ba4 | 81 | //Called by timeout, turns of LED |
Swaggie | 8:dbb57b4d5ba4 | 82 | |
mwthewsey | 9:ac5673cca703 | 83 | unsigned short IndexIncrement(unsigned short thisIndex); |
mwthewsey | 10:261f2b69c4c7 | 84 | //Incrementing the index with respect for the buffersize. Used to prevent overflow. |
mwthewsey | 10:261f2b69c4c7 | 85 | |
mwthewsey | 10:261f2b69c4c7 | 86 | unsigned short IndexDecrement(unsigned short thisIndex); |
mwthewsey | 10:261f2b69c4c7 | 87 | //Decrementing the index with respect for the buffersize. Used to prevent overflow. |
mwthewsey | 10:261f2b69c4c7 | 88 | |
mwthewsey | 10:261f2b69c4c7 | 89 | void Sampling(bool inputState); |
mwthewsey | 10:261f2b69c4c7 | 90 | //Start or stop sampling. true = start, false = stop. |
mwthewsey | 10:261f2b69c4c7 | 91 | |
mwthewsey | 10:261f2b69c4c7 | 92 | void TakeKeys(bool inputState); |
mwthewsey | 10:261f2b69c4c7 | 93 | //Lock or unlock sampling variables. true = take keys. false = return keys |
mwthewsey | 9:ac5673cca703 | 94 | |
Swaggie | 4:2e6d9492b76d | 95 | #endif |