lora sensnode

Dependencies:   libmDot mbed-rtos mbed

Fork of mDot_LoRa_Sensornode by Adrian Mitevski

Committer:
socie123
Date:
Wed Aug 10 12:54:10 2016 +0000
Revision:
1:e67174cc4953
Parent:
0:f2815503561f
lora sensnode

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mitea1 0:f2815503561f 1 /*
mitea1 0:f2815503561f 2 * TaskTemperature.cpp
mitea1 0:f2815503561f 3 *
mitea1 0:f2815503561f 4 * Created on: May 30, 2016
mitea1 0:f2815503561f 5 * Author: Adrian
mitea1 0:f2815503561f 6 */
mitea1 0:f2815503561f 7
mitea1 0:f2815503561f 8 #include "TaskTemperature.h"
mitea1 0:f2815503561f 9
mitea1 0:f2815503561f 10 TaskTemperature::TaskTemperature(BME280* bme280,Mutex* mutexI2C, Queue<BME280TemperatureMessage,TEMPERATURE_QUEUE_LENGHT>* queue){
mitea1 0:f2815503561f 11 this->bme280 = bme280;
mitea1 0:f2815503561f 12 setPriority(osPriorityNormal);
mitea1 0:f2815503561f 13 setStackSize(DEFAULT_STACK_SIZE);
mitea1 0:f2815503561f 14 setStackPointer(NULL);
mitea1 0:f2815503561f 15 setMutex(mutexI2C);
mitea1 0:f2815503561f 16 setQueue(queue);
mitea1 0:f2815503561f 17 }
mitea1 0:f2815503561f 18
mitea1 0:f2815503561f 19 TaskTemperature::TaskTemperature(BME280* bme280,rtos::Mutex* mutexI2C,
mitea1 0:f2815503561f 20 rtos::Queue<BME280TemperatureMessage,TEMPERATURE_QUEUE_LENGHT>* queue,
mitea1 0:f2815503561f 21 osPriority priority, uint32_t stackSize, unsigned char *stackPointer){
mitea1 0:f2815503561f 22 this->bme280 = bme280;
mitea1 0:f2815503561f 23 setMutex(mutexI2C);
mitea1 0:f2815503561f 24 setQueue(queue);
mitea1 0:f2815503561f 25 setPriority(priority);
mitea1 0:f2815503561f 26 setStackSize(stackSize);
mitea1 0:f2815503561f 27 setStackPointer(stackPointer);
mitea1 0:f2815503561f 28 setState(SLEEPING);
mitea1 0:f2815503561f 29 }
mitea1 0:f2815503561f 30
mitea1 0:f2815503561f 31 TaskTemperature::~TaskTemperature() {
mitea1 0:f2815503561f 32 // TODO Auto-generated destructor stub
mitea1 0:f2815503561f 33 }
mitea1 0:f2815503561f 34
mitea1 0:f2815503561f 35 osStatus TaskTemperature::start(){
mitea1 0:f2815503561f 36 setState(RUNNING);
mitea1 0:f2815503561f 37 this->thread = new rtos::Thread(callBack,this);
mitea1 0:f2815503561f 38 }
mitea1 0:f2815503561f 39
mitea1 0:f2815503561f 40 osStatus TaskTemperature::stop(){
mitea1 0:f2815503561f 41 thread->terminate();
mitea1 0:f2815503561f 42 setState(SLEEPING);
mitea1 0:f2815503561f 43 delete this->thread;
mitea1 0:f2815503561f 44 }
mitea1 0:f2815503561f 45
mitea1 0:f2815503561f 46 void TaskTemperature::callBack(void const* data){
mitea1 0:f2815503561f 47 // WOODHAMMER METHOD of Casting!
mitea1 0:f2815503561f 48 const TaskTemperature* constInstance = static_cast<const TaskTemperature* >(data);
mitea1 0:f2815503561f 49 TaskTemperature* instance = const_cast<TaskTemperature*>(constInstance);
mitea1 0:f2815503561f 50
mitea1 0:f2815503561f 51 instance->measureTemperature();
mitea1 0:f2815503561f 52 }
mitea1 0:f2815503561f 53
mitea1 0:f2815503561f 54 void TaskTemperature::measureTemperature(){
mitea1 0:f2815503561f 55 BME280TemperatureMessage bme280TemperatureMessage;
mitea1 0:f2815503561f 56
mitea1 0:f2815503561f 57 while(true){
mitea1 0:f2815503561f 58 mutexI2C->lock(osWaitForever);
mitea1 0:f2815503561f 59 bme280TemperatureMessage.setTemperature(bme280->getTemperatureFloat());
mitea1 0:f2815503561f 60 mutexI2C->unlock();
mitea1 0:f2815503561f 61
mitea1 0:f2815503561f 62 queue->put(&bme280TemperatureMessage,osWaitForever);
mitea1 0:f2815503561f 63 osDelay(TEMPERATURE_TASK_DELAY_MS);
mitea1 0:f2815503561f 64 }
mitea1 0:f2815503561f 65
mitea1 0:f2815503561f 66
mitea1 0:f2815503561f 67 }
mitea1 0:f2815503561f 68
mitea1 0:f2815503561f 69 void TaskTemperature::setQueue(Queue<BME280TemperatureMessage,TEMPERATURE_QUEUE_LENGHT>* queue){
mitea1 0:f2815503561f 70 this->queue = queue;
mitea1 0:f2815503561f 71 }
mitea1 0:f2815503561f 72
mitea1 0:f2815503561f 73 void TaskTemperature::setMutex(Mutex* mutex){
mitea1 0:f2815503561f 74 this->mutexI2C = mutex;
mitea1 0:f2815503561f 75 }
mitea1 0:f2815503561f 76
mitea1 0:f2815503561f 77 void TaskTemperature::setPriority(osPriority priority){
mitea1 0:f2815503561f 78 this->priority = priority;
mitea1 0:f2815503561f 79 }
mitea1 0:f2815503561f 80
mitea1 0:f2815503561f 81 void TaskTemperature::setStackSize(uint32_t stacksize){
mitea1 0:f2815503561f 82 this->stack_size = stacksize;
mitea1 0:f2815503561f 83 }
mitea1 0:f2815503561f 84
mitea1 0:f2815503561f 85 void TaskTemperature::setStackPointer(unsigned char* stackPointer){
mitea1 0:f2815503561f 86 this->stack_pointer = stackPointer;
mitea1 0:f2815503561f 87 }
mitea1 0:f2815503561f 88
mitea1 0:f2815503561f 89 void TaskTemperature::setState(TASK_STATE state){
mitea1 0:f2815503561f 90 this->state = state;
mitea1 0:f2815503561f 91 }
mitea1 0:f2815503561f 92
mitea1 0:f2815503561f 93 TASK_STATE TaskTemperature::getState(){
mitea1 0:f2815503561f 94 return state;
mitea1 0:f2815503561f 95 }
mitea1 0:f2815503561f 96