Jim Carver / Mbed OS mbed-cloud-workshop-connect-PIR

Dependencies:   HTS221

Fork of mbed-cloud-workshop-connect-HTS221 by Jim Carver

Committer:
JimCarver
Date:
Fri Oct 12 21:22:49 2018 +0000
Revision:
0:6b753f761943
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JimCarver 0:6b753f761943 1 /*
JimCarver 0:6b753f761943 2 * Copyright (c) 2015 ARM Limited. All rights reserved.
JimCarver 0:6b753f761943 3 * SPDX-License-Identifier: Apache-2.0
JimCarver 0:6b753f761943 4 * Licensed under the Apache License, Version 2.0 (the License); you may
JimCarver 0:6b753f761943 5 * not use this file except in compliance with the License.
JimCarver 0:6b753f761943 6 * You may obtain a copy of the License at
JimCarver 0:6b753f761943 7 *
JimCarver 0:6b753f761943 8 * http://www.apache.org/licenses/LICENSE-2.0
JimCarver 0:6b753f761943 9 *
JimCarver 0:6b753f761943 10 * Unless required by applicable law or agreed to in writing, software
JimCarver 0:6b753f761943 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
JimCarver 0:6b753f761943 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
JimCarver 0:6b753f761943 13 * See the License for the specific language governing permissions and
JimCarver 0:6b753f761943 14 * limitations under the License.
JimCarver 0:6b753f761943 15 */
JimCarver 0:6b753f761943 16
JimCarver 0:6b753f761943 17 #include "mbed-client/m2mfirmware.h"
JimCarver 0:6b753f761943 18 #include "mbed-client/m2mconstants.h"
JimCarver 0:6b753f761943 19 #include "mbed-client/m2mobject.h"
JimCarver 0:6b753f761943 20 #include "mbed-client/m2mobjectinstance.h"
JimCarver 0:6b753f761943 21 #include "mbed-client/m2mresource.h"
JimCarver 0:6b753f761943 22 #include "include/nsdlaccesshelper.h"
JimCarver 0:6b753f761943 23
JimCarver 0:6b753f761943 24 #define BUFFER_SIZE 21
JimCarver 0:6b753f761943 25 #define TRACE_GROUP "mClt"
JimCarver 0:6b753f761943 26
JimCarver 0:6b753f761943 27 M2MFirmware* M2MFirmware::_instance = NULL;
JimCarver 0:6b753f761943 28
JimCarver 0:6b753f761943 29 M2MFirmware* M2MFirmware::get_instance()
JimCarver 0:6b753f761943 30 {
JimCarver 0:6b753f761943 31 if(_instance == NULL) {
JimCarver 0:6b753f761943 32 _instance = new M2MFirmware();
JimCarver 0:6b753f761943 33 }
JimCarver 0:6b753f761943 34 return _instance;
JimCarver 0:6b753f761943 35 }
JimCarver 0:6b753f761943 36
JimCarver 0:6b753f761943 37 void M2MFirmware::delete_instance()
JimCarver 0:6b753f761943 38 {
JimCarver 0:6b753f761943 39 delete _instance;
JimCarver 0:6b753f761943 40 _instance = NULL;
JimCarver 0:6b753f761943 41 }
JimCarver 0:6b753f761943 42
JimCarver 0:6b753f761943 43 M2MFirmware::M2MFirmware()
JimCarver 0:6b753f761943 44 : M2MObject(M2M_FIRMWARE_ID, stringdup(M2M_FIRMWARE_ID))
JimCarver 0:6b753f761943 45 {
JimCarver 0:6b753f761943 46 M2MBase::set_register_uri(false);
JimCarver 0:6b753f761943 47 M2MBase::set_operation(M2MBase::GET_PUT_ALLOWED);
JimCarver 0:6b753f761943 48 _firmware_instance = M2MObject::create_object_instance();
JimCarver 0:6b753f761943 49 if(_firmware_instance) {
JimCarver 0:6b753f761943 50 _firmware_instance->set_operation(M2MBase::GET_PUT_ALLOWED);
JimCarver 0:6b753f761943 51 create_mandatory_resources();
JimCarver 0:6b753f761943 52 }
JimCarver 0:6b753f761943 53 }
JimCarver 0:6b753f761943 54
JimCarver 0:6b753f761943 55 M2MFirmware::~M2MFirmware()
JimCarver 0:6b753f761943 56 {
JimCarver 0:6b753f761943 57 }
JimCarver 0:6b753f761943 58
JimCarver 0:6b753f761943 59 // Conditionally put the static part of parameter struct into flash.
JimCarver 0:6b753f761943 60 // Unfortunately this can't be done yet by default as there is old API which
JimCarver 0:6b753f761943 61 // may be used to modify the values in sn_nsdl_static_resource_parameters_s.
JimCarver 0:6b753f761943 62 #ifdef MEMORY_OPTIMIZED_API
JimCarver 0:6b753f761943 63 #define STATIC_PARAM_TYPE const
JimCarver 0:6b753f761943 64 #else
JimCarver 0:6b753f761943 65 #define STATIC_PARAM_TYPE
JimCarver 0:6b753f761943 66 #endif
JimCarver 0:6b753f761943 67
JimCarver 0:6b753f761943 68 #define PACKAGE_PATH FIRMWARE_PATH_PREFIX FIRMWARE_PACKAGE
JimCarver 0:6b753f761943 69
JimCarver 0:6b753f761943 70 #ifdef RESOURCE_ATTRIBUTES_LIST
JimCarver 0:6b753f761943 71 sn_nsdl_attribute_item_s default_attributes[2] = {
JimCarver 0:6b753f761943 72 {ATTR_RESOURCE_TYPE, OMA_RESOURCE_TYPE},
JimCarver 0:6b753f761943 73 {ATTR_END, 0}
JimCarver 0:6b753f761943 74 };
JimCarver 0:6b753f761943 75 #endif
JimCarver 0:6b753f761943 76
JimCarver 0:6b753f761943 77 STATIC_PARAM_TYPE
JimCarver 0:6b753f761943 78 static sn_nsdl_static_resource_parameters_s firmware_package_params_static = {
JimCarver 0:6b753f761943 79 #ifndef RESOURCE_ATTRIBUTES_LIST
JimCarver 0:6b753f761943 80 #ifndef DISABLE_RESOURCE_TYPE
JimCarver 0:6b753f761943 81 (char*)OMA_RESOURCE_TYPE, // resource_type_ptr
JimCarver 0:6b753f761943 82 #endif
JimCarver 0:6b753f761943 83 #ifndef DISABLE_INTERFACE_DESCRIPTION
JimCarver 0:6b753f761943 84 (char*)"", // interface_description_ptr
JimCarver 0:6b753f761943 85 #endif
JimCarver 0:6b753f761943 86 #else
JimCarver 0:6b753f761943 87 default_attributes,
JimCarver 0:6b753f761943 88 #endif
JimCarver 0:6b753f761943 89 (char*)PACKAGE_PATH, // path
JimCarver 0:6b753f761943 90 // (uint8_t*)"", // resource
JimCarver 0:6b753f761943 91 // 0, // resourcelen
JimCarver 0:6b753f761943 92 false, // external_memory_block
JimCarver 0:6b753f761943 93 SN_GRS_DYNAMIC, // mode
JimCarver 0:6b753f761943 94 false // free_on_delete
JimCarver 0:6b753f761943 95 };
JimCarver 0:6b753f761943 96
JimCarver 0:6b753f761943 97 #define PACKAGE_URI_PATH FIRMWARE_PATH_PREFIX FIRMWARE_PACKAGE_URI
JimCarver 0:6b753f761943 98
JimCarver 0:6b753f761943 99 STATIC_PARAM_TYPE
JimCarver 0:6b753f761943 100 static sn_nsdl_static_resource_parameters_s firmware_package_uri_params_static = {
JimCarver 0:6b753f761943 101 #ifndef RESOURCE_ATTRIBUTES_LIST
JimCarver 0:6b753f761943 102 #ifndef DISABLE_RESOURCE_TYPE
JimCarver 0:6b753f761943 103 (char*)OMA_RESOURCE_TYPE, // resource_type_ptr
JimCarver 0:6b753f761943 104 #endif
JimCarver 0:6b753f761943 105 #ifndef DISABLE_INTERFACE_DESCRIPTION
JimCarver 0:6b753f761943 106 (char*)"", // interface_description_ptr
JimCarver 0:6b753f761943 107 #endif
JimCarver 0:6b753f761943 108 #else
JimCarver 0:6b753f761943 109 default_attributes,
JimCarver 0:6b753f761943 110 #endif
JimCarver 0:6b753f761943 111 (char*)PACKAGE_URI_PATH, // path
JimCarver 0:6b753f761943 112 // (uint8_t*)"", // resource
JimCarver 0:6b753f761943 113 // 0, // resourcelen
JimCarver 0:6b753f761943 114 false, // external_memory_block
JimCarver 0:6b753f761943 115 SN_GRS_DYNAMIC, // mode
JimCarver 0:6b753f761943 116 false // free_on_delete
JimCarver 0:6b753f761943 117 };
JimCarver 0:6b753f761943 118
JimCarver 0:6b753f761943 119 #define UPDATE_PATH FIRMWARE_PATH_PREFIX FIRMWARE_UPDATE
JimCarver 0:6b753f761943 120
JimCarver 0:6b753f761943 121 STATIC_PARAM_TYPE
JimCarver 0:6b753f761943 122 static sn_nsdl_static_resource_parameters_s firmware_update_params_static = {
JimCarver 0:6b753f761943 123 #ifndef RESOURCE_ATTRIBUTES_LIST
JimCarver 0:6b753f761943 124 #ifndef DISABLE_RESOURCE_TYPE
JimCarver 0:6b753f761943 125 (char*)OMA_RESOURCE_TYPE, // resource_type_ptr
JimCarver 0:6b753f761943 126 #endif
JimCarver 0:6b753f761943 127 #ifndef DISABLE_INTERFACE_DESCRIPTION
JimCarver 0:6b753f761943 128 (char*)"", // interface_description_ptr
JimCarver 0:6b753f761943 129 #endif
JimCarver 0:6b753f761943 130 #else
JimCarver 0:6b753f761943 131 default_attributes,
JimCarver 0:6b753f761943 132 #endif
JimCarver 0:6b753f761943 133 (char*)UPDATE_PATH, // path
JimCarver 0:6b753f761943 134 // (uint8_t*)"", // resource
JimCarver 0:6b753f761943 135 // 0, // resourcelen
JimCarver 0:6b753f761943 136 false, // external_memory_block
JimCarver 0:6b753f761943 137 SN_GRS_DYNAMIC, // mode
JimCarver 0:6b753f761943 138 false // free_on_delete
JimCarver 0:6b753f761943 139 };
JimCarver 0:6b753f761943 140
JimCarver 0:6b753f761943 141 #define STATE_URI_PATH FIRMWARE_PATH_PREFIX FIRMWARE_STATE
JimCarver 0:6b753f761943 142
JimCarver 0:6b753f761943 143 STATIC_PARAM_TYPE
JimCarver 0:6b753f761943 144 static sn_nsdl_static_resource_parameters_s firmware_state_params_static = {
JimCarver 0:6b753f761943 145 #ifndef RESOURCE_ATTRIBUTES_LIST
JimCarver 0:6b753f761943 146 #ifndef DISABLE_RESOURCE_TYPE
JimCarver 0:6b753f761943 147 (char*)OMA_RESOURCE_TYPE, // resource_type_ptr
JimCarver 0:6b753f761943 148 #endif
JimCarver 0:6b753f761943 149 #ifndef DISABLE_INTERFACE_DESCRIPTION
JimCarver 0:6b753f761943 150 (char*)"", // interface_description_ptr
JimCarver 0:6b753f761943 151 #endif
JimCarver 0:6b753f761943 152 #else
JimCarver 0:6b753f761943 153 default_attributes,
JimCarver 0:6b753f761943 154 #endif
JimCarver 0:6b753f761943 155 (char*)STATE_URI_PATH, // path
JimCarver 0:6b753f761943 156 false, // external_memory_block
JimCarver 0:6b753f761943 157 SN_GRS_DYNAMIC, // mode
JimCarver 0:6b753f761943 158 false // free_on_delete
JimCarver 0:6b753f761943 159 };
JimCarver 0:6b753f761943 160
JimCarver 0:6b753f761943 161 #define UPDATE_RESULT_PATH FIRMWARE_PATH_PREFIX FIRMWARE_UPDATE_RESULT
JimCarver 0:6b753f761943 162
JimCarver 0:6b753f761943 163 STATIC_PARAM_TYPE
JimCarver 0:6b753f761943 164 static sn_nsdl_static_resource_parameters_s firmware_update_result_params_static = {
JimCarver 0:6b753f761943 165 #ifndef RESOURCE_ATTRIBUTES_LIST
JimCarver 0:6b753f761943 166 #ifndef DISABLE_RESOURCE_TYPE
JimCarver 0:6b753f761943 167 (char*)OMA_RESOURCE_TYPE, // resource_type_ptr
JimCarver 0:6b753f761943 168 #endif
JimCarver 0:6b753f761943 169 #ifndef DISABLE_INTERFACE_DESCRIPTION
JimCarver 0:6b753f761943 170 (char*)"", // interface_description_ptr
JimCarver 0:6b753f761943 171 #endif
JimCarver 0:6b753f761943 172 #else
JimCarver 0:6b753f761943 173 default_attributes,
JimCarver 0:6b753f761943 174 #endif
JimCarver 0:6b753f761943 175 (char*)UPDATE_RESULT_PATH, // path
JimCarver 0:6b753f761943 176 false, // external_memory_block
JimCarver 0:6b753f761943 177 SN_GRS_DYNAMIC, // mode
JimCarver 0:6b753f761943 178 false // free_on_delete
JimCarver 0:6b753f761943 179 };
JimCarver 0:6b753f761943 180
JimCarver 0:6b753f761943 181 static sn_nsdl_dynamic_resource_parameters_s firmware_package_params_dynamic = {
JimCarver 0:6b753f761943 182 __nsdl_c_callback,
JimCarver 0:6b753f761943 183 &firmware_package_params_static,
JimCarver 0:6b753f761943 184 NULL,
JimCarver 0:6b753f761943 185 {NULL, NULL}, // link
JimCarver 0:6b753f761943 186 0,
JimCarver 0:6b753f761943 187 COAP_CONTENT_OMA_PLAIN_TEXT_TYPE, // coap_content_type
JimCarver 0:6b753f761943 188 0, // msg_id
JimCarver 0:6b753f761943 189 M2MBase::PUT_ALLOWED, // access
JimCarver 0:6b753f761943 190 0, // registered
JimCarver 0:6b753f761943 191 false, // publish_uri
JimCarver 0:6b753f761943 192 false, // free_on_delete
JimCarver 0:6b753f761943 193 true, // observable
JimCarver 0:6b753f761943 194 false, // auto-observable
JimCarver 0:6b753f761943 195 NOTIFICATION_STATUS_INIT
JimCarver 0:6b753f761943 196 };
JimCarver 0:6b753f761943 197
JimCarver 0:6b753f761943 198 static sn_nsdl_dynamic_resource_parameters_s firmware_package_uri_params_dynamic = {
JimCarver 0:6b753f761943 199 __nsdl_c_callback,
JimCarver 0:6b753f761943 200 &firmware_package_uri_params_static,
JimCarver 0:6b753f761943 201 NULL,
JimCarver 0:6b753f761943 202 {NULL, NULL}, // link
JimCarver 0:6b753f761943 203 0,
JimCarver 0:6b753f761943 204 COAP_CONTENT_OMA_PLAIN_TEXT_TYPE, // coap_content_type
JimCarver 0:6b753f761943 205 0, // msg_id
JimCarver 0:6b753f761943 206 M2MBase::PUT_ALLOWED, // access
JimCarver 0:6b753f761943 207 0, // registered
JimCarver 0:6b753f761943 208 false, // publish_uri
JimCarver 0:6b753f761943 209 false, // free_on_delete
JimCarver 0:6b753f761943 210 true, // observable
JimCarver 0:6b753f761943 211 false, // auto-observable
JimCarver 0:6b753f761943 212 NOTIFICATION_STATUS_INIT
JimCarver 0:6b753f761943 213 };
JimCarver 0:6b753f761943 214
JimCarver 0:6b753f761943 215 static sn_nsdl_dynamic_resource_parameters_s firmware_update_params_dynamic = {
JimCarver 0:6b753f761943 216 __nsdl_c_callback,
JimCarver 0:6b753f761943 217 &firmware_update_params_static,
JimCarver 0:6b753f761943 218 NULL,
JimCarver 0:6b753f761943 219 {NULL, NULL}, // link
JimCarver 0:6b753f761943 220 0,
JimCarver 0:6b753f761943 221 COAP_CONTENT_OMA_PLAIN_TEXT_TYPE, // coap_content_type
JimCarver 0:6b753f761943 222 0, // msg_id
JimCarver 0:6b753f761943 223 M2MBase::NOT_ALLOWED, // access
JimCarver 0:6b753f761943 224 0, // registered
JimCarver 0:6b753f761943 225 false, // publish_uri
JimCarver 0:6b753f761943 226 false, // free_on_delete
JimCarver 0:6b753f761943 227 true, // observable
JimCarver 0:6b753f761943 228 false, // auto-observable
JimCarver 0:6b753f761943 229 NOTIFICATION_STATUS_INIT
JimCarver 0:6b753f761943 230 };
JimCarver 0:6b753f761943 231
JimCarver 0:6b753f761943 232 static sn_nsdl_dynamic_resource_parameters_s firmware_state_params_dynamic = {
JimCarver 0:6b753f761943 233 __nsdl_c_callback,
JimCarver 0:6b753f761943 234 &firmware_state_params_static,
JimCarver 0:6b753f761943 235 NULL, // resource
JimCarver 0:6b753f761943 236 {NULL, NULL}, // link
JimCarver 0:6b753f761943 237 0, // resourcelen
JimCarver 0:6b753f761943 238 COAP_CONTENT_OMA_PLAIN_TEXT_TYPE, // coap_content_type
JimCarver 0:6b753f761943 239 0, // msg_id
JimCarver 0:6b753f761943 240 M2MBase::GET_ALLOWED, // access
JimCarver 0:6b753f761943 241 0, // registered
JimCarver 0:6b753f761943 242 false, // publish_uri
JimCarver 0:6b753f761943 243 false, // free_on_delete
JimCarver 0:6b753f761943 244 true, // observable
JimCarver 0:6b753f761943 245 false, // auto-observable
JimCarver 0:6b753f761943 246 NOTIFICATION_STATUS_INIT
JimCarver 0:6b753f761943 247 };
JimCarver 0:6b753f761943 248
JimCarver 0:6b753f761943 249 static sn_nsdl_dynamic_resource_parameters_s firmware_update_result_params_dynamic = {
JimCarver 0:6b753f761943 250 __nsdl_c_callback,
JimCarver 0:6b753f761943 251 &firmware_update_result_params_static,
JimCarver 0:6b753f761943 252 NULL, // resource
JimCarver 0:6b753f761943 253 {NULL, NULL}, // link
JimCarver 0:6b753f761943 254 0, // resourcelen
JimCarver 0:6b753f761943 255 COAP_CONTENT_OMA_PLAIN_TEXT_TYPE, // coap_content_type
JimCarver 0:6b753f761943 256 0, // msg_id
JimCarver 0:6b753f761943 257 M2MBase::GET_ALLOWED, // access
JimCarver 0:6b753f761943 258 0, // registered
JimCarver 0:6b753f761943 259 false, // publish_uri
JimCarver 0:6b753f761943 260 false, // free_on_delete
JimCarver 0:6b753f761943 261 true, // observable
JimCarver 0:6b753f761943 262 false, // auto-observable
JimCarver 0:6b753f761943 263 NOTIFICATION_STATUS_INIT
JimCarver 0:6b753f761943 264 };
JimCarver 0:6b753f761943 265
JimCarver 0:6b753f761943 266 const static M2MBase::lwm2m_parameters firmware_package_params = {
JimCarver 0:6b753f761943 267 0, // max_age
JimCarver 0:6b753f761943 268 (char*)FIRMWARE_PACKAGE,
JimCarver 0:6b753f761943 269 &firmware_package_params_dynamic,
JimCarver 0:6b753f761943 270 M2MBase::Resource, // base_type
JimCarver 0:6b753f761943 271 M2MBase::OPAQUE,
JimCarver 0:6b753f761943 272 false,
JimCarver 0:6b753f761943 273 false, // free_on_delete
JimCarver 0:6b753f761943 274 false // identifier_int_type
JimCarver 0:6b753f761943 275 };
JimCarver 0:6b753f761943 276
JimCarver 0:6b753f761943 277 const static M2MBase::lwm2m_parameters firmware_package_uri_params = {
JimCarver 0:6b753f761943 278 0, // max_age
JimCarver 0:6b753f761943 279 (char*)FIRMWARE_PACKAGE_URI,
JimCarver 0:6b753f761943 280 &firmware_package_uri_params_dynamic,
JimCarver 0:6b753f761943 281 M2MBase::Resource, // base_type
JimCarver 0:6b753f761943 282 M2MBase::STRING,
JimCarver 0:6b753f761943 283 false,
JimCarver 0:6b753f761943 284 false, // free_on_delete
JimCarver 0:6b753f761943 285 false // identifier_int_type
JimCarver 0:6b753f761943 286 };
JimCarver 0:6b753f761943 287
JimCarver 0:6b753f761943 288 const static M2MBase::lwm2m_parameters firmware_update_params = {
JimCarver 0:6b753f761943 289 0, // max_age
JimCarver 0:6b753f761943 290 (char*)FIRMWARE_UPDATE,
JimCarver 0:6b753f761943 291 &firmware_update_params_dynamic,
JimCarver 0:6b753f761943 292 M2MBase::Resource, // base_type
JimCarver 0:6b753f761943 293 M2MBase::OPAQUE,
JimCarver 0:6b753f761943 294 false,
JimCarver 0:6b753f761943 295 false, // free_on_delete
JimCarver 0:6b753f761943 296 false // identifier_int_type
JimCarver 0:6b753f761943 297 };
JimCarver 0:6b753f761943 298
JimCarver 0:6b753f761943 299 const static M2MBase::lwm2m_parameters firmware_state_params = {
JimCarver 0:6b753f761943 300 0, // max_age
JimCarver 0:6b753f761943 301 (char*)FIRMWARE_STATE,
JimCarver 0:6b753f761943 302 &firmware_state_params_dynamic,
JimCarver 0:6b753f761943 303 M2MBase::Resource, // base_type
JimCarver 0:6b753f761943 304 M2MBase::INTEGER,
JimCarver 0:6b753f761943 305 false,
JimCarver 0:6b753f761943 306 false, // free_on_delete
JimCarver 0:6b753f761943 307 false // identifier_int_type
JimCarver 0:6b753f761943 308 };
JimCarver 0:6b753f761943 309
JimCarver 0:6b753f761943 310 const static M2MBase::lwm2m_parameters firmware_update_result_params = {
JimCarver 0:6b753f761943 311 0, // max_age
JimCarver 0:6b753f761943 312 (char*)FIRMWARE_UPDATE_RESULT,
JimCarver 0:6b753f761943 313 &firmware_update_result_params_dynamic,
JimCarver 0:6b753f761943 314 M2MBase::Resource, // base_type
JimCarver 0:6b753f761943 315 M2MBase::INTEGER,
JimCarver 0:6b753f761943 316 false,
JimCarver 0:6b753f761943 317 false, // free_on_delete
JimCarver 0:6b753f761943 318 false // identifier_int_type
JimCarver 0:6b753f761943 319 };
JimCarver 0:6b753f761943 320
JimCarver 0:6b753f761943 321 void M2MFirmware::create_mandatory_resources()
JimCarver 0:6b753f761943 322 {
JimCarver 0:6b753f761943 323 _firmware_instance->set_coap_content_type(COAP_CONTENT_OMA_TLV_TYPE);
JimCarver 0:6b753f761943 324
JimCarver 0:6b753f761943 325 M2MResource* res;
JimCarver 0:6b753f761943 326
JimCarver 0:6b753f761943 327 // todo:
JimCarver 0:6b753f761943 328 // perhaps we should have a API for batch creation of objects by using a array
JimCarver 0:6b753f761943 329 // of lwm2m_parameters.
JimCarver 0:6b753f761943 330 res = _firmware_instance->create_dynamic_resource(&firmware_package_params,
JimCarver 0:6b753f761943 331 M2MResourceInstance::OPAQUE,
JimCarver 0:6b753f761943 332 false);
JimCarver 0:6b753f761943 333
JimCarver 0:6b753f761943 334 res = _firmware_instance->create_dynamic_resource(&firmware_package_uri_params,
JimCarver 0:6b753f761943 335 M2MResourceInstance::STRING,
JimCarver 0:6b753f761943 336 false);
JimCarver 0:6b753f761943 337
JimCarver 0:6b753f761943 338 res = _firmware_instance->create_dynamic_resource(&firmware_update_params,
JimCarver 0:6b753f761943 339 M2MResourceInstance::OPAQUE,
JimCarver 0:6b753f761943 340 false);
JimCarver 0:6b753f761943 341
JimCarver 0:6b753f761943 342 res = _firmware_instance->create_dynamic_resource(&firmware_state_params,
JimCarver 0:6b753f761943 343 M2MResourceInstance::INTEGER,
JimCarver 0:6b753f761943 344 true);
JimCarver 0:6b753f761943 345
JimCarver 0:6b753f761943 346 // XXX: some of the tests expect to have some value available here
JimCarver 0:6b753f761943 347 if (res) {
JimCarver 0:6b753f761943 348 res->set_value(0);
JimCarver 0:6b753f761943 349 }
JimCarver 0:6b753f761943 350
JimCarver 0:6b753f761943 351 res = _firmware_instance->create_dynamic_resource(&firmware_update_result_params,
JimCarver 0:6b753f761943 352 M2MResourceInstance::INTEGER,
JimCarver 0:6b753f761943 353 true);
JimCarver 0:6b753f761943 354
JimCarver 0:6b753f761943 355 // XXX: some of the tests expect to have some value available here
JimCarver 0:6b753f761943 356 if (res) {
JimCarver 0:6b753f761943 357 res->set_value(0);
JimCarver 0:6b753f761943 358 }
JimCarver 0:6b753f761943 359 }
JimCarver 0:6b753f761943 360
JimCarver 0:6b753f761943 361 M2MResource* M2MFirmware::create_resource(FirmwareResource resource, const String &value)
JimCarver 0:6b753f761943 362 {
JimCarver 0:6b753f761943 363 M2MResource* res = NULL;
JimCarver 0:6b753f761943 364 const char* firmware_id_ptr = "";
JimCarver 0:6b753f761943 365 M2MBase::Operation operation = M2MBase::GET_ALLOWED;
JimCarver 0:6b753f761943 366 if(!is_resource_present(resource)) {
JimCarver 0:6b753f761943 367 switch(resource) {
JimCarver 0:6b753f761943 368 case PackageName:
JimCarver 0:6b753f761943 369 firmware_id_ptr = FIRMWARE_PACKAGE_NAME;
JimCarver 0:6b753f761943 370 break;
JimCarver 0:6b753f761943 371 case PackageVersion:
JimCarver 0:6b753f761943 372 firmware_id_ptr = FIRMWARE_PACKAGE_VERSION;
JimCarver 0:6b753f761943 373 break;
JimCarver 0:6b753f761943 374 default:
JimCarver 0:6b753f761943 375 break;
JimCarver 0:6b753f761943 376 }
JimCarver 0:6b753f761943 377 }
JimCarver 0:6b753f761943 378 String firmware_id(firmware_id_ptr);
JimCarver 0:6b753f761943 379
JimCarver 0:6b753f761943 380 if(!firmware_id.empty() && value.size() < 256) {
JimCarver 0:6b753f761943 381 if(_firmware_instance) {
JimCarver 0:6b753f761943 382 res = _firmware_instance->create_dynamic_resource(firmware_id,
JimCarver 0:6b753f761943 383 OMA_RESOURCE_TYPE,
JimCarver 0:6b753f761943 384 M2MResourceInstance::STRING,
JimCarver 0:6b753f761943 385 false);
JimCarver 0:6b753f761943 386
JimCarver 0:6b753f761943 387 if(res) {
JimCarver 0:6b753f761943 388 res->set_register_uri(false);
JimCarver 0:6b753f761943 389 res->set_operation(operation);
JimCarver 0:6b753f761943 390 if(value.empty()) {
JimCarver 0:6b753f761943 391 res->clear_value();
JimCarver 0:6b753f761943 392 } else {
JimCarver 0:6b753f761943 393 res->set_value((const uint8_t*)value.c_str(),
JimCarver 0:6b753f761943 394 (uint32_t)value.length());
JimCarver 0:6b753f761943 395 }
JimCarver 0:6b753f761943 396 }
JimCarver 0:6b753f761943 397 }
JimCarver 0:6b753f761943 398 }
JimCarver 0:6b753f761943 399 return res;
JimCarver 0:6b753f761943 400 }
JimCarver 0:6b753f761943 401
JimCarver 0:6b753f761943 402 M2MResource* M2MFirmware::create_resource(FirmwareResource resource, int64_t value)
JimCarver 0:6b753f761943 403 {
JimCarver 0:6b753f761943 404 M2MResource* res = NULL;
JimCarver 0:6b753f761943 405 const char* firmware_id_ptr = "";
JimCarver 0:6b753f761943 406 M2MBase::Operation operation = M2MBase::GET_ALLOWED;
JimCarver 0:6b753f761943 407 if(!is_resource_present(resource)) {
JimCarver 0:6b753f761943 408 switch(resource) {
JimCarver 0:6b753f761943 409 case UpdateSupportedObjects:
JimCarver 0:6b753f761943 410 if(check_value_range(resource, value)) {
JimCarver 0:6b753f761943 411 firmware_id_ptr = FIRMWARE_UPDATE_SUPPORTED_OBJECTS;
JimCarver 0:6b753f761943 412 operation = M2MBase::GET_PUT_ALLOWED;
JimCarver 0:6b753f761943 413 }
JimCarver 0:6b753f761943 414 break;
JimCarver 0:6b753f761943 415 default:
JimCarver 0:6b753f761943 416 break;
JimCarver 0:6b753f761943 417 }
JimCarver 0:6b753f761943 418 }
JimCarver 0:6b753f761943 419
JimCarver 0:6b753f761943 420 const String firmware_id(firmware_id_ptr);
JimCarver 0:6b753f761943 421
JimCarver 0:6b753f761943 422 if(!firmware_id.empty()) {
JimCarver 0:6b753f761943 423 if(_firmware_instance) {
JimCarver 0:6b753f761943 424 res = _firmware_instance->create_dynamic_resource(firmware_id,
JimCarver 0:6b753f761943 425 OMA_RESOURCE_TYPE,
JimCarver 0:6b753f761943 426 M2MResourceInstance::INTEGER,
JimCarver 0:6b753f761943 427 false);
JimCarver 0:6b753f761943 428
JimCarver 0:6b753f761943 429 if(res) {
JimCarver 0:6b753f761943 430 res->set_register_uri(false);
JimCarver 0:6b753f761943 431
JimCarver 0:6b753f761943 432 res->set_operation(operation);
JimCarver 0:6b753f761943 433 res->set_value(value);
JimCarver 0:6b753f761943 434 }
JimCarver 0:6b753f761943 435 }
JimCarver 0:6b753f761943 436 }
JimCarver 0:6b753f761943 437 return res;
JimCarver 0:6b753f761943 438 }
JimCarver 0:6b753f761943 439
JimCarver 0:6b753f761943 440 bool M2MFirmware::set_resource_value(FirmwareResource resource,
JimCarver 0:6b753f761943 441 const String &value)
JimCarver 0:6b753f761943 442 {
JimCarver 0:6b753f761943 443 bool success = false;
JimCarver 0:6b753f761943 444 M2MResource* res = get_resource(resource);
JimCarver 0:6b753f761943 445 if(res) {
JimCarver 0:6b753f761943 446 if(M2MFirmware::PackageUri == resource ||
JimCarver 0:6b753f761943 447 M2MFirmware::PackageName == resource ||
JimCarver 0:6b753f761943 448 M2MFirmware::PackageVersion == resource) {
JimCarver 0:6b753f761943 449 if (value.size() < 256) {
JimCarver 0:6b753f761943 450 if(value.empty()) {
JimCarver 0:6b753f761943 451 res->clear_value();
JimCarver 0:6b753f761943 452 success = true;
JimCarver 0:6b753f761943 453 } else {
JimCarver 0:6b753f761943 454 success = res->set_value((const uint8_t*)value.c_str(),(uint32_t)value.length());
JimCarver 0:6b753f761943 455 }
JimCarver 0:6b753f761943 456 }
JimCarver 0:6b753f761943 457 }
JimCarver 0:6b753f761943 458 }
JimCarver 0:6b753f761943 459 return success;
JimCarver 0:6b753f761943 460 }
JimCarver 0:6b753f761943 461
JimCarver 0:6b753f761943 462 bool M2MFirmware::set_resource_value(FirmwareResource resource,
JimCarver 0:6b753f761943 463 int64_t value)
JimCarver 0:6b753f761943 464 {
JimCarver 0:6b753f761943 465 bool success = false;
JimCarver 0:6b753f761943 466 M2MResource* res = get_resource(resource);
JimCarver 0:6b753f761943 467 if(res) {
JimCarver 0:6b753f761943 468 if(M2MFirmware::State == resource ||
JimCarver 0:6b753f761943 469 M2MFirmware::UpdateSupportedObjects == resource ||
JimCarver 0:6b753f761943 470 M2MFirmware::UpdateResult == resource) {
JimCarver 0:6b753f761943 471 // If it is any of the above resource
JimCarver 0:6b753f761943 472 // set the value of the resource.
JimCarver 0:6b753f761943 473 if (check_value_range(resource, value)) {
JimCarver 0:6b753f761943 474
JimCarver 0:6b753f761943 475 success = res->set_value(value);
JimCarver 0:6b753f761943 476 }
JimCarver 0:6b753f761943 477 }
JimCarver 0:6b753f761943 478 }
JimCarver 0:6b753f761943 479 return success;
JimCarver 0:6b753f761943 480 }
JimCarver 0:6b753f761943 481
JimCarver 0:6b753f761943 482 bool M2MFirmware::set_resource_value(FirmwareResource resource,
JimCarver 0:6b753f761943 483 const uint8_t *value,
JimCarver 0:6b753f761943 484 const uint32_t length)
JimCarver 0:6b753f761943 485 {
JimCarver 0:6b753f761943 486 bool success = false;
JimCarver 0:6b753f761943 487 M2MResource* res = get_resource(resource);
JimCarver 0:6b753f761943 488 if(res) {
JimCarver 0:6b753f761943 489 if(M2MFirmware::Package == resource) {
JimCarver 0:6b753f761943 490 success = res->set_value(value,length);
JimCarver 0:6b753f761943 491 }
JimCarver 0:6b753f761943 492 }
JimCarver 0:6b753f761943 493 return success;
JimCarver 0:6b753f761943 494 }
JimCarver 0:6b753f761943 495
JimCarver 0:6b753f761943 496 bool M2MFirmware::is_resource_present(FirmwareResource resource) const
JimCarver 0:6b753f761943 497 {
JimCarver 0:6b753f761943 498 bool success = false;
JimCarver 0:6b753f761943 499 M2MResource* res = get_resource(resource);
JimCarver 0:6b753f761943 500 if(res) {
JimCarver 0:6b753f761943 501 success = true;
JimCarver 0:6b753f761943 502 }
JimCarver 0:6b753f761943 503 return success;
JimCarver 0:6b753f761943 504 }
JimCarver 0:6b753f761943 505
JimCarver 0:6b753f761943 506 const char* M2MFirmware::resource_name(FirmwareResource resource)
JimCarver 0:6b753f761943 507 {
JimCarver 0:6b753f761943 508 const char* res_name = "";
JimCarver 0:6b753f761943 509 switch(resource) {
JimCarver 0:6b753f761943 510 case Package:
JimCarver 0:6b753f761943 511 res_name = FIRMWARE_PACKAGE;
JimCarver 0:6b753f761943 512 break;
JimCarver 0:6b753f761943 513 case PackageUri:
JimCarver 0:6b753f761943 514 res_name = FIRMWARE_PACKAGE_URI;
JimCarver 0:6b753f761943 515 break;
JimCarver 0:6b753f761943 516 case Update:
JimCarver 0:6b753f761943 517 res_name = FIRMWARE_UPDATE;
JimCarver 0:6b753f761943 518 break;
JimCarver 0:6b753f761943 519 case State:
JimCarver 0:6b753f761943 520 res_name = FIRMWARE_STATE;
JimCarver 0:6b753f761943 521 break;
JimCarver 0:6b753f761943 522 case UpdateSupportedObjects:
JimCarver 0:6b753f761943 523 res_name = FIRMWARE_UPDATE_SUPPORTED_OBJECTS;
JimCarver 0:6b753f761943 524 break;
JimCarver 0:6b753f761943 525 case UpdateResult:
JimCarver 0:6b753f761943 526 res_name = FIRMWARE_UPDATE_RESULT;
JimCarver 0:6b753f761943 527 break;
JimCarver 0:6b753f761943 528 case PackageName:
JimCarver 0:6b753f761943 529 res_name = FIRMWARE_PACKAGE_NAME;
JimCarver 0:6b753f761943 530 break;
JimCarver 0:6b753f761943 531 case PackageVersion:
JimCarver 0:6b753f761943 532 res_name = FIRMWARE_PACKAGE_VERSION;
JimCarver 0:6b753f761943 533 break;
JimCarver 0:6b753f761943 534 }
JimCarver 0:6b753f761943 535 return res_name;
JimCarver 0:6b753f761943 536 }
JimCarver 0:6b753f761943 537
JimCarver 0:6b753f761943 538 uint16_t M2MFirmware::per_resource_count(FirmwareResource res) const
JimCarver 0:6b753f761943 539 {
JimCarver 0:6b753f761943 540 uint16_t count = 0;
JimCarver 0:6b753f761943 541 if(_firmware_instance) {
JimCarver 0:6b753f761943 542 count = _firmware_instance->resource_count(resource_name(res));
JimCarver 0:6b753f761943 543 }
JimCarver 0:6b753f761943 544 return count;
JimCarver 0:6b753f761943 545 }
JimCarver 0:6b753f761943 546
JimCarver 0:6b753f761943 547 uint16_t M2MFirmware::total_resource_count() const
JimCarver 0:6b753f761943 548 {
JimCarver 0:6b753f761943 549 uint16_t count = 0;
JimCarver 0:6b753f761943 550 if(_firmware_instance) {
JimCarver 0:6b753f761943 551 count = _firmware_instance->resources().size();
JimCarver 0:6b753f761943 552 }
JimCarver 0:6b753f761943 553 return count;
JimCarver 0:6b753f761943 554 }
JimCarver 0:6b753f761943 555
JimCarver 0:6b753f761943 556 uint32_t M2MFirmware::resource_value_buffer(FirmwareResource resource,
JimCarver 0:6b753f761943 557 uint8_t *&data) const
JimCarver 0:6b753f761943 558 {
JimCarver 0:6b753f761943 559 uint32_t size = 0;
JimCarver 0:6b753f761943 560 M2MResource* res = get_resource(resource);
JimCarver 0:6b753f761943 561 if(res) {
JimCarver 0:6b753f761943 562 if(M2MFirmware::Package == resource) {
JimCarver 0:6b753f761943 563 res->get_value(data,size);
JimCarver 0:6b753f761943 564 }
JimCarver 0:6b753f761943 565 }
JimCarver 0:6b753f761943 566 return size;
JimCarver 0:6b753f761943 567 }
JimCarver 0:6b753f761943 568
JimCarver 0:6b753f761943 569 M2MResource* M2MFirmware::get_resource(FirmwareResource res) const
JimCarver 0:6b753f761943 570 {
JimCarver 0:6b753f761943 571 M2MResource* res_object = NULL;
JimCarver 0:6b753f761943 572 if(_firmware_instance) {
JimCarver 0:6b753f761943 573 const char* res_name_ptr = "";
JimCarver 0:6b753f761943 574 switch(res) {
JimCarver 0:6b753f761943 575 case Package:
JimCarver 0:6b753f761943 576 res_name_ptr = FIRMWARE_PACKAGE;
JimCarver 0:6b753f761943 577 break;
JimCarver 0:6b753f761943 578 case PackageUri:
JimCarver 0:6b753f761943 579 res_name_ptr = FIRMWARE_PACKAGE_URI;
JimCarver 0:6b753f761943 580 break;
JimCarver 0:6b753f761943 581 case Update:
JimCarver 0:6b753f761943 582 res_name_ptr = FIRMWARE_UPDATE;
JimCarver 0:6b753f761943 583 break;
JimCarver 0:6b753f761943 584 case State:
JimCarver 0:6b753f761943 585 res_name_ptr = FIRMWARE_STATE;
JimCarver 0:6b753f761943 586 break;
JimCarver 0:6b753f761943 587 case UpdateSupportedObjects:
JimCarver 0:6b753f761943 588 res_name_ptr = FIRMWARE_UPDATE_SUPPORTED_OBJECTS;
JimCarver 0:6b753f761943 589 break;
JimCarver 0:6b753f761943 590 case UpdateResult:
JimCarver 0:6b753f761943 591 res_name_ptr = FIRMWARE_UPDATE_RESULT;
JimCarver 0:6b753f761943 592 break;
JimCarver 0:6b753f761943 593 case PackageName:
JimCarver 0:6b753f761943 594 res_name_ptr = FIRMWARE_PACKAGE_NAME;
JimCarver 0:6b753f761943 595 break;
JimCarver 0:6b753f761943 596 case PackageVersion:
JimCarver 0:6b753f761943 597 res_name_ptr = FIRMWARE_PACKAGE_VERSION;
JimCarver 0:6b753f761943 598 break;
JimCarver 0:6b753f761943 599 }
JimCarver 0:6b753f761943 600
JimCarver 0:6b753f761943 601 res_object = _firmware_instance->resource(res_name_ptr);
JimCarver 0:6b753f761943 602 }
JimCarver 0:6b753f761943 603 return res_object;
JimCarver 0:6b753f761943 604 }
JimCarver 0:6b753f761943 605
JimCarver 0:6b753f761943 606 bool M2MFirmware::delete_resource(FirmwareResource resource)
JimCarver 0:6b753f761943 607 {
JimCarver 0:6b753f761943 608 bool success = false;
JimCarver 0:6b753f761943 609 if(M2MFirmware::UpdateSupportedObjects == resource ||
JimCarver 0:6b753f761943 610 M2MFirmware::PackageName == resource ||
JimCarver 0:6b753f761943 611 M2MFirmware::PackageVersion == resource) {
JimCarver 0:6b753f761943 612 if(_firmware_instance) {
JimCarver 0:6b753f761943 613 success = _firmware_instance->remove_resource(resource_name(resource));
JimCarver 0:6b753f761943 614 }
JimCarver 0:6b753f761943 615 }
JimCarver 0:6b753f761943 616 return success;
JimCarver 0:6b753f761943 617 }
JimCarver 0:6b753f761943 618
JimCarver 0:6b753f761943 619 int64_t M2MFirmware::resource_value_int(FirmwareResource resource) const
JimCarver 0:6b753f761943 620 {
JimCarver 0:6b753f761943 621 int64_t value = -1;
JimCarver 0:6b753f761943 622 M2MResource* res = get_resource(resource);
JimCarver 0:6b753f761943 623 if(res) {
JimCarver 0:6b753f761943 624 if(M2MFirmware::State == resource ||
JimCarver 0:6b753f761943 625 M2MFirmware::UpdateSupportedObjects == resource ||
JimCarver 0:6b753f761943 626 M2MFirmware::UpdateResult == resource) {
JimCarver 0:6b753f761943 627
JimCarver 0:6b753f761943 628 value = res->get_value_int();
JimCarver 0:6b753f761943 629 }
JimCarver 0:6b753f761943 630 }
JimCarver 0:6b753f761943 631 return value;
JimCarver 0:6b753f761943 632 }
JimCarver 0:6b753f761943 633
JimCarver 0:6b753f761943 634 String M2MFirmware::resource_value_string(FirmwareResource resource) const
JimCarver 0:6b753f761943 635 {
JimCarver 0:6b753f761943 636 String value = "";
JimCarver 0:6b753f761943 637 M2MResource* res = get_resource(resource);
JimCarver 0:6b753f761943 638 if(res) {
JimCarver 0:6b753f761943 639 if(M2MFirmware::PackageUri == resource ||
JimCarver 0:6b753f761943 640 M2MFirmware::PackageName == resource ||
JimCarver 0:6b753f761943 641 M2MFirmware::PackageVersion == resource) {
JimCarver 0:6b753f761943 642
JimCarver 0:6b753f761943 643 value = res->get_value_string();
JimCarver 0:6b753f761943 644 }
JimCarver 0:6b753f761943 645 }
JimCarver 0:6b753f761943 646 return value;
JimCarver 0:6b753f761943 647 }
JimCarver 0:6b753f761943 648
JimCarver 0:6b753f761943 649 bool M2MFirmware::check_value_range(FirmwareResource resource, int64_t value) const
JimCarver 0:6b753f761943 650 {
JimCarver 0:6b753f761943 651 bool success = false;
JimCarver 0:6b753f761943 652 switch (resource) {
JimCarver 0:6b753f761943 653 case UpdateSupportedObjects:
JimCarver 0:6b753f761943 654 if(value == 0 || value == 1) {
JimCarver 0:6b753f761943 655 success = true;
JimCarver 0:6b753f761943 656 }
JimCarver 0:6b753f761943 657 break;
JimCarver 0:6b753f761943 658 case State:
JimCarver 0:6b753f761943 659 if (value >= 0 && value <= 3) {
JimCarver 0:6b753f761943 660 success = true;
JimCarver 0:6b753f761943 661 M2MResource* updateRes = get_resource(M2MFirmware::Update);
JimCarver 0:6b753f761943 662 if (updateRes){
JimCarver 0:6b753f761943 663 if (value == M2MFirmware::Downloaded) {
JimCarver 0:6b753f761943 664 updateRes->set_operation(M2MBase::POST_ALLOWED);
JimCarver 0:6b753f761943 665 }
JimCarver 0:6b753f761943 666 else {
JimCarver 0:6b753f761943 667 updateRes->set_operation(M2MBase::NOT_ALLOWED);
JimCarver 0:6b753f761943 668 }
JimCarver 0:6b753f761943 669 }
JimCarver 0:6b753f761943 670 }
JimCarver 0:6b753f761943 671 break;
JimCarver 0:6b753f761943 672 case UpdateResult:
JimCarver 0:6b753f761943 673 if (value >= 0 && value <= 7) {
JimCarver 0:6b753f761943 674 success = true;
JimCarver 0:6b753f761943 675 }
JimCarver 0:6b753f761943 676 break;
JimCarver 0:6b753f761943 677 default:
JimCarver 0:6b753f761943 678 break;
JimCarver 0:6b753f761943 679 }
JimCarver 0:6b753f761943 680 return success;
JimCarver 0:6b753f761943 681 }
JimCarver 0:6b753f761943 682
JimCarver 0:6b753f761943 683 bool M2MFirmware::set_update_execute_callback(execute_callback callback)
JimCarver 0:6b753f761943 684 {
JimCarver 0:6b753f761943 685 M2MResource* m2mresource;
JimCarver 0:6b753f761943 686
JimCarver 0:6b753f761943 687 m2mresource = get_resource(Update);
JimCarver 0:6b753f761943 688
JimCarver 0:6b753f761943 689 if(m2mresource) {
JimCarver 0:6b753f761943 690 m2mresource->set_execute_function(callback);
JimCarver 0:6b753f761943 691 return true;
JimCarver 0:6b753f761943 692 }
JimCarver 0:6b753f761943 693
JimCarver 0:6b753f761943 694 return false;
JimCarver 0:6b753f761943 695 }
JimCarver 0:6b753f761943 696
JimCarver 0:6b753f761943 697 bool M2MFirmware::set_resource_value_update_callback(FirmwareResource resource,
JimCarver 0:6b753f761943 698 value_updated_callback callback)
JimCarver 0:6b753f761943 699 {
JimCarver 0:6b753f761943 700 M2MResource* m2mresource;
JimCarver 0:6b753f761943 701
JimCarver 0:6b753f761943 702 m2mresource = get_resource(resource);
JimCarver 0:6b753f761943 703
JimCarver 0:6b753f761943 704 if(m2mresource) {
JimCarver 0:6b753f761943 705 m2mresource->set_value_updated_function(callback);
JimCarver 0:6b753f761943 706 return true;
JimCarver 0:6b753f761943 707 }
JimCarver 0:6b753f761943 708
JimCarver 0:6b753f761943 709 return false;
JimCarver 0:6b753f761943 710 }
JimCarver 0:6b753f761943 711
JimCarver 0:6b753f761943 712 bool M2MFirmware::set_resource_notification_sent_callback(FirmwareResource resource,
JimCarver 0:6b753f761943 713 notification_sent_callback_2 callback)
JimCarver 0:6b753f761943 714 {
JimCarver 0:6b753f761943 715 M2MResource* m2mresource;
JimCarver 0:6b753f761943 716
JimCarver 0:6b753f761943 717 m2mresource = get_resource(resource);
JimCarver 0:6b753f761943 718
JimCarver 0:6b753f761943 719 if(m2mresource) {
JimCarver 0:6b753f761943 720 m2mresource->set_notification_sent_callback(callback);
JimCarver 0:6b753f761943 721 return true;
JimCarver 0:6b753f761943 722 }
JimCarver 0:6b753f761943 723
JimCarver 0:6b753f761943 724 return false;
JimCarver 0:6b753f761943 725 }
JimCarver 0:6b753f761943 726
JimCarver 0:6b753f761943 727 bool M2MFirmware::set_resource_notification_sent_callback(FirmwareResource resource,
JimCarver 0:6b753f761943 728 notification_delivery_status_cb callback)
JimCarver 0:6b753f761943 729 {
JimCarver 0:6b753f761943 730 M2MResource* m2mresource;
JimCarver 0:6b753f761943 731
JimCarver 0:6b753f761943 732 m2mresource = get_resource(resource);
JimCarver 0:6b753f761943 733
JimCarver 0:6b753f761943 734 if(m2mresource) {
JimCarver 0:6b753f761943 735 m2mresource->set_notification_delivery_status_cb(callback, 0);
JimCarver 0:6b753f761943 736 return true;
JimCarver 0:6b753f761943 737 }
JimCarver 0:6b753f761943 738
JimCarver 0:6b753f761943 739 return false;
JimCarver 0:6b753f761943 740 }
JimCarver 0:6b753f761943 741
JimCarver 0:6b753f761943 742 #ifndef DISABLE_BLOCK_MESSAGE
JimCarver 0:6b753f761943 743 bool M2MFirmware::set_package_block_message_callback(incoming_block_message_callback callback)
JimCarver 0:6b753f761943 744 {
JimCarver 0:6b753f761943 745 M2MResource* m2mresource;
JimCarver 0:6b753f761943 746
JimCarver 0:6b753f761943 747 m2mresource = get_resource(Package);
JimCarver 0:6b753f761943 748
JimCarver 0:6b753f761943 749 if(m2mresource) {
JimCarver 0:6b753f761943 750 m2mresource->set_incoming_block_message_callback(callback);
JimCarver 0:6b753f761943 751 return true;
JimCarver 0:6b753f761943 752 }
JimCarver 0:6b753f761943 753
JimCarver 0:6b753f761943 754 return false;
JimCarver 0:6b753f761943 755 }
JimCarver 0:6b753f761943 756 #endif // DISABLE_BLOCK_MESSAGE