Version FC

Dependencies:   DmTftLibrary eeprom SX1280Lib filesystem mbed

Fork of MSNV2-Terminal_V1-5 by Francis CHATAIN

Committer:
lo
Date:
Tue Sep 18 20:06:35 2018 +0000
Revision:
29:d085ab35d584
Parent:
24:92c30dabfda4
Child:
30:20f58f30113d
updated extmem with actual eeprom access, services and components handling is unfinished

Who changed what in which revision?

UserRevisionLine numberNew contents of line
FCH_31 10:1b37e3b41947 1 /*
FCH_31 10:1b37e3b41947 2 * MISNet
FCH_31 10:1b37e3b41947 3 *
FCH_31 10:1b37e3b41947 4 * ExtMemory: Accès EEPROM
FCH_31 10:1b37e3b41947 5 *
FCH_31 10:1b37e3b41947 6 * Created on: August 17, 2018 Author: Francis CHATAIN
FCH_31 10:1b37e3b41947 7 *
FCH_31 10:1b37e3b41947 8 */
FCH_31 10:1b37e3b41947 9
FCH_31 10:1b37e3b41947 10
FCH_31 10:1b37e3b41947 11 // ===================================== Includes
patrick_duc 21:8524d815c587 12 #include <cstdio>
patrick_duc 21:8524d815c587 13
patrick_duc 20:b0281e8a375a 14 #include "ExtMemory.hpp"
patrick_duc 19:4b147d8f9164 15 #include "Service.hpp"
patrick_duc 13:5414193da1de 16 #include "Component.hpp"
patrick_duc 13:5414193da1de 17 #include "Payload.hpp"
patrick_duc 20:b0281e8a375a 18
patrick_duc 20:b0281e8a375a 19 using namespace misnet;
FCH_31 10:1b37e3b41947 20
patrick_duc 20:b0281e8a375a 21 // ===================================== Methods of class
patrick_duc 20:b0281e8a375a 22
FCH_31 10:1b37e3b41947 23 void ExtMemory::read (DataBase* dataBase) {
lo 29:d085ab35d584 24
FCH_31 10:1b37e3b41947 25 // read eeprom and initialize database
FCH_31 10:1b37e3b41947 26 //(Example)
patrick_duc 13:5414193da1de 27
lo 29:d085ab35d584 28 uint8_t componentID=0xff;
lo 29:d085ab35d584 29 int16_t servicesNbr=0, servicesTotal=0;
lo 29:d085ab35d584 30 int32_t pos=0;
lo 29:d085ab35d584 31 ServiceDefinition sd,prev_sd;
lo 29:d085ab35d584 32 Header hd;
lo 29:d085ab35d584 33 EEPROM ep(I2C_SDA, I2C_SCL, EEPROM_ADDR, EEPROM::T24C04);
lo 29:d085ab35d584 34
patrick_duc 20:b0281e8a375a 35 DEBUG( "*** EXTMEM Reading external memory ***\n");
patrick_duc 13:5414193da1de 36
patrick_duc 20:b0281e8a375a 37 #ifndef TEST_ENVIRONMENT
patrick_duc 20:b0281e8a375a 38 dataBase->setRadioParameter ( (uint32_t)2400000000UL, LORA_BW_0400, LORA_SF7, (int8_t)-18, (uint8_t)100, (uint16_t)2000, (uint16_t)2000) ;
patrick_duc 20:b0281e8a375a 39 #endif
patrick_duc 13:5414193da1de 40
lo 29:d085ab35d584 41 // ---- read header block
lo 29:d085ab35d584 42 ep.read(pos, (void *) &hd, sizeof(hd));
lo 29:d085ab35d584 43 if (ep.getError() != 0) error(ep.getErrorMessage());
lo 29:d085ab35d584 44 pos += sizeof(hd);
lo 29:d085ab35d584 45 DEBUG("*** [reading header] services:%d mode:0x%02x payloadID:0x%04x ***\n",
lo 29:d085ab35d584 46 hd.nb_of_services, hd.operating_mode, hd.payload_id);
lo 29:d085ab35d584 47 servicesTotal = hd.nb_of_services; //dataBase.getNbService()
lo 29:d085ab35d584 48
lo 29:d085ab35d584 49 // ---- read services blocks
lo 29:d085ab35d584 50 std::vector<Component*> components = std::vector<Component*>();
lo 29:d085ab35d584 51 std::vector<Service*> services = std::vector<Service*>();
lo 29:d085ab35d584 52 Component* component;
lo 29:d085ab35d584 53 std::string name[6] = {"HTS221","LPS22HB","LSM303D","LSM6DSL","BME280","DS18B20"}; // debug purpose
lo 29:d085ab35d584 54 while(servicesNbr<servicesTotal){
lo 29:d085ab35d584 55 while(ep.read(pos, (void *) &sd, sizeof(sd)),(servicesNbr<servicesTotal)){
lo 29:d085ab35d584 56 pos += sizeof(sd);
lo 29:d085ab35d584 57 if (ep.getError() != 0) { error(ep.getErrorMessage()); continue;}
lo 29:d085ab35d584 58 // TODO STATE field is missing in ServiceDefinition
lo 29:d085ab35d584 59 // TODO access pins
lo 29:d085ab35d584 60 Service::ACCESS_PIN access_pins[6] = { 1, 2, 3, 4, 5, 6 };
lo 29:d085ab35d584 61 Service* service;
lo 29:d085ab35d584 62 // = new Service((misnet::Service::DEVICE_TYPE) sd.device_type,
lo 29:d085ab35d584 63 // sd.mistnet_code,
lo 29:d085ab35d584 64 // Service::ENABLED,
lo 29:d085ab35d584 65 // (misnet::Service::ACCESS_TYPE) sd.access_type,
lo 29:d085ab35d584 66 // (misnet::Service::REQUEST_MODE) sd.request_mode,
lo 29:d085ab35d584 67 // (misnet::Service::UP_MODE) sd.up_mode,
lo 29:d085ab35d584 68 // access_pins,
lo 29:d085ab35d584 69 // sd.subsample_rate,
lo 29:d085ab35d584 70 // (misnet::Service::ACTION) sd.action,
lo 29:d085ab35d584 71 // (misnet::Service::OUTPUT_MODE) sd.output,
lo 29:d085ab35d584 72 // sd.comment);
lo 29:d085ab35d584 73 if( componentID == 255 ) componentID = sd.component_id;
lo 29:d085ab35d584 74 if( (sd.component_id != componentID) || (servicesNbr == servicesTotal-1) ){
lo 29:d085ab35d584 75 if(servicesNbr == servicesTotal-1) services.push_back(service);
lo 29:d085ab35d584 76 // component = new Component((misnet::Component::COMPONENT_ID) prev_sd.component_id, services);
lo 29:d085ab35d584 77 components.push_back(component);
lo 29:d085ab35d584 78 DEBUG("push component code %d [%s] to vector (%d services)\n",prev_sd.component_id,name[component->getId()-1].c_str(),services.size());
lo 29:d085ab35d584 79 services.clear();
lo 29:d085ab35d584 80 }
lo 29:d085ab35d584 81 services.push_back(service);
lo 29:d085ab35d584 82 prev_sd = sd;
lo 29:d085ab35d584 83 componentID = sd.component_id;
lo 29:d085ab35d584 84 servicesNbr += 1;
lo 29:d085ab35d584 85 }
lo 29:d085ab35d584 86 services.clear();
lo 29:d085ab35d584 87 DEBUG("\n");
lo 29:d085ab35d584 88 }
lo 29:d085ab35d584 89 Payload * payload = new Payload((misnet::Payload::PAYLOAD_ID) hd.payload_id, components, hd.payload_base_period);
lo 29:d085ab35d584 90 dataBase->setPayload(payload);
lo 29:d085ab35d584 91
patrick_duc 13:5414193da1de 92
patrick_duc 13:5414193da1de 93 /* ******************************************************************************
patrick_duc 13:5414193da1de 94 In this example, the terminal holds 3 components :
patrick_duc 13:5414193da1de 95 * the first is a BME280 component, containing 3 sensors :
patrick_duc 13:5414193da1de 96 * a presence sensor (IPSO code = 102)
patrick_duc 13:5414193da1de 97 * a temperature sensor (IPSO code = 103)
patrick_duc 13:5414193da1de 98 * a humidity sensor (IPSO code = 104)
patrick_duc 13:5414193da1de 99 * the second is a LSM303A component, containing 2 sensors :
patrick_duc 13:5414193da1de 100 * an accelerometer sensor (IPSO code = 113)
patrick_duc 13:5414193da1de 101 * a barometer sensor (IPSO code = 115)
patrick_duc 13:5414193da1de 102 * the third one is a DS18B20 containing an actuator (audio, IPCO code = 139).
patrick_duc 13:5414193da1de 103
patrick_duc 13:5414193da1de 104 The terminal is of type IOT_PAYLOAD_3 (why not ?).
patrick_duc 13:5414193da1de 105 ****************************************************************************** */
FCH_31 10:1b37e3b41947 106
FCH_31 10:1b37e3b41947 107
patrick_duc 13:5414193da1de 108 /* **************************************************************************************
patrick_duc 13:5414193da1de 109 Pour Hoel et Francis, de la part de Patrick : je me doute bien que les composants BME280,
patrick_duc 13:5414193da1de 110 LSM303A et DS18B20 ne contiennent pas les devices décrits ici, c'est juste un exemple ;-)
patrick_duc 13:5414193da1de 111 ************************************************************************************** */
patrick_duc 13:5414193da1de 112
lo 29:d085ab35d584 113 // Service::ACCESS_PIN access_pins[6] = { 1, 2, 3, 4, 5, 6 };
lo 29:d085ab35d584 114 //
lo 29:d085ab35d584 115 // // Construction du premier service du premier composant
lo 29:d085ab35d584 116 // // ----------------------------------------------------
lo 29:d085ab35d584 117 // Service* service1 = new Service(Service::SENSOR,
lo 29:d085ab35d584 118 // 102,
lo 29:d085ab35d584 119 // Service::ENABLED,
lo 29:d085ab35d584 120 // Service::UART_,
lo 29:d085ab35d584 121 // Service::IRQ_,
lo 29:d085ab35d584 122 // Service::BY_DELTA,
lo 29:d085ab35d584 123 // access_pins,
lo 29:d085ab35d584 124 // 300,
lo 29:d085ab35d584 125 // Service::MESSAGE,
lo 29:d085ab35d584 126 // Service::IO,
lo 29:d085ab35d584 127 // "Premier service du composant BME280 sur cette payload");
lo 29:d085ab35d584 128 //
lo 29:d085ab35d584 129 // // Construction du deuxieme service du premier composant
lo 29:d085ab35d584 130 // // -----------------------------------------------------
lo 29:d085ab35d584 131 // Service* service2 = new Service(Service::SENSOR,
lo 29:d085ab35d584 132 // 103,
lo 29:d085ab35d584 133 // Service::ENABLED,
lo 29:d085ab35d584 134 // Service::UART_,
lo 29:d085ab35d584 135 // Service::IRQ_,
lo 29:d085ab35d584 136 // Service::BY_DELTA,
lo 29:d085ab35d584 137 // access_pins,
lo 29:d085ab35d584 138 // 120,
lo 29:d085ab35d584 139 // Service::MESSAGE,
lo 29:d085ab35d584 140 // Service::IO,
lo 29:d085ab35d584 141 // "Deuxieme service du composant BME280 sur cette payload");
lo 29:d085ab35d584 142 //
lo 29:d085ab35d584 143 // // Construction du troisieme service du premier composant
lo 29:d085ab35d584 144 // // ------------------------------------------------------
lo 29:d085ab35d584 145 // Service* service3 = new Service(Service::SENSOR,
lo 29:d085ab35d584 146 // 104,
lo 29:d085ab35d584 147 // Service::DISABLED,
lo 29:d085ab35d584 148 // Service::UART_,
lo 29:d085ab35d584 149 // Service::IRQ_,
lo 29:d085ab35d584 150 // Service::BY_DELTA,
lo 29:d085ab35d584 151 // access_pins,
lo 29:d085ab35d584 152 // 30,
lo 29:d085ab35d584 153 // Service::MESSAGE,
lo 29:d085ab35d584 154 // Service::IO,
lo 29:d085ab35d584 155 // "Troisieme service du composant BME280 sur cette payload");
lo 29:d085ab35d584 156 //
lo 29:d085ab35d584 157 // // Construction du premier composant
lo 29:d085ab35d584 158 // // ---------------------------------
lo 29:d085ab35d584 159 // std::vector<Service*> services = std::vector<Service*>();
lo 29:d085ab35d584 160 // services.push_back(service1);
lo 29:d085ab35d584 161 // services.push_back(service2);
lo 29:d085ab35d584 162 // services.push_back(service3);
lo 29:d085ab35d584 163 //
lo 29:d085ab35d584 164 // Component* component1 = new Component(Component::BME280, services);
lo 29:d085ab35d584 165 //
lo 29:d085ab35d584 166 // // Construction du premier service du deuxieme composant
lo 29:d085ab35d584 167 // // -----------------------------------------------------
lo 29:d085ab35d584 168 // Service* service4 = new Service(Service::SENSOR,
lo 29:d085ab35d584 169 // 113,
lo 29:d085ab35d584 170 // Service::ENABLED,
lo 29:d085ab35d584 171 // Service::UART_,
lo 29:d085ab35d584 172 // Service::IRQ_,
lo 29:d085ab35d584 173 // Service::BY_DELTA,
lo 29:d085ab35d584 174 // access_pins,
lo 29:d085ab35d584 175 // 60,
lo 29:d085ab35d584 176 // Service::MESSAGE,
lo 29:d085ab35d584 177 // Service::IO,
lo 29:d085ab35d584 178 // "Premier service du composant LSM303A sur cette payload");
lo 29:d085ab35d584 179 //
lo 29:d085ab35d584 180 // // Construction du deuxieme service du deuxieme composant
lo 29:d085ab35d584 181 // // ------------------------------------------------------
lo 29:d085ab35d584 182 // Service* service5 = new Service(Service::SENSOR,
lo 29:d085ab35d584 183 // 115,
lo 29:d085ab35d584 184 // Service::DISABLED,
lo 29:d085ab35d584 185 // Service::UART_,
lo 29:d085ab35d584 186 // Service::IRQ_,
lo 29:d085ab35d584 187 // Service::BY_DELTA,
lo 29:d085ab35d584 188 // access_pins,
lo 29:d085ab35d584 189 // 80,
lo 29:d085ab35d584 190 // Service::MESSAGE,
lo 29:d085ab35d584 191 // Service::IO,
lo 29:d085ab35d584 192 // "Deuxieme service du composant LSM303A sur cette payload");
lo 29:d085ab35d584 193 //
lo 29:d085ab35d584 194 // // Construction du deuxieme composant
lo 29:d085ab35d584 195 // // ----------------------------------
lo 29:d085ab35d584 196 // services.clear();
lo 29:d085ab35d584 197 // services.push_back(service4);
lo 29:d085ab35d584 198 // services.push_back(service5);
lo 29:d085ab35d584 199 //
lo 29:d085ab35d584 200 // Component* component2 = new Component(Component::LSM303A, services);
lo 29:d085ab35d584 201 //
lo 29:d085ab35d584 202 //
lo 29:d085ab35d584 203 // // Construction du premier service du troisieme composant
lo 29:d085ab35d584 204 // // ------------------------------------------------------
lo 29:d085ab35d584 205 // Service* service6 = new Service(Service::ACTUATOR,
lo 29:d085ab35d584 206 // 139,
lo 29:d085ab35d584 207 // Service::ENABLED,
lo 29:d085ab35d584 208 // Service::UART_,
patrick_duc 13:5414193da1de 209
lo 29:d085ab35d584 210 // Service::IRQ_,
lo 29:d085ab35d584 211 // Service::BY_DELTA,
lo 29:d085ab35d584 212 // access_pins,
lo 29:d085ab35d584 213 // 50,
lo 29:d085ab35d584 214 // Service::MESSAGE,
lo 29:d085ab35d584 215 // Service::IO,
lo 29:d085ab35d584 216 // "Premier service du composant DS18B20 sur cette payload");
lo 29:d085ab35d584 217 //
lo 29:d085ab35d584 218 // // Construction du troisieme composant
lo 29:d085ab35d584 219 // // -----------------------------------
lo 29:d085ab35d584 220 // services.clear();
lo 29:d085ab35d584 221 // services.push_back(service6);
lo 29:d085ab35d584 222 //
lo 29:d085ab35d584 223 // Component* component3 = new Component(Component::DS18B20, services);
lo 29:d085ab35d584 224 //
lo 29:d085ab35d584 225 //
lo 29:d085ab35d584 226 // // Construction de la payload
lo 29:d085ab35d584 227 // // --------------------------
lo 29:d085ab35d584 228 // std::vector<Component*> components = std::vector<Component*>();
lo 29:d085ab35d584 229 // components.push_back(component1);
lo 29:d085ab35d584 230 // components.push_back(component2);
lo 29:d085ab35d584 231 // components.push_back(component3);
lo 29:d085ab35d584 232 //
lo 29:d085ab35d584 233 // Payload * payload = new Payload(Payload::IOT_PAYLOAD_3, components, 10000);
lo 29:d085ab35d584 234 //
lo 29:d085ab35d584 235 // /* Payload sampling information, based on this example
lo 29:d085ab35d584 236 // ---------------------------------------------------
lo 29:d085ab35d584 237 // - Payload base period is 10000, which means 176 microseconds * 10000, i.e. 1.76 seconds
lo 29:d085ab35d584 238 // - Service 1 : subsample rate is 300, so the service sampling period is 528 seconds
lo 29:d085ab35d584 239 // - Service 2 : subsample rate is 120, so the service sampling period is 211.2 seconds
lo 29:d085ab35d584 240 // - Service 3 : subsample rate is 30, so the service sampling period is 52.8 seconds
lo 29:d085ab35d584 241 // - Service 4 : subsample rate is 60, so the service sampling period is 105.6 seconds
lo 29:d085ab35d584 242 // - Service 5 : subsample rate is 80, so the service sampling period is 140.8 seconds
lo 29:d085ab35d584 243 // - Service 6 : subsample rate is 50, so the service sampling period is 35.2 seconds
lo 29:d085ab35d584 244 // - GCD (Greatest Common Divisor) of its services is 10, so the payload will be awaken
lo 29:d085ab35d584 245 // every 17.6 seconds.
lo 29:d085ab35d584 246 // */
lo 29:d085ab35d584 247 //
lo 29:d085ab35d584 248 // // Enregistrement de la payload dans la database
lo 29:d085ab35d584 249 // // ---------------------------------------------
lo 29:d085ab35d584 250 // dataBase->setPayload(payload);
lo 29:d085ab35d584 251 }
lo 29:d085ab35d584 252 void ExtMemory::populate (void) {
patrick_duc 24:92c30dabfda4 253
lo 29:d085ab35d584 254 int32_t pos=0;
lo 29:d085ab35d584 255 ServiceDefinition sd, sd_r;
lo 29:d085ab35d584 256 Header hd, hd_r;
lo 29:d085ab35d584 257 EEPROM ep(I2C_SDA, I2C_SCL, EEPROM_ADDR, EEPROM::T24C04);
patrick_duc 13:5414193da1de 258
lo 29:d085ab35d584 259 // -----------header----------
lo 29:d085ab35d584 260 hd.nb_of_services = 5;
lo 29:d085ab35d584 261 hd.nb_of_sensors = 3;
lo 29:d085ab35d584 262 hd.operating_mode = 0x09;
lo 29:d085ab35d584 263 hd.payload_id = 0x1234;
lo 29:d085ab35d584 264 ep.write((uint32_t) (pos), (void *) &hd, sizeof(hd));
lo 29:d085ab35d584 265 if (ep.getError() != 0) error(ep.getErrorMessage());
lo 29:d085ab35d584 266 ep.read((uint32_t) (pos), (void *) &hd_r, sizeof(hd_r));
lo 29:d085ab35d584 267 if (ep.getError() != 0) error(ep.getErrorMessage());
lo 29:d085ab35d584 268 pos += sizeof(hd);
lo 29:d085ab35d584 269 printf("*** [writing header] services:%d mode:0x%02x payloadID:0x%04x***\n",
lo 29:d085ab35d584 270 hd_r.nb_of_services, hd_r.operating_mode, hd_r.payload_id);
patrick_duc 13:5414193da1de 271
patrick_duc 13:5414193da1de 272
lo 29:d085ab35d584 273 // ---------services----------
lo 29:d085ab35d584 274 sd.component_id = Component::DS18B20;
lo 29:d085ab35d584 275 sd.device_type = Service::DEVICE_TYPE::SENSOR;
lo 29:d085ab35d584 276 sd.mistnet_code = 0x5f;
lo 29:d085ab35d584 277 strcpy(sd.comment,"DS1_TEMP");
lo 29:d085ab35d584 278 ep.write((uint32_t) (pos), (void *) &sd, sizeof(sd));
lo 29:d085ab35d584 279 if (ep.getError() != 0) error(ep.getErrorMessage());
lo 29:d085ab35d584 280 ep.read((uint32_t) (pos), (void *) &sd_r, sizeof(sd_r));
lo 29:d085ab35d584 281 if (ep.getError() != 0) error(ep.getErrorMessage());
lo 29:d085ab35d584 282 pos += sizeof(sd);
lo 29:d085ab35d584 283 printf("service1 ID:0x%02x type:0x%02x code:0x%04x\n",
lo 29:d085ab35d584 284 sd_r.component_id, sd_r.device_type, sd_r.mistnet_code);
patrick_duc 24:92c30dabfda4 285
lo 29:d085ab35d584 286 sd.component_id = Component::LSM303D;
lo 29:d085ab35d584 287 sd.device_type = Service::DEVICE_TYPE::SENSOR;
lo 29:d085ab35d584 288 sd.mistnet_code = 0x2b;
lo 29:d085ab35d584 289 strcpy(sd.comment,"LSM_ACCEL");
lo 29:d085ab35d584 290 ep.write((uint32_t) (pos), (void *) &sd, sizeof(sd));
lo 29:d085ab35d584 291 if (ep.getError() != 0) error(ep.getErrorMessage());
lo 29:d085ab35d584 292 ep.read((uint32_t) (pos), (void *) &sd_r, sizeof(sd_r));
lo 29:d085ab35d584 293 if (ep.getError() != 0) error(ep.getErrorMessage());
lo 29:d085ab35d584 294 pos += sizeof(sd);
lo 29:d085ab35d584 295 printf("service2 ID:0x%02x type:0x%02x code:0x%04x\n",
lo 29:d085ab35d584 296 sd_r.component_id, sd_r.device_type, sd_r.mistnet_code);
patrick_duc 13:5414193da1de 297
lo 29:d085ab35d584 298 sd.component_id = Component::BME280;
lo 29:d085ab35d584 299 sd.device_type = Service::DEVICE_TYPE::SENSOR;
lo 29:d085ab35d584 300 sd.mistnet_code = 0x4a;
lo 29:d085ab35d584 301 strcpy(sd.comment,"BME_TEMP");
lo 29:d085ab35d584 302 ep.write((uint32_t) (pos), (void *) &sd, sizeof(sd));
lo 29:d085ab35d584 303 if (ep.getError() != 0) error(ep.getErrorMessage());
lo 29:d085ab35d584 304 ep.read((uint32_t) (pos), (void *) &sd_r, sizeof(sd_r));
lo 29:d085ab35d584 305 if (ep.getError() != 0) error(ep.getErrorMessage());
lo 29:d085ab35d584 306 pos += sizeof(sd);
lo 29:d085ab35d584 307 printf("service3 ID:0x%02x type:0x%02x code:0x%04x\n",
lo 29:d085ab35d584 308 sd_r.component_id, sd_r.device_type, sd_r.mistnet_code);
patrick_duc 20:b0281e8a375a 309
lo 29:d085ab35d584 310 sd.component_id = Component::BME280;
lo 29:d085ab35d584 311 sd.device_type = Service::DEVICE_TYPE::SENSOR;
lo 29:d085ab35d584 312 sd.mistnet_code = 0x4b;
lo 29:d085ab35d584 313 strcpy(sd.comment,"BME_HUMI");
lo 29:d085ab35d584 314 ep.write((uint32_t) (pos), (void *) &sd, sizeof(sd));
lo 29:d085ab35d584 315 if (ep.getError() != 0) error(ep.getErrorMessage());
lo 29:d085ab35d584 316 ep.read((uint32_t) (pos), (void *) &sd_r, sizeof(sd_r));
lo 29:d085ab35d584 317 if (ep.getError() != 0) error(ep.getErrorMessage());
lo 29:d085ab35d584 318 pos += sizeof(sd);
lo 29:d085ab35d584 319 printf("service4 ID:0x%02x type:0x%02x code:0x%04x\n",
lo 29:d085ab35d584 320 sd_r.component_id, sd_r.device_type, sd_r.mistnet_code);
lo 29:d085ab35d584 321
lo 29:d085ab35d584 322 sd.component_id = Component::BME280;
lo 29:d085ab35d584 323 sd.device_type = Service::DEVICE_TYPE::SENSOR;
lo 29:d085ab35d584 324 sd.mistnet_code = 0x4c;
patrick_duc 13:5414193da1de 325
lo 29:d085ab35d584 326 strcpy(sd.comment,"BME_BARO");
lo 29:d085ab35d584 327 ep.write((uint32_t) (pos), (void *) &sd, sizeof(sd));
lo 29:d085ab35d584 328 if (ep.getError() != 0) error(ep.getErrorMessage());
lo 29:d085ab35d584 329 ep.read((uint32_t) (pos), (void *) &sd_r, sizeof(sd_r));
lo 29:d085ab35d584 330 if (ep.getError() != 0) error(ep.getErrorMessage());
lo 29:d085ab35d584 331 pos += sizeof(sd);
lo 29:d085ab35d584 332 printf("service5 ID:0x%02x type:0x%02x code:0x%04x\n",
lo 29:d085ab35d584 333 sd_r.component_id, sd_r.device_type, sd_r.mistnet_code);
lo 29:d085ab35d584 334 }