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 "m2mresource_stub.h"
djmeyers 0:06ee5f8a484a 17
djmeyers 0:06ee5f8a484a 18 uint32_t m2mresource_stub::int_value;
djmeyers 0:06ee5f8a484a 19 uint8_t* m2mresource_stub::delayed_token;
djmeyers 0:06ee5f8a484a 20 uint8_t m2mresource_stub::delayed_token_len;
djmeyers 0:06ee5f8a484a 21 bool m2mresource_stub::bool_value;
djmeyers 0:06ee5f8a484a 22 // The statically initialized list must be bigh enough to cater
djmeyers 0:06ee5f8a484a 23 // for all the tests, or the utest framework will complain for memory leak.
djmeyers 0:06ee5f8a484a 24 M2MResourceInstanceList m2mresource_stub::list(12);
djmeyers 0:06ee5f8a484a 25
djmeyers 0:06ee5f8a484a 26 M2MResourceInstance *m2mresource_stub::instance;
djmeyers 0:06ee5f8a484a 27 M2MObjectInstance *m2mresource_stub::object_instance;
djmeyers 0:06ee5f8a484a 28 sn_coap_hdr_s *m2mresource_stub::header;
djmeyers 0:06ee5f8a484a 29 void m2mresource_stub::clear()
djmeyers 0:06ee5f8a484a 30 {
djmeyers 0:06ee5f8a484a 31 int_value = 0;
djmeyers 0:06ee5f8a484a 32 delayed_token = NULL;
djmeyers 0:06ee5f8a484a 33 delayed_token_len = 0;
djmeyers 0:06ee5f8a484a 34 bool_value = false;
djmeyers 0:06ee5f8a484a 35 list.clear();
djmeyers 0:06ee5f8a484a 36 instance = NULL;
djmeyers 0:06ee5f8a484a 37 object_instance = NULL;
djmeyers 0:06ee5f8a484a 38 }
djmeyers 0:06ee5f8a484a 39
djmeyers 0:06ee5f8a484a 40 M2MResource::M2MResource(M2MObjectInstance &parent,
djmeyers 0:06ee5f8a484a 41 const String &resource_name,
djmeyers 0:06ee5f8a484a 42 const String &resource_type,
djmeyers 0:06ee5f8a484a 43 M2MResourceInstance::ResourceType type,
djmeyers 0:06ee5f8a484a 44 const uint8_t *value,
djmeyers 0:06ee5f8a484a 45 const uint8_t value_length,
djmeyers 0:06ee5f8a484a 46 char* path,
djmeyers 0:06ee5f8a484a 47 const uint16_t object_instance_id,
djmeyers 0:06ee5f8a484a 48 bool multiple_instance,
djmeyers 0:06ee5f8a484a 49 bool external_blockwise_store)
djmeyers 0:06ee5f8a484a 50 : M2MResourceInstance(*this, resource_name, resource_type, type, value, value_length, object_instance_id,
djmeyers 0:06ee5f8a484a 51 path, external_blockwise_store),
djmeyers 0:06ee5f8a484a 52 _parent(parent),
djmeyers 0:06ee5f8a484a 53 _delayed_token(NULL),
djmeyers 0:06ee5f8a484a 54 _delayed_token_len(0),
djmeyers 0:06ee5f8a484a 55 _has_multiple_instances(multiple_instance),
djmeyers 0:06ee5f8a484a 56 _delayed_response(false)
djmeyers 0:06ee5f8a484a 57 {
djmeyers 0:06ee5f8a484a 58
djmeyers 0:06ee5f8a484a 59 }
djmeyers 0:06ee5f8a484a 60
djmeyers 0:06ee5f8a484a 61 M2MResource::M2MResource(M2MObjectInstance &parent,
djmeyers 0:06ee5f8a484a 62 const lwm2m_parameters_s* s,
djmeyers 0:06ee5f8a484a 63 M2MResourceInstance::ResourceType type,
djmeyers 0:06ee5f8a484a 64 const uint16_t object_instance_id)
djmeyers 0:06ee5f8a484a 65 : M2MResourceInstance(*this, s, type, object_instance_id),
djmeyers 0:06ee5f8a484a 66 _parent(parent),
djmeyers 0:06ee5f8a484a 67 _delayed_token(NULL),
djmeyers 0:06ee5f8a484a 68 _delayed_token_len(0),
djmeyers 0:06ee5f8a484a 69 _has_multiple_instances(false),
djmeyers 0:06ee5f8a484a 70 _delayed_response(false)
djmeyers 0:06ee5f8a484a 71 {
djmeyers 0:06ee5f8a484a 72 // tbd: _has_multiple_instances could be in flash, but no real benefit, because of current alignment.
djmeyers 0:06ee5f8a484a 73 }
djmeyers 0:06ee5f8a484a 74
djmeyers 0:06ee5f8a484a 75 M2MResource::M2MResource(M2MObjectInstance &parent,
djmeyers 0:06ee5f8a484a 76 const String &resource_name,
djmeyers 0:06ee5f8a484a 77 const String &resource_type,
djmeyers 0:06ee5f8a484a 78 M2MResourceInstance::ResourceType type,
djmeyers 0:06ee5f8a484a 79 bool observable,
djmeyers 0:06ee5f8a484a 80 char *path,
djmeyers 0:06ee5f8a484a 81 const uint16_t object_instance_id,
djmeyers 0:06ee5f8a484a 82 bool multiple_instance,
djmeyers 0:06ee5f8a484a 83 bool external_blockwise_store)
djmeyers 0:06ee5f8a484a 84 : M2MResourceInstance(*this, resource_name, resource_type, type,
djmeyers 0:06ee5f8a484a 85 object_instance_id, path, external_blockwise_store),
djmeyers 0:06ee5f8a484a 86 _parent(parent),
djmeyers 0:06ee5f8a484a 87 _delayed_token(NULL),
djmeyers 0:06ee5f8a484a 88 _delayed_token_len(0),
djmeyers 0:06ee5f8a484a 89 _has_multiple_instances(multiple_instance),
djmeyers 0:06ee5f8a484a 90 _delayed_response(false)
djmeyers 0:06ee5f8a484a 91 {
djmeyers 0:06ee5f8a484a 92
djmeyers 0:06ee5f8a484a 93 }
djmeyers 0:06ee5f8a484a 94
djmeyers 0:06ee5f8a484a 95 M2MResource::~M2MResource()
djmeyers 0:06ee5f8a484a 96 {
djmeyers 0:06ee5f8a484a 97 }
djmeyers 0:06ee5f8a484a 98
djmeyers 0:06ee5f8a484a 99 bool M2MResource::supports_multiple_instances() const
djmeyers 0:06ee5f8a484a 100 {
djmeyers 0:06ee5f8a484a 101 return m2mresource_stub::bool_value;
djmeyers 0:06ee5f8a484a 102 }
djmeyers 0:06ee5f8a484a 103
djmeyers 0:06ee5f8a484a 104 void M2MResource::get_delayed_token(unsigned char *&token, unsigned char &token_len)
djmeyers 0:06ee5f8a484a 105 {
djmeyers 0:06ee5f8a484a 106 token_len = 0;
djmeyers 0:06ee5f8a484a 107 if(token) {
djmeyers 0:06ee5f8a484a 108 free(token);
djmeyers 0:06ee5f8a484a 109 token = NULL;
djmeyers 0:06ee5f8a484a 110 }
djmeyers 0:06ee5f8a484a 111 token = (uint8_t *)malloc(m2mresource_stub::delayed_token_len);
djmeyers 0:06ee5f8a484a 112 if(token) {
djmeyers 0:06ee5f8a484a 113 token_len = m2mresource_stub::delayed_token_len;
djmeyers 0:06ee5f8a484a 114 memcpy((uint8_t *)token, (uint8_t *)m2mresource_stub::delayed_token, token_len);
djmeyers 0:06ee5f8a484a 115 }
djmeyers 0:06ee5f8a484a 116 }
djmeyers 0:06ee5f8a484a 117
djmeyers 0:06ee5f8a484a 118 bool M2MResource::remove_resource_instance(uint16_t inst_id)
djmeyers 0:06ee5f8a484a 119 {
djmeyers 0:06ee5f8a484a 120 return m2mresource_stub::bool_value;
djmeyers 0:06ee5f8a484a 121 }
djmeyers 0:06ee5f8a484a 122
djmeyers 0:06ee5f8a484a 123 M2MResourceInstance* M2MResource::resource_instance(uint16_t inst_id) const
djmeyers 0:06ee5f8a484a 124 {
djmeyers 0:06ee5f8a484a 125 return m2mresource_stub::instance;
djmeyers 0:06ee5f8a484a 126 }
djmeyers 0:06ee5f8a484a 127
djmeyers 0:06ee5f8a484a 128 const M2MResourceInstanceList& M2MResource::resource_instances() const
djmeyers 0:06ee5f8a484a 129 {
djmeyers 0:06ee5f8a484a 130 return m2mresource_stub::list;
djmeyers 0:06ee5f8a484a 131 }
djmeyers 0:06ee5f8a484a 132
djmeyers 0:06ee5f8a484a 133 uint16_t M2MResource::resource_instance_count() const
djmeyers 0:06ee5f8a484a 134 {
djmeyers 0:06ee5f8a484a 135 return m2mresource_stub::int_value;
djmeyers 0:06ee5f8a484a 136 }
djmeyers 0:06ee5f8a484a 137
djmeyers 0:06ee5f8a484a 138 bool M2MResource::handle_observation_attribute(const char *query)
djmeyers 0:06ee5f8a484a 139 {
djmeyers 0:06ee5f8a484a 140 return m2mresource_stub::bool_value;
djmeyers 0:06ee5f8a484a 141 }
djmeyers 0:06ee5f8a484a 142
djmeyers 0:06ee5f8a484a 143 void M2MResource::add_resource_instance(M2MResourceInstance *)
djmeyers 0:06ee5f8a484a 144 {
djmeyers 0:06ee5f8a484a 145 }
djmeyers 0:06ee5f8a484a 146
djmeyers 0:06ee5f8a484a 147 void M2MResource::add_observation_level(M2MBase::Observation)
djmeyers 0:06ee5f8a484a 148 {
djmeyers 0:06ee5f8a484a 149 }
djmeyers 0:06ee5f8a484a 150
djmeyers 0:06ee5f8a484a 151 void M2MResource::remove_observation_level(M2MBase::Observation)
djmeyers 0:06ee5f8a484a 152 {
djmeyers 0:06ee5f8a484a 153 }
djmeyers 0:06ee5f8a484a 154
djmeyers 0:06ee5f8a484a 155 void M2MResource::notification_update()
djmeyers 0:06ee5f8a484a 156 {
djmeyers 0:06ee5f8a484a 157 }
djmeyers 0:06ee5f8a484a 158
djmeyers 0:06ee5f8a484a 159 sn_coap_hdr_s* M2MResource::handle_get_request(nsdl_s *,
djmeyers 0:06ee5f8a484a 160 sn_coap_hdr_s *,
djmeyers 0:06ee5f8a484a 161 M2MObservationHandler *)
djmeyers 0:06ee5f8a484a 162 {
djmeyers 0:06ee5f8a484a 163 return m2mresource_stub::header;
djmeyers 0:06ee5f8a484a 164 }
djmeyers 0:06ee5f8a484a 165
djmeyers 0:06ee5f8a484a 166 sn_coap_hdr_s* M2MResource::handle_put_request(nsdl_s *,
djmeyers 0:06ee5f8a484a 167 sn_coap_hdr_s *,
djmeyers 0:06ee5f8a484a 168 M2MObservationHandler *,
djmeyers 0:06ee5f8a484a 169 bool &)
djmeyers 0:06ee5f8a484a 170 {
djmeyers 0:06ee5f8a484a 171 return m2mresource_stub::header;
djmeyers 0:06ee5f8a484a 172 }
djmeyers 0:06ee5f8a484a 173
djmeyers 0:06ee5f8a484a 174 sn_coap_hdr_s* M2MResource::handle_post_request(nsdl_s *,
djmeyers 0:06ee5f8a484a 175 sn_coap_hdr_s *,
djmeyers 0:06ee5f8a484a 176 M2MObservationHandler *,
djmeyers 0:06ee5f8a484a 177 bool &, sn_nsdl_addr_s *)
djmeyers 0:06ee5f8a484a 178 {
djmeyers 0:06ee5f8a484a 179 return m2mresource_stub::header;
djmeyers 0:06ee5f8a484a 180 }
djmeyers 0:06ee5f8a484a 181
djmeyers 0:06ee5f8a484a 182 M2MObjectInstance& M2MResource::get_parent_object_instance() const
djmeyers 0:06ee5f8a484a 183 {
djmeyers 0:06ee5f8a484a 184 return *m2mresource_stub::object_instance;
djmeyers 0:06ee5f8a484a 185 }
djmeyers 0:06ee5f8a484a 186
djmeyers 0:06ee5f8a484a 187 const char* M2MResource::object_name() const
djmeyers 0:06ee5f8a484a 188 {
djmeyers 0:06ee5f8a484a 189
djmeyers 0:06ee5f8a484a 190 }