Donald Meyers / Mbed OS evan
Committer:
djmeyers
Date:
Sat Mar 18 22:37:16 2017 +0000
Revision:
0:06ee5f8a484a
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
djmeyers 0:06ee5f8a484a 1 /*
djmeyers 0:06ee5f8a484a 2 * Copyright (c) 2015 ARM Limited. All rights reserved.
djmeyers 0:06ee5f8a484a 3 * SPDX-License-Identifier: Apache-2.0
djmeyers 0:06ee5f8a484a 4 * Licensed under the Apache License, Version 2.0 (the License); you may
djmeyers 0:06ee5f8a484a 5 * not use this file except in compliance with the License.
djmeyers 0:06ee5f8a484a 6 * You may obtain a copy of the License at
djmeyers 0:06ee5f8a484a 7 *
djmeyers 0:06ee5f8a484a 8 * http://www.apache.org/licenses/LICENSE-2.0
djmeyers 0:06ee5f8a484a 9 *
djmeyers 0:06ee5f8a484a 10 * Unless required by applicable law or agreed to in writing, software
djmeyers 0:06ee5f8a484a 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
djmeyers 0:06ee5f8a484a 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
djmeyers 0:06ee5f8a484a 13 * See the License for the specific language governing permissions and
djmeyers 0:06ee5f8a484a 14 * limitations under the License.
djmeyers 0:06ee5f8a484a 15 */
djmeyers 0:06ee5f8a484a 16 #include "m2mresourceinstance_stub.h"
djmeyers 0:06ee5f8a484a 17
djmeyers 0:06ee5f8a484a 18 uint32_t m2mresourceinstance_stub::int_value;
djmeyers 0:06ee5f8a484a 19 bool m2mresourceinstance_stub::bool_value;
djmeyers 0:06ee5f8a484a 20 String *m2mresourceinstance_stub::string_value;
djmeyers 0:06ee5f8a484a 21 M2MResourceInstance::ResourceType m2mresourceinstance_stub::resource_type;
djmeyers 0:06ee5f8a484a 22 sn_coap_hdr_s *m2mresourceinstance_stub::header;
djmeyers 0:06ee5f8a484a 23 uint8_t* m2mresourceinstance_stub::value;
djmeyers 0:06ee5f8a484a 24 M2MBase::BaseType m2mresourceinstance_stub::base_type;
djmeyers 0:06ee5f8a484a 25
djmeyers 0:06ee5f8a484a 26
djmeyers 0:06ee5f8a484a 27 void m2mresourceinstance_stub::clear()
djmeyers 0:06ee5f8a484a 28 {
djmeyers 0:06ee5f8a484a 29 int_value = 0;
djmeyers 0:06ee5f8a484a 30 bool_value = false;
djmeyers 0:06ee5f8a484a 31 resource_type = M2MResourceInstance::STRING;
djmeyers 0:06ee5f8a484a 32 header = NULL;
djmeyers 0:06ee5f8a484a 33 value = NULL;
djmeyers 0:06ee5f8a484a 34 base_type = M2MBase::ResourceInstance;
djmeyers 0:06ee5f8a484a 35 string_value = NULL;
djmeyers 0:06ee5f8a484a 36 }
djmeyers 0:06ee5f8a484a 37
djmeyers 0:06ee5f8a484a 38 M2MResourceInstance::M2MResourceInstance(M2MResource &parent,
djmeyers 0:06ee5f8a484a 39 const String &res_name,
djmeyers 0:06ee5f8a484a 40 const String &resource_type,
djmeyers 0:06ee5f8a484a 41 M2MResourceInstance::ResourceType type,
djmeyers 0:06ee5f8a484a 42 const uint16_t object_instance_id,
djmeyers 0:06ee5f8a484a 43 char* path,
djmeyers 0:06ee5f8a484a 44 bool external_blockwise_store)
djmeyers 0:06ee5f8a484a 45 : M2MBase(res_name,
djmeyers 0:06ee5f8a484a 46 M2MBase::Dynamic,
djmeyers 0:06ee5f8a484a 47 resource_type,
djmeyers 0:06ee5f8a484a 48 path,
djmeyers 0:06ee5f8a484a 49 external_blockwise_store),
djmeyers 0:06ee5f8a484a 50 _parent_resource(parent),
djmeyers 0:06ee5f8a484a 51 _value(NULL),
djmeyers 0:06ee5f8a484a 52 _value_length(0),
djmeyers 0:06ee5f8a484a 53 _block_message_data(NULL),
djmeyers 0:06ee5f8a484a 54 _execute_callback(NULL),
djmeyers 0:06ee5f8a484a 55 _resource_callback(NULL),
djmeyers 0:06ee5f8a484a 56 _execute_function_pointer(NULL),
djmeyers 0:06ee5f8a484a 57 _notification_sent_function_pointer(NULL),
djmeyers 0:06ee5f8a484a 58 _notification_sent_callback(NULL),
djmeyers 0:06ee5f8a484a 59 _object_instance_id(object_instance_id),
djmeyers 0:06ee5f8a484a 60 _resource_type(type)
djmeyers 0:06ee5f8a484a 61 {
djmeyers 0:06ee5f8a484a 62
djmeyers 0:06ee5f8a484a 63 }
djmeyers 0:06ee5f8a484a 64
djmeyers 0:06ee5f8a484a 65 M2MResourceInstance::M2MResourceInstance(M2MResource &parent,
djmeyers 0:06ee5f8a484a 66 const String &res_name,
djmeyers 0:06ee5f8a484a 67 const String &resource_type,
djmeyers 0:06ee5f8a484a 68 M2MResourceInstance::ResourceType type,
djmeyers 0:06ee5f8a484a 69 const uint8_t *value,
djmeyers 0:06ee5f8a484a 70 const uint8_t value_length,
djmeyers 0:06ee5f8a484a 71 const uint16_t object_instance_id,
djmeyers 0:06ee5f8a484a 72 char* path,
djmeyers 0:06ee5f8a484a 73 bool external_blockwise_store)
djmeyers 0:06ee5f8a484a 74 : M2MBase(res_name,
djmeyers 0:06ee5f8a484a 75 M2MBase::Static,
djmeyers 0:06ee5f8a484a 76 resource_type,
djmeyers 0:06ee5f8a484a 77 path,
djmeyers 0:06ee5f8a484a 78 external_blockwise_store),
djmeyers 0:06ee5f8a484a 79 _parent_resource(parent),
djmeyers 0:06ee5f8a484a 80 _value(NULL),
djmeyers 0:06ee5f8a484a 81 _value_length(0),
djmeyers 0:06ee5f8a484a 82 _block_message_data(NULL),
djmeyers 0:06ee5f8a484a 83 _execute_callback(NULL),
djmeyers 0:06ee5f8a484a 84 _resource_callback(NULL),
djmeyers 0:06ee5f8a484a 85 _execute_function_pointer(NULL),
djmeyers 0:06ee5f8a484a 86 _notification_sent_function_pointer(NULL),
djmeyers 0:06ee5f8a484a 87 _notification_sent_callback(NULL),
djmeyers 0:06ee5f8a484a 88 _object_instance_id(object_instance_id),
djmeyers 0:06ee5f8a484a 89 _resource_type(type)
djmeyers 0:06ee5f8a484a 90 {
djmeyers 0:06ee5f8a484a 91 }
djmeyers 0:06ee5f8a484a 92
djmeyers 0:06ee5f8a484a 93 M2MResourceInstance::M2MResourceInstance(M2MResource &parent,
djmeyers 0:06ee5f8a484a 94 const lwm2m_parameters_s* s,
djmeyers 0:06ee5f8a484a 95 M2MResourceInstance::ResourceType type,
djmeyers 0:06ee5f8a484a 96 const uint16_t object_instance_id)
djmeyers 0:06ee5f8a484a 97 : M2MBase(s),
djmeyers 0:06ee5f8a484a 98 _parent_resource(parent),
djmeyers 0:06ee5f8a484a 99 _value(NULL),
djmeyers 0:06ee5f8a484a 100 _value_length(0),
djmeyers 0:06ee5f8a484a 101 _block_message_data(NULL),
djmeyers 0:06ee5f8a484a 102 _execute_callback(NULL),
djmeyers 0:06ee5f8a484a 103 _resource_callback(NULL),
djmeyers 0:06ee5f8a484a 104 _execute_function_pointer(NULL),
djmeyers 0:06ee5f8a484a 105 _notification_sent_function_pointer(NULL),
djmeyers 0:06ee5f8a484a 106 _object_instance_id(object_instance_id),
djmeyers 0:06ee5f8a484a 107 _resource_type(type)
djmeyers 0:06ee5f8a484a 108 {
djmeyers 0:06ee5f8a484a 109 }
djmeyers 0:06ee5f8a484a 110
djmeyers 0:06ee5f8a484a 111 M2MResourceInstance::~M2MResourceInstance()
djmeyers 0:06ee5f8a484a 112 {
djmeyers 0:06ee5f8a484a 113 }
djmeyers 0:06ee5f8a484a 114
djmeyers 0:06ee5f8a484a 115 M2MBase::BaseType M2MResourceInstance::base_type() const
djmeyers 0:06ee5f8a484a 116 {
djmeyers 0:06ee5f8a484a 117 return m2mresourceinstance_stub::base_type;
djmeyers 0:06ee5f8a484a 118 }
djmeyers 0:06ee5f8a484a 119
djmeyers 0:06ee5f8a484a 120 M2MResourceInstance::ResourceType M2MResourceInstance::resource_instance_type() const
djmeyers 0:06ee5f8a484a 121 {
djmeyers 0:06ee5f8a484a 122 return m2mresourceinstance_stub::resource_type;
djmeyers 0:06ee5f8a484a 123 }
djmeyers 0:06ee5f8a484a 124
djmeyers 0:06ee5f8a484a 125 bool M2MResourceInstance::handle_observation_attribute(const char *)
djmeyers 0:06ee5f8a484a 126 {
djmeyers 0:06ee5f8a484a 127 return m2mresourceinstance_stub::bool_value;
djmeyers 0:06ee5f8a484a 128 }
djmeyers 0:06ee5f8a484a 129
djmeyers 0:06ee5f8a484a 130 void M2MResourceInstance::set_execute_function(execute_callback)
djmeyers 0:06ee5f8a484a 131 {
djmeyers 0:06ee5f8a484a 132 }
djmeyers 0:06ee5f8a484a 133
djmeyers 0:06ee5f8a484a 134 bool M2MResourceInstance::set_value(const uint8_t *,
djmeyers 0:06ee5f8a484a 135 const uint32_t )
djmeyers 0:06ee5f8a484a 136 {
djmeyers 0:06ee5f8a484a 137 return m2mresourceinstance_stub::bool_value;
djmeyers 0:06ee5f8a484a 138 }
djmeyers 0:06ee5f8a484a 139
djmeyers 0:06ee5f8a484a 140 bool M2MResourceInstance::set_value(int64_t value)
djmeyers 0:06ee5f8a484a 141 {
djmeyers 0:06ee5f8a484a 142 return m2mresourceinstance_stub::bool_value;
djmeyers 0:06ee5f8a484a 143 }
djmeyers 0:06ee5f8a484a 144
djmeyers 0:06ee5f8a484a 145
djmeyers 0:06ee5f8a484a 146 void M2MResourceInstance::clear_value()
djmeyers 0:06ee5f8a484a 147 {
djmeyers 0:06ee5f8a484a 148 if (m2mresourceinstance_stub::value) {
djmeyers 0:06ee5f8a484a 149 free(m2mresourceinstance_stub::value);
djmeyers 0:06ee5f8a484a 150 m2mresourceinstance_stub::value = NULL;
djmeyers 0:06ee5f8a484a 151 m2mresourceinstance_stub::int_value = 0;
djmeyers 0:06ee5f8a484a 152 }
djmeyers 0:06ee5f8a484a 153 }
djmeyers 0:06ee5f8a484a 154
djmeyers 0:06ee5f8a484a 155 void M2MResourceInstance::execute(void *)
djmeyers 0:06ee5f8a484a 156 {
djmeyers 0:06ee5f8a484a 157 }
djmeyers 0:06ee5f8a484a 158
djmeyers 0:06ee5f8a484a 159 void M2MResourceInstance::get_value(uint8_t *&value, uint32_t &value_length)
djmeyers 0:06ee5f8a484a 160 {
djmeyers 0:06ee5f8a484a 161 value_length = 0;
djmeyers 0:06ee5f8a484a 162 if(value) {
djmeyers 0:06ee5f8a484a 163 free(value);
djmeyers 0:06ee5f8a484a 164 value = NULL;
djmeyers 0:06ee5f8a484a 165 }
djmeyers 0:06ee5f8a484a 166 value = (uint8_t *)malloc(m2mresourceinstance_stub::int_value);
djmeyers 0:06ee5f8a484a 167 if(value) {
djmeyers 0:06ee5f8a484a 168 value_length = m2mresourceinstance_stub::int_value;
djmeyers 0:06ee5f8a484a 169 memcpy((uint8_t *)value, (uint8_t *)m2mresourceinstance_stub::value, value_length);
djmeyers 0:06ee5f8a484a 170 }
djmeyers 0:06ee5f8a484a 171 }
djmeyers 0:06ee5f8a484a 172
djmeyers 0:06ee5f8a484a 173 int M2MResourceInstance::get_value_int()
djmeyers 0:06ee5f8a484a 174 {
djmeyers 0:06ee5f8a484a 175 // Note: this is a copy-paste from the original version, as the tests
djmeyers 0:06ee5f8a484a 176 // set only m2mresourceinstance_stub::value.
djmeyers 0:06ee5f8a484a 177
djmeyers 0:06ee5f8a484a 178 int value_int = 0;
djmeyers 0:06ee5f8a484a 179 // Get the value and convert it into integer. This is not the most
djmeyers 0:06ee5f8a484a 180 // efficient way, as it takes pointless heap copy to get the zero termination.
djmeyers 0:06ee5f8a484a 181 uint8_t* buffer = NULL;
djmeyers 0:06ee5f8a484a 182 uint32_t length;
djmeyers 0:06ee5f8a484a 183 get_value(buffer,length);
djmeyers 0:06ee5f8a484a 184 if(buffer) {
djmeyers 0:06ee5f8a484a 185 value_int = atoi((const char*)buffer);
djmeyers 0:06ee5f8a484a 186 free(buffer);
djmeyers 0:06ee5f8a484a 187 }
djmeyers 0:06ee5f8a484a 188 return value_int;
djmeyers 0:06ee5f8a484a 189 }
djmeyers 0:06ee5f8a484a 190
djmeyers 0:06ee5f8a484a 191 String M2MResourceInstance::get_value_string() const
djmeyers 0:06ee5f8a484a 192 {
djmeyers 0:06ee5f8a484a 193 // XXX: do a better constructor to avoid pointless malloc
djmeyers 0:06ee5f8a484a 194 String value;
djmeyers 0:06ee5f8a484a 195 if (m2mresourceinstance_stub::value) {
djmeyers 0:06ee5f8a484a 196 value.append_raw((char*)m2mresourceinstance_stub::value, m2mresourceinstance_stub::int_value);
djmeyers 0:06ee5f8a484a 197 }
djmeyers 0:06ee5f8a484a 198
djmeyers 0:06ee5f8a484a 199 return value;
djmeyers 0:06ee5f8a484a 200 }
djmeyers 0:06ee5f8a484a 201
djmeyers 0:06ee5f8a484a 202 uint8_t* M2MResourceInstance::value() const
djmeyers 0:06ee5f8a484a 203 {
djmeyers 0:06ee5f8a484a 204 return m2mresourceinstance_stub::value;
djmeyers 0:06ee5f8a484a 205 }
djmeyers 0:06ee5f8a484a 206
djmeyers 0:06ee5f8a484a 207 uint32_t M2MResourceInstance::value_length() const
djmeyers 0:06ee5f8a484a 208 {
djmeyers 0:06ee5f8a484a 209 return m2mresourceinstance_stub::int_value;
djmeyers 0:06ee5f8a484a 210 }
djmeyers 0:06ee5f8a484a 211
djmeyers 0:06ee5f8a484a 212 sn_coap_hdr_s* M2MResourceInstance::handle_get_request(nsdl_s *,
djmeyers 0:06ee5f8a484a 213 sn_coap_hdr_s *,
djmeyers 0:06ee5f8a484a 214 M2MObservationHandler *)
djmeyers 0:06ee5f8a484a 215 {
djmeyers 0:06ee5f8a484a 216 return m2mresourceinstance_stub::header;
djmeyers 0:06ee5f8a484a 217 }
djmeyers 0:06ee5f8a484a 218
djmeyers 0:06ee5f8a484a 219 sn_coap_hdr_s* M2MResourceInstance::handle_put_request(nsdl_s *,
djmeyers 0:06ee5f8a484a 220 sn_coap_hdr_s *,
djmeyers 0:06ee5f8a484a 221 M2MObservationHandler *,
djmeyers 0:06ee5f8a484a 222 bool &)
djmeyers 0:06ee5f8a484a 223 {
djmeyers 0:06ee5f8a484a 224 return m2mresourceinstance_stub::header;
djmeyers 0:06ee5f8a484a 225 }
djmeyers 0:06ee5f8a484a 226
djmeyers 0:06ee5f8a484a 227 void M2MResourceInstance::set_resource_observer(M2MResourceCallback *callback)
djmeyers 0:06ee5f8a484a 228 {
djmeyers 0:06ee5f8a484a 229
djmeyers 0:06ee5f8a484a 230 }
djmeyers 0:06ee5f8a484a 231
djmeyers 0:06ee5f8a484a 232 uint16_t M2MResourceInstance::object_instance_id() const
djmeyers 0:06ee5f8a484a 233 {
djmeyers 0:06ee5f8a484a 234 return m2mresourceinstance_stub::int_value;
djmeyers 0:06ee5f8a484a 235 }
djmeyers 0:06ee5f8a484a 236
djmeyers 0:06ee5f8a484a 237 void M2MResourceInstance::set_execute_function(execute_callback_2 callback)
djmeyers 0:06ee5f8a484a 238 {
djmeyers 0:06ee5f8a484a 239 }
djmeyers 0:06ee5f8a484a 240
djmeyers 0:06ee5f8a484a 241 M2MBlockMessage* M2MResourceInstance::block_message() const
djmeyers 0:06ee5f8a484a 242 {
djmeyers 0:06ee5f8a484a 243
djmeyers 0:06ee5f8a484a 244 }
djmeyers 0:06ee5f8a484a 245
djmeyers 0:06ee5f8a484a 246 void M2MResourceInstance::set_incoming_block_message_callback(incoming_block_message_callback callback)
djmeyers 0:06ee5f8a484a 247 {
djmeyers 0:06ee5f8a484a 248 }
djmeyers 0:06ee5f8a484a 249
djmeyers 0:06ee5f8a484a 250 void M2MResourceInstance::set_outgoing_block_message_callback(outgoing_block_message_callback callback)
djmeyers 0:06ee5f8a484a 251 {
djmeyers 0:06ee5f8a484a 252
djmeyers 0:06ee5f8a484a 253 }
djmeyers 0:06ee5f8a484a 254
djmeyers 0:06ee5f8a484a 255 void M2MResourceInstance::set_notification_sent_callback(notification_sent_callback callback)
djmeyers 0:06ee5f8a484a 256 {
djmeyers 0:06ee5f8a484a 257 }
djmeyers 0:06ee5f8a484a 258
djmeyers 0:06ee5f8a484a 259 void M2MResourceInstance::set_notification_sent_callback(notification_sent_callback_2 callback)
djmeyers 0:06ee5f8a484a 260 {
djmeyers 0:06ee5f8a484a 261 }
djmeyers 0:06ee5f8a484a 262
djmeyers 0:06ee5f8a484a 263 void M2MResourceInstance::notification_sent()
djmeyers 0:06ee5f8a484a 264 {
djmeyers 0:06ee5f8a484a 265 }
djmeyers 0:06ee5f8a484a 266
djmeyers 0:06ee5f8a484a 267 const char* M2MResourceInstance::object_name() const
djmeyers 0:06ee5f8a484a 268 {
djmeyers 0:06ee5f8a484a 269
djmeyers 0:06ee5f8a484a 270 }