Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: libmDot mbed-rtos mbed
Fork of mDot_LoRa_Sensornode by
app/Application.cpp@0:f2815503561f, 2016-07-06 (annotated)
- 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?
User | Revision | Line number | New 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 | } |