Steven Kramer / Mbed 2 deprecated mDot_LoRa_Sensornode_SRK

Dependencies:   libmDot mbed-rtos mbed

Fork of mDot_LoRa_Sensornode by Adrian Mitevski

Committer:
mitea1
Date:
Wed Jul 06 20:40:36 2016 +0000
Revision:
0:f2815503561f
Child:
1:fe242f3e341b
initial commit;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mitea1 0:f2815503561f 1 /*
mitea1 0:f2815503561f 2 * SensorHandler.cpp
mitea1 0:f2815503561f 3 *
mitea1 0:f2815503561f 4 * Created on: Jun 3, 2016
mitea1 0:f2815503561f 5 * Author: Adrian
mitea1 0:f2815503561f 6 */
mitea1 0:f2815503561f 7
mitea1 0:f2815503561f 8 #include "Application.h"
mitea1 0:f2815503561f 9
mitea1 0:f2815503561f 10 Application::Application() {
mitea1 0:f2815503561f 11 initInterfaces();
mitea1 0:f2815503561f 12 initSensors();
mitea1 0:f2815503561f 13 initMutexes();
mitea1 0:f2815503561f 14 initTasks();
mitea1 0:f2815503561f 15 initApplicationConfig();
mitea1 0:f2815503561f 16 taskDataHandler->start();
mitea1 0:f2815503561f 17 }
mitea1 0:f2815503561f 18
mitea1 0:f2815503561f 19 Application::~Application() {
mitea1 0:f2815503561f 20 delete uart;
mitea1 0:f2815503561f 21 delete debugSerial;
mitea1 0:f2815503561f 22 delete i2c_rt;
mitea1 0:f2815503561f 23
mitea1 0:f2815503561f 24 delete gpsSensor;
mitea1 0:f2815503561f 25 delete max44009;
mitea1 0:f2815503561f 26 delete bme280;
mitea1 0:f2815503561f 27 delete mpu9250;
mitea1 0:f2815503561f 28 delete si1143;
mitea1 0:f2815503561f 29
mitea1 0:f2815503561f 30 delete taskLight;
mitea1 0:f2815503561f 31 delete taskTemperature;
mitea1 0:f2815503561f 32 delete taskPressure;
mitea1 0:f2815503561f 33 delete taskHumidity;
mitea1 0:f2815503561f 34 delete taskAcceleration;
mitea1 0:f2815503561f 35 delete taskGyroscope;
mitea1 0:f2815503561f 36 delete taskTesla;
mitea1 0:f2815503561f 37 delete taskProximity;
mitea1 0:f2815503561f 38 delete taskGps;
mitea1 0:f2815503561f 39 }
mitea1 0:f2815503561f 40
mitea1 0:f2815503561f 41 void Application::init(APPLICATION_MODE desiredMode){
mitea1 0:f2815503561f 42 config->build(desiredMode);
mitea1 0:f2815503561f 43 stopAllRunningSensorTasks();
mitea1 0:f2815503561f 44 configureSensors();
mitea1 0:f2815503561f 45 configureLora();
mitea1 0:f2815503561f 46 startRunnableSensorTasks();
mitea1 0:f2815503561f 47 }
mitea1 0:f2815503561f 48
mitea1 0:f2815503561f 49 void Application::stopAllRunningSensorTasks(){
mitea1 0:f2815503561f 50 if(taskLight->getState() == RUNNING){
mitea1 0:f2815503561f 51 taskLight->stop();
mitea1 0:f2815503561f 52 }
mitea1 0:f2815503561f 53 if(taskTemperature->getState() == RUNNING){
mitea1 0:f2815503561f 54 taskTemperature->stop();
mitea1 0:f2815503561f 55 }
mitea1 0:f2815503561f 56 if(taskPressure->getState() == RUNNING){
mitea1 0:f2815503561f 57 taskPressure->stop();
mitea1 0:f2815503561f 58 }
mitea1 0:f2815503561f 59 if(taskHumidity->getState() == RUNNING){
mitea1 0:f2815503561f 60 taskHumidity->stop();
mitea1 0:f2815503561f 61 }
mitea1 0:f2815503561f 62 if(taskAcceleration->getState() == RUNNING){
mitea1 0:f2815503561f 63 taskAcceleration->stop();
mitea1 0:f2815503561f 64 }
mitea1 0:f2815503561f 65 if(taskGyroscope->getState() == RUNNING){
mitea1 0:f2815503561f 66 taskGyroscope->stop();
mitea1 0:f2815503561f 67 }
mitea1 0:f2815503561f 68 if(taskTesla->getState() == RUNNING){
mitea1 0:f2815503561f 69 taskTesla->stop();
mitea1 0:f2815503561f 70 }
mitea1 0:f2815503561f 71 if(taskProximity->getState() == RUNNING){
mitea1 0:f2815503561f 72 taskProximity->stop();
mitea1 0:f2815503561f 73 }
mitea1 0:f2815503561f 74 if(taskGps->getState() == RUNNING){
mitea1 0:f2815503561f 75 taskGps->stop();
mitea1 0:f2815503561f 76 }
mitea1 0:f2815503561f 77 if(taskLoRaMeasurement->getState() == RUNNING){
mitea1 0:f2815503561f 78 taskLoRaMeasurement->stop();
mitea1 0:f2815503561f 79 }
mitea1 0:f2815503561f 80
mitea1 0:f2815503561f 81 osDelay(100);
mitea1 0:f2815503561f 82 }
mitea1 0:f2815503561f 83
mitea1 0:f2815503561f 84 void Application::initInterfaces(){
mitea1 0:f2815503561f 85 uart = new RawSerial(XBEE_DOUT,XBEE_DIN);
mitea1 0:f2815503561f 86 debugSerial = new RawSerial(USBTX,USBRX);
mitea1 0:f2815503561f 87 i2c_rt = new I2C_RT();
mitea1 0:f2815503561f 88 dot = mDot::getInstance();
mitea1 0:f2815503561f 89 lora = new LoRa(dot,debugSerial);
mitea1 0:f2815503561f 90
mitea1 0:f2815503561f 91 uart->baud(BAUD_UART);
mitea1 0:f2815503561f 92 uart->format(8,SerialBase::None,1);
mitea1 0:f2815503561f 93 debugSerial->baud(BAUD_USB);
mitea1 0:f2815503561f 94 debugSerial->format(8,SerialBase::None,1);
mitea1 0:f2815503561f 95 }
mitea1 0:f2815503561f 96
mitea1 0:f2815503561f 97 void Application::initSensors(){
mitea1 0:f2815503561f 98 gpsSensor = new uBlox(uart);
mitea1 0:f2815503561f 99 max44009 = new MAX44009(i2c_rt);
mitea1 0:f2815503561f 100 bme280 = new BME280(i2c_rt);
mitea1 0:f2815503561f 101 mpu9250 = new MPU9250(i2c_rt);
mitea1 0:f2815503561f 102 si1143 = new SI1143(i2c_rt);
mitea1 0:f2815503561f 103 }
mitea1 0:f2815503561f 104
mitea1 0:f2815503561f 105 void Application::initTasks(){
mitea1 0:f2815503561f 106 taskLight = new TaskLight(max44009,mutexI2C,&queueLight,osPriorityNormal,DEFAULT_STACK_SIZE,NULL);
mitea1 0:f2815503561f 107 taskTemperature = new TaskTemperature(bme280,mutexI2C,&queueTemperature,osPriorityNormal,DEFAULT_STACK_SIZE,NULL);
mitea1 0:f2815503561f 108 taskHumidity = new TaskHumidity(bme280,mutexI2C,&queueHumidity,osPriorityNormal,DEFAULT_STACK_SIZE,NULL);
mitea1 0:f2815503561f 109 taskPressure = new TaskPressure(bme280,mutexI2C,&queuePressure,osPriorityNormal,DEFAULT_STACK_SIZE,NULL);
mitea1 0:f2815503561f 110 taskAcceleration = new TaskAcceleration(mpu9250,mutexI2C,&queueAcceleration,osPriorityNormal,DEFAULT_STACK_SIZE,NULL);
mitea1 0:f2815503561f 111 taskGyroscope = new TaskGyroscope(mpu9250,mutexI2C,&queueGyro,osPriorityNormal,DEFAULT_STACK_SIZE,NULL);
mitea1 0:f2815503561f 112 taskTesla = new TaskTesla(mpu9250,mutexI2C,&queueTesla,osPriorityNormal,DEFAULT_STACK_SIZE,NULL);
mitea1 0:f2815503561f 113 taskProximity = new TaskProximity(si1143,mutexI2C,&queueProximity,osPriorityNormal,DEFAULT_STACK_SIZE,NULL);
mitea1 0:f2815503561f 114 taskGps = new TaskGPS(gpsSensor,mutexUART1,&queueGps,osPriorityNormal,DEFAULT_STACK_SIZE,NULL);
mitea1 0:f2815503561f 115 taskLoRaMeasurement = new TaskLoRaMeasurement(lora,mutexLoRa,&queueLoRaMeasurements,osPriorityNormal,DEFAULT_STACK_SIZE,NULL);
mitea1 0:f2815503561f 116 taskDataHandler = new TaskDatahandler(lora,mutexLoRa,queueBundle,osPriorityNormal,DEFAULT_STACK_SIZE,NULL);
mitea1 0:f2815503561f 117 taskDataHandler->setDebugSerial(debugSerial);
mitea1 0:f2815503561f 118 }
mitea1 0:f2815503561f 119
mitea1 0:f2815503561f 120 void Application::startRunnableSensorTasks(){
mitea1 0:f2815503561f 121 if(config->getStateTaskLight() == RUNNING){
mitea1 0:f2815503561f 122 taskLight->start();
mitea1 0:f2815503561f 123 }
mitea1 0:f2815503561f 124 if(config->getStateTaskTemperature() == RUNNING){
mitea1 0:f2815503561f 125 taskTemperature->start();
mitea1 0:f2815503561f 126 }
mitea1 0:f2815503561f 127 if(config->getStateTaskPressure() == RUNNING){
mitea1 0:f2815503561f 128 taskPressure->start();
mitea1 0:f2815503561f 129 }
mitea1 0:f2815503561f 130 if(config->getStateTaskHumidity() == RUNNING){
mitea1 0:f2815503561f 131 taskHumidity->start();
mitea1 0:f2815503561f 132 }
mitea1 0:f2815503561f 133 if(config->getStateTaskAcceleration() == RUNNING){
mitea1 0:f2815503561f 134 taskAcceleration->start();
mitea1 0:f2815503561f 135 }
mitea1 0:f2815503561f 136 if(config->getStateTaskGyroscope() == RUNNING){
mitea1 0:f2815503561f 137 taskGyroscope->start();
mitea1 0:f2815503561f 138 }
mitea1 0:f2815503561f 139 if(config->getStateTaskTesla() == RUNNING){
mitea1 0:f2815503561f 140 taskTesla->start();
mitea1 0:f2815503561f 141 }
mitea1 0:f2815503561f 142 if(config->getStateTaskProximity() == RUNNING){
mitea1 0:f2815503561f 143 taskProximity->start();
mitea1 0:f2815503561f 144 }
mitea1 0:f2815503561f 145 if(config->getStateTaskGPS() == RUNNING){
mitea1 0:f2815503561f 146 taskGps->start();
mitea1 0:f2815503561f 147 }
mitea1 0:f2815503561f 148 if(config->getStateTaskLoRaMeasurement() == RUNNING){
mitea1 0:f2815503561f 149 taskLoRaMeasurement->start();
mitea1 0:f2815503561f 150 }
mitea1 0:f2815503561f 151 }
mitea1 0:f2815503561f 152
mitea1 0:f2815503561f 153 void Application::configureSensors(){
mitea1 0:f2815503561f 154 max44009->init(config->getMAX44009_MODE());
mitea1 0:f2815503561f 155 bme280->init(config->getBME280_MODE());
mitea1 0:f2815503561f 156 mpu9250->init(config->getMPU9250_MODE());
mitea1 0:f2815503561f 157 si1143->init(config->getSI1143_MODE());
mitea1 0:f2815503561f 158 gpsSensor->init(config->getuBlox_MODE());
mitea1 0:f2815503561f 159 }
mitea1 0:f2815503561f 160
mitea1 0:f2815503561f 161 void Application::configureLora(){
mitea1 0:f2815503561f 162 lora->init(config->getLORA_MODE());
mitea1 0:f2815503561f 163 }
mitea1 0:f2815503561f 164
mitea1 0:f2815503561f 165 void Application::initMutexes(){
mitea1 0:f2815503561f 166 this->mutexI2C = new Mutex();
mitea1 0:f2815503561f 167 this->mutexUART1 = new Mutex();
mitea1 0:f2815503561f 168 this->mutexLoRa = new Mutex();
mitea1 0:f2815503561f 169 }
mitea1 0:f2815503561f 170
mitea1 0:f2815503561f 171 void Application::initApplicationConfig(){
mitea1 0:f2815503561f 172 config = new ApplicationConfig();
mitea1 0:f2815503561f 173 }