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