![](/media/cache/profiles/bfe3d668a830f1ad9c3a627efecf14e7.jpg.50x50_q85.jpg)
lora sensnode
Dependencies: libmDot mbed-rtos mbed
Fork of mDot_LoRa_Sensornode by
Diff: app/Application.h
- Revision:
- 0:f2815503561f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/Application.h Wed Jul 06 20:40:36 2016 +0000 @@ -0,0 +1,146 @@ +/* + * Application.h + * + * Created on: Jun 3, 2016 + * Author: Adrian + */ + +#include "ApplicationConfig.h" +#include "mbed.h" +#include "rtos.h" +#include "I2C_RT.h" +#include "MAX44009.h" +#include "BME280.h" +#include "MPU9250.h" +#include "SI1143.h" +#include "uBlox.h" +#include "mDot.h" +#include "LoRa.h" +#include "TaskLight.h" +#include "TaskTemperature.h" +#include "TaskHumidity.h" +#include "TaskPressure.h" +#include "TaskAcceleration.h" +#include "TaskGyroscope.h" +#include "TaskTesla.h" +#include "TaskProximity.h" +#include "TaskGPS.h" +#include "TaskLoRaMeasurement.h" +#include "TaskDatahandler.h" +#include "main.h" + +#ifndef SENSORHANDLER_H_ +#define SENSORHANDLER_H_ + +class Application { +public: + Application(); + virtual ~Application(); + + /** + * @brief Start the Application in the desired Mode + * @return + */ + void init(APPLICATION_MODE desiredMode); + +private: + RawSerial* uart; + RawSerial* debugSerial; + I2C_RT* i2c_rt; + mDot* dot; + LoRa* lora; + + TaskLight* taskLight; + TaskTemperature* taskTemperature; + TaskPressure* taskPressure; + TaskHumidity* taskHumidity; + TaskAcceleration* taskAcceleration; + TaskGyroscope* taskGyroscope; + TaskTesla* taskTesla; + TaskProximity* taskProximity; + TaskGPS* taskGps; + TaskLoRaMeasurement* taskLoRaMeasurement; + TaskDatahandler* taskDataHandler; + + rtos::Mutex* mutexI2C; + rtos::Mutex* mutexUART1; + rtos::Mutex mutexBME280; + rtos::Mutex mutexMAX44009; + rtos::Mutex mutexMPU9250; + rtos::Mutex mutexSi4103; + rtos::Mutex mutexUBlox; + rtos::Mutex* mutexLoRa; + + Queue<MAX44009Message,LIGHT_QUEUE_LENGHT> queueLight; + Queue<BME280TemperatureMessage,TEMPERATURE_QUEUE_LENGHT> queueTemperature; + Queue<BME280PressureMessage,PRESSURE_QUEUE_LENGHT> queuePressure; + Queue<BME280HumidityMessage,HUMIDITY_QUEUE_LENGHT> queueHumidity; + Queue<MPU9250AccelerationMessage,ACCELERATION_QUEUE_LENGHT> queueAcceleration; + Queue<MPU9250GyroscopeMessage,GYROSCOPE_QUEUE_LENGHT> queueGyro; + Queue<MPU9250TeslaMessage,TESLA_QUEUE_LENGHT> queueTesla; + Queue<SI1143ProximityMessage,PROXIMITY_QUEUE_LENGHT> queueProximity; + Queue<UBloxGPSMessage,GPS_QUEUE_LENGHT> queueGps; + Queue<LoRaMeasurementMessage,LORA_MEASUREMENT_QUEUE_LENGHT> queueLoRaMeasurements; + Queue<CommandMessage,COMMAND_QUEUE_LENGHT> queueCommands; + + QueueBundle queueBundle; + + uBlox* gpsSensor; + MAX44009* max44009; + BME280* bme280; + MPU9250* mpu9250; + SI1143* si1143; + + ApplicationConfig* config; + + /** + * @brief Initializes all Interfaces such as I2C, UART and a Debug Serial via USB + */ + void initInterfaces(); + + /** + * @brief Initializes (builds) all Sensors in their specific modes + */ + void initSensors(); + + /** + * @brief Initializes (builds) all Tasks so that they are ready to run + */ + void initTasks(); + + /** + * @brief Initializes (builds) all Mutexes so that they are ready to be used + */ + void initMutexes(); + + /** + * @brief Initializes (builds) the ApplicationConfig which contains information about + * which Task has to be run and how the sensors have to be configured + */ + void initApplicationConfig(); + + /** + * @brief Stops all tasks that are currently running. Used to define a defined state to start the application + * in a new mode or when using a transition between two application modes it is neccessary to stop all task before + * starting them again + */ + void stopAllRunningSensorTasks(); + + /** + * @brief Starts all task which are allowed to run by the Application Config + */ + void startRunnableSensorTasks(); + + /** + * @brief Configures and builds the sensors according to they SensorMode specific parameters + */ + void configureSensors(); + + /** + * @brief Configures and builds the LoRa Device according to its Mode specific parameters + */ + void configureLora(); + +}; + +#endif /* APPLICATION_H_ */