SRK Version of mDot LoRa_Sensormode_SRK
Dependencies: libmDot mbed-rtos mbed
Fork of mDot_LoRa_Sensornode by
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
Generated on Wed Jul 13 2022 09:23:48 by 1.7.2