A multifunctional and modular Firmware for Multitech's mDot based on ARM mBed provides a widerange of functionality for several Sensors such as MAX44009, BME280, MPU9250, SI1143 and uBlox. It allows you to quickly build a Sensornode that measures specific data with its sensors and sends it via LoRaWAN.

Dependencies:   mDot_LoRa_Sensornode_Flowmeter_impl mbed-rtos mbed

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     this->lora = lora;
00021     setMutex(mutexLoRa);
00022     setQueue(queue);
00023     setPriority(priority);
00024     setStackSize(stackSize);
00025     setStackPointer(stackPointer);
00026     setState(SLEEPING);
00027 }
00028 
00029 TaskLoRaMeasurement::~TaskLoRaMeasurement() {
00030     // TODO Auto-generated destructor stub
00031 }
00032 
00033 void TaskLoRaMeasurement::measure(){
00034     LoRaMeasurementMessage* loraMeasurementMessage = new LoRaMeasurementMessage();
00035 
00036     while(true){
00037         mutexInterface->lock(osWaitForever);
00038         loraMeasurementMessage->setRssi(lora->getLastRssi());
00039         loraMeasurementMessage->setSnr(lora->getLastSnr());
00040         loraMeasurementMessage->setSpreadingFactor(lora->getSpreadingFactor());
00041         loraMeasurementMessage->setTxPowerdBm(lora->getTxPowerdBm());
00042         mutexInterface->unlock();
00043 
00044         queue->put(loraMeasurementMessage,osWaitForever);
00045         osDelay(LORA_MEASUREMENT_TASK_DELAY_MS);
00046     }
00047 
00048 
00049 }
00050 
00051 void TaskLoRaMeasurement::setQueue(Queue<LoRaMeasurementMessage,LORA_MEASUREMENT_QUEUE_LENGHT>* queue){
00052     this->queue = queue;
00053 }