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 #include "mbed-client/m2mbase.h"
mbedAustin 11:cada08fc8a70 17 #include "mbed-client/m2mobservationhandler.h"
mbedAustin 11:cada08fc8a70 18 #include "mbed-client/m2mconstants.h"
mbedAustin 11:cada08fc8a70 19 #include "mbed-client/m2mtimer.h"
mbedAustin 11:cada08fc8a70 20 #include "include/m2mreporthandler.h"
mbedAustin 11:cada08fc8a70 21 #include "include/nsdllinker.h"
mbedAustin 11:cada08fc8a70 22 #include "ns_trace.h"
mbedAustin 11:cada08fc8a70 23 #include <ctype.h>
mbedAustin 11:cada08fc8a70 24 #include <string.h>
mbedAustin 11:cada08fc8a70 25
mbedAustin 11:cada08fc8a70 26 M2MBase& M2MBase::operator=(const M2MBase& other)
mbedAustin 11:cada08fc8a70 27 {
mbedAustin 11:cada08fc8a70 28 if (this != &other) { // protect against invalid self-assignment
mbedAustin 11:cada08fc8a70 29 _operation = other._operation;
mbedAustin 11:cada08fc8a70 30 _mode = other._mode;
mbedAustin 11:cada08fc8a70 31 _name = other._name;
mbedAustin 11:cada08fc8a70 32 _resource_type = other._resource_type;
mbedAustin 11:cada08fc8a70 33 _interface_description = other._interface_description;
mbedAustin 11:cada08fc8a70 34 _coap_content_type = other._coap_content_type;
mbedAustin 11:cada08fc8a70 35 _instance_id = other._instance_id;
mbedAustin 11:cada08fc8a70 36 _observable = other._observable;
mbedAustin 11:cada08fc8a70 37 _observation_number = other._observation_number;
mbedAustin 11:cada08fc8a70 38 _observation_level = other._observation_level;
mbedAustin 11:cada08fc8a70 39 _observation_handler = other._observation_handler;
mbedAustin 11:cada08fc8a70 40
mbedAustin 11:cada08fc8a70 41 if(_token) {
mbedAustin 11:cada08fc8a70 42 free(_token);
mbedAustin 11:cada08fc8a70 43 _token = NULL;
mbedAustin 11:cada08fc8a70 44 _token_length = 0;
mbedAustin 11:cada08fc8a70 45 }
mbedAustin 11:cada08fc8a70 46 _token_length = other._token_length;
mbedAustin 11:cada08fc8a70 47 if(other._token) {
mbedAustin 11:cada08fc8a70 48 _token = (uint8_t *)malloc(other._token_length+1);
mbedAustin 11:cada08fc8a70 49 if(_token) {
mbedAustin 11:cada08fc8a70 50 memset(_token, 0, other._token_length+1);
mbedAustin 11:cada08fc8a70 51 memcpy((uint8_t *)_token, (uint8_t *)other._token, other._token_length);
mbedAustin 11:cada08fc8a70 52 }
mbedAustin 11:cada08fc8a70 53 }
mbedAustin 11:cada08fc8a70 54
mbedAustin 11:cada08fc8a70 55 if(_report_handler) {
mbedAustin 11:cada08fc8a70 56 delete _report_handler;
mbedAustin 11:cada08fc8a70 57 _report_handler = NULL;
mbedAustin 11:cada08fc8a70 58 }
mbedAustin 11:cada08fc8a70 59 if(other._report_handler) {
mbedAustin 11:cada08fc8a70 60 _report_handler = new M2MReportHandler(*other._report_handler);
mbedAustin 11:cada08fc8a70 61 }
mbedAustin 11:cada08fc8a70 62 }
mbedAustin 11:cada08fc8a70 63 return *this;
mbedAustin 11:cada08fc8a70 64 }
mbedAustin 11:cada08fc8a70 65
mbedAustin 11:cada08fc8a70 66 M2MBase::M2MBase(const M2MBase& other) :
mbedAustin 11:cada08fc8a70 67 _report_handler(NULL),
mbedAustin 11:cada08fc8a70 68 _token(NULL),
mbedAustin 11:cada08fc8a70 69 _token_length(0)
mbedAustin 11:cada08fc8a70 70 {
mbedAustin 11:cada08fc8a70 71 _operation = other._operation;
mbedAustin 11:cada08fc8a70 72 _mode = other._mode;
mbedAustin 11:cada08fc8a70 73 _name = other._name;
mbedAustin 11:cada08fc8a70 74 _resource_type = other._resource_type;
mbedAustin 11:cada08fc8a70 75 _interface_description = other._interface_description;
mbedAustin 11:cada08fc8a70 76 _coap_content_type = other._coap_content_type;
mbedAustin 11:cada08fc8a70 77 _instance_id = other._instance_id;
mbedAustin 11:cada08fc8a70 78 _observable = other._observable;
mbedAustin 11:cada08fc8a70 79 _observation_handler = other._observation_handler;
mbedAustin 11:cada08fc8a70 80 _observation_number = other._observation_number;
mbedAustin 11:cada08fc8a70 81 _observation_level = other._observation_level;
mbedAustin 11:cada08fc8a70 82
mbedAustin 11:cada08fc8a70 83 _token_length = other._token_length;
mbedAustin 11:cada08fc8a70 84 if(other._token) {
mbedAustin 11:cada08fc8a70 85 _token = (uint8_t *)malloc(other._token_length+1);
mbedAustin 11:cada08fc8a70 86 if(_token) {
mbedAustin 11:cada08fc8a70 87 memset(_token, 0, other._token_length+1);
mbedAustin 11:cada08fc8a70 88 memcpy((uint8_t *)_token, (uint8_t *)other._token, other._token_length);
mbedAustin 11:cada08fc8a70 89 }
mbedAustin 11:cada08fc8a70 90 }
mbedAustin 11:cada08fc8a70 91
mbedAustin 11:cada08fc8a70 92 if(other._report_handler) {
mbedAustin 11:cada08fc8a70 93 _report_handler = new M2MReportHandler(*other._report_handler);
mbedAustin 11:cada08fc8a70 94 }
mbedAustin 11:cada08fc8a70 95 }
mbedAustin 11:cada08fc8a70 96
mbedAustin 11:cada08fc8a70 97 M2MBase::M2MBase(const String & resource_name,
mbedAustin 11:cada08fc8a70 98 M2MBase::Mode mde)
mbedAustin 11:cada08fc8a70 99 : _report_handler(NULL),
mbedAustin 11:cada08fc8a70 100 _observation_handler(NULL),
mbedAustin 11:cada08fc8a70 101 _operation(M2MBase::NOT_ALLOWED),
mbedAustin 11:cada08fc8a70 102 _mode(mde),
mbedAustin 11:cada08fc8a70 103 _observation_level(M2MBase::None),
mbedAustin 11:cada08fc8a70 104 _name(resource_name),
mbedAustin 11:cada08fc8a70 105 _coap_content_type(0),
mbedAustin 11:cada08fc8a70 106 _instance_id(0),
mbedAustin 11:cada08fc8a70 107 _observable(false),
mbedAustin 11:cada08fc8a70 108 _observation_number(0),
mbedAustin 11:cada08fc8a70 109 _token(NULL),
mbedAustin 11:cada08fc8a70 110 _token_length(0)
mbedAustin 11:cada08fc8a70 111 {
mbedAustin 11:cada08fc8a70 112 if(is_integer(_name) && _name.size() <= MAX_ALLOWED_STRING_LENGTH) {
mbedAustin 11:cada08fc8a70 113 _name_id = strtoul(_name.c_str(), NULL, 10);
mbedAustin 11:cada08fc8a70 114 if(_name_id > 65535){
mbedAustin 11:cada08fc8a70 115 _name_id = -1;
mbedAustin 11:cada08fc8a70 116 }
mbedAustin 11:cada08fc8a70 117 } else {
mbedAustin 11:cada08fc8a70 118 _name_id = -1;
mbedAustin 11:cada08fc8a70 119 }
mbedAustin 11:cada08fc8a70 120 }
mbedAustin 11:cada08fc8a70 121
mbedAustin 11:cada08fc8a70 122 M2MBase::~M2MBase()
mbedAustin 11:cada08fc8a70 123 {
mbedAustin 11:cada08fc8a70 124 if(_report_handler) {
mbedAustin 11:cada08fc8a70 125 delete _report_handler;
mbedAustin 11:cada08fc8a70 126 _report_handler = NULL;
mbedAustin 11:cada08fc8a70 127 }
mbedAustin 11:cada08fc8a70 128 if(_token) {
mbedAustin 11:cada08fc8a70 129 free(_token);
mbedAustin 11:cada08fc8a70 130 _token = NULL;
mbedAustin 11:cada08fc8a70 131 _token_length = 0;
mbedAustin 11:cada08fc8a70 132 }
mbedAustin 11:cada08fc8a70 133 }
mbedAustin 11:cada08fc8a70 134
mbedAustin 11:cada08fc8a70 135 void M2MBase::set_operation(M2MBase::Operation opr)
mbedAustin 11:cada08fc8a70 136 {
mbedAustin 11:cada08fc8a70 137 // If the mode is Static, there is only GET_ALLOWED
mbedAustin 11:cada08fc8a70 138 // supported.
mbedAustin 11:cada08fc8a70 139 if(M2MBase::Static == _mode) {
mbedAustin 11:cada08fc8a70 140 _operation = M2MBase::GET_ALLOWED;
mbedAustin 11:cada08fc8a70 141 } else {
mbedAustin 11:cada08fc8a70 142 _operation = opr;
mbedAustin 11:cada08fc8a70 143 }
mbedAustin 11:cada08fc8a70 144 }
mbedAustin 11:cada08fc8a70 145
mbedAustin 11:cada08fc8a70 146 void M2MBase::set_interface_description(const String &desc)
mbedAustin 11:cada08fc8a70 147 {
mbedAustin 11:cada08fc8a70 148 _interface_description = desc;
mbedAustin 11:cada08fc8a70 149 }
mbedAustin 11:cada08fc8a70 150
mbedAustin 11:cada08fc8a70 151 void M2MBase::set_resource_type(const String &res_type)
mbedAustin 11:cada08fc8a70 152 {
mbedAustin 11:cada08fc8a70 153 _resource_type = res_type;
mbedAustin 11:cada08fc8a70 154 }
mbedAustin 11:cada08fc8a70 155
mbedAustin 11:cada08fc8a70 156 void M2MBase::set_coap_content_type(const uint8_t con_type)
mbedAustin 11:cada08fc8a70 157 {
mbedAustin 11:cada08fc8a70 158 _coap_content_type = con_type;
mbedAustin 11:cada08fc8a70 159 }
mbedAustin 11:cada08fc8a70 160
mbedAustin 11:cada08fc8a70 161 void M2MBase::set_observable(bool observable)
mbedAustin 11:cada08fc8a70 162 {
mbedAustin 11:cada08fc8a70 163 _observable = observable;
mbedAustin 11:cada08fc8a70 164 }
mbedAustin 11:cada08fc8a70 165
mbedAustin 11:cada08fc8a70 166 void M2MBase::add_observation_level(M2MBase::Observation observation_level)
mbedAustin 11:cada08fc8a70 167 {
mbedAustin 11:cada08fc8a70 168 _observation_level = (M2MBase::Observation)(_observation_level | observation_level);
mbedAustin 11:cada08fc8a70 169 }
mbedAustin 11:cada08fc8a70 170
mbedAustin 11:cada08fc8a70 171 void M2MBase::remove_observation_level(M2MBase::Observation observation_level)
mbedAustin 11:cada08fc8a70 172 {
mbedAustin 11:cada08fc8a70 173 _observation_level = (M2MBase::Observation)(_observation_level ^ observation_level);
mbedAustin 11:cada08fc8a70 174 }
mbedAustin 11:cada08fc8a70 175
mbedAustin 11:cada08fc8a70 176 void M2MBase::set_under_observation(bool observed,
mbedAustin 11:cada08fc8a70 177 M2MObservationHandler *handler)
mbedAustin 11:cada08fc8a70 178 {
mbedAustin 11:cada08fc8a70 179
mbedAustin 11:cada08fc8a70 180 tr_debug("M2MBase::set_under_observation - observed: %d", observed);
mbedAustin 11:cada08fc8a70 181 tr_debug("M2MBase::set_under_observation - _base_type: %d", _base_type);
mbedAustin 11:cada08fc8a70 182 _observation_handler = handler;
mbedAustin 11:cada08fc8a70 183 if(handler) {
mbedAustin 11:cada08fc8a70 184 if (_base_type != M2MBase::ResourceInstance) {
mbedAustin 11:cada08fc8a70 185 if(!_report_handler){
mbedAustin 11:cada08fc8a70 186 _report_handler = new M2MReportHandler(*this);
mbedAustin 11:cada08fc8a70 187 }
mbedAustin 11:cada08fc8a70 188 _report_handler->set_under_observation(observed);
mbedAustin 11:cada08fc8a70 189 }
mbedAustin 11:cada08fc8a70 190 } else {
mbedAustin 11:cada08fc8a70 191 if(_report_handler) {
mbedAustin 11:cada08fc8a70 192 delete _report_handler;
mbedAustin 11:cada08fc8a70 193 _report_handler = NULL;
mbedAustin 11:cada08fc8a70 194 }
mbedAustin 11:cada08fc8a70 195 }
mbedAustin 11:cada08fc8a70 196 }
mbedAustin 11:cada08fc8a70 197
mbedAustin 11:cada08fc8a70 198 void M2MBase::set_observation_token(const uint8_t *token, const uint8_t length)
mbedAustin 11:cada08fc8a70 199 {
mbedAustin 11:cada08fc8a70 200 if(_token) {
mbedAustin 11:cada08fc8a70 201 free(_token);
mbedAustin 11:cada08fc8a70 202 _token = NULL;
mbedAustin 11:cada08fc8a70 203 _token_length = 0;
mbedAustin 11:cada08fc8a70 204 }
mbedAustin 11:cada08fc8a70 205
mbedAustin 11:cada08fc8a70 206 if( token != NULL && length > 0 ) {
mbedAustin 11:cada08fc8a70 207 _token = (uint8_t *)malloc(length+1);
mbedAustin 11:cada08fc8a70 208 if(_token) {
mbedAustin 11:cada08fc8a70 209 memset(_token, 0, length+1);
mbedAustin 11:cada08fc8a70 210 memcpy((uint8_t *)_token, (uint8_t *)token, length);
mbedAustin 11:cada08fc8a70 211 _token_length = length;
mbedAustin 11:cada08fc8a70 212 }
mbedAustin 11:cada08fc8a70 213 }
mbedAustin 11:cada08fc8a70 214 }
mbedAustin 11:cada08fc8a70 215
mbedAustin 11:cada08fc8a70 216 void M2MBase::set_instance_id(const uint16_t inst_id)
mbedAustin 11:cada08fc8a70 217 {
mbedAustin 11:cada08fc8a70 218 _instance_id = inst_id;
mbedAustin 11:cada08fc8a70 219 }
mbedAustin 11:cada08fc8a70 220
mbedAustin 11:cada08fc8a70 221 void M2MBase::set_observation_number(const uint16_t observation_number)
mbedAustin 11:cada08fc8a70 222 {
mbedAustin 11:cada08fc8a70 223 _observation_number = observation_number;
mbedAustin 11:cada08fc8a70 224 }
mbedAustin 11:cada08fc8a70 225
mbedAustin 11:cada08fc8a70 226 M2MBase::BaseType M2MBase::base_type() const
mbedAustin 11:cada08fc8a70 227 {
mbedAustin 11:cada08fc8a70 228 return _base_type;
mbedAustin 11:cada08fc8a70 229 }
mbedAustin 11:cada08fc8a70 230
mbedAustin 11:cada08fc8a70 231 M2MBase::Operation M2MBase::operation() const
mbedAustin 11:cada08fc8a70 232 {
mbedAustin 11:cada08fc8a70 233 return _operation;
mbedAustin 11:cada08fc8a70 234 }
mbedAustin 11:cada08fc8a70 235
mbedAustin 11:cada08fc8a70 236 const String& M2MBase::name() const
mbedAustin 11:cada08fc8a70 237 {
mbedAustin 11:cada08fc8a70 238 return _name;
mbedAustin 11:cada08fc8a70 239 }
mbedAustin 11:cada08fc8a70 240
mbedAustin 11:cada08fc8a70 241 int32_t M2MBase::name_id() const
mbedAustin 11:cada08fc8a70 242 {
mbedAustin 11:cada08fc8a70 243 return _name_id;
mbedAustin 11:cada08fc8a70 244 }
mbedAustin 11:cada08fc8a70 245
mbedAustin 11:cada08fc8a70 246 uint16_t M2MBase::instance_id() const
mbedAustin 11:cada08fc8a70 247 {
mbedAustin 11:cada08fc8a70 248 return _instance_id;
mbedAustin 11:cada08fc8a70 249 }
mbedAustin 11:cada08fc8a70 250
mbedAustin 11:cada08fc8a70 251 const String& M2MBase::interface_description() const
mbedAustin 11:cada08fc8a70 252 {
mbedAustin 11:cada08fc8a70 253 return _interface_description;
mbedAustin 11:cada08fc8a70 254 }
mbedAustin 11:cada08fc8a70 255
mbedAustin 11:cada08fc8a70 256 const String& M2MBase::resource_type() const
mbedAustin 11:cada08fc8a70 257 {
mbedAustin 11:cada08fc8a70 258 return _resource_type;
mbedAustin 11:cada08fc8a70 259 }
mbedAustin 11:cada08fc8a70 260
mbedAustin 11:cada08fc8a70 261 uint8_t M2MBase::coap_content_type() const
mbedAustin 11:cada08fc8a70 262 {
mbedAustin 11:cada08fc8a70 263 return _coap_content_type;
mbedAustin 11:cada08fc8a70 264 }
mbedAustin 11:cada08fc8a70 265
mbedAustin 11:cada08fc8a70 266 bool M2MBase::is_observable() const
mbedAustin 11:cada08fc8a70 267 {
mbedAustin 11:cada08fc8a70 268 return _observable;
mbedAustin 11:cada08fc8a70 269 }
mbedAustin 11:cada08fc8a70 270
mbedAustin 11:cada08fc8a70 271 M2MBase::Observation M2MBase::observation_level() const
mbedAustin 11:cada08fc8a70 272 {
mbedAustin 11:cada08fc8a70 273 return _observation_level;
mbedAustin 11:cada08fc8a70 274 }
mbedAustin 11:cada08fc8a70 275
mbedAustin 11:cada08fc8a70 276 void M2MBase::get_observation_token(uint8_t *&token, uint32_t &token_length)
mbedAustin 11:cada08fc8a70 277 {
mbedAustin 11:cada08fc8a70 278 token_length = 0;
mbedAustin 11:cada08fc8a70 279 if(token) {
mbedAustin 11:cada08fc8a70 280 free(token);
mbedAustin 11:cada08fc8a70 281 token = NULL;
mbedAustin 11:cada08fc8a70 282 }
mbedAustin 11:cada08fc8a70 283 token = (uint8_t *)malloc(_token_length+1);
mbedAustin 11:cada08fc8a70 284 if(token) {
mbedAustin 11:cada08fc8a70 285 token_length = _token_length;
mbedAustin 11:cada08fc8a70 286 memset(token, 0, _token_length+1);
mbedAustin 11:cada08fc8a70 287 memcpy((uint8_t *)token, (uint8_t *)_token, token_length);
mbedAustin 11:cada08fc8a70 288 }
mbedAustin 11:cada08fc8a70 289 }
mbedAustin 11:cada08fc8a70 290
mbedAustin 11:cada08fc8a70 291 M2MBase::Mode M2MBase::mode() const
mbedAustin 11:cada08fc8a70 292 {
mbedAustin 11:cada08fc8a70 293 return _mode;
mbedAustin 11:cada08fc8a70 294 }
mbedAustin 11:cada08fc8a70 295
mbedAustin 11:cada08fc8a70 296 uint16_t M2MBase::observation_number() const
mbedAustin 11:cada08fc8a70 297 {
mbedAustin 11:cada08fc8a70 298 return _observation_number;
mbedAustin 11:cada08fc8a70 299 }
mbedAustin 11:cada08fc8a70 300
mbedAustin 11:cada08fc8a70 301 bool M2MBase::handle_observation_attribute(char *&query)
mbedAustin 11:cada08fc8a70 302 {
mbedAustin 11:cada08fc8a70 303 tr_debug("M2MBase::handle_observation_attribute");
mbedAustin 11:cada08fc8a70 304 bool success = false;
mbedAustin 11:cada08fc8a70 305 if(_report_handler) {
mbedAustin 11:cada08fc8a70 306 success = _report_handler->parse_notification_attribute(query,_base_type);
mbedAustin 11:cada08fc8a70 307 if (success) {
mbedAustin 11:cada08fc8a70 308 if ((_report_handler->attribute_flags() & M2MReportHandler::Cancel) == 0) {
mbedAustin 11:cada08fc8a70 309 _report_handler->set_under_observation(true);
mbedAustin 11:cada08fc8a70 310 } else {
mbedAustin 11:cada08fc8a70 311 _report_handler->set_under_observation(false);
mbedAustin 11:cada08fc8a70 312 }
mbedAustin 11:cada08fc8a70 313 }
mbedAustin 11:cada08fc8a70 314 }
mbedAustin 11:cada08fc8a70 315 return success;
mbedAustin 11:cada08fc8a70 316 }
mbedAustin 11:cada08fc8a70 317
mbedAustin 11:cada08fc8a70 318 void M2MBase::observation_to_be_sent()
mbedAustin 11:cada08fc8a70 319 {
mbedAustin 11:cada08fc8a70 320 //TODO: Move this to M2MResourceInstance
mbedAustin 11:cada08fc8a70 321 if(_observation_handler) {
mbedAustin 11:cada08fc8a70 322 _observation_handler->observation_to_be_sent(this);
mbedAustin 11:cada08fc8a70 323 }
mbedAustin 11:cada08fc8a70 324 }
mbedAustin 11:cada08fc8a70 325
mbedAustin 11:cada08fc8a70 326 void M2MBase::set_base_type(M2MBase::BaseType type)
mbedAustin 11:cada08fc8a70 327 {
mbedAustin 11:cada08fc8a70 328 _base_type = type;
mbedAustin 11:cada08fc8a70 329 }
mbedAustin 11:cada08fc8a70 330
mbedAustin 11:cada08fc8a70 331 void M2MBase::remove_resource_from_coap(const String &resource_name)
mbedAustin 11:cada08fc8a70 332 {
mbedAustin 11:cada08fc8a70 333 if(_observation_handler) {
mbedAustin 11:cada08fc8a70 334 _observation_handler->resource_to_be_deleted(resource_name);
mbedAustin 11:cada08fc8a70 335 }
mbedAustin 11:cada08fc8a70 336 }
mbedAustin 11:cada08fc8a70 337
mbedAustin 11:cada08fc8a70 338 void M2MBase::remove_object_from_coap()
mbedAustin 11:cada08fc8a70 339 {
mbedAustin 11:cada08fc8a70 340 if(_observation_handler) {
mbedAustin 11:cada08fc8a70 341 _observation_handler->remove_object(this);
mbedAustin 11:cada08fc8a70 342 }
mbedAustin 11:cada08fc8a70 343 }
mbedAustin 11:cada08fc8a70 344
mbedAustin 11:cada08fc8a70 345 sn_coap_hdr_s* M2MBase::handle_get_request(nsdl_s */*nsdl*/,
mbedAustin 11:cada08fc8a70 346 sn_coap_hdr_s */*received_coap_header*/,
mbedAustin 11:cada08fc8a70 347 M2MObservationHandler */*observation_handler*/)
mbedAustin 11:cada08fc8a70 348 {
mbedAustin 11:cada08fc8a70 349 //Handled in M2MResource, M2MObjectInstance and M2MObject classes
mbedAustin 11:cada08fc8a70 350 return NULL;
mbedAustin 11:cada08fc8a70 351 }
mbedAustin 11:cada08fc8a70 352
mbedAustin 11:cada08fc8a70 353 sn_coap_hdr_s* M2MBase::handle_put_request(nsdl_s */*nsdl*/,
mbedAustin 11:cada08fc8a70 354 sn_coap_hdr_s */*received_coap_header*/,
mbedAustin 11:cada08fc8a70 355 M2MObservationHandler */*observation_handler*/)
mbedAustin 11:cada08fc8a70 356 {
mbedAustin 11:cada08fc8a70 357 //Handled in M2MResource, M2MObjectInstance and M2MObject classes
mbedAustin 11:cada08fc8a70 358 return NULL;
mbedAustin 11:cada08fc8a70 359 }
mbedAustin 11:cada08fc8a70 360
mbedAustin 11:cada08fc8a70 361 sn_coap_hdr_s* M2MBase::handle_post_request(nsdl_s */*nsdl*/,
mbedAustin 11:cada08fc8a70 362 sn_coap_hdr_s */*received_coap_header*/,
mbedAustin 11:cada08fc8a70 363 M2MObservationHandler */*observation_handler*/)
mbedAustin 11:cada08fc8a70 364 {
mbedAustin 11:cada08fc8a70 365 //Handled in M2MResource, M2MObjectInstance and M2MObject classes
mbedAustin 11:cada08fc8a70 366 return NULL;
mbedAustin 11:cada08fc8a70 367 }
mbedAustin 11:cada08fc8a70 368
mbedAustin 11:cada08fc8a70 369 void *M2MBase::memory_alloc(uint16_t size)
mbedAustin 11:cada08fc8a70 370 {
mbedAustin 11:cada08fc8a70 371 if(size)
mbedAustin 11:cada08fc8a70 372 return malloc(size);
mbedAustin 11:cada08fc8a70 373 else
mbedAustin 11:cada08fc8a70 374 return 0;
mbedAustin 11:cada08fc8a70 375 }
mbedAustin 11:cada08fc8a70 376
mbedAustin 11:cada08fc8a70 377 void M2MBase::memory_free(void *ptr)
mbedAustin 11:cada08fc8a70 378 {
mbedAustin 11:cada08fc8a70 379 if(ptr)
mbedAustin 11:cada08fc8a70 380 free(ptr);
mbedAustin 11:cada08fc8a70 381 }
mbedAustin 11:cada08fc8a70 382
mbedAustin 11:cada08fc8a70 383 M2MReportHandler* M2MBase::report_handler()
mbedAustin 11:cada08fc8a70 384 {
mbedAustin 11:cada08fc8a70 385 return _report_handler;
mbedAustin 11:cada08fc8a70 386 }
mbedAustin 11:cada08fc8a70 387
mbedAustin 11:cada08fc8a70 388 M2MObservationHandler* M2MBase::observation_handler()
mbedAustin 11:cada08fc8a70 389 {
mbedAustin 11:cada08fc8a70 390 return _observation_handler;
mbedAustin 11:cada08fc8a70 391 }
mbedAustin 11:cada08fc8a70 392
mbedAustin 11:cada08fc8a70 393 bool M2MBase::is_integer(const String &value)
mbedAustin 11:cada08fc8a70 394 {
mbedAustin 11:cada08fc8a70 395 const char *s = value.c_str();
mbedAustin 11:cada08fc8a70 396 if(value.empty() || ((!isdigit(s[0])) && (s[0] != '-') && (s[0] != '+'))) {
mbedAustin 11:cada08fc8a70 397 return false;
mbedAustin 11:cada08fc8a70 398 }
mbedAustin 11:cada08fc8a70 399 char * p ;
mbedAustin 11:cada08fc8a70 400 strtol(value.c_str(), &p, 10);
mbedAustin 11:cada08fc8a70 401 return (*p == 0);
mbedAustin 11:cada08fc8a70 402 }