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 TaskTemperature.cpp Source File

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