A metronome using the FRDM K64F board

Committer:
ram54288
Date:
Sun May 14 18:40:18 2017 +0000
Revision:
0:a7a43371b306
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ram54288 0:a7a43371b306 1 /*
ram54288 0:a7a43371b306 2 * Copyright (c) 2015 ARM Limited. All rights reserved.
ram54288 0:a7a43371b306 3 * SPDX-License-Identifier: Apache-2.0
ram54288 0:a7a43371b306 4 * Licensed under the Apache License, Version 2.0 (the License); you may
ram54288 0:a7a43371b306 5 * not use this file except in compliance with the License.
ram54288 0:a7a43371b306 6 * You may obtain a copy of the License at
ram54288 0:a7a43371b306 7 *
ram54288 0:a7a43371b306 8 * http://www.apache.org/licenses/LICENSE-2.0
ram54288 0:a7a43371b306 9 *
ram54288 0:a7a43371b306 10 * Unless required by applicable law or agreed to in writing, software
ram54288 0:a7a43371b306 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
ram54288 0:a7a43371b306 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ram54288 0:a7a43371b306 13 * See the License for the specific language governing permissions and
ram54288 0:a7a43371b306 14 * limitations under the License.
ram54288 0:a7a43371b306 15 */
ram54288 0:a7a43371b306 16 #include "m2mresource_stub.h"
ram54288 0:a7a43371b306 17
ram54288 0:a7a43371b306 18 uint32_t m2mresource_stub::int_value;
ram54288 0:a7a43371b306 19 uint8_t* m2mresource_stub::delayed_token;
ram54288 0:a7a43371b306 20 uint8_t m2mresource_stub::delayed_token_len;
ram54288 0:a7a43371b306 21 bool m2mresource_stub::bool_value;
ram54288 0:a7a43371b306 22 // The statically initialized list must be bigh enough to cater
ram54288 0:a7a43371b306 23 // for all the tests, or the utest framework will complain for memory leak.
ram54288 0:a7a43371b306 24 M2MResourceInstanceList m2mresource_stub::list(12);
ram54288 0:a7a43371b306 25
ram54288 0:a7a43371b306 26 M2MResourceInstance *m2mresource_stub::instance;
ram54288 0:a7a43371b306 27 M2MObjectInstance *m2mresource_stub::object_instance;
ram54288 0:a7a43371b306 28 sn_coap_hdr_s *m2mresource_stub::header;
ram54288 0:a7a43371b306 29 void m2mresource_stub::clear()
ram54288 0:a7a43371b306 30 {
ram54288 0:a7a43371b306 31 int_value = 0;
ram54288 0:a7a43371b306 32 delayed_token = NULL;
ram54288 0:a7a43371b306 33 delayed_token_len = 0;
ram54288 0:a7a43371b306 34 bool_value = false;
ram54288 0:a7a43371b306 35 list.clear();
ram54288 0:a7a43371b306 36 instance = NULL;
ram54288 0:a7a43371b306 37 object_instance = NULL;
ram54288 0:a7a43371b306 38 }
ram54288 0:a7a43371b306 39
ram54288 0:a7a43371b306 40 M2MResource::M2MResource(M2MObjectInstance &parent,
ram54288 0:a7a43371b306 41 const String &resource_name,
ram54288 0:a7a43371b306 42 const String &resource_type,
ram54288 0:a7a43371b306 43 M2MResourceInstance::ResourceType type,
ram54288 0:a7a43371b306 44 const uint8_t *value,
ram54288 0:a7a43371b306 45 const uint8_t value_length,
ram54288 0:a7a43371b306 46 char* path,
ram54288 0:a7a43371b306 47 const uint16_t object_instance_id,
ram54288 0:a7a43371b306 48 bool multiple_instance,
ram54288 0:a7a43371b306 49 bool external_blockwise_store)
ram54288 0:a7a43371b306 50 : M2MResourceInstance(*this, resource_name, resource_type, type, value, value_length, object_instance_id,
ram54288 0:a7a43371b306 51 path, external_blockwise_store),
ram54288 0:a7a43371b306 52 _parent(parent),
ram54288 0:a7a43371b306 53 _delayed_token(NULL),
ram54288 0:a7a43371b306 54 _delayed_token_len(0),
ram54288 0:a7a43371b306 55 _has_multiple_instances(multiple_instance),
ram54288 0:a7a43371b306 56 _delayed_response(false)
ram54288 0:a7a43371b306 57 {
ram54288 0:a7a43371b306 58
ram54288 0:a7a43371b306 59 }
ram54288 0:a7a43371b306 60
ram54288 0:a7a43371b306 61 M2MResource::M2MResource(M2MObjectInstance &parent,
ram54288 0:a7a43371b306 62 const lwm2m_parameters_s* s,
ram54288 0:a7a43371b306 63 M2MResourceInstance::ResourceType type,
ram54288 0:a7a43371b306 64 const uint16_t object_instance_id)
ram54288 0:a7a43371b306 65 : M2MResourceInstance(*this, s, type, object_instance_id),
ram54288 0:a7a43371b306 66 _parent(parent),
ram54288 0:a7a43371b306 67 _delayed_token(NULL),
ram54288 0:a7a43371b306 68 _delayed_token_len(0),
ram54288 0:a7a43371b306 69 _has_multiple_instances(false),
ram54288 0:a7a43371b306 70 _delayed_response(false)
ram54288 0:a7a43371b306 71 {
ram54288 0:a7a43371b306 72 // tbd: _has_multiple_instances could be in flash, but no real benefit, because of current alignment.
ram54288 0:a7a43371b306 73 }
ram54288 0:a7a43371b306 74
ram54288 0:a7a43371b306 75 M2MResource::M2MResource(M2MObjectInstance &parent,
ram54288 0:a7a43371b306 76 const String &resource_name,
ram54288 0:a7a43371b306 77 const String &resource_type,
ram54288 0:a7a43371b306 78 M2MResourceInstance::ResourceType type,
ram54288 0:a7a43371b306 79 bool observable,
ram54288 0:a7a43371b306 80 char *path,
ram54288 0:a7a43371b306 81 const uint16_t object_instance_id,
ram54288 0:a7a43371b306 82 bool multiple_instance,
ram54288 0:a7a43371b306 83 bool external_blockwise_store)
ram54288 0:a7a43371b306 84 : M2MResourceInstance(*this, resource_name, resource_type, type,
ram54288 0:a7a43371b306 85 object_instance_id, path, external_blockwise_store),
ram54288 0:a7a43371b306 86 _parent(parent),
ram54288 0:a7a43371b306 87 _delayed_token(NULL),
ram54288 0:a7a43371b306 88 _delayed_token_len(0),
ram54288 0:a7a43371b306 89 _has_multiple_instances(multiple_instance),
ram54288 0:a7a43371b306 90 _delayed_response(false)
ram54288 0:a7a43371b306 91 {
ram54288 0:a7a43371b306 92
ram54288 0:a7a43371b306 93 }
ram54288 0:a7a43371b306 94
ram54288 0:a7a43371b306 95 M2MResource::~M2MResource()
ram54288 0:a7a43371b306 96 {
ram54288 0:a7a43371b306 97 }
ram54288 0:a7a43371b306 98
ram54288 0:a7a43371b306 99 bool M2MResource::supports_multiple_instances() const
ram54288 0:a7a43371b306 100 {
ram54288 0:a7a43371b306 101 return m2mresource_stub::bool_value;
ram54288 0:a7a43371b306 102 }
ram54288 0:a7a43371b306 103
ram54288 0:a7a43371b306 104 void M2MResource::get_delayed_token(unsigned char *&token, unsigned char &token_len)
ram54288 0:a7a43371b306 105 {
ram54288 0:a7a43371b306 106 token_len = 0;
ram54288 0:a7a43371b306 107 if(token) {
ram54288 0:a7a43371b306 108 free(token);
ram54288 0:a7a43371b306 109 token = NULL;
ram54288 0:a7a43371b306 110 }
ram54288 0:a7a43371b306 111 token = (uint8_t *)malloc(m2mresource_stub::delayed_token_len);
ram54288 0:a7a43371b306 112 if(token) {
ram54288 0:a7a43371b306 113 token_len = m2mresource_stub::delayed_token_len;
ram54288 0:a7a43371b306 114 memcpy((uint8_t *)token, (uint8_t *)m2mresource_stub::delayed_token, token_len);
ram54288 0:a7a43371b306 115 }
ram54288 0:a7a43371b306 116 }
ram54288 0:a7a43371b306 117
ram54288 0:a7a43371b306 118 bool M2MResource::remove_resource_instance(uint16_t inst_id)
ram54288 0:a7a43371b306 119 {
ram54288 0:a7a43371b306 120 return m2mresource_stub::bool_value;
ram54288 0:a7a43371b306 121 }
ram54288 0:a7a43371b306 122
ram54288 0:a7a43371b306 123 M2MResourceInstance* M2MResource::resource_instance(uint16_t inst_id) const
ram54288 0:a7a43371b306 124 {
ram54288 0:a7a43371b306 125 return m2mresource_stub::instance;
ram54288 0:a7a43371b306 126 }
ram54288 0:a7a43371b306 127
ram54288 0:a7a43371b306 128 const M2MResourceInstanceList& M2MResource::resource_instances() const
ram54288 0:a7a43371b306 129 {
ram54288 0:a7a43371b306 130 return m2mresource_stub::list;
ram54288 0:a7a43371b306 131 }
ram54288 0:a7a43371b306 132
ram54288 0:a7a43371b306 133 uint16_t M2MResource::resource_instance_count() const
ram54288 0:a7a43371b306 134 {
ram54288 0:a7a43371b306 135 return m2mresource_stub::int_value;
ram54288 0:a7a43371b306 136 }
ram54288 0:a7a43371b306 137
ram54288 0:a7a43371b306 138 bool M2MResource::handle_observation_attribute(const char *query)
ram54288 0:a7a43371b306 139 {
ram54288 0:a7a43371b306 140 return m2mresource_stub::bool_value;
ram54288 0:a7a43371b306 141 }
ram54288 0:a7a43371b306 142
ram54288 0:a7a43371b306 143 void M2MResource::add_resource_instance(M2MResourceInstance *)
ram54288 0:a7a43371b306 144 {
ram54288 0:a7a43371b306 145 }
ram54288 0:a7a43371b306 146
ram54288 0:a7a43371b306 147 void M2MResource::add_observation_level(M2MBase::Observation)
ram54288 0:a7a43371b306 148 {
ram54288 0:a7a43371b306 149 }
ram54288 0:a7a43371b306 150
ram54288 0:a7a43371b306 151 void M2MResource::remove_observation_level(M2MBase::Observation)
ram54288 0:a7a43371b306 152 {
ram54288 0:a7a43371b306 153 }
ram54288 0:a7a43371b306 154
ram54288 0:a7a43371b306 155 void M2MResource::notification_update()
ram54288 0:a7a43371b306 156 {
ram54288 0:a7a43371b306 157 }
ram54288 0:a7a43371b306 158
ram54288 0:a7a43371b306 159 sn_coap_hdr_s* M2MResource::handle_get_request(nsdl_s *,
ram54288 0:a7a43371b306 160 sn_coap_hdr_s *,
ram54288 0:a7a43371b306 161 M2MObservationHandler *)
ram54288 0:a7a43371b306 162 {
ram54288 0:a7a43371b306 163 return m2mresource_stub::header;
ram54288 0:a7a43371b306 164 }
ram54288 0:a7a43371b306 165
ram54288 0:a7a43371b306 166 sn_coap_hdr_s* M2MResource::handle_put_request(nsdl_s *,
ram54288 0:a7a43371b306 167 sn_coap_hdr_s *,
ram54288 0:a7a43371b306 168 M2MObservationHandler *,
ram54288 0:a7a43371b306 169 bool &)
ram54288 0:a7a43371b306 170 {
ram54288 0:a7a43371b306 171 return m2mresource_stub::header;
ram54288 0:a7a43371b306 172 }
ram54288 0:a7a43371b306 173
ram54288 0:a7a43371b306 174 sn_coap_hdr_s* M2MResource::handle_post_request(nsdl_s *,
ram54288 0:a7a43371b306 175 sn_coap_hdr_s *,
ram54288 0:a7a43371b306 176 M2MObservationHandler *,
ram54288 0:a7a43371b306 177 bool &, sn_nsdl_addr_s *)
ram54288 0:a7a43371b306 178 {
ram54288 0:a7a43371b306 179 return m2mresource_stub::header;
ram54288 0:a7a43371b306 180 }
ram54288 0:a7a43371b306 181
ram54288 0:a7a43371b306 182 M2MObjectInstance& M2MResource::get_parent_object_instance() const
ram54288 0:a7a43371b306 183 {
ram54288 0:a7a43371b306 184 return *m2mresource_stub::object_instance;
ram54288 0:a7a43371b306 185 }
ram54288 0:a7a43371b306 186
ram54288 0:a7a43371b306 187 const char* M2MResource::object_name() const
ram54288 0:a7a43371b306 188 {
ram54288 0:a7a43371b306 189
ram54288 0:a7a43371b306 190 }