mbedOS client example, modified to push X-Nucleo-IKS01A1/2 Environmental Sensor data to mbed Cloud Connector.

Dependencies:   X_NUCLEO_IKS01A1 X_NUCLEO_IKS01A2

The application is derived from the official mbedOS client example (link) and has been tested using a X-NUCLEO-IKS01A2 (default) or a X-NUCLEO-IKS01A1 motion and environmental sensors expansion board connected to a ST NUCLEO-F429ZI platform.
The following steps should be performed to make the application work:

  • Register and login into ARM mbed Connector.
  • Replace the default and empty security.h file with the one associated with your account and provided by the Connector (Security Credentials menu).
  • In order to use X-NUCLEO-IKS01A1 instead of default X-NUCLEO-IKS02A1 comment out the IKS01A2 macro definition in main.cpp file.
  • Choose NUCLEO-F429ZI as a target either from online compiler or from CLI, compile and flash.
  • Connect the board to your ethernet network, open a serial terminal (params 115200N1) and wait that the client is connected to the mbed Connector.
  • Press user button to start acquiring and pushing the environmental (pressure, temperature and humidity) data.

Note: environmental data are expressed using IPSO representation based on OMA LWM2M standard.

Committer:
nikapov
Date:
Wed Apr 26 18:23:56 2017 +0200
Revision:
0:003e60a0deb8
First version.
Original repository: https://github.com/ARMmbed/mbed-os-example-client
Version hash: 629b972f41109fd1b54bb755ea454d736a50069b

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nikapov 0:003e60a0deb8 1 /*
nikapov 0:003e60a0deb8 2 * Copyright (c) 2015 ARM Limited. All rights reserved.
nikapov 0:003e60a0deb8 3 * SPDX-License-Identifier: Apache-2.0
nikapov 0:003e60a0deb8 4 * Licensed under the Apache License, Version 2.0 (the License); you may
nikapov 0:003e60a0deb8 5 * not use this file except in compliance with the License.
nikapov 0:003e60a0deb8 6 * You may obtain a copy of the License at
nikapov 0:003e60a0deb8 7 *
nikapov 0:003e60a0deb8 8 * http://www.apache.org/licenses/LICENSE-2.0
nikapov 0:003e60a0deb8 9 *
nikapov 0:003e60a0deb8 10 * Unless required by applicable law or agreed to in writing, software
nikapov 0:003e60a0deb8 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
nikapov 0:003e60a0deb8 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
nikapov 0:003e60a0deb8 13 * See the License for the specific language governing permissions and
nikapov 0:003e60a0deb8 14 * limitations under the License.
nikapov 0:003e60a0deb8 15 */
nikapov 0:003e60a0deb8 16
nikapov 0:003e60a0deb8 17 #ifndef __SIMPLECLIENT_H__
nikapov 0:003e60a0deb8 18 #define __SIMPLECLIENT_H__
nikapov 0:003e60a0deb8 19
nikapov 0:003e60a0deb8 20 #include "mbed-client/m2minterfacefactory.h"
nikapov 0:003e60a0deb8 21 #include "mbed-client/m2mdevice.h"
nikapov 0:003e60a0deb8 22 #include "mbed-client/m2minterfaceobserver.h"
nikapov 0:003e60a0deb8 23 #include "mbed-client/m2minterface.h"
nikapov 0:003e60a0deb8 24 #include "mbed-client/m2mobject.h"
nikapov 0:003e60a0deb8 25 #include "mbed-client/m2mobjectinstance.h"
nikapov 0:003e60a0deb8 26 #include "mbed-client/m2mresource.h"
nikapov 0:003e60a0deb8 27 #include "mbed-client/m2mconfig.h"
nikapov 0:003e60a0deb8 28 #include "mbed-client/m2mblockmessage.h"
nikapov 0:003e60a0deb8 29 #include "security.h"
nikapov 0:003e60a0deb8 30 #include "mbed.h"
nikapov 0:003e60a0deb8 31
nikapov 0:003e60a0deb8 32 #define ETHERNET 1
nikapov 0:003e60a0deb8 33 #define WIFI 2
nikapov 0:003e60a0deb8 34 #define MESH_LOWPAN_ND 3
nikapov 0:003e60a0deb8 35 #define MESH_THREAD 4
nikapov 0:003e60a0deb8 36 #define ATMEL 5
nikapov 0:003e60a0deb8 37 #define MCR20 6
nikapov 0:003e60a0deb8 38 #define SPIRIT1 7
nikapov 0:003e60a0deb8 39
nikapov 0:003e60a0deb8 40 #define STRINGIFY(s) #s
nikapov 0:003e60a0deb8 41
nikapov 0:003e60a0deb8 42 // Check if using mesh networking, define helper
nikapov 0:003e60a0deb8 43 #if MBED_CONF_APP_NETWORK_INTERFACE == MESH_LOWPAN_ND
nikapov 0:003e60a0deb8 44 #define MESH
nikapov 0:003e60a0deb8 45 #elif MBED_CONF_APP_NETWORK_INTERFACE == MESH_THREAD
nikapov 0:003e60a0deb8 46 #define MESH
nikapov 0:003e60a0deb8 47 #endif
nikapov 0:003e60a0deb8 48
nikapov 0:003e60a0deb8 49 #if defined (MESH) || (MBED_CONF_LWIP_IPV6_ENABLED==true)
nikapov 0:003e60a0deb8 50 // Mesh is always IPV6 - also WiFi and ETH can be IPV6 if IPV6 is enabled
nikapov 0:003e60a0deb8 51 M2MInterface::NetworkStack NETWORK_STACK = M2MInterface::LwIP_IPv6;
nikapov 0:003e60a0deb8 52 #else
nikapov 0:003e60a0deb8 53 // Everything else - we assume it's IPv4
nikapov 0:003e60a0deb8 54 M2MInterface::NetworkStack NETWORK_STACK = M2MInterface::LwIP_IPv4;
nikapov 0:003e60a0deb8 55 #endif
nikapov 0:003e60a0deb8 56
nikapov 0:003e60a0deb8 57 //Select binding mode: UDP or TCP -- note - Mesh networking is IPv6 UDP ONLY
nikapov 0:003e60a0deb8 58 #ifdef MESH
nikapov 0:003e60a0deb8 59 M2MInterface::BindingMode SOCKET_MODE = M2MInterface::UDP;
nikapov 0:003e60a0deb8 60 #else
nikapov 0:003e60a0deb8 61 // WiFi or Ethernet supports both - TCP by default to avoid
nikapov 0:003e60a0deb8 62 // NAT problems, but UDP will also work - IF you configure
nikapov 0:003e60a0deb8 63 // your network right.
nikapov 0:003e60a0deb8 64 M2MInterface::BindingMode SOCKET_MODE = M2MInterface::TCP;
nikapov 0:003e60a0deb8 65 #endif
nikapov 0:003e60a0deb8 66
nikapov 0:003e60a0deb8 67
nikapov 0:003e60a0deb8 68 // MBED_DOMAIN and MBED_ENDPOINT_NAME come
nikapov 0:003e60a0deb8 69 // from the security.h file copied from connector.mbed.com
nikapov 0:003e60a0deb8 70
nikapov 0:003e60a0deb8 71 struct MbedClientDevice {
nikapov 0:003e60a0deb8 72 const char* Manufacturer;
nikapov 0:003e60a0deb8 73 const char* Type;
nikapov 0:003e60a0deb8 74 const char* ModelNumber;
nikapov 0:003e60a0deb8 75 const char* SerialNumber;
nikapov 0:003e60a0deb8 76 };
nikapov 0:003e60a0deb8 77
nikapov 0:003e60a0deb8 78 /*
nikapov 0:003e60a0deb8 79 * Wrapper for mbed client stack that handles all callbacks, error handling, and
nikapov 0:003e60a0deb8 80 * other shenanigans to make the mbed client stack easier to use.
nikapov 0:003e60a0deb8 81 *
nikapov 0:003e60a0deb8 82 * The end user should only have to care about configuring the parameters at the
nikapov 0:003e60a0deb8 83 * top of this file and making sure they add the security.h file correctly.
nikapov 0:003e60a0deb8 84 * To add resources you can copy the _TODO__ function and add as many instances as
nikapov 0:003e60a0deb8 85 * you want.
nikapov 0:003e60a0deb8 86 *
nikapov 0:003e60a0deb8 87 */
nikapov 0:003e60a0deb8 88 class MbedClient: public M2MInterfaceObserver {
nikapov 0:003e60a0deb8 89 public:
nikapov 0:003e60a0deb8 90
nikapov 0:003e60a0deb8 91 // constructor for MbedClient object, initialize private variables
nikapov 0:003e60a0deb8 92 MbedClient(struct MbedClientDevice device) {
nikapov 0:003e60a0deb8 93 _interface = NULL;
nikapov 0:003e60a0deb8 94 _bootstrapped = false;
nikapov 0:003e60a0deb8 95 _error = false;
nikapov 0:003e60a0deb8 96 _registered = false;
nikapov 0:003e60a0deb8 97 _unregistered = false;
nikapov 0:003e60a0deb8 98 _register_security = NULL;
nikapov 0:003e60a0deb8 99 _value = 0;
nikapov 0:003e60a0deb8 100 _object = NULL;
nikapov 0:003e60a0deb8 101 _device = device;
nikapov 0:003e60a0deb8 102 }
nikapov 0:003e60a0deb8 103
nikapov 0:003e60a0deb8 104 // de-constructor for MbedClient object, you can ignore this
nikapov 0:003e60a0deb8 105 ~MbedClient() {
nikapov 0:003e60a0deb8 106 if(_interface) {
nikapov 0:003e60a0deb8 107 delete _interface;
nikapov 0:003e60a0deb8 108 }
nikapov 0:003e60a0deb8 109 if(_register_security){
nikapov 0:003e60a0deb8 110 delete _register_security;
nikapov 0:003e60a0deb8 111 }
nikapov 0:003e60a0deb8 112 }
nikapov 0:003e60a0deb8 113
nikapov 0:003e60a0deb8 114 // debug printf function
nikapov 0:003e60a0deb8 115 void trace_printer(const char* str) {
nikapov 0:003e60a0deb8 116 printf("\r\n%s\r\n", str);
nikapov 0:003e60a0deb8 117 }
nikapov 0:003e60a0deb8 118
nikapov 0:003e60a0deb8 119 /*
nikapov 0:003e60a0deb8 120 * Creates M2MInterface using which endpoint can
nikapov 0:003e60a0deb8 121 * setup its name, resource type, life time, connection mode,
nikapov 0:003e60a0deb8 122 * Currently only LwIPv4 is supported.
nikapov 0:003e60a0deb8 123 */
nikapov 0:003e60a0deb8 124 void create_interface(const char *server_address,
nikapov 0:003e60a0deb8 125 void *handler=NULL) {
nikapov 0:003e60a0deb8 126 // Randomizing listening port for Certificate mode connectivity
nikapov 0:003e60a0deb8 127 _server_address = server_address;
nikapov 0:003e60a0deb8 128 uint16_t port = 0; // Network interface will randomize with port 0
nikapov 0:003e60a0deb8 129
nikapov 0:003e60a0deb8 130 // create mDS interface object, this is the base object everything else attaches to
nikapov 0:003e60a0deb8 131 _interface = M2MInterfaceFactory::create_interface(*this,
nikapov 0:003e60a0deb8 132 MBED_ENDPOINT_NAME, // endpoint name string
nikapov 0:003e60a0deb8 133 "test", // endpoint type string
nikapov 0:003e60a0deb8 134 100, // lifetime
nikapov 0:003e60a0deb8 135 port, // listen port
nikapov 0:003e60a0deb8 136 MBED_DOMAIN, // domain string
nikapov 0:003e60a0deb8 137 SOCKET_MODE, // binding mode
nikapov 0:003e60a0deb8 138 NETWORK_STACK, // network stack
nikapov 0:003e60a0deb8 139 ""); // context address string
nikapov 0:003e60a0deb8 140 const char *binding_mode = (SOCKET_MODE == M2MInterface::UDP) ? "UDP" : "TCP";
nikapov 0:003e60a0deb8 141 printf("\r\nSOCKET_MODE : %s\r\n", binding_mode);
nikapov 0:003e60a0deb8 142 printf("Connecting to %s\r\n", server_address);
nikapov 0:003e60a0deb8 143
nikapov 0:003e60a0deb8 144 if(_interface) {
nikapov 0:003e60a0deb8 145 _interface->set_platform_network_handler(handler);
nikapov 0:003e60a0deb8 146 }
nikapov 0:003e60a0deb8 147
nikapov 0:003e60a0deb8 148 }
nikapov 0:003e60a0deb8 149
nikapov 0:003e60a0deb8 150 /*
nikapov 0:003e60a0deb8 151 * check private variable to see if the registration was sucessful or not
nikapov 0:003e60a0deb8 152 */
nikapov 0:003e60a0deb8 153 bool register_successful() {
nikapov 0:003e60a0deb8 154 return _registered;
nikapov 0:003e60a0deb8 155 }
nikapov 0:003e60a0deb8 156
nikapov 0:003e60a0deb8 157 /*
nikapov 0:003e60a0deb8 158 * check private variable to see if un-registration was sucessful or not
nikapov 0:003e60a0deb8 159 */
nikapov 0:003e60a0deb8 160 bool unregister_successful() {
nikapov 0:003e60a0deb8 161 return _unregistered;
nikapov 0:003e60a0deb8 162 }
nikapov 0:003e60a0deb8 163
nikapov 0:003e60a0deb8 164 /*
nikapov 0:003e60a0deb8 165 * Creates register server object with mbed device server address and other parameters
nikapov 0:003e60a0deb8 166 * required for client to connect to mbed device server.
nikapov 0:003e60a0deb8 167 */
nikapov 0:003e60a0deb8 168 M2MSecurity* create_register_object() {
nikapov 0:003e60a0deb8 169 // create security object using the interface factory.
nikapov 0:003e60a0deb8 170 // this will generate a security ObjectID and ObjectInstance
nikapov 0:003e60a0deb8 171 M2MSecurity *security = M2MInterfaceFactory::create_security(M2MSecurity::M2MServer);
nikapov 0:003e60a0deb8 172
nikapov 0:003e60a0deb8 173 // make sure security ObjectID/ObjectInstance was created successfully
nikapov 0:003e60a0deb8 174 if(security) {
nikapov 0:003e60a0deb8 175 // Add ResourceID's and values to the security ObjectID/ObjectInstance
nikapov 0:003e60a0deb8 176 security->set_resource_value(M2MSecurity::M2MServerUri, _server_address);
nikapov 0:003e60a0deb8 177 security->set_resource_value(M2MSecurity::SecurityMode, M2MSecurity::Certificate);
nikapov 0:003e60a0deb8 178 security->set_resource_value(M2MSecurity::ServerPublicKey, SERVER_CERT, sizeof(SERVER_CERT) - 1);
nikapov 0:003e60a0deb8 179 security->set_resource_value(M2MSecurity::PublicKey, CERT, sizeof(CERT) - 1);
nikapov 0:003e60a0deb8 180 security->set_resource_value(M2MSecurity::Secretkey, KEY, sizeof(KEY) - 1);
nikapov 0:003e60a0deb8 181 }
nikapov 0:003e60a0deb8 182 return security;
nikapov 0:003e60a0deb8 183 }
nikapov 0:003e60a0deb8 184
nikapov 0:003e60a0deb8 185 /*
nikapov 0:003e60a0deb8 186 * Creates device object which contains mandatory resources linked with
nikapov 0:003e60a0deb8 187 * device endpoint.
nikapov 0:003e60a0deb8 188 */
nikapov 0:003e60a0deb8 189 M2MDevice* create_device_object() {
nikapov 0:003e60a0deb8 190 // create device objectID/ObjectInstance
nikapov 0:003e60a0deb8 191 M2MDevice *device = M2MInterfaceFactory::create_device();
nikapov 0:003e60a0deb8 192 // make sure device object was created successfully
nikapov 0:003e60a0deb8 193 if(device) {
nikapov 0:003e60a0deb8 194 // add resourceID's to device objectID/ObjectInstance
nikapov 0:003e60a0deb8 195 device->create_resource(M2MDevice::Manufacturer, _device.Manufacturer);
nikapov 0:003e60a0deb8 196 device->create_resource(M2MDevice::DeviceType, _device.Type);
nikapov 0:003e60a0deb8 197 device->create_resource(M2MDevice::ModelNumber, _device.ModelNumber);
nikapov 0:003e60a0deb8 198 device->create_resource(M2MDevice::SerialNumber, _device.SerialNumber);
nikapov 0:003e60a0deb8 199 }
nikapov 0:003e60a0deb8 200 return device;
nikapov 0:003e60a0deb8 201 }
nikapov 0:003e60a0deb8 202
nikapov 0:003e60a0deb8 203 /*
nikapov 0:003e60a0deb8 204 * register an object
nikapov 0:003e60a0deb8 205 */
nikapov 0:003e60a0deb8 206 void test_register(M2MSecurity *register_object, M2MObjectList object_list){
nikapov 0:003e60a0deb8 207 if(_interface) {
nikapov 0:003e60a0deb8 208 // Register function
nikapov 0:003e60a0deb8 209 _interface->register_object(register_object, object_list);
nikapov 0:003e60a0deb8 210 }
nikapov 0:003e60a0deb8 211 }
nikapov 0:003e60a0deb8 212
nikapov 0:003e60a0deb8 213 /*
nikapov 0:003e60a0deb8 214 * unregister all objects
nikapov 0:003e60a0deb8 215 */
nikapov 0:003e60a0deb8 216 void test_unregister() {
nikapov 0:003e60a0deb8 217 if(_interface) {
nikapov 0:003e60a0deb8 218 // Unregister function
nikapov 0:003e60a0deb8 219 _interface->unregister_object(NULL); // NULL will unregister all objects
nikapov 0:003e60a0deb8 220 }
nikapov 0:003e60a0deb8 221 }
nikapov 0:003e60a0deb8 222
nikapov 0:003e60a0deb8 223 //Callback from mbed client stack when the bootstrap
nikapov 0:003e60a0deb8 224 // is successful, it returns the mbed Device Server object
nikapov 0:003e60a0deb8 225 // which will be used for registering the resources to
nikapov 0:003e60a0deb8 226 // mbed Device server.
nikapov 0:003e60a0deb8 227 void bootstrap_done(M2MSecurity *server_object){
nikapov 0:003e60a0deb8 228 if(server_object) {
nikapov 0:003e60a0deb8 229 _bootstrapped = true;
nikapov 0:003e60a0deb8 230 _error = false;
nikapov 0:003e60a0deb8 231 trace_printer("Bootstrapped");
nikapov 0:003e60a0deb8 232 }
nikapov 0:003e60a0deb8 233 }
nikapov 0:003e60a0deb8 234
nikapov 0:003e60a0deb8 235 //Callback from mbed client stack when the registration
nikapov 0:003e60a0deb8 236 // is successful, it returns the mbed Device Server object
nikapov 0:003e60a0deb8 237 // to which the resources are registered and registered objects.
nikapov 0:003e60a0deb8 238 void object_registered(M2MSecurity */*security_object*/, const M2MServer &/*server_object*/){
nikapov 0:003e60a0deb8 239 _registered = true;
nikapov 0:003e60a0deb8 240 _unregistered = false;
nikapov 0:003e60a0deb8 241 trace_printer("Registered object successfully!");
nikapov 0:003e60a0deb8 242 }
nikapov 0:003e60a0deb8 243
nikapov 0:003e60a0deb8 244 //Callback from mbed client stack when the unregistration
nikapov 0:003e60a0deb8 245 // is successful, it returns the mbed Device Server object
nikapov 0:003e60a0deb8 246 // to which the resources were unregistered.
nikapov 0:003e60a0deb8 247 void object_unregistered(M2MSecurity */*server_object*/){
nikapov 0:003e60a0deb8 248 trace_printer("Unregistered Object Successfully");
nikapov 0:003e60a0deb8 249 _unregistered = true;
nikapov 0:003e60a0deb8 250 _registered = false;
nikapov 0:003e60a0deb8 251 }
nikapov 0:003e60a0deb8 252
nikapov 0:003e60a0deb8 253 /*
nikapov 0:003e60a0deb8 254 * Callback from mbed client stack when registration is updated
nikapov 0:003e60a0deb8 255 */
nikapov 0:003e60a0deb8 256 void registration_updated(M2MSecurity */*security_object*/, const M2MServer & /*server_object*/){
nikapov 0:003e60a0deb8 257 /* The registration is updated automatically and frequently by the
nikapov 0:003e60a0deb8 258 * mbed client stack. This print statement is turned off because it
nikapov 0:003e60a0deb8 259 * tends to happen alot.
nikapov 0:003e60a0deb8 260 */
nikapov 0:003e60a0deb8 261 //trace_printer("\r\nRegistration Updated\r\n");
nikapov 0:003e60a0deb8 262 }
nikapov 0:003e60a0deb8 263
nikapov 0:003e60a0deb8 264 // Callback from mbed client stack if any error is encountered
nikapov 0:003e60a0deb8 265 // during any of the LWM2M operations. Error type is passed in
nikapov 0:003e60a0deb8 266 // the callback.
nikapov 0:003e60a0deb8 267 void error(M2MInterface::Error error){
nikapov 0:003e60a0deb8 268 _error = true;
nikapov 0:003e60a0deb8 269 switch(error){
nikapov 0:003e60a0deb8 270 case M2MInterface::AlreadyExists:
nikapov 0:003e60a0deb8 271 trace_printer("[ERROR:] M2MInterface::AlreadyExist");
nikapov 0:003e60a0deb8 272 break;
nikapov 0:003e60a0deb8 273 case M2MInterface::BootstrapFailed:
nikapov 0:003e60a0deb8 274 trace_printer("[ERROR:] M2MInterface::BootstrapFailed");
nikapov 0:003e60a0deb8 275 break;
nikapov 0:003e60a0deb8 276 case M2MInterface::InvalidParameters:
nikapov 0:003e60a0deb8 277 trace_printer("[ERROR:] M2MInterface::InvalidParameters");
nikapov 0:003e60a0deb8 278 break;
nikapov 0:003e60a0deb8 279 case M2MInterface::NotRegistered:
nikapov 0:003e60a0deb8 280 trace_printer("[ERROR:] M2MInterface::NotRegistered");
nikapov 0:003e60a0deb8 281 break;
nikapov 0:003e60a0deb8 282 case M2MInterface::Timeout:
nikapov 0:003e60a0deb8 283 trace_printer("[ERROR:] M2MInterface::Timeout");
nikapov 0:003e60a0deb8 284 break;
nikapov 0:003e60a0deb8 285 case M2MInterface::NetworkError:
nikapov 0:003e60a0deb8 286 trace_printer("[ERROR:] M2MInterface::NetworkError");
nikapov 0:003e60a0deb8 287 break;
nikapov 0:003e60a0deb8 288 case M2MInterface::ResponseParseFailed:
nikapov 0:003e60a0deb8 289 trace_printer("[ERROR:] M2MInterface::ResponseParseFailed");
nikapov 0:003e60a0deb8 290 break;
nikapov 0:003e60a0deb8 291 case M2MInterface::UnknownError:
nikapov 0:003e60a0deb8 292 trace_printer("[ERROR:] M2MInterface::UnknownError");
nikapov 0:003e60a0deb8 293 break;
nikapov 0:003e60a0deb8 294 case M2MInterface::MemoryFail:
nikapov 0:003e60a0deb8 295 trace_printer("[ERROR:] M2MInterface::MemoryFail");
nikapov 0:003e60a0deb8 296 break;
nikapov 0:003e60a0deb8 297 case M2MInterface::NotAllowed:
nikapov 0:003e60a0deb8 298 trace_printer("[ERROR:] M2MInterface::NotAllowed");
nikapov 0:003e60a0deb8 299 break;
nikapov 0:003e60a0deb8 300 case M2MInterface::SecureConnectionFailed:
nikapov 0:003e60a0deb8 301 trace_printer("[ERROR:] M2MInterface::SecureConnectionFailed");
nikapov 0:003e60a0deb8 302 break;
nikapov 0:003e60a0deb8 303 case M2MInterface::DnsResolvingFailed:
nikapov 0:003e60a0deb8 304 trace_printer("[ERROR:] M2MInterface::DnsResolvingFailed");
nikapov 0:003e60a0deb8 305 break;
nikapov 0:003e60a0deb8 306
nikapov 0:003e60a0deb8 307 default:
nikapov 0:003e60a0deb8 308 break;
nikapov 0:003e60a0deb8 309 }
nikapov 0:003e60a0deb8 310 }
nikapov 0:003e60a0deb8 311
nikapov 0:003e60a0deb8 312 /* Callback from mbed client stack if any value has changed
nikapov 0:003e60a0deb8 313 * during PUT operation. Object and its type is passed in
nikapov 0:003e60a0deb8 314 * the callback.
nikapov 0:003e60a0deb8 315 * BaseType enum from m2mbase.h
nikapov 0:003e60a0deb8 316 * Object = 0x0, Resource = 0x1, ObjectInstance = 0x2, ResourceInstance = 0x3
nikapov 0:003e60a0deb8 317 */
nikapov 0:003e60a0deb8 318 void value_updated(M2MBase *base, M2MBase::BaseType type) {
nikapov 0:003e60a0deb8 319 printf("\r\nPUT Request Received!");
nikapov 0:003e60a0deb8 320 printf("\r\nName :'%s', \r\nPath : '%s', \r\nType : '%d' (0 for Object, 1 for Resource), \r\nType : '%s'\r\n",
nikapov 0:003e60a0deb8 321 base->name(),
nikapov 0:003e60a0deb8 322 base->uri_path(),
nikapov 0:003e60a0deb8 323 type,
nikapov 0:003e60a0deb8 324 base->resource_type()
nikapov 0:003e60a0deb8 325 );
nikapov 0:003e60a0deb8 326 }
nikapov 0:003e60a0deb8 327
nikapov 0:003e60a0deb8 328 /*
nikapov 0:003e60a0deb8 329 * update the registration period
nikapov 0:003e60a0deb8 330 */
nikapov 0:003e60a0deb8 331 void test_update_register() {
nikapov 0:003e60a0deb8 332 if (_registered) {
nikapov 0:003e60a0deb8 333 _interface->update_registration(_register_security, 100);
nikapov 0:003e60a0deb8 334 }
nikapov 0:003e60a0deb8 335 }
nikapov 0:003e60a0deb8 336
nikapov 0:003e60a0deb8 337 /*
nikapov 0:003e60a0deb8 338 * manually configure the security object private variable
nikapov 0:003e60a0deb8 339 */
nikapov 0:003e60a0deb8 340 void set_register_object(M2MSecurity *register_object) {
nikapov 0:003e60a0deb8 341 if (_register_security == NULL) {
nikapov 0:003e60a0deb8 342 _register_security = register_object;
nikapov 0:003e60a0deb8 343 }
nikapov 0:003e60a0deb8 344 }
nikapov 0:003e60a0deb8 345
nikapov 0:003e60a0deb8 346 private:
nikapov 0:003e60a0deb8 347
nikapov 0:003e60a0deb8 348 /*
nikapov 0:003e60a0deb8 349 * Private variables used in class
nikapov 0:003e60a0deb8 350 */
nikapov 0:003e60a0deb8 351 M2MInterface *_interface;
nikapov 0:003e60a0deb8 352 M2MSecurity *_register_security;
nikapov 0:003e60a0deb8 353 M2MObject *_object;
nikapov 0:003e60a0deb8 354 volatile bool _bootstrapped;
nikapov 0:003e60a0deb8 355 volatile bool _error;
nikapov 0:003e60a0deb8 356 volatile bool _registered;
nikapov 0:003e60a0deb8 357 volatile bool _unregistered;
nikapov 0:003e60a0deb8 358 int _value;
nikapov 0:003e60a0deb8 359 struct MbedClientDevice _device;
nikapov 0:003e60a0deb8 360 String _server_address;
nikapov 0:003e60a0deb8 361 };
nikapov 0:003e60a0deb8 362
nikapov 0:003e60a0deb8 363 #endif // __SIMPLECLIENT_H__