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