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:45:52 2018 +0000
Revision:
24:92c30dabfda4
Debut d'ajout des classes de gestion et serialisation de messages.; Attention ! Classes non encore toutes fonctionnelles...; A tester au moyen du driver de test serialisation.cpp dans le repertoire TESTS.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
patrick_duc 24:92c30dabfda4 1 #include <iostream>
patrick_duc 24:92c30dabfda4 2 #include <cstdlib>
patrick_duc 24:92c30dabfda4 3
patrick_duc 24:92c30dabfda4 4 #include "Context.h"
patrick_duc 24:92c30dabfda4 5
patrick_duc 24:92c30dabfda4 6 #include "Value.hpp"
patrick_duc 24:92c30dabfda4 7 #include "ExtMemory.hpp"
patrick_duc 24:92c30dabfda4 8 #include "DataBase.hpp"
patrick_duc 24:92c30dabfda4 9
patrick_duc 24:92c30dabfda4 10
patrick_duc 24:92c30dabfda4 11 using namespace misnet;
patrick_duc 24:92c30dabfda4 12
patrick_duc 24:92c30dabfda4 13
patrick_duc 24:92c30dabfda4 14 static Value* values[10][4];
patrick_duc 24:92c30dabfda4 15
patrick_duc 24:92c30dabfda4 16 static Value value_1_sensor_102, value_2_sensor_102, value_3_sensor_102, value_4_sensor_102, value_5_sensor_102;
patrick_duc 24:92c30dabfda4 17 static Value value_6_sensor_102, value_7_sensor_102, value_8_sensor_102, value_9_sensor_102, value_10_sensor_102;
patrick_duc 24:92c30dabfda4 18 static Value value_1_sensor_103, value_2_sensor_103, value_3_sensor_103, value_4_sensor_103, value_5_sensor_103;
patrick_duc 24:92c30dabfda4 19 static Value value_6_sensor_103, value_7_sensor_103, value_8_sensor_103, value_9_sensor_103, value_10_sensor_103;
patrick_duc 24:92c30dabfda4 20 static Value value_1_sensor_113, value_2_sensor_113, value_3_sensor_113, value_4_sensor_113, value_5_sensor_113;
patrick_duc 24:92c30dabfda4 21 static Value value_6_sensor_113, value_7_sensor_113, value_8_sensor_113, value_9_sensor_113, value_10_sensor_113;
patrick_duc 24:92c30dabfda4 22 static Value value_1_sensor_139, value_2_sensor_139, value_3_sensor_139, value_4_sensor_139, value_5_sensor_139;
patrick_duc 24:92c30dabfda4 23 static Value value_6_sensor_139, value_7_sensor_139, value_8_sensor_139, value_9_sensor_139, value_10_sensor_139;
patrick_duc 24:92c30dabfda4 24
patrick_duc 24:92c30dabfda4 25 static void initValues() {
patrick_duc 24:92c30dabfda4 26 values[0][0] = &value_1_sensor_102;
patrick_duc 24:92c30dabfda4 27 values[1][0] = &value_2_sensor_102;
patrick_duc 24:92c30dabfda4 28 values[2][0] = &value_3_sensor_102;
patrick_duc 24:92c30dabfda4 29 values[3][0] = &value_4_sensor_102;
patrick_duc 24:92c30dabfda4 30 values[4][0] = &value_5_sensor_102;
patrick_duc 24:92c30dabfda4 31 values[5][0] = &value_6_sensor_102;
patrick_duc 24:92c30dabfda4 32 values[6][0] = &value_7_sensor_102;
patrick_duc 24:92c30dabfda4 33 values[7][0] = &value_8_sensor_102;
patrick_duc 24:92c30dabfda4 34 values[8][0] = &value_9_sensor_102;
patrick_duc 24:92c30dabfda4 35 values[9][0] = &value_10_sensor_102;
patrick_duc 24:92c30dabfda4 36 values[0][1] = &value_1_sensor_103;
patrick_duc 24:92c30dabfda4 37 values[1][1] = &value_2_sensor_103;
patrick_duc 24:92c30dabfda4 38 values[2][1] = &value_3_sensor_103;
patrick_duc 24:92c30dabfda4 39 values[3][1] = &value_4_sensor_103;
patrick_duc 24:92c30dabfda4 40 values[4][1] = &value_5_sensor_103;
patrick_duc 24:92c30dabfda4 41 values[5][1] = &value_6_sensor_103;
patrick_duc 24:92c30dabfda4 42 values[6][1] = &value_7_sensor_103;
patrick_duc 24:92c30dabfda4 43 values[7][1] = &value_8_sensor_103;
patrick_duc 24:92c30dabfda4 44 values[8][1] = &value_9_sensor_103;
patrick_duc 24:92c30dabfda4 45 values[9][1] = &value_10_sensor_103;
patrick_duc 24:92c30dabfda4 46 values[0][2] = &value_1_sensor_113;
patrick_duc 24:92c30dabfda4 47 values[1][2] = &value_2_sensor_113;
patrick_duc 24:92c30dabfda4 48 values[2][2] = &value_3_sensor_113;
patrick_duc 24:92c30dabfda4 49 values[3][2] = &value_4_sensor_113;
patrick_duc 24:92c30dabfda4 50 values[4][2] = &value_5_sensor_113;
patrick_duc 24:92c30dabfda4 51 values[5][2] = &value_6_sensor_113;
patrick_duc 24:92c30dabfda4 52 values[6][2] = &value_7_sensor_113;
patrick_duc 24:92c30dabfda4 53 values[7][2] = &value_8_sensor_113;
patrick_duc 24:92c30dabfda4 54 values[8][2] = &value_9_sensor_113;
patrick_duc 24:92c30dabfda4 55 values[9][2] = &value_10_sensor_113;
patrick_duc 24:92c30dabfda4 56 values[0][3] = &value_1_sensor_139;
patrick_duc 24:92c30dabfda4 57 values[1][3] = &value_2_sensor_139;
patrick_duc 24:92c30dabfda4 58 values[2][3] = &value_3_sensor_139;
patrick_duc 24:92c30dabfda4 59 values[3][3] = &value_4_sensor_139;
patrick_duc 24:92c30dabfda4 60 values[4][3] = &value_5_sensor_139;
patrick_duc 24:92c30dabfda4 61 values[5][3] = &value_6_sensor_139;
patrick_duc 24:92c30dabfda4 62 values[6][3] = &value_7_sensor_139;
patrick_duc 24:92c30dabfda4 63 values[7][3] = &value_8_sensor_139;
patrick_duc 24:92c30dabfda4 64 values[8][3] = &value_9_sensor_139;
patrick_duc 24:92c30dabfda4 65 values[9][3] = &value_10_sensor_139;
patrick_duc 24:92c30dabfda4 66
patrick_duc 24:92c30dabfda4 67 // Values for sensor 102
patrick_duc 24:92c30dabfda4 68 value_1_sensor_102.setInt16Value(10000); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 69 value_2_sensor_102.setInt16Value(10250); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 70 value_3_sensor_102.setInt16Value(10280); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 71 value_4_sensor_102.setInt16Value(10310); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 72 value_5_sensor_102.setInt16Value(10550); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 73 value_6_sensor_102.setInt16Value(10649); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 74 value_7_sensor_102.setInt16Value(10750); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 75 value_8_sensor_102.setInt16Value(10785); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 76 value_9_sensor_102.setInt16Value(10810); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 77 value_10_sensor_102.setInt16Value(10911); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 78
patrick_duc 24:92c30dabfda4 79 // Values for sensor 103
patrick_duc 24:92c30dabfda4 80 value_1_sensor_103.setFloatValue(105.5); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 81 value_2_sensor_103.setFloatValue(102.1); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 82 value_3_sensor_103.setFloatValue(108.3); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 83 value_4_sensor_103.setFloatValue(111.0); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 84 value_5_sensor_103.setFloatValue(112.7); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 85 value_6_sensor_103.setFloatValue(111.4); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 86 value_7_sensor_103.setFloatValue(107.1); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 87 value_8_sensor_103.setFloatValue(104.8); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 88 value_9_sensor_103.setFloatValue(105.9); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 89 value_10_sensor_103.setFloatValue(98.7); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 90
patrick_duc 24:92c30dabfda4 91 // Values for sensor 113
patrick_duc 24:92c30dabfda4 92 value_1_sensor_113.setInt8Value(-87); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 93 value_2_sensor_113.setInt8Value(-90); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 94 value_3_sensor_113.setInt8Value(-91); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 95 value_4_sensor_113.setInt8Value(-90); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 96 value_5_sensor_113.setInt8Value(-86); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 97 value_6_sensor_113.setInt8Value(-88); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 98 value_7_sensor_113.setInt8Value(-91); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 99 value_8_sensor_113.setInt8Value(-92); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 100 value_9_sensor_113.setInt8Value(-93); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 101 value_10_sensor_113.setInt8Value(-91); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 102
patrick_duc 24:92c30dabfda4 103 // Values for sensor 139
patrick_duc 24:92c30dabfda4 104 value_1_sensor_139.setDoubleValue(0.654); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 105 value_2_sensor_139.setDoubleValue(1.065); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 106 value_3_sensor_139.setDoubleValue(0.876); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 107 value_4_sensor_139.setDoubleValue(0.2854); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 108 value_5_sensor_139.setDoubleValue(1.01); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 109 value_6_sensor_139.setDoubleValue(0.996); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 110 value_7_sensor_139.setDoubleValue(1.002); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 111 value_8_sensor_139.setDoubleValue(0.86); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 112 value_9_sensor_139.setDoubleValue(0.77); // Should NOT be sent to gateway
patrick_duc 24:92c30dabfda4 113 value_10_sensor_139.setDoubleValue(1.2675); // Should be sent to gateway
patrick_duc 24:92c30dabfda4 114 }
patrick_duc 24:92c30dabfda4 115
patrick_duc 24:92c30dabfda4 116
patrick_duc 24:92c30dabfda4 117 int main(int argc, char** argv) {
patrick_duc 24:92c30dabfda4 118 Value value;
patrick_duc 24:92c30dabfda4 119 value.setDoubleValue(-1.0 / 81);
patrick_duc 24:92c30dabfda4 120
patrick_duc 24:92c30dabfda4 121
patrick_duc 24:92c30dabfda4 122 DataBase * database = new DataBase();
patrick_duc 24:92c30dabfda4 123
patrick_duc 24:92c30dabfda4 124 ExtMemory::read(database);
patrick_duc 24:92c30dabfda4 125
patrick_duc 24:92c30dabfda4 126 DEBUG("PAYLOAD\n=======\n%s\n", database->getPayload()->toString().c_str());
patrick_duc 24:92c30dabfda4 127
patrick_duc 24:92c30dabfda4 128 int sensor_index; // Sensor index; ranges from 0 to 3, since there are 4 active sensors in this configuration
patrick_duc 24:92c30dabfda4 129 int sensor_102_value_index; // Value index; ranges from 0 to 9, since there are 10 values for each active sensor in this test
patrick_duc 24:92c30dabfda4 130 int sensor_103_value_index; // Value index; ranges from 0 to 9, since there are 10 values for each active sensor in this test
patrick_duc 24:92c30dabfda4 131 int sensor_113_value_index; // Value index; ranges from 0 to 9, since there are 10 values for each active sensor in this test
patrick_duc 24:92c30dabfda4 132 int sensor_139_value_index; // Value index; ranges from 0 to 9, since there are 10 values for each active sensor in this test
patrick_duc 24:92c30dabfda4 133 int* current_sensor_value_index;
patrick_duc 24:92c30dabfda4 134
patrick_duc 24:92c30dabfda4 135 initValues();
patrick_duc 24:92c30dabfda4 136
patrick_duc 24:92c30dabfda4 137 // Loop to simulate payload heartbeat
patrick_duc 24:92c30dabfda4 138 // ----------------------------------
patrick_duc 24:92c30dabfda4 139 for (int i = 0, sensor_index = 0, sensor_102_value_index = 0, sensor_103_value_index = 0, sensor_113_value_index = 0, sensor_139_value_index = 0;
patrick_duc 24:92c30dabfda4 140 i < 1000000;
patrick_duc 24:92c30dabfda4 141 ++i) {
patrick_duc 24:92c30dabfda4 142
patrick_duc 24:92c30dabfda4 143 std::list<CandidateComponent*> * candidateComponents = database->getCandidateSensorsList();
patrick_duc 24:92c30dabfda4 144
patrick_duc 24:92c30dabfda4 145 if (candidateComponents->size() != 0) {
patrick_duc 24:92c30dabfda4 146 DEBUG("Iteration #%d\n****************\n", i);
patrick_duc 24:92c30dabfda4 147
patrick_duc 24:92c30dabfda4 148 for (std::list<CandidateComponent*>::iterator candidateComponentIterator = candidateComponents->begin();
patrick_duc 24:92c30dabfda4 149 candidateComponentIterator != candidateComponents->end();
patrick_duc 24:92c30dabfda4 150 candidateComponentIterator++) {
patrick_duc 24:92c30dabfda4 151
patrick_duc 24:92c30dabfda4 152 DEBUG("Candidate component : %d\n", (*candidateComponentIterator)->getComponent()->getId());
patrick_duc 24:92c30dabfda4 153 for (std::list<Service*>::iterator serviceIterator = (*candidateComponentIterator)->getServices().begin();
patrick_duc 24:92c30dabfda4 154 serviceIterator != (*candidateComponentIterator)->getServices().end();
patrick_duc 24:92c30dabfda4 155 serviceIterator++) {
patrick_duc 24:92c30dabfda4 156
patrick_duc 24:92c30dabfda4 157 DEBUG("\tCandidate service : %d\n", (*serviceIterator)->getMisnetCode());
patrick_duc 24:92c30dabfda4 158
patrick_duc 24:92c30dabfda4 159 switch ((*serviceIterator)->getMisnetCode()) {
patrick_duc 24:92c30dabfda4 160 case 102:
patrick_duc 24:92c30dabfda4 161 sensor_index = 0;
patrick_duc 24:92c30dabfda4 162 current_sensor_value_index = &sensor_102_value_index;
patrick_duc 24:92c30dabfda4 163 break;
patrick_duc 24:92c30dabfda4 164
patrick_duc 24:92c30dabfda4 165 case 103:
patrick_duc 24:92c30dabfda4 166 sensor_index = 1;
patrick_duc 24:92c30dabfda4 167 current_sensor_value_index = &sensor_103_value_index;
patrick_duc 24:92c30dabfda4 168 break;
patrick_duc 24:92c30dabfda4 169
patrick_duc 24:92c30dabfda4 170 case 113:
patrick_duc 24:92c30dabfda4 171 sensor_index = 2;
patrick_duc 24:92c30dabfda4 172 current_sensor_value_index = &sensor_113_value_index;
patrick_duc 24:92c30dabfda4 173 break;
patrick_duc 24:92c30dabfda4 174
patrick_duc 24:92c30dabfda4 175 case 139:
patrick_duc 24:92c30dabfda4 176 sensor_index = 3;
patrick_duc 24:92c30dabfda4 177 current_sensor_value_index = &sensor_139_value_index;
patrick_duc 24:92c30dabfda4 178 break;
patrick_duc 24:92c30dabfda4 179
patrick_duc 24:92c30dabfda4 180 default:
patrick_duc 24:92c30dabfda4 181 DEBUG("!!! UNEXPECTED MISNET CODE, ENDING TEST !!!");
patrick_duc 24:92c30dabfda4 182 return 1;
patrick_duc 24:92c30dabfda4 183 break;
patrick_duc 24:92c30dabfda4 184 }
patrick_duc 24:92c30dabfda4 185
patrick_duc 24:92c30dabfda4 186 DEBUG("\tSetting value %d of sensor %d, which is %s\n", *current_sensor_value_index, sensor_index,
patrick_duc 24:92c30dabfda4 187 values[*current_sensor_value_index][sensor_index]->toString().c_str());
patrick_duc 24:92c30dabfda4 188 (*serviceIterator)->setValue(*(values[*current_sensor_value_index][sensor_index]));
patrick_duc 24:92c30dabfda4 189
patrick_duc 24:92c30dabfda4 190 // Increment sensor value index (but modulus 10)
patrick_duc 24:92c30dabfda4 191 *current_sensor_value_index = ++(*current_sensor_value_index) % 10;
patrick_duc 24:92c30dabfda4 192 DEBUG("\tNew value index for sensor %d : %d\n", sensor_index, *current_sensor_value_index);
patrick_duc 24:92c30dabfda4 193
patrick_duc 24:92c30dabfda4 194 DEBUG("\tCurrent sensor value : %s\n", (*serviceIterator)->getCurrentValueAsString().c_str());
patrick_duc 24:92c30dabfda4 195 DEBUG("\tPrevious sensor value : %s\n", (*serviceIterator)->getPreviousValueAsString().c_str());
patrick_duc 24:92c30dabfda4 196
patrick_duc 24:92c30dabfda4 197 if ((*serviceIterator)->valueToBeSentToGateway()) {
patrick_duc 24:92c30dabfda4 198 DEBUG("\tValue of service '%s' to be sent to gateway\n", (*serviceIterator)->toString().c_str());
patrick_duc 24:92c30dabfda4 199 }
patrick_duc 24:92c30dabfda4 200 else {
patrick_duc 24:92c30dabfda4 201 DEBUG("\tValue of service '%s' NOT to be sent to gateway\n", (*serviceIterator)->toString().c_str());
patrick_duc 24:92c30dabfda4 202 }
patrick_duc 24:92c30dabfda4 203 }
patrick_duc 24:92c30dabfda4 204 }
patrick_duc 24:92c30dabfda4 205 }
patrick_duc 24:92c30dabfda4 206
patrick_duc 24:92c30dabfda4 207 free(candidateComponents);
patrick_duc 24:92c30dabfda4 208 }
patrick_duc 24:92c30dabfda4 209
patrick_duc 24:92c30dabfda4 210 return 0;
patrick_duc 24:92c30dabfda4 211 }