![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
SRK Version of mDot LoRa_Sensormode_SRK
Dependencies: libmDot mbed-rtos mbed
Fork of mDot_LoRa_Sensornode by
TaskLoRaMeasurement.cpp
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
Generated on Wed Jul 13 2022 09:23:48 by
![doxygen](doxygen.png)