Pfp Cybersecurity (Aka Power Fingerprinting, Inc.) / Mbed OS pfp-emon-nxp

Dependencies:   FXAS21002 FXOS8700Q

Committer:
vithyat
Date:
Wed Aug 28 19:24:56 2019 +0000
Revision:
0:977e87915078
init

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vithyat 0:977e87915078 1 /*
vithyat 0:977e87915078 2 * Copyright (c) 2015 ARM Limited. All rights reserved.
vithyat 0:977e87915078 3 * SPDX-License-Identifier: Apache-2.0
vithyat 0:977e87915078 4 * Licensed under the Apache License, Version 2.0 (the License); you may
vithyat 0:977e87915078 5 * not use this file except in compliance with the License.
vithyat 0:977e87915078 6 * You may obtain a copy of the License at
vithyat 0:977e87915078 7 *
vithyat 0:977e87915078 8 * http://www.apache.org/licenses/LICENSE-2.0
vithyat 0:977e87915078 9 *
vithyat 0:977e87915078 10 * Unless required by applicable law or agreed to in writing, software
vithyat 0:977e87915078 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
vithyat 0:977e87915078 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
vithyat 0:977e87915078 13 * See the License for the specific language governing permissions and
vithyat 0:977e87915078 14 * limitations under the License.
vithyat 0:977e87915078 15 */
vithyat 0:977e87915078 16
vithyat 0:977e87915078 17 #ifdef MBED_CLOUD_CLIENT_EDGE_EXTENSION
vithyat 0:977e87915078 18
vithyat 0:977e87915078 19 #include "mbed-client/m2mendpoint.h"
vithyat 0:977e87915078 20 #include "mbed-client/m2mobject.h"
vithyat 0:977e87915078 21 #include "mbed-client/m2mconstants.h"
vithyat 0:977e87915078 22 #include "include/m2mtlvserializer.h"
vithyat 0:977e87915078 23 #include "include/m2mtlvdeserializer.h"
vithyat 0:977e87915078 24 #include "include/m2mreporthandler.h"
vithyat 0:977e87915078 25 #include "mbed-trace/mbed_trace.h"
vithyat 0:977e87915078 26 #include "mbed-client/m2mstringbuffer.h"
vithyat 0:977e87915078 27 #include "mbed-client/m2mstring.h"
vithyat 0:977e87915078 28 #include "nsdl-c/sn_nsdl_lib.h"
vithyat 0:977e87915078 29
vithyat 0:977e87915078 30 #include <stdlib.h>
vithyat 0:977e87915078 31
vithyat 0:977e87915078 32 #define BUFFER_SIZE 10
vithyat 0:977e87915078 33 #define TRACE_GROUP "mClt"
vithyat 0:977e87915078 34
vithyat 0:977e87915078 35 M2MEndpoint::M2MEndpoint(const String &object_name, char *path)
vithyat 0:977e87915078 36 : M2MBase(object_name,
vithyat 0:977e87915078 37 M2MBase::Dynamic,
vithyat 0:977e87915078 38 #ifndef DISABLE_RESOURCE_TYPE
vithyat 0:977e87915078 39 "",
vithyat 0:977e87915078 40 #endif
vithyat 0:977e87915078 41 path,
vithyat 0:977e87915078 42 false,
vithyat 0:977e87915078 43 false),
vithyat 0:977e87915078 44 _observation_handler(NULL),
vithyat 0:977e87915078 45 _ctx(NULL),
vithyat 0:977e87915078 46 _changed(true),
vithyat 0:977e87915078 47 _deleted(false)
vithyat 0:977e87915078 48 {
vithyat 0:977e87915078 49 M2MBase::set_base_type(M2MBase::ObjectDirectory);
vithyat 0:977e87915078 50 get_nsdl_resource()->always_publish = false;
vithyat 0:977e87915078 51 #ifdef RESOURCE_ATTRIBUTES_LIST
vithyat 0:977e87915078 52 sn_nsdl_attribute_item_s item;
vithyat 0:977e87915078 53 item.attribute_name = ATTR_ENDPOINT_NAME;
vithyat 0:977e87915078 54 item.value = (char*)alloc_string_copy((uint8_t*) object_name.c_str(), object_name.length());
vithyat 0:977e87915078 55 sn_nsdl_set_resource_attribute(get_nsdl_resource()->static_resource_parameters, &item);
vithyat 0:977e87915078 56 #endif
vithyat 0:977e87915078 57 }
vithyat 0:977e87915078 58
vithyat 0:977e87915078 59
vithyat 0:977e87915078 60 M2MEndpoint::~M2MEndpoint()
vithyat 0:977e87915078 61 {
vithyat 0:977e87915078 62 tr_debug("~M2MEndpoint %p", this);
vithyat 0:977e87915078 63 if(!_object_list.empty()) {
vithyat 0:977e87915078 64
vithyat 0:977e87915078 65 M2MObjectList::const_iterator it;
vithyat 0:977e87915078 66 it = _object_list.begin();
vithyat 0:977e87915078 67 M2MObject* obj = NULL;
vithyat 0:977e87915078 68 uint16_t index = 0;
vithyat 0:977e87915078 69 for (; it!=_object_list.end(); it++, index++ ) {
vithyat 0:977e87915078 70 //Free allocated memory for object instances.
vithyat 0:977e87915078 71 obj = *it;
vithyat 0:977e87915078 72 tr_debug(" deleting object %p", obj);
vithyat 0:977e87915078 73 delete obj;
vithyat 0:977e87915078 74 }
vithyat 0:977e87915078 75
vithyat 0:977e87915078 76 _object_list.clear();
vithyat 0:977e87915078 77 }
vithyat 0:977e87915078 78
vithyat 0:977e87915078 79 free_resources();
vithyat 0:977e87915078 80 }
vithyat 0:977e87915078 81
vithyat 0:977e87915078 82 M2MObject* M2MEndpoint::create_object(const String &name)
vithyat 0:977e87915078 83 {
vithyat 0:977e87915078 84 M2MObject *obj = NULL;
vithyat 0:977e87915078 85 if (object(name) == NULL) {
vithyat 0:977e87915078 86 char *path = create_path(*this, name.c_str());
vithyat 0:977e87915078 87 obj = new M2MObject(name, path, false);
vithyat 0:977e87915078 88 if (obj != NULL) {
vithyat 0:977e87915078 89 obj->set_endpoint(this);
vithyat 0:977e87915078 90 _object_list.push_back(obj);
vithyat 0:977e87915078 91 }
vithyat 0:977e87915078 92 }
vithyat 0:977e87915078 93 return obj;
vithyat 0:977e87915078 94 }
vithyat 0:977e87915078 95
vithyat 0:977e87915078 96 bool M2MEndpoint::remove_object(const String &name)
vithyat 0:977e87915078 97 {
vithyat 0:977e87915078 98 bool success = false;
vithyat 0:977e87915078 99 if (object_count() == 0) {
vithyat 0:977e87915078 100 return success;
vithyat 0:977e87915078 101 }
vithyat 0:977e87915078 102 M2MObjectList::const_iterator it;
vithyat 0:977e87915078 103 M2MObject *obj = NULL;
vithyat 0:977e87915078 104 int pos = 0;
vithyat 0:977e87915078 105 it = _object_list.begin();
vithyat 0:977e87915078 106 for (; it != _object_list.end(); it++, pos++) {
vithyat 0:977e87915078 107 obj = *it;
vithyat 0:977e87915078 108 if (name == obj->name()) {
vithyat 0:977e87915078 109 delete obj;
vithyat 0:977e87915078 110 _object_list.erase(pos);
vithyat 0:977e87915078 111 success = true;
vithyat 0:977e87915078 112 break;
vithyat 0:977e87915078 113 }
vithyat 0:977e87915078 114 }
vithyat 0:977e87915078 115 return success;
vithyat 0:977e87915078 116
vithyat 0:977e87915078 117 }
vithyat 0:977e87915078 118
vithyat 0:977e87915078 119 M2MObject* M2MEndpoint::object(const String &name) const
vithyat 0:977e87915078 120 {
vithyat 0:977e87915078 121 M2MObject *obj = NULL;
vithyat 0:977e87915078 122 if (object_count() == 0) {
vithyat 0:977e87915078 123 return obj;
vithyat 0:977e87915078 124 }
vithyat 0:977e87915078 125 M2MObjectList::const_iterator it = _object_list.begin();
vithyat 0:977e87915078 126 for (; it != _object_list.end(); it++) {
vithyat 0:977e87915078 127 if (name == (*it)->name()) {
vithyat 0:977e87915078 128 obj = *it;
vithyat 0:977e87915078 129 break;
vithyat 0:977e87915078 130 }
vithyat 0:977e87915078 131 }
vithyat 0:977e87915078 132 return obj;
vithyat 0:977e87915078 133 }
vithyat 0:977e87915078 134
vithyat 0:977e87915078 135 const M2MObjectList& M2MEndpoint::objects() const
vithyat 0:977e87915078 136 {
vithyat 0:977e87915078 137 return _object_list;
vithyat 0:977e87915078 138 }
vithyat 0:977e87915078 139
vithyat 0:977e87915078 140 uint16_t M2MEndpoint::object_count() const
vithyat 0:977e87915078 141 {
vithyat 0:977e87915078 142 return _object_list.size();
vithyat 0:977e87915078 143 }
vithyat 0:977e87915078 144
vithyat 0:977e87915078 145 M2MObservationHandler* M2MEndpoint::observation_handler() const
vithyat 0:977e87915078 146 {
vithyat 0:977e87915078 147 return _observation_handler;
vithyat 0:977e87915078 148 }
vithyat 0:977e87915078 149
vithyat 0:977e87915078 150 void M2MEndpoint::set_observation_handler(M2MObservationHandler *handler)
vithyat 0:977e87915078 151 {
vithyat 0:977e87915078 152 _observation_handler = handler;
vithyat 0:977e87915078 153 }
vithyat 0:977e87915078 154
vithyat 0:977e87915078 155 void M2MEndpoint::add_observation_level(M2MBase::Observation observation_level)
vithyat 0:977e87915078 156 {
vithyat 0:977e87915078 157 (void)observation_level;
vithyat 0:977e87915078 158 }
vithyat 0:977e87915078 159
vithyat 0:977e87915078 160 void M2MEndpoint::remove_observation_level(M2MBase::Observation observation_level)
vithyat 0:977e87915078 161 {
vithyat 0:977e87915078 162 (void)observation_level;
vithyat 0:977e87915078 163 }
vithyat 0:977e87915078 164
vithyat 0:977e87915078 165 sn_coap_hdr_s* M2MEndpoint::handle_get_request(nsdl_s *nsdl,
vithyat 0:977e87915078 166 sn_coap_hdr_s *received_coap_header,
vithyat 0:977e87915078 167 M2MObservationHandler *observation_handler)
vithyat 0:977e87915078 168 {
vithyat 0:977e87915078 169 tr_debug("M2MEndpoint::handle_get_request()");
vithyat 0:977e87915078 170 sn_coap_msg_code_e msg_code = COAP_MSG_CODE_RESPONSE_METHOD_NOT_ALLOWED;
vithyat 0:977e87915078 171 sn_coap_hdr_s * coap_response = sn_nsdl_build_response(nsdl,
vithyat 0:977e87915078 172 received_coap_header, msg_code);
vithyat 0:977e87915078 173 return coap_response;
vithyat 0:977e87915078 174
vithyat 0:977e87915078 175 }
vithyat 0:977e87915078 176
vithyat 0:977e87915078 177 sn_coap_hdr_s* M2MEndpoint::handle_put_request(nsdl_s *nsdl,
vithyat 0:977e87915078 178 sn_coap_hdr_s *received_coap_header,
vithyat 0:977e87915078 179 M2MObservationHandler */*observation_handler*/,
vithyat 0:977e87915078 180 bool &/*execute_value_updated*/)
vithyat 0:977e87915078 181 {
vithyat 0:977e87915078 182 tr_debug("M2MEndpoint::handle_put_request()");
vithyat 0:977e87915078 183 sn_coap_msg_code_e msg_code = COAP_MSG_CODE_RESPONSE_METHOD_NOT_ALLOWED;
vithyat 0:977e87915078 184 sn_coap_hdr_s * coap_response = sn_nsdl_build_response(nsdl,
vithyat 0:977e87915078 185 received_coap_header, msg_code);
vithyat 0:977e87915078 186 return coap_response;
vithyat 0:977e87915078 187 }
vithyat 0:977e87915078 188
vithyat 0:977e87915078 189
vithyat 0:977e87915078 190 sn_coap_hdr_s* M2MEndpoint::handle_post_request(nsdl_s *nsdl,
vithyat 0:977e87915078 191 sn_coap_hdr_s *received_coap_header,
vithyat 0:977e87915078 192 M2MObservationHandler *observation_handler,
vithyat 0:977e87915078 193 bool &execute_value_updated,
vithyat 0:977e87915078 194 sn_nsdl_addr_s *)
vithyat 0:977e87915078 195 {
vithyat 0:977e87915078 196 tr_debug("M2MEndpoint::handle_post_request()");
vithyat 0:977e87915078 197 sn_coap_msg_code_e msg_code = COAP_MSG_CODE_RESPONSE_METHOD_NOT_ALLOWED;
vithyat 0:977e87915078 198 sn_coap_hdr_s * coap_response = sn_nsdl_build_response(nsdl,
vithyat 0:977e87915078 199 received_coap_header, msg_code);
vithyat 0:977e87915078 200 return coap_response;
vithyat 0:977e87915078 201 }
vithyat 0:977e87915078 202
vithyat 0:977e87915078 203 void M2MEndpoint::set_context(void *ctx)
vithyat 0:977e87915078 204 {
vithyat 0:977e87915078 205 _ctx = ctx;
vithyat 0:977e87915078 206 }
vithyat 0:977e87915078 207
vithyat 0:977e87915078 208 void* M2MEndpoint::get_context() const
vithyat 0:977e87915078 209 {
vithyat 0:977e87915078 210 return _ctx;
vithyat 0:977e87915078 211 }
vithyat 0:977e87915078 212
vithyat 0:977e87915078 213 void M2MEndpoint::set_changed()
vithyat 0:977e87915078 214 {
vithyat 0:977e87915078 215 _changed = true;
vithyat 0:977e87915078 216 }
vithyat 0:977e87915078 217
vithyat 0:977e87915078 218 void M2MEndpoint::clear_changed()
vithyat 0:977e87915078 219 {
vithyat 0:977e87915078 220 _changed = false;
vithyat 0:977e87915078 221 }
vithyat 0:977e87915078 222
vithyat 0:977e87915078 223 bool M2MEndpoint::get_changed() const
vithyat 0:977e87915078 224 {
vithyat 0:977e87915078 225 return _changed;
vithyat 0:977e87915078 226 }
vithyat 0:977e87915078 227
vithyat 0:977e87915078 228 void M2MEndpoint::set_deleted()
vithyat 0:977e87915078 229 {
vithyat 0:977e87915078 230 _deleted = true;
vithyat 0:977e87915078 231 set_changed();
vithyat 0:977e87915078 232 }
vithyat 0:977e87915078 233
vithyat 0:977e87915078 234 bool M2MEndpoint::is_deleted()
vithyat 0:977e87915078 235 {
vithyat 0:977e87915078 236 return _deleted;
vithyat 0:977e87915078 237 }
vithyat 0:977e87915078 238
vithyat 0:977e87915078 239 #endif // MBED_CLOUD_CLIENT_EDGE_EXTENSION