SRK Version of mDot LoRa_Sensormode_SRK

Dependencies:   libmDot mbed-rtos mbed

Fork of mDot_LoRa_Sensornode by Adrian Mitevski

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers TaskPressure.cpp Source File

TaskPressure.cpp

00001 /*
00002  * TaskPressure.cpp
00003  *
00004  *  Created on: May 30, 2016
00005  *      Author: Adrian
00006  */
00007 
00008 #include "TaskPressure.h "
00009 
00010 TaskPressure::TaskPressure(BME280* bme280,Mutex* mutexI2C, Queue<BME280PressureMessage,PRESSURE_QUEUE_LENGHT>* queue){
00011     this->bme280 = bme280;
00012     setMutex(mutexI2C);
00013     setQueue(queue);
00014 }
00015 
00016 TaskPressure::TaskPressure(BME280* bme280,rtos::Mutex* mutexI2C,
00017     rtos::Queue<BME280PressureMessage,PRESSURE_QUEUE_LENGHT>* queue,
00018     osPriority priority, uint32_t stackSize, unsigned char *stackPointer){
00019     this->bme280 = bme280;
00020     setMutex(mutexI2C);
00021     setQueue(queue);
00022     setPriority(priority);
00023     setStackSize(stackSize);
00024     setStackPointer(stackPointer);
00025     setState(SLEEPING);
00026 }
00027 
00028 TaskPressure::~TaskPressure() {
00029     // TODO Auto-generated destructor stub
00030 }
00031 
00032 osStatus TaskPressure::start(){
00033     setState(RUNNING);
00034     this->thread = new rtos::Thread(callBack,this);
00035 }
00036 
00037 osStatus TaskPressure::stop(){
00038     thread->terminate();
00039     setState(SLEEPING);
00040     delete this->thread;
00041 }
00042 
00043 void TaskPressure::callBack(void const* data){
00044     // WOODHAMMER METHOD of Casting!
00045     const TaskPressure* constInstance = static_cast<const TaskPressure* >(data);
00046     TaskPressure* instance = const_cast<TaskPressure*>(constInstance);
00047 
00048     instance->measurePressure();
00049 }
00050 
00051 void TaskPressure::measurePressure(){
00052     BME280PressureMessage bme280PressureMessage;
00053 
00054     while(true){
00055         mutexI2C->lock(osWaitForever);
00056         bme280PressureMessage.setPressure(bme280->getPressureFloat());
00057         mutexI2C->unlock();
00058 
00059         queue->put(&bme280PressureMessage,osWaitForever);
00060         osDelay(PRESSURE_TASK_DELAY_MS);
00061     }
00062 
00063 }
00064 
00065 void TaskPressure::setQueue(Queue<BME280PressureMessage,PRESSURE_QUEUE_LENGHT>* queue){
00066     this->queue = queue;
00067 }
00068 
00069 void TaskPressure::setMutex(Mutex* mutex){
00070     this->mutexI2C = mutex;
00071 }
00072 
00073 void TaskPressure::setPriority(osPriority priority){
00074     this->priority = priority;
00075 }
00076 
00077 void TaskPressure::setStackSize(uint32_t stacksize){
00078     this->stack_size = stacksize;
00079 }
00080 
00081 void TaskPressure::setStackPointer(unsigned char* stackPointer){
00082     this->stack_pointer = stackPointer;
00083 }
00084 
00085 void TaskPressure::setState(TASK_STATE state){
00086     this->state = state;
00087 }
00088 
00089 TASK_STATE TaskPressure::getState(){
00090     return state;
00091 }
00092