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

TaskLoRaMeasurement.cpp

Go to the documentation of this file.
00001 /**
00002  * @file TaskLoRaMeasurement.cpp
00003  *
00004  * @author Adrian
00005  * @date 13.06.2016
00006  */
00007 
00008 #include "TaskLoRaMeasurement.h "
00009 
00010 TaskLoRaMeasurement::TaskLoRaMeasurement(LoRa* lora,Mutex* mutexLoRa,
00011         Queue<LoRaMeasurementMessage,LORA_MEASUREMENT_QUEUE_LENGHT>* queue){
00012     this->lora = lora;
00013     setMutex(mutexLoRa);
00014     setQueue(queue);
00015 }
00016 
00017 TaskLoRaMeasurement::TaskLoRaMeasurement(LoRa* lora,Mutex* mutexLoRa,
00018         rtos::Queue<LoRaMeasurementMessage,LORA_MEASUREMENT_QUEUE_LENGHT>* queue,
00019         osPriority priority, uint32_t stackSize, unsigned char *stackPointer){
00020     setPriority(priority);
00021     setStackSize(stackSize);
00022     setStackPointer(stackPointer);
00023     setState(SLEEPING);
00024 }
00025 
00026 TaskLoRaMeasurement::~TaskLoRaMeasurement() {
00027     // TODO Auto-generated destructor stub
00028 }
00029 
00030 osStatus TaskLoRaMeasurement::start(){
00031     setState(RUNNING);
00032     this->thread = new rtos::Thread(callBack,this);
00033 }
00034 
00035 osStatus TaskLoRaMeasurement::stop(){
00036     thread->terminate();
00037     setState(SLEEPING);
00038     delete this->thread;
00039 }
00040 
00041 void TaskLoRaMeasurement::callBack(void const* data){
00042     // WOODHAMMER METHOD of Casting!
00043     const TaskLoRaMeasurement* constInstance = static_cast<const TaskLoRaMeasurement* >(data);
00044     TaskLoRaMeasurement* instance = const_cast<TaskLoRaMeasurement*>(constInstance);
00045 
00046     instance->measureSignal();
00047 }
00048 
00049 void TaskLoRaMeasurement::measureSignal(){
00050     LoRaMeasurementMessage* loraMeasurementMessage = new LoRaMeasurementMessage();
00051 
00052     while(true){
00053         mutexLoRa->lock(osWaitForever);
00054         loraMeasurementMessage->setRssi(lora->getLastRssi());
00055         loraMeasurementMessage->setSnr(lora->getLastSnr());
00056         loraMeasurementMessage->setSpreadingFactor(lora->getSpreadingFactor());
00057         loraMeasurementMessage->setTxPowerdBm(lora->getTxPowerdBm());
00058         mutexLoRa->unlock();
00059 
00060         queue->put(loraMeasurementMessage,osWaitForever);
00061         osDelay(LORA_MEASUREMENT_TASK_DELAY_MS);
00062     }
00063 
00064 
00065 }
00066 
00067 void TaskLoRaMeasurement::setQueue(Queue<LoRaMeasurementMessage,LORA_MEASUREMENT_QUEUE_LENGHT>* queue){
00068     this->queue = queue;
00069 }
00070 
00071 void TaskLoRaMeasurement::setMutex(Mutex* mutex){
00072     this->mutexLoRa = mutex;
00073 }
00074 
00075 void TaskLoRaMeasurement::setPriority(osPriority priority){
00076     this->priority = priority;
00077 }
00078 
00079 void TaskLoRaMeasurement::setStackSize(uint32_t stacksize){
00080     this->stack_size = stacksize;
00081 }
00082 
00083 void TaskLoRaMeasurement::setStackPointer(unsigned char* stackPointer){
00084     this->stack_pointer = stackPointer;
00085 }
00086 
00087 void TaskLoRaMeasurement::setState(TASK_STATE state){
00088     this->state = state;
00089 }
00090 
00091 TASK_STATE TaskLoRaMeasurement::getState(){
00092     return state;
00093 }
00094