![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Version FC
Dependencies: DmTftLibrary eeprom SX1280Lib filesystem mbed
Fork of MSNV2-Terminal_V1-5 by
DataBase.cpp@39:13e66d087ae9, 2018-10-19 (annotated)
- Committer:
- patrick_duc
- Date:
- Fri Oct 19 15:08:35 2018 +0000
- Branch:
- Integration
- Revision:
- 39:13e66d087ae9
- Parent:
- 38:9b43b2415093
Suite d'int?gration (ne compile pas encore).
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
FCH_31 | 8:cd489b7c49a0 | 1 | /* |
patrick_duc | 39:13e66d087ae9 | 2 | * MISNet |
FCH_31 | 8:cd489b7c49a0 | 3 | * |
patrick_duc | 39:13e66d087ae9 | 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 | 39:13e66d087ae9 | 12 | //#include "main.h" |
patrick_duc | 20:b0281e8a375a | 13 | #include "DataBase.hpp" |
patrick_duc | 38:9b43b2415093 | 14 | #include "SMTClearMessagePart.hpp" |
patrick_duc | 38:9b43b2415093 | 15 | #include "BroadcastIOTClearMessagePart.hpp" |
patrick_duc | 38:9b43b2415093 | 16 | #include "GenericClearMessagePart.hpp" |
patrick_duc | 20:b0281e8a375a | 17 | |
patrick_duc | 20:b0281e8a375a | 18 | |
patrick_duc | 20:b0281e8a375a | 19 | using namespace misnet; |
patrick_duc | 20:b0281e8a375a | 20 | |
FCH_31 | 8:cd489b7c49a0 | 21 | |
FCH_31 | 8:cd489b7c49a0 | 22 | // ===================================== Method of class |
FCH_31 | 8:cd489b7c49a0 | 23 | |
FCH_31 | 8:cd489b7c49a0 | 24 | |
patrick_duc | 39:13e66d087ae9 | 25 | // ===================================== Constructor |
FCH_31 | 8:cd489b7c49a0 | 26 | |
patrick_duc | 20:b0281e8a375a | 27 | #ifndef TEST_ENVIRONMENT |
patrick_duc | 39:13e66d087ae9 | 28 | void DataBase::getRadioParameter(uint32_t &rfFrequency, |
patrick_duc | 39:13e66d087ae9 | 29 | RadioLoRaBandwidths_t &loraBw, |
patrick_duc | 39:13e66d087ae9 | 30 | RadioLoRaSpreadingFactors_t &loraSf, |
patrick_duc | 39:13e66d087ae9 | 31 | int8_t &txOutputPower, |
patrick_duc | 39:13e66d087ae9 | 32 | uint8_t &bufferSizeMax, |
patrick_duc | 39:13e66d087ae9 | 33 | int16_t &platform_heartbeat_period, |
patrick_duc | 39:13e66d087ae9 | 34 | int16_t &payload_heartbeat_period) { |
patrick_duc | 39:13e66d087ae9 | 35 | rfFrequency = _rf_frequency; |
patrick_duc | 39:13e66d087ae9 | 36 | loraBw = _lora_bw; |
patrick_duc | 39:13e66d087ae9 | 37 | loraSf = _lora_sf; |
patrick_duc | 39:13e66d087ae9 | 38 | txOutputPower = _tx_output_power; |
patrick_duc | 39:13e66d087ae9 | 39 | bufferSizeMax = _buffer_size_max; |
patrick_duc | 39:13e66d087ae9 | 40 | platform_heartbeat_period = _platform_heartbeat_period; |
patrick_duc | 39:13e66d087ae9 | 41 | payload_heartbeat_period = _payload_heartbeat_period; |
patrick_duc | 13:5414193da1de | 42 | } |
FCH_31 | 8:cd489b7c49a0 | 43 | |
patrick_duc | 39:13e66d087ae9 | 44 | void DataBase::setRadioParameter(uint32_t rfFrequency, |
patrick_duc | 39:13e66d087ae9 | 45 | RadioLoRaBandwidths_t loraBw, |
patrick_duc | 39:13e66d087ae9 | 46 | RadioLoRaSpreadingFactors_t loraSf, |
patrick_duc | 39:13e66d087ae9 | 47 | int8_t txOutputPower, |
patrick_duc | 39:13e66d087ae9 | 48 | uint8_t bufferSizeMax, |
patrick_duc | 39:13e66d087ae9 | 49 | int16_t platform_heartbeat_period, |
patrick_duc | 39:13e66d087ae9 | 50 | int16_t payload_heartbeat_period) { |
patrick_duc | 39:13e66d087ae9 | 51 | _rf_frequency = rfFrequency; |
patrick_duc | 39:13e66d087ae9 | 52 | _lora_bw = loraBw; |
patrick_duc | 39:13e66d087ae9 | 53 | _lora_sf = loraSf; |
patrick_duc | 39:13e66d087ae9 | 54 | _tx_output_power = txOutputPower; |
patrick_duc | 39:13e66d087ae9 | 55 | _buffer_size_max = bufferSizeMax; |
patrick_duc | 39:13e66d087ae9 | 56 | _platform_heartbeat_period = platform_heartbeat_period; |
patrick_duc | 39:13e66d087ae9 | 57 | _payload_heartbeat_period = payload_heartbeat_period; |
patrick_duc | 13:5414193da1de | 58 | |
patrick_duc | 39:13e66d087ae9 | 59 | printf("*** DTB *** setRadioParameter %ld %d %d %d %d %d %d\r\n", _rf_frequency, _lora_bw, |
patrick_duc | 39:13e66d087ae9 | 60 | _lora_sf, _tx_output_power, _buffer_size_max, _platform_heartbeat_period, _payload_heartbeat_period); |
FCH_31 | 8:cd489b7c49a0 | 61 | } |
patrick_duc | 20:b0281e8a375a | 62 | #endif |
patrick_duc | 20:b0281e8a375a | 63 | |
FCH_31 | 8:cd489b7c49a0 | 64 | |
patrick_duc | 39:13e66d087ae9 | 65 | void DataBase::setClearMessagePart() { |
patrick_duc | 38:9b43b2415093 | 66 | switch (this->getTerminalType()) { |
patrick_duc | 38:9b43b2415093 | 67 | case DataBase::NORMAL_IOT: |
patrick_duc | 38:9b43b2415093 | 68 | _clear_message_part = new NormalIOTClearMessagePart(_terminal_id, _gateway_id); |
patrick_duc | 38:9b43b2415093 | 69 | break; |
patrick_duc | 38:9b43b2415093 | 70 | case DataBase::BROADCAST_IOT: |
patrick_duc | 38:9b43b2415093 | 71 | _clear_message_part = new BroadcastIOTClearMessagePart(_terminal_id, _gateway_id); |
patrick_duc | 38:9b43b2415093 | 72 | break; |
patrick_duc | 38:9b43b2415093 | 73 | case DataBase::SMART_TOOL: |
patrick_duc | 38:9b43b2415093 | 74 | _clear_message_part = new SMTClearMessagePart(_smart_tool_id); |
patrick_duc | 38:9b43b2415093 | 75 | break; |
patrick_duc | 38:9b43b2415093 | 76 | case DataBase::GENERIC_PEER2PEER: |
patrick_duc | 38:9b43b2415093 | 77 | _clear_message_part = new GenericClearMessagePart(_link_id); |
patrick_duc | 38:9b43b2415093 | 78 | break; |
patrick_duc | 38:9b43b2415093 | 79 | default: |
patrick_duc | 38:9b43b2415093 | 80 | break; |
patrick_duc | 38:9b43b2415093 | 81 | } |
patrick_duc | 38:9b43b2415093 | 82 | } |
patrick_duc | 38:9b43b2415093 | 83 | |
patrick_duc | 38:9b43b2415093 | 84 | |
patrick_duc | 39:13e66d087ae9 | 85 | void DataBase::setIOTConfigDataMessagePart() { |
patrick_duc | 38:9b43b2415093 | 86 | this->_iot_config_data_message_part = new misnet::IOTConfigDataMessagePart(); |
patrick_duc | 38:9b43b2415093 | 87 | |
patrick_duc | 38:9b43b2415093 | 88 | std::vector<Service*>::iterator serviceIt = this->_payload->getServices().begin(); |
patrick_duc | 38:9b43b2415093 | 89 | for (; serviceIt != this->_payload->getServices().end(); serviceIt++) { |
patrick_duc | 38:9b43b2415093 | 90 | //DEBUG("About to add description of channel %d\n", (*serviceIt)->getChannelNumber()); |
patrick_duc | 38:9b43b2415093 | 91 | ChannelDescription* channelDescription = new ChannelDescription((*serviceIt)->getChannelNumber(), |
patrick_duc | 38:9b43b2415093 | 92 | (*serviceIt)->getConfiguration(), |
patrick_duc | 38:9b43b2415093 | 93 | (*serviceIt)->getMisnetCode(), |
patrick_duc | 38:9b43b2415093 | 94 | (*serviceIt)->getValueType()); |
patrick_duc | 38:9b43b2415093 | 95 | this->_iot_config_data_message_part->addChannelDescription(channelDescription); |
patrick_duc | 38:9b43b2415093 | 96 | } |
patrick_duc | 38:9b43b2415093 | 97 | } |
patrick_duc | 38:9b43b2415093 | 98 | |
patrick_duc | 38:9b43b2415093 | 99 | |
patrick_duc | 39:13e66d087ae9 | 100 | short DataBase::getNbService(Service::SERVICE_TYPE deviceType) { |
patrick_duc | 13:5414193da1de | 101 | short result = 0; |
FCH_31 | 8:cd489b7c49a0 | 102 | |
patrick_duc | 19:4b147d8f9164 | 103 | std::vector<Service*> channels = this->_payload->getServices(); |
patrick_duc | 13:5414193da1de | 104 | |
patrick_duc | 38:9b43b2415093 | 105 | for (std::vector<Service*>::iterator it = channels.begin(); it != channels.end(); it++) { |
patrick_duc | 19:4b147d8f9164 | 106 | Service* channel = *it; |
patrick_duc | 13:5414193da1de | 107 | if (channel->getDeviceType() == deviceType) { |
patrick_duc | 13:5414193da1de | 108 | result++; |
patrick_duc | 13:5414193da1de | 109 | } |
patrick_duc | 13:5414193da1de | 110 | } |
patrick_duc | 13:5414193da1de | 111 | |
patrick_duc | 13:5414193da1de | 112 | return result; |
patrick_duc | 13:5414193da1de | 113 | } |
patrick_duc | 13:5414193da1de | 114 | |
patrick_duc | 20:b0281e8a375a | 115 | |
patrick_duc | 39:13e66d087ae9 | 116 | Service::SERVICE_TYPE DataBase::getServiceType(short channel) { |
patrick_duc | 20:b0281e8a375a | 117 | return this->_payload->getServiceByRank(channel)->getDeviceType(); |
patrick_duc | 13:5414193da1de | 118 | } |
patrick_duc | 20:b0281e8a375a | 119 | |
patrick_duc | 20:b0281e8a375a | 120 | |
patrick_duc | 20:b0281e8a375a | 121 | std::list<CandidateComponent*> * DataBase::getCandidateSensorsList() { |
patrick_duc | 20:b0281e8a375a | 122 | std::list<CandidateComponent*> * result = new std::list<CandidateComponent*>(); |
patrick_duc | 20:b0281e8a375a | 123 | |
patrick_duc | 20:b0281e8a375a | 124 | CandidateComponent* candidateComponent = (CandidateComponent*) NULL; |
patrick_duc | 20:b0281e8a375a | 125 | |
patrick_duc | 20:b0281e8a375a | 126 | std::vector<Component*>::iterator componentIt = this->_payload->getComponents().begin(); |
patrick_duc | 20:b0281e8a375a | 127 | for (; componentIt != this->_payload->getComponents().end(); componentIt++) { |
patrick_duc | 20:b0281e8a375a | 128 | |
patrick_duc | 38:9b43b2415093 | 129 | for (std::vector<Service*>::iterator serviceIt = (*componentIt)->getServices().begin(); |
patrick_duc | 38:9b43b2415093 | 130 | serviceIt != (*componentIt)->getServices().end(); |
patrick_duc | 38:9b43b2415093 | 131 | serviceIt++) { |
patrick_duc | 20:b0281e8a375a | 132 | |
patrick_duc | 20:b0281e8a375a | 133 | // Check that the service is enabled |
patrick_duc | 20:b0281e8a375a | 134 | if ((*serviceIt)->getState() == Service::ENABLED) { |
patrick_duc | 20:b0281e8a375a | 135 | |
patrick_duc | 20:b0281e8a375a | 136 | // Check that the subsampling rate matches this activation number |
patrick_duc | 20:b0281e8a375a | 137 | if ((*serviceIt)->processHeartbeat()) { |
patrick_duc | 20:b0281e8a375a | 138 | if (candidateComponent == (CandidateComponent*) NULL) { |
patrick_duc | 20:b0281e8a375a | 139 | candidateComponent = new CandidateComponent(*componentIt); |
patrick_duc | 20:b0281e8a375a | 140 | } |
patrick_duc | 20:b0281e8a375a | 141 | candidateComponent->addService(*serviceIt); |
patrick_duc | 20:b0281e8a375a | 142 | } |
patrick_duc | 20:b0281e8a375a | 143 | } |
patrick_duc | 20:b0281e8a375a | 144 | } |
patrick_duc | 20:b0281e8a375a | 145 | |
patrick_duc | 20:b0281e8a375a | 146 | if (candidateComponent != (CandidateComponent*) NULL) { |
patrick_duc | 20:b0281e8a375a | 147 | result->push_back(candidateComponent); |
patrick_duc | 20:b0281e8a375a | 148 | candidateComponent = (CandidateComponent*) NULL; |
patrick_duc | 20:b0281e8a375a | 149 | } |
patrick_duc | 20:b0281e8a375a | 150 | |
patrick_duc | 20:b0281e8a375a | 151 | } |
patrick_duc | 20:b0281e8a375a | 152 | |
patrick_duc | 20:b0281e8a375a | 153 | return result; |
patrick_duc | 20:b0281e8a375a | 154 | } |
patrick_duc | 38:9b43b2415093 | 155 | |
patrick_duc | 38:9b43b2415093 | 156 | |
patrick_duc | 39:13e66d087ae9 | 157 | std::list<Service*> * DataBase::getCandidateServicesList() { |
patrick_duc | 38:9b43b2415093 | 158 | std::list<Service*> * result = new std::list<Service*>(); |
patrick_duc | 38:9b43b2415093 | 159 | std::vector<misnet::Service*>& services = this->_payload->getServices(); |
patrick_duc | 38:9b43b2415093 | 160 | |
patrick_duc | 38:9b43b2415093 | 161 | for (std::vector<Service*>::iterator serviceIt = services.begin(); |
patrick_duc | 38:9b43b2415093 | 162 | serviceIt != services.end(); |
patrick_duc | 38:9b43b2415093 | 163 | serviceIt++) { |
patrick_duc | 38:9b43b2415093 | 164 | |
patrick_duc | 38:9b43b2415093 | 165 | // Check that the service is enabled |
patrick_duc | 38:9b43b2415093 | 166 | if ((*serviceIt)->getState() == Service::ENABLED) { |
patrick_duc | 38:9b43b2415093 | 167 | |
patrick_duc | 38:9b43b2415093 | 168 | // Check that the subsampling rate matches this activation number |
patrick_duc | 38:9b43b2415093 | 169 | if ((*serviceIt)->processHeartbeat()) { |
patrick_duc | 38:9b43b2415093 | 170 | result->push_back(*serviceIt); |
patrick_duc | 38:9b43b2415093 | 171 | } |
patrick_duc | 38:9b43b2415093 | 172 | } |
patrick_duc | 38:9b43b2415093 | 173 | } |
patrick_duc | 38:9b43b2415093 | 174 | |
patrick_duc | 38:9b43b2415093 | 175 | return result; |
patrick_duc | 38:9b43b2415093 | 176 | } |