mbed client lightswitch demo

Dependencies:   mbed Socket lwip-eth lwip-sys lwip

Fork of mbed-client-classic-example-lwip by Austin Blackstone

Committer:
mbedAustin
Date:
Thu Jun 09 17:08:36 2016 +0000
Revision:
11:cada08fc8a70
Commit for public Consumption

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedAustin 11:cada08fc8a70 1 /*
mbedAustin 11:cada08fc8a70 2 * Copyright (c) 2015 ARM Limited. All rights reserved.
mbedAustin 11:cada08fc8a70 3 * SPDX-License-Identifier: Apache-2.0
mbedAustin 11:cada08fc8a70 4 * Licensed under the Apache License, Version 2.0 (the License); you may
mbedAustin 11:cada08fc8a70 5 * not use this file except in compliance with the License.
mbedAustin 11:cada08fc8a70 6 * You may obtain a copy of the License at
mbedAustin 11:cada08fc8a70 7 *
mbedAustin 11:cada08fc8a70 8 * http://www.apache.org/licenses/LICENSE-2.0
mbedAustin 11:cada08fc8a70 9 *
mbedAustin 11:cada08fc8a70 10 * Unless required by applicable law or agreed to in writing, software
mbedAustin 11:cada08fc8a70 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
mbedAustin 11:cada08fc8a70 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbedAustin 11:cada08fc8a70 13 * See the License for the specific language governing permissions and
mbedAustin 11:cada08fc8a70 14 * limitations under the License.
mbedAustin 11:cada08fc8a70 15 */
mbedAustin 11:cada08fc8a70 16 #ifndef M2M_BASE_H
mbedAustin 11:cada08fc8a70 17 #define M2M_BASE_H
mbedAustin 11:cada08fc8a70 18
mbedAustin 11:cada08fc8a70 19 // Support for std args
mbedAustin 11:cada08fc8a70 20 #include <stdint.h>
mbedAustin 11:cada08fc8a70 21 #include "mbed-client/m2mconfig.h"
mbedAustin 11:cada08fc8a70 22 #include "mbed-client/m2mreportobserver.h"
mbedAustin 11:cada08fc8a70 23
mbedAustin 11:cada08fc8a70 24 //FORWARD DECLARATION
mbedAustin 11:cada08fc8a70 25 struct sn_coap_hdr_;
mbedAustin 11:cada08fc8a70 26 typedef sn_coap_hdr_ sn_coap_hdr_s;
mbedAustin 11:cada08fc8a70 27 struct nsdl_s;
mbedAustin 11:cada08fc8a70 28
mbedAustin 11:cada08fc8a70 29 class M2MObservationHandler;
mbedAustin 11:cada08fc8a70 30 class M2MReportHandler;
mbedAustin 11:cada08fc8a70 31
mbedAustin 11:cada08fc8a70 32 /**
mbedAustin 11:cada08fc8a70 33 * @brief M2MBase.
mbedAustin 11:cada08fc8a70 34 * This class is the base class based on which all LWM2M object models
mbedAustin 11:cada08fc8a70 35 * can be created. This serves base class for Object, ObjectInstances and Resources.
mbedAustin 11:cada08fc8a70 36 */
mbedAustin 11:cada08fc8a70 37
mbedAustin 11:cada08fc8a70 38 class M2MBase : public M2MReportObserver {
mbedAustin 11:cada08fc8a70 39
mbedAustin 11:cada08fc8a70 40 public:
mbedAustin 11:cada08fc8a70 41
mbedAustin 11:cada08fc8a70 42 /**
mbedAustin 11:cada08fc8a70 43 * Enum to define the type of object.
mbedAustin 11:cada08fc8a70 44 */
mbedAustin 11:cada08fc8a70 45 typedef enum {
mbedAustin 11:cada08fc8a70 46 Object = 0x0,
mbedAustin 11:cada08fc8a70 47 Resource = 0x1,
mbedAustin 11:cada08fc8a70 48 ObjectInstance = 0x2,
mbedAustin 11:cada08fc8a70 49 ResourceInstance = 0x3
mbedAustin 11:cada08fc8a70 50 } BaseType;
mbedAustin 11:cada08fc8a70 51
mbedAustin 11:cada08fc8a70 52 /**
mbedAustin 11:cada08fc8a70 53 * Enum to define observation level.
mbedAustin 11:cada08fc8a70 54 */
mbedAustin 11:cada08fc8a70 55 typedef enum {
mbedAustin 11:cada08fc8a70 56 None = 0x0,
mbedAustin 11:cada08fc8a70 57 R_Attribute = 0x01,
mbedAustin 11:cada08fc8a70 58 OI_Attribute = 0x02,
mbedAustin 11:cada08fc8a70 59 OIR_Attribute = 0x03,
mbedAustin 11:cada08fc8a70 60 O_Attribute = 0x04,
mbedAustin 11:cada08fc8a70 61 OR_Attribute = 0x05,
mbedAustin 11:cada08fc8a70 62 OOI_Attribute = 0x06,
mbedAustin 11:cada08fc8a70 63 OOIR_Attribute = 0x07
mbedAustin 11:cada08fc8a70 64 } Observation;
mbedAustin 11:cada08fc8a70 65
mbedAustin 11:cada08fc8a70 66
mbedAustin 11:cada08fc8a70 67 /**
mbedAustin 11:cada08fc8a70 68 * @brief Enum defining an operation that can be
mbedAustin 11:cada08fc8a70 69 * supported by a given resource.
mbedAustin 11:cada08fc8a70 70 */
mbedAustin 11:cada08fc8a70 71 typedef enum {
mbedAustin 11:cada08fc8a70 72 Static,
mbedAustin 11:cada08fc8a70 73 Dynamic,
mbedAustin 11:cada08fc8a70 74 Directory
mbedAustin 11:cada08fc8a70 75 }Mode;
mbedAustin 11:cada08fc8a70 76
mbedAustin 11:cada08fc8a70 77 /**
mbedAustin 11:cada08fc8a70 78 * Enum defining an operation that can be
mbedAustin 11:cada08fc8a70 79 * supported by a given resource.
mbedAustin 11:cada08fc8a70 80 */
mbedAustin 11:cada08fc8a70 81 typedef enum {
mbedAustin 11:cada08fc8a70 82 NOT_ALLOWED = 0x00,
mbedAustin 11:cada08fc8a70 83 GET_ALLOWED = 0x01,
mbedAustin 11:cada08fc8a70 84 PUT_ALLOWED = 0x02,
mbedAustin 11:cada08fc8a70 85 GET_PUT_ALLOWED = 0x03,
mbedAustin 11:cada08fc8a70 86 POST_ALLOWED = 0x04,
mbedAustin 11:cada08fc8a70 87 GET_POST_ALLOWED = 0x05,
mbedAustin 11:cada08fc8a70 88 PUT_POST_ALLOWED = 0x06,
mbedAustin 11:cada08fc8a70 89 GET_PUT_POST_ALLOWED = 0x07,
mbedAustin 11:cada08fc8a70 90 DELETE_ALLOWED = 0x08,
mbedAustin 11:cada08fc8a70 91 GET_DELETE_ALLOWED = 0x09,
mbedAustin 11:cada08fc8a70 92 PUT_DELETE_ALLOWED = 0x0A,
mbedAustin 11:cada08fc8a70 93 GET_PUT_DELETE_ALLOWED = 0x0B,
mbedAustin 11:cada08fc8a70 94 POST_DELETE_ALLOWED = 0x0C,
mbedAustin 11:cada08fc8a70 95 GET_POST_DELETE_ALLOWED = 0x0D,
mbedAustin 11:cada08fc8a70 96 PUT_POST_DELETE_ALLOWED = 0x0E,
mbedAustin 11:cada08fc8a70 97 GET_PUT_POST_DELETE_ALLOWED = 0x0F,
mbedAustin 11:cada08fc8a70 98
mbedAustin 11:cada08fc8a70 99 }Operation;
mbedAustin 11:cada08fc8a70 100
mbedAustin 11:cada08fc8a70 101 protected:
mbedAustin 11:cada08fc8a70 102
mbedAustin 11:cada08fc8a70 103 // Prevents the use of default constructor.
mbedAustin 11:cada08fc8a70 104 M2MBase();
mbedAustin 11:cada08fc8a70 105
mbedAustin 11:cada08fc8a70 106 // Prevents the use of assignment operator.
mbedAustin 11:cada08fc8a70 107 M2MBase& operator=( const M2MBase& /*other*/ );
mbedAustin 11:cada08fc8a70 108
mbedAustin 11:cada08fc8a70 109 // Prevents the use of copy constructor
mbedAustin 11:cada08fc8a70 110 M2MBase( const M2MBase& /*other*/ );
mbedAustin 11:cada08fc8a70 111
mbedAustin 11:cada08fc8a70 112 /**
mbedAustin 11:cada08fc8a70 113 * @brief Constructor
mbedAustin 11:cada08fc8a70 114 * @param baseType, Type of the object created
mbedAustin 11:cada08fc8a70 115 * @param name, Name of the object
mbedAustin 11:cada08fc8a70 116 * @param id, ID of the object
mbedAustin 11:cada08fc8a70 117 */
mbedAustin 11:cada08fc8a70 118 M2MBase(const String &name,
mbedAustin 11:cada08fc8a70 119 M2MBase::Mode mode);
mbedAustin 11:cada08fc8a70 120 public:
mbedAustin 11:cada08fc8a70 121
mbedAustin 11:cada08fc8a70 122 /**
mbedAustin 11:cada08fc8a70 123 * Destructor
mbedAustin 11:cada08fc8a70 124 */
mbedAustin 11:cada08fc8a70 125 virtual ~M2MBase();
mbedAustin 11:cada08fc8a70 126
mbedAustin 11:cada08fc8a70 127 /**
mbedAustin 11:cada08fc8a70 128 * @brief Sets the operation type for an object.
mbedAustin 11:cada08fc8a70 129 * @param operation, Operation to be set.
mbedAustin 11:cada08fc8a70 130 */
mbedAustin 11:cada08fc8a70 131 virtual void set_operation(M2MBase::Operation operation);
mbedAustin 11:cada08fc8a70 132
mbedAustin 11:cada08fc8a70 133 /**
mbedAustin 11:cada08fc8a70 134 * @brief Sets the interface description of the object.
mbedAustin 11:cada08fc8a70 135 * @param description, Description to be set.
mbedAustin 11:cada08fc8a70 136 */
mbedAustin 11:cada08fc8a70 137 virtual void set_interface_description(const String &description);
mbedAustin 11:cada08fc8a70 138
mbedAustin 11:cada08fc8a70 139 /**
mbedAustin 11:cada08fc8a70 140 * @brief Sets the resource type of the object.
mbedAustin 11:cada08fc8a70 141 * @param resource_type, Resource type to be set.
mbedAustin 11:cada08fc8a70 142 */
mbedAustin 11:cada08fc8a70 143 virtual void set_resource_type(const String &resource_type);
mbedAustin 11:cada08fc8a70 144
mbedAustin 11:cada08fc8a70 145 /**
mbedAustin 11:cada08fc8a70 146 * @brief Sets the CoAP content type of the object.
mbedAustin 11:cada08fc8a70 147 * @param content_type, Content Type to be set based on
mbedAustin 11:cada08fc8a70 148 * CoAP specifications.
mbedAustin 11:cada08fc8a70 149 */
mbedAustin 11:cada08fc8a70 150 virtual void set_coap_content_type(const uint8_t content_type);
mbedAustin 11:cada08fc8a70 151
mbedAustin 11:cada08fc8a70 152 /**
mbedAustin 11:cada08fc8a70 153 * @brief Sets the observable mode for the object.
mbedAustin 11:cada08fc8a70 154 * @param observable, Value for the observation.
mbedAustin 11:cada08fc8a70 155 */
mbedAustin 11:cada08fc8a70 156 virtual void set_observable(bool observable);
mbedAustin 11:cada08fc8a70 157
mbedAustin 11:cada08fc8a70 158 /**
mbedAustin 11:cada08fc8a70 159 * @brief Adds the observation level for the object.
mbedAustin 11:cada08fc8a70 160 * @param observation_level, Level of the observation.
mbedAustin 11:cada08fc8a70 161 */
mbedAustin 11:cada08fc8a70 162 virtual void add_observation_level(M2MBase::Observation observation_level);
mbedAustin 11:cada08fc8a70 163
mbedAustin 11:cada08fc8a70 164 /**
mbedAustin 11:cada08fc8a70 165 * @brief Removes the observation level for the object.
mbedAustin 11:cada08fc8a70 166 * @param observation_level, Level of the observation.
mbedAustin 11:cada08fc8a70 167 */
mbedAustin 11:cada08fc8a70 168 virtual void remove_observation_level(M2MBase::Observation observation_level);
mbedAustin 11:cada08fc8a70 169
mbedAustin 11:cada08fc8a70 170 /**
mbedAustin 11:cada08fc8a70 171 * @brief Sets the object under observation.
mbedAustin 11:cada08fc8a70 172 * @param observed, Value for the observation. When true, starts observing. When false, ongoing observation is cancelled.
mbedAustin 11:cada08fc8a70 173 * @param handler, Handler object for sending
mbedAustin 11:cada08fc8a70 174 * observation callbacks.
mbedAustin 11:cada08fc8a70 175 */
mbedAustin 11:cada08fc8a70 176 virtual void set_under_observation(bool observed,
mbedAustin 11:cada08fc8a70 177 M2MObservationHandler *handler);
mbedAustin 11:cada08fc8a70 178
mbedAustin 11:cada08fc8a70 179 /**
mbedAustin 11:cada08fc8a70 180 * @brief Sets the observation token value.
mbedAustin 11:cada08fc8a70 181 * @param token, Pointer to the token of the resource.
mbedAustin 11:cada08fc8a70 182 * @param length , Length of the token pointer.
mbedAustin 11:cada08fc8a70 183 */
mbedAustin 11:cada08fc8a70 184 virtual void set_observation_token(const uint8_t *token,
mbedAustin 11:cada08fc8a70 185 const uint8_t length);
mbedAustin 11:cada08fc8a70 186
mbedAustin 11:cada08fc8a70 187 /**
mbedAustin 11:cada08fc8a70 188 * Sets the instance ID of the object.
mbedAustin 11:cada08fc8a70 189 * @param instance_id, Instance ID of the object.
mbedAustin 11:cada08fc8a70 190 */
mbedAustin 11:cada08fc8a70 191 virtual void set_instance_id(const uint16_t instance_id);
mbedAustin 11:cada08fc8a70 192
mbedAustin 11:cada08fc8a70 193 /**
mbedAustin 11:cada08fc8a70 194 * Sets the observation number of the object.
mbedAustin 11:cada08fc8a70 195 * @param observation_number, Observation number of the object.
mbedAustin 11:cada08fc8a70 196 */
mbedAustin 11:cada08fc8a70 197 virtual void set_observation_number(const uint16_t observation_number);
mbedAustin 11:cada08fc8a70 198
mbedAustin 11:cada08fc8a70 199 /**
mbedAustin 11:cada08fc8a70 200 * @brief Returns object type.
mbedAustin 11:cada08fc8a70 201 * @return BaseType of the object.
mbedAustin 11:cada08fc8a70 202 */
mbedAustin 11:cada08fc8a70 203 virtual M2MBase::BaseType base_type() const;
mbedAustin 11:cada08fc8a70 204
mbedAustin 11:cada08fc8a70 205 /**
mbedAustin 11:cada08fc8a70 206 * @brief Returns the operation type of the object.
mbedAustin 11:cada08fc8a70 207 * @return Operation, Supported operation on the object.
mbedAustin 11:cada08fc8a70 208 */
mbedAustin 11:cada08fc8a70 209 virtual M2MBase::Operation operation() const;
mbedAustin 11:cada08fc8a70 210
mbedAustin 11:cada08fc8a70 211 /**
mbedAustin 11:cada08fc8a70 212 * @brief Returns the object name.
mbedAustin 11:cada08fc8a70 213 * @return Name for the object.
mbedAustin 11:cada08fc8a70 214 */
mbedAustin 11:cada08fc8a70 215 virtual const String &name() const;
mbedAustin 11:cada08fc8a70 216
mbedAustin 11:cada08fc8a70 217 /**
mbedAustin 11:cada08fc8a70 218 * @brief Returns the object name in integer.
mbedAustin 11:cada08fc8a70 219 * @return Name for the object in integer.
mbedAustin 11:cada08fc8a70 220 */
mbedAustin 11:cada08fc8a70 221 virtual int32_t name_id() const;
mbedAustin 11:cada08fc8a70 222
mbedAustin 11:cada08fc8a70 223 /**
mbedAustin 11:cada08fc8a70 224 * @brief Returns the object's Instance ID.
mbedAustin 11:cada08fc8a70 225 * @returns Instance ID of the object.
mbedAustin 11:cada08fc8a70 226 */
mbedAustin 11:cada08fc8a70 227 virtual uint16_t instance_id() const;
mbedAustin 11:cada08fc8a70 228
mbedAustin 11:cada08fc8a70 229 /**
mbedAustin 11:cada08fc8a70 230 * @brief Returns the interface description of the object.
mbedAustin 11:cada08fc8a70 231 * @return Description of the object.
mbedAustin 11:cada08fc8a70 232 */
mbedAustin 11:cada08fc8a70 233 virtual const String& interface_description() const;
mbedAustin 11:cada08fc8a70 234
mbedAustin 11:cada08fc8a70 235 /**
mbedAustin 11:cada08fc8a70 236 * @brief Returns the resource type of the object.
mbedAustin 11:cada08fc8a70 237 * @return Resource type of the object.
mbedAustin 11:cada08fc8a70 238 */
mbedAustin 11:cada08fc8a70 239 virtual const String& resource_type() const;
mbedAustin 11:cada08fc8a70 240
mbedAustin 11:cada08fc8a70 241 /**
mbedAustin 11:cada08fc8a70 242 * @brief Returns the CoAP content type of the object.
mbedAustin 11:cada08fc8a70 243 * @return Content type of the object.
mbedAustin 11:cada08fc8a70 244 */
mbedAustin 11:cada08fc8a70 245 virtual uint8_t coap_content_type() const;
mbedAustin 11:cada08fc8a70 246
mbedAustin 11:cada08fc8a70 247 /**
mbedAustin 11:cada08fc8a70 248 * @brief Returns the observation status of the object.
mbedAustin 11:cada08fc8a70 249 * @return True if observable, else false.
mbedAustin 11:cada08fc8a70 250 */
mbedAustin 11:cada08fc8a70 251 virtual bool is_observable() const;
mbedAustin 11:cada08fc8a70 252
mbedAustin 11:cada08fc8a70 253 /**
mbedAustin 11:cada08fc8a70 254 * @brief Returns the observation level of the object.
mbedAustin 11:cada08fc8a70 255 * @return Observation level of the object.
mbedAustin 11:cada08fc8a70 256 */
mbedAustin 11:cada08fc8a70 257 virtual M2MBase::Observation observation_level() const;
mbedAustin 11:cada08fc8a70 258
mbedAustin 11:cada08fc8a70 259 /**
mbedAustin 11:cada08fc8a70 260 * @brief Provides the observation token of the object.
mbedAustin 11:cada08fc8a70 261 * @param value[OUT], pointer to the value of the token.
mbedAustin 11:cada08fc8a70 262 * @param value_length[OUT], length of the token pointer.
mbedAustin 11:cada08fc8a70 263 */
mbedAustin 11:cada08fc8a70 264 virtual void get_observation_token(uint8_t *&token, uint32_t &token_length);
mbedAustin 11:cada08fc8a70 265
mbedAustin 11:cada08fc8a70 266 /**
mbedAustin 11:cada08fc8a70 267 * @brief Returns the mode of the resource.
mbedAustin 11:cada08fc8a70 268 * @return Mode of the resource.
mbedAustin 11:cada08fc8a70 269 */
mbedAustin 11:cada08fc8a70 270 virtual Mode mode() const;
mbedAustin 11:cada08fc8a70 271
mbedAustin 11:cada08fc8a70 272 /**
mbedAustin 11:cada08fc8a70 273 * @brief Returns the observation number.
mbedAustin 11:cada08fc8a70 274 * @return Observation number for the object.
mbedAustin 11:cada08fc8a70 275 */
mbedAustin 11:cada08fc8a70 276 virtual uint16_t observation_number() const;
mbedAustin 11:cada08fc8a70 277
mbedAustin 11:cada08fc8a70 278 /**
mbedAustin 11:cada08fc8a70 279 * @brief Parses the received query for the notification
mbedAustin 11:cada08fc8a70 280 * attribute.
mbedAustin 11:cada08fc8a70 281 * @param query, Query that needs to be parsed.
mbedAustin 11:cada08fc8a70 282 * @return True if required attributes are present, else false.
mbedAustin 11:cada08fc8a70 283 */
mbedAustin 11:cada08fc8a70 284 virtual bool handle_observation_attribute(char *&query);
mbedAustin 11:cada08fc8a70 285
mbedAustin 11:cada08fc8a70 286 /**
mbedAustin 11:cada08fc8a70 287 * @brief Handles GET request for the registered objects.
mbedAustin 11:cada08fc8a70 288 * @param nsdl, NSDL handler for the CoAP library.
mbedAustin 11:cada08fc8a70 289 * @param received_coap_header, Received CoAP message from the server.
mbedAustin 11:cada08fc8a70 290 * @param observation_handler, Handler object for sending
mbedAustin 11:cada08fc8a70 291 * observation callbacks.
mbedAustin 11:cada08fc8a70 292 * @return sn_coap_hdr_s, Message that needs to be sent to server.
mbedAustin 11:cada08fc8a70 293 */
mbedAustin 11:cada08fc8a70 294 virtual sn_coap_hdr_s* handle_get_request(nsdl_s *nsdl,
mbedAustin 11:cada08fc8a70 295 sn_coap_hdr_s *received_coap_header,
mbedAustin 11:cada08fc8a70 296 M2MObservationHandler *observation_handler = NULL);
mbedAustin 11:cada08fc8a70 297 /**
mbedAustin 11:cada08fc8a70 298 * @brief Handles PUT request for the registered objects.
mbedAustin 11:cada08fc8a70 299 * @param nsdl, NSDL handler for the CoAP library.
mbedAustin 11:cada08fc8a70 300 * @param received_coap_header, Received CoAP message from the server.
mbedAustin 11:cada08fc8a70 301 * @param observation_handler, Handler object for sending
mbedAustin 11:cada08fc8a70 302 * observation callbacks.
mbedAustin 11:cada08fc8a70 303 * @return sn_coap_hdr_s, Message that needs to be sent to server.
mbedAustin 11:cada08fc8a70 304 */
mbedAustin 11:cada08fc8a70 305 virtual sn_coap_hdr_s* handle_put_request(nsdl_s *nsdl,
mbedAustin 11:cada08fc8a70 306 sn_coap_hdr_s *received_coap_header,
mbedAustin 11:cada08fc8a70 307 M2MObservationHandler *observation_handler = NULL);
mbedAustin 11:cada08fc8a70 308
mbedAustin 11:cada08fc8a70 309 /**
mbedAustin 11:cada08fc8a70 310 * @brief Handles GET request for the registered objects.
mbedAustin 11:cada08fc8a70 311 * @param nsdl, NSDL handler for the CoAP library.
mbedAustin 11:cada08fc8a70 312 * @param received_coap_header, Received CoAP message from the server.
mbedAustin 11:cada08fc8a70 313 * @param observation_handler, Handler object for sending
mbedAustin 11:cada08fc8a70 314 * observation callbacks.
mbedAustin 11:cada08fc8a70 315 * @return sn_coap_hdr_s, Message that needs to be sent to server.
mbedAustin 11:cada08fc8a70 316 */
mbedAustin 11:cada08fc8a70 317 virtual sn_coap_hdr_s* handle_post_request(nsdl_s *nsdl,
mbedAustin 11:cada08fc8a70 318 sn_coap_hdr_s *received_coap_header,
mbedAustin 11:cada08fc8a70 319 M2MObservationHandler *observation_handler = NULL);
mbedAustin 11:cada08fc8a70 320 protected : // from M2MReportObserver
mbedAustin 11:cada08fc8a70 321
mbedAustin 11:cada08fc8a70 322 virtual void observation_to_be_sent();
mbedAustin 11:cada08fc8a70 323
mbedAustin 11:cada08fc8a70 324 protected:
mbedAustin 11:cada08fc8a70 325
mbedAustin 11:cada08fc8a70 326 /**
mbedAustin 11:cada08fc8a70 327 * @brief Sets the Base type for object.
mbedAustin 11:cada08fc8a70 328 * @param type, Type of the base object.
mbedAustin 11:cada08fc8a70 329 */
mbedAustin 11:cada08fc8a70 330 virtual void set_base_type(M2MBase::BaseType type);
mbedAustin 11:cada08fc8a70 331
mbedAustin 11:cada08fc8a70 332 /**
mbedAustin 11:cada08fc8a70 333 * @brief Removes resource from the CoAP structure.
mbedAustin 11:cada08fc8a70 334 * @param resource_name, Name of the resource.
mbedAustin 11:cada08fc8a70 335 */
mbedAustin 11:cada08fc8a70 336 virtual void remove_resource_from_coap(const String &resource_name);
mbedAustin 11:cada08fc8a70 337
mbedAustin 11:cada08fc8a70 338 /**
mbedAustin 11:cada08fc8a70 339 * @brief Removes object from NSDL list.
mbedAustin 11:cada08fc8a70 340 */
mbedAustin 11:cada08fc8a70 341 virtual void remove_object_from_coap();
mbedAustin 11:cada08fc8a70 342
mbedAustin 11:cada08fc8a70 343 /**
mbedAustin 11:cada08fc8a70 344 * @brief Memory Allocation required for libCoap.
mbedAustin 11:cada08fc8a70 345 * @param size, Size of memory to be reserved.
mbedAustin 11:cada08fc8a70 346 */
mbedAustin 11:cada08fc8a70 347 virtual void* memory_alloc(uint16_t size);
mbedAustin 11:cada08fc8a70 348
mbedAustin 11:cada08fc8a70 349 /**
mbedAustin 11:cada08fc8a70 350 * @brief Memory free functions required for libCoap.
mbedAustin 11:cada08fc8a70 351 * @param ptr, Object whose memory needs to be freed.
mbedAustin 11:cada08fc8a70 352 */
mbedAustin 11:cada08fc8a70 353 virtual void memory_free(void *ptr);
mbedAustin 11:cada08fc8a70 354
mbedAustin 11:cada08fc8a70 355 /**
mbedAustin 11:cada08fc8a70 356 * @brief Returns Report Handler object.
mbedAustin 11:cada08fc8a70 357 * @return M2MReportHandler object.
mbedAustin 11:cada08fc8a70 358 */
mbedAustin 11:cada08fc8a70 359 M2MReportHandler* report_handler();
mbedAustin 11:cada08fc8a70 360
mbedAustin 11:cada08fc8a70 361 /**
mbedAustin 11:cada08fc8a70 362 * @brief Returns Observation Handler object.
mbedAustin 11:cada08fc8a70 363 * @return M2MObservationHandler object.
mbedAustin 11:cada08fc8a70 364 */
mbedAustin 11:cada08fc8a70 365 M2MObservationHandler* observation_handler();
mbedAustin 11:cada08fc8a70 366
mbedAustin 11:cada08fc8a70 367 private:
mbedAustin 11:cada08fc8a70 368
mbedAustin 11:cada08fc8a70 369 bool is_integer(const String &value);
mbedAustin 11:cada08fc8a70 370
mbedAustin 11:cada08fc8a70 371 private:
mbedAustin 11:cada08fc8a70 372
mbedAustin 11:cada08fc8a70 373
mbedAustin 11:cada08fc8a70 374 M2MReportHandler *_report_handler;
mbedAustin 11:cada08fc8a70 375 M2MObservationHandler *_observation_handler;
mbedAustin 11:cada08fc8a70 376 M2MBase::Operation _operation;
mbedAustin 11:cada08fc8a70 377 M2MBase::Mode _mode;
mbedAustin 11:cada08fc8a70 378 M2MBase::BaseType _base_type;
mbedAustin 11:cada08fc8a70 379 M2MBase::Observation _observation_level;
mbedAustin 11:cada08fc8a70 380 String _name;
mbedAustin 11:cada08fc8a70 381 String _resource_type;
mbedAustin 11:cada08fc8a70 382 int32_t _name_id;
mbedAustin 11:cada08fc8a70 383 String _interface_description;
mbedAustin 11:cada08fc8a70 384 uint8_t _coap_content_type;
mbedAustin 11:cada08fc8a70 385 uint16_t _instance_id;
mbedAustin 11:cada08fc8a70 386 bool _observable;
mbedAustin 11:cada08fc8a70 387 uint16_t _observation_number;
mbedAustin 11:cada08fc8a70 388 uint8_t *_token;
mbedAustin 11:cada08fc8a70 389 uint8_t _token_length;
mbedAustin 11:cada08fc8a70 390
mbedAustin 11:cada08fc8a70 391 friend class Test_M2MBase;
mbedAustin 11:cada08fc8a70 392
mbedAustin 11:cada08fc8a70 393 };
mbedAustin 11:cada08fc8a70 394
mbedAustin 11:cada08fc8a70 395 #endif // M2M_BASE_H
mbedAustin 11:cada08fc8a70 396