Version FC

Dependencies:   DmTftLibrary eeprom SX1280Lib filesystem mbed

Fork of MSNV2-Terminal_V1-5 by Francis CHATAIN

Committer:
FCH_31
Date:
Mon Oct 22 09:37:50 2018 +0000
Revision:
41:5a436163dddf
Parent:
20:b0281e8a375a
avec radio;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
FCH_31 8:cd489b7c49a0 1 /*
FCH_31 8:cd489b7c49a0 2 * MISNet
FCH_31 8:cd489b7c49a0 3 *
FCH_31 8:cd489b7c49a0 4 * Frame: Gestionnaire de fabrication des messages et décodage des messages recus
FCH_31 8:cd489b7c49a0 5 *
FCH_31 8:cd489b7c49a0 6 * Created on: August 17, 2018 Author: Francis CHATAIN
FCH_31 8:cd489b7c49a0 7 *
FCH_31 8:cd489b7c49a0 8 */
FCH_31 8:cd489b7c49a0 9
FCH_31 8:cd489b7c49a0 10 // ===================================== Includes
FCH_31 8:cd489b7c49a0 11
patrick_duc 13:5414193da1de 12 //#include "main.h"
patrick_duc 20:b0281e8a375a 13 #include "DataBase.hpp"
patrick_duc 20:b0281e8a375a 14
patrick_duc 20:b0281e8a375a 15
patrick_duc 20:b0281e8a375a 16 using namespace misnet;
patrick_duc 20:b0281e8a375a 17
FCH_31 8:cd489b7c49a0 18
FCH_31 8:cd489b7c49a0 19 // ===================================== Method of class
FCH_31 8:cd489b7c49a0 20
FCH_31 8:cd489b7c49a0 21
FCH_31 8:cd489b7c49a0 22 // ===================================== Constructor
FCH_31 8:cd489b7c49a0 23 DataBase::DataBase () {}
FCH_31 10:1b37e3b41947 24 DataBase::~DataBase () {}
FCH_31 8:cd489b7c49a0 25
FCH_31 8:cd489b7c49a0 26 void DataBase::init () {}
FCH_31 8:cd489b7c49a0 27
FCH_31 8:cd489b7c49a0 28
patrick_duc 20:b0281e8a375a 29 #ifndef TEST_ENVIRONMENT
FCH_31 8:cd489b7c49a0 30 void DataBase::getRadioParameter (uint32_t &rfFrequency,
FCH_31 8:cd489b7c49a0 31 RadioLoRaBandwidths_t &loraBw,
FCH_31 8:cd489b7c49a0 32 RadioLoRaSpreadingFactors_t &loraSf ,
FCH_31 8:cd489b7c49a0 33 int8_t &txOutputPower,
FCH_31 8:cd489b7c49a0 34 uint8_t &bufferSizeMax,
patrick_duc 20:b0281e8a375a 35 int16_t &terminal_heartbeat_period,
patrick_duc 20:b0281e8a375a 36 int16_t &payload_heartbeat_period)
FCH_31 8:cd489b7c49a0 37 {
patrick_duc 20:b0281e8a375a 38 rfFrequency = _rf_frequency ;
patrick_duc 20:b0281e8a375a 39 loraBw = _lora_bw ;
patrick_duc 20:b0281e8a375a 40 loraSf = _lora_sf ;
patrick_duc 20:b0281e8a375a 41 txOutputPower = _tx_output_power ;
patrick_duc 20:b0281e8a375a 42 bufferSizeMax = _buffer_size_max ;
patrick_duc 20:b0281e8a375a 43 terminal_heartbeat_period = _terminal_heartbeat_period;
patrick_duc 20:b0281e8a375a 44 payload_heartbeat_period = _payload_heartbeat_period;
patrick_duc 13:5414193da1de 45 }
FCH_31 8:cd489b7c49a0 46
patrick_duc 13:5414193da1de 47
FCH_31 8:cd489b7c49a0 48 void DataBase::setRadioParameter ( uint32_t rfFrequency,
FCH_31 8:cd489b7c49a0 49 RadioLoRaBandwidths_t loraBw,
FCH_31 8:cd489b7c49a0 50 RadioLoRaSpreadingFactors_t loraSf ,
FCH_31 8:cd489b7c49a0 51 int8_t txOutputPower,
FCH_31 8:cd489b7c49a0 52 uint8_t bufferSizeMax,
patrick_duc 20:b0281e8a375a 53 int16_t terminal_heartbeat_period,
patrick_duc 20:b0281e8a375a 54 int16_t payload_heartbeat_period)
FCH_31 8:cd489b7c49a0 55 {
patrick_duc 20:b0281e8a375a 56 _rf_frequency = rfFrequency ;
patrick_duc 20:b0281e8a375a 57 _lora_bw = loraBw ;
patrick_duc 20:b0281e8a375a 58 _lora_sf = loraSf ;
patrick_duc 20:b0281e8a375a 59 _tx_output_power = txOutputPower ;
patrick_duc 20:b0281e8a375a 60 _buffer_size_max = bufferSizeMax ;
patrick_duc 20:b0281e8a375a 61 _terminal_heartbeat_period = terminal_heartbeat_period ;
patrick_duc 20:b0281e8a375a 62 _payload_heartbeat_period = payload_heartbeat_period ;
patrick_duc 20:b0281e8a375a 63
FCH_31 41:5a436163dddf 64 printf( "*** DTB *** setRadioParameter %u %d %d %d %d %d %d\r\n", _rf_frequency, _lora_bw,
patrick_duc 20:b0281e8a375a 65 _lora_sf, _tx_output_power, _buffer_size_max,_terminal_heartbeat_period, _payload_heartbeat_period);
FCH_31 8:cd489b7c49a0 66 }
patrick_duc 20:b0281e8a375a 67 #endif
patrick_duc 20:b0281e8a375a 68
FCH_31 8:cd489b7c49a0 69
patrick_duc 19:4b147d8f9164 70 short DataBase::getNbService(Service::DEVICE_TYPE deviceType) {
patrick_duc 13:5414193da1de 71 short result = 0;
FCH_31 8:cd489b7c49a0 72
patrick_duc 19:4b147d8f9164 73 std::vector<Service*> channels = this->_payload->getServices();
patrick_duc 13:5414193da1de 74
patrick_duc 19:4b147d8f9164 75 for(std::vector<Service*>::iterator it = channels.begin(); it != channels.end(); it++) {
patrick_duc 19:4b147d8f9164 76 Service* channel = *it;
patrick_duc 13:5414193da1de 77 if (channel->getDeviceType() == deviceType) {
patrick_duc 13:5414193da1de 78 result++;
patrick_duc 13:5414193da1de 79 }
patrick_duc 13:5414193da1de 80 }
patrick_duc 13:5414193da1de 81
patrick_duc 13:5414193da1de 82 return result;
patrick_duc 13:5414193da1de 83 }
patrick_duc 13:5414193da1de 84
patrick_duc 20:b0281e8a375a 85
patrick_duc 20:b0281e8a375a 86 Service::DEVICE_TYPE DataBase::getServiceType (short channel) {
patrick_duc 20:b0281e8a375a 87 return this->_payload->getServiceByRank(channel)->getDeviceType();
patrick_duc 13:5414193da1de 88 }
patrick_duc 20:b0281e8a375a 89
patrick_duc 20:b0281e8a375a 90
patrick_duc 20:b0281e8a375a 91 std::list<CandidateComponent*> * DataBase::getCandidateSensorsList() {
patrick_duc 20:b0281e8a375a 92 std::list<CandidateComponent*> * result = new std::list<CandidateComponent*>();
patrick_duc 20:b0281e8a375a 93
patrick_duc 20:b0281e8a375a 94 CandidateComponent* candidateComponent = (CandidateComponent*) NULL;
patrick_duc 20:b0281e8a375a 95
patrick_duc 20:b0281e8a375a 96 std::vector<Component*>::iterator componentIt = this->_payload->getComponents().begin();
patrick_duc 20:b0281e8a375a 97 for (; componentIt != this->_payload->getComponents().end(); componentIt++) {
patrick_duc 20:b0281e8a375a 98
patrick_duc 20:b0281e8a375a 99 bool activeSensor = false;
patrick_duc 20:b0281e8a375a 100 for(std::vector<Service*>::iterator serviceIt = (*componentIt)->getServices().begin();
patrick_duc 20:b0281e8a375a 101 serviceIt != (*componentIt)->getServices().end();
patrick_duc 20:b0281e8a375a 102 serviceIt++) {
patrick_duc 20:b0281e8a375a 103
patrick_duc 20:b0281e8a375a 104 // Check that the service is enabled
patrick_duc 20:b0281e8a375a 105 if ((*serviceIt)->getState() == Service::ENABLED) {
patrick_duc 20:b0281e8a375a 106
patrick_duc 20:b0281e8a375a 107 // Check that the subsampling rate matches this activation number
patrick_duc 20:b0281e8a375a 108 if ((*serviceIt)->processHeartbeat()) {
patrick_duc 20:b0281e8a375a 109 if (candidateComponent == (CandidateComponent*) NULL) {
patrick_duc 20:b0281e8a375a 110 candidateComponent = new CandidateComponent(*componentIt);
patrick_duc 20:b0281e8a375a 111 }
patrick_duc 20:b0281e8a375a 112 candidateComponent->addService(*serviceIt);
patrick_duc 20:b0281e8a375a 113 }
patrick_duc 20:b0281e8a375a 114 }
patrick_duc 20:b0281e8a375a 115 }
patrick_duc 20:b0281e8a375a 116
patrick_duc 20:b0281e8a375a 117 if (candidateComponent != (CandidateComponent*) NULL) {
patrick_duc 20:b0281e8a375a 118 result->push_back(candidateComponent);
patrick_duc 20:b0281e8a375a 119 candidateComponent = (CandidateComponent*) NULL;
patrick_duc 20:b0281e8a375a 120 }
patrick_duc 20:b0281e8a375a 121
patrick_duc 20:b0281e8a375a 122 }
patrick_duc 20:b0281e8a375a 123
patrick_duc 20:b0281e8a375a 124 return result;
patrick_duc 20:b0281e8a375a 125 }