Version FC

Dependencies:   DmTftLibrary eeprom SX1280Lib filesystem mbed

Fork of MSNV2-Terminal_V1-5 by Francis CHATAIN

Committer:
patrick_duc
Date:
Tue Sep 11 21:11:35 2018 +0000
Revision:
23:d7df2e2d28de
Parent:
21:8524d815c587
Child:
38:9b43b2415093
Child:
41:5a436163dddf
Modifs messages.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
patrick_duc 21:8524d815c587 1 /*
patrick_duc 21:8524d815c587 2 * MISNet
patrick_duc 21:8524d815c587 3 *
patrick_duc 21:8524d815c587 4 * Controller.cpp
patrick_duc 21:8524d815c587 5 *
patrick_duc 21:8524d815c587 6 * Created on: August 17, 2018
patrick_duc 21:8524d815c587 7 * Author: Francis CHATAIN
patrick_duc 21:8524d815c587 8 *
patrick_duc 21:8524d815c587 9 */
patrick_duc 21:8524d815c587 10
patrick_duc 23:d7df2e2d28de 11 /*
patrick_duc 23:d7df2e2d28de 12 #include <sstream>
patrick_duc 23:d7df2e2d28de 13 #include <iostream>
patrick_duc 23:d7df2e2d28de 14 #include <iomanip>
patrick_duc 23:d7df2e2d28de 15 #include <string>
patrick_duc 23:d7df2e2d28de 16 */
patrick_duc 23:d7df2e2d28de 17
patrick_duc 21:8524d815c587 18 #include "Context.h"
patrick_duc 21:8524d815c587 19
patrick_duc 21:8524d815c587 20 #ifndef TEST_ENVIRONMENT
patrick_duc 21:8524d815c587 21 #include "Tftlcd.h"
patrick_duc 21:8524d815c587 22 #include "Lora.h"
patrick_duc 21:8524d815c587 23 #endif
patrick_duc 21:8524d815c587 24
patrick_duc 21:8524d815c587 25
patrick_duc 21:8524d815c587 26 #include "main.h"
patrick_duc 21:8524d815c587 27 #include "Controller.hpp"
patrick_duc 21:8524d815c587 28
patrick_duc 21:8524d815c587 29 #include "DataBase.hpp"
patrick_duc 21:8524d815c587 30 #include "MessageFactory.hpp"
patrick_duc 21:8524d815c587 31 #include "ExtMemory.hpp"
patrick_duc 21:8524d815c587 32
patrick_duc 21:8524d815c587 33
patrick_duc 21:8524d815c587 34 using namespace misnet;
patrick_duc 21:8524d815c587 35
patrick_duc 21:8524d815c587 36
patrick_duc 21:8524d815c587 37 static DataBase dataBase ; // Database creation
patrick_duc 21:8524d815c587 38 static MessageFactory messageFactory ; // Messages Maker (Sensors, Config, Synchro ...)
patrick_duc 21:8524d815c587 39 static ExtMemory extMemory ; // Memoire externe
patrick_duc 21:8524d815c587 40
patrick_duc 21:8524d815c587 41 #ifndef TEST_ENVIRONMENT
patrick_duc 21:8524d815c587 42 Tftlcd tftlcd ; // eventuellement a déplacer (uniquement valable sur les conf nucléo)
patrick_duc 21:8524d815c587 43 #endif
patrick_duc 21:8524d815c587 44
patrick_duc 21:8524d815c587 45
patrick_duc 21:8524d815c587 46
patrick_duc 21:8524d815c587 47 Controller::Controller() { // constructeur
patrick_duc 21:8524d815c587 48 // Basic instance
patrick_duc 21:8524d815c587 49 //this.dataBase = DataBase;
patrick_duc 21:8524d815c587 50 //this.messageFactory = Message ; // Messages Maker (Sensors, Config, Synchro ...)
patrick_duc 23:d7df2e2d28de 51 uint32_t aValue = 65985;
patrick_duc 23:d7df2e2d28de 52 std::cout << "0x" << std::hex << aValue << std::endl;
patrick_duc 23:d7df2e2d28de 53
patrick_duc 23:d7df2e2d28de 54 std::stringstream stream;
patrick_duc 23:d7df2e2d28de 55
patrick_duc 23:d7df2e2d28de 56 stream << "0x" << std::hex << aValue;
patrick_duc 23:d7df2e2d28de 57 std::string result(stream.str());
patrick_duc 23:d7df2e2d28de 58
patrick_duc 23:d7df2e2d28de 59 std::cout << result.c_str() << std::endl;
patrick_duc 23:d7df2e2d28de 60
patrick_duc 21:8524d815c587 61 }
patrick_duc 21:8524d815c587 62
patrick_duc 21:8524d815c587 63 Controller::~Controller() { } // delete xxx;
patrick_duc 21:8524d815c587 64
patrick_duc 21:8524d815c587 65
patrick_duc 21:8524d815c587 66 #ifndef TEST_ENVIRONMENT
patrick_duc 21:8524d815c587 67 void Controller::start (){ // @brief Start the Controller
patrick_duc 21:8524d815c587 68 initInterfaces () ; // Primary interface uart, i2c, spi ...
patrick_duc 21:8524d815c587 69 extMemory.read (&dataBase) ; // Read memory to know the list of sensor availables, fill DataBase
patrick_duc 21:8524d815c587 70 initSensors () ; // Depend of the list of sensors launch each
patrick_duc 21:8524d815c587 71 initActuators () ; // Depend of the list of actuator launch each
patrick_duc 21:8524d815c587 72
patrick_duc 21:8524d815c587 73 // Read Radio parameter in Database for Lora interface (example)
patrick_duc 21:8524d815c587 74 uint32_t freq ;
patrick_duc 21:8524d815c587 75 RadioLoRaBandwidths_t bw ;
patrick_duc 21:8524d815c587 76 RadioLoRaSpreadingFactors_t sf ;
patrick_duc 21:8524d815c587 77 int8_t pwr ;
patrick_duc 21:8524d815c587 78 uint8_t bsz ;
patrick_duc 21:8524d815c587 79 int16_t terminal_heartbeat_period;
patrick_duc 21:8524d815c587 80 int16_t payload_heartbeat_period;
patrick_duc 21:8524d815c587 81 dataBase.getRadioParameter ( freq, bw, sf, pwr, bsz, terminal_heartbeat_period, payload_heartbeat_period) ;
patrick_duc 21:8524d815c587 82
patrick_duc 21:8524d815c587 83 initLora ( freq, bw, sf, pwr ) ; // Initialise the radio module
patrick_duc 21:8524d815c587 84
patrick_duc 21:8524d815c587 85 printf( "*** APP *** start %ld %d %d %d %d %d \r\n",freq, bw, sf, pwr, bsz, time) ;
patrick_duc 21:8524d815c587 86
patrick_duc 21:8524d815c587 87 tftlcd.Update ( freq, bw, sf, pwr, bsz, payload_heartbeat_period ) ; // Show information
patrick_duc 21:8524d815c587 88
patrick_duc 21:8524d815c587 89 printf( "*** APP_ *** Start Controller (Send message GoodHealth)\r\n");
patrick_duc 21:8524d815c587 90 messageFactory.buildGoodhealth () ;
patrick_duc 21:8524d815c587 91 //sendMessageLora () ;
patrick_duc 21:8524d815c587 92 }
patrick_duc 21:8524d815c587 93
patrick_duc 21:8524d815c587 94 void Controller::initInterfaces () {
patrick_duc 21:8524d815c587 95 // Depend of the configuration read on DataBase (memory origin)
patrick_duc 21:8524d815c587 96
patrick_duc 21:8524d815c587 97 debugSerial = new RawSerial (USBTX,USBRX, 230400); // Debug Link
patrick_duc 21:8524d815c587 98 tftlcd.Init () ;
patrick_duc 21:8524d815c587 99 // I2C, SPI, UART ....
patrick_duc 21:8524d815c587 100 }
patrick_duc 21:8524d815c587 101
patrick_duc 21:8524d815c587 102
patrick_duc 21:8524d815c587 103 void Controller::initSensors(){
patrick_duc 21:8524d815c587 104 printf( "*** APPP *** initSensors \r\n");
patrick_duc 21:8524d815c587 105 // depend of the list identified (example)
patrick_duc 21:8524d815c587 106 //bme280 = new BME280(i2c_rt);
patrick_duc 21:8524d815c587 107 // depend of the list identified
patrick_duc 21:8524d815c587 108 //bme280->init(config->getBME280_MODE());
patrick_duc 21:8524d815c587 109 // iks01a2.read () ;
patrick_duc 21:8524d815c587 110 }
patrick_duc 21:8524d815c587 111
patrick_duc 21:8524d815c587 112 void Controller::initActuators(){
patrick_duc 21:8524d815c587 113 // depend of the list identified (example)
patrick_duc 21:8524d815c587 114 //bme280 = new BME280(i2c_rt);
patrick_duc 21:8524d815c587 115 // depend of the list identified
patrick_duc 21:8524d815c587 116 //bme280->init(config->getBME280_MODE());
patrick_duc 21:8524d815c587 117 }
patrick_duc 21:8524d815c587 118
patrick_duc 21:8524d815c587 119 void Controller::manageSensors () {
patrick_duc 21:8524d815c587 120 readSensors () ;
patrick_duc 21:8524d815c587 121 messageFactory.buildSensors () ;
patrick_duc 21:8524d815c587 122 sendMessage () ;
patrick_duc 21:8524d815c587 123 }
patrick_duc 21:8524d815c587 124
patrick_duc 21:8524d815c587 125 void Controller::manageGoodhealth () {
patrick_duc 21:8524d815c587 126 readSensors () ;
patrick_duc 21:8524d815c587 127 messageFactory.buildGoodhealth () ;
patrick_duc 21:8524d815c587 128 //sendMessage () ;
patrick_duc 21:8524d815c587 129 }
patrick_duc 21:8524d815c587 130
patrick_duc 21:8524d815c587 131 void Controller::manageSynchro () {
patrick_duc 21:8524d815c587 132 messageFactory.buildSynchro () ;
patrick_duc 21:8524d815c587 133 //sendMessage () ;
patrick_duc 21:8524d815c587 134 }
patrick_duc 21:8524d815c587 135
patrick_duc 21:8524d815c587 136 void Controller::manageConfiguration () {
patrick_duc 21:8524d815c587 137 messageFactory.buildConfiguration () ;
patrick_duc 21:8524d815c587 138 //sendMessage () ;
patrick_duc 21:8524d815c587 139 }
patrick_duc 21:8524d815c587 140
patrick_duc 21:8524d815c587 141 void Controller::manageListening () {
patrick_duc 21:8524d815c587 142 }
patrick_duc 21:8524d815c587 143
patrick_duc 21:8524d815c587 144
patrick_duc 21:8524d815c587 145 void Controller::getScheduling (uint16_t &TimerPayload, uint16_t &TimerGoodhealth, uint16_t &TimerSynchro, uint16_t &TimerListening ) {
patrick_duc 21:8524d815c587 146
patrick_duc 21:8524d815c587 147 TimerPayload = 3L ; // TODO Dépend de la lecture de la memoire (ici simulé)
patrick_duc 21:8524d815c587 148 TimerGoodhealth = 60L ;
patrick_duc 21:8524d815c587 149 TimerSynchro = 0L ;
patrick_duc 21:8524d815c587 150 TimerListening = 0L ;
patrick_duc 21:8524d815c587 151 }
patrick_duc 21:8524d815c587 152
patrick_duc 21:8524d815c587 153 void Controller::sendMessage () {
patrick_duc 21:8524d815c587 154 printf( "*** APP_ *** sendMessage \r\n");
patrick_duc 21:8524d815c587 155 sendMessageLora () ;
patrick_duc 21:8524d815c587 156 }
patrick_duc 21:8524d815c587 157
patrick_duc 21:8524d815c587 158
patrick_duc 21:8524d815c587 159 void Controller::readSensors () {
patrick_duc 21:8524d815c587 160 printf( "*** APP_ *** readSensors \r\n");
patrick_duc 21:8524d815c587 161 printf("*** APP *** loop on all channels\r\n");
patrick_duc 21:8524d815c587 162 short nbSensors = dataBase.getNbService(Service::SENSOR);
patrick_duc 21:8524d815c587 163 printf("*** APP *** there are %d sensors in this payload\r\n", nbSensors);
patrick_duc 21:8524d815c587 164 // depend of the list identified
patrick_duc 21:8524d815c587 165 // Each sensor sends an event in the db
patrick_duc 21:8524d815c587 166 //iks01a2.read () ;
patrick_duc 21:8524d815c587 167 }
patrick_duc 21:8524d815c587 168
patrick_duc 21:8524d815c587 169 void Controller::writeActuators () {
patrick_duc 21:8524d815c587 170 // depend of the list identified
patrick_duc 21:8524d815c587 171 // Each sensor send can put a event in the queu
patrick_duc 21:8524d815c587 172 }
patrick_duc 21:8524d815c587 173
patrick_duc 21:8524d815c587 174 #endif