Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
m2mobject.h
00001 /* 00002 * Copyright (c) 2015 ARM Limited. All rights reserved. 00003 * SPDX-License-Identifier: Apache-2.0 00004 * Licensed under the Apache License, Version 2.0 (the License); you may 00005 * not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an AS IS BASIS, WITHOUT 00012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 #ifndef M2M_OBJECT_H 00017 #define M2M_OBJECT_H 00018 00019 #include "mbed-client/m2mvector.h" 00020 #include "mbed-client/m2mbase.h" 00021 #include "mbed-client/m2mobjectinstance.h" 00022 00023 //FORWARD DECLARATION 00024 typedef Vector<M2MObjectInstance *> M2MObjectInstanceList; 00025 00026 class M2MEndpoint; 00027 00028 /*! \file m2mobject.h 00029 * \brief M2MObject. 00030 * This class is the base class for the mbed Client Objects. All defined 00031 * LWM2M object models can be created based on it. This class also holds all object 00032 * instances associated with the given object. 00033 */ 00034 00035 class M2MObject : public M2MBase 00036 { 00037 00038 friend class M2MInterfaceFactory; 00039 friend class M2MEndpoint; 00040 friend class TestFactory; 00041 00042 protected : 00043 00044 /** 00045 * \brief Constructor 00046 * \param name The name of the object. 00047 * \param path Path of the object like 3/0/1 00048 * \param external_blockwise_store If true CoAP blocks are passed to application through callbacks 00049 * otherwise handled in mbed-client-c. 00050 */ 00051 M2MObject(const String &object_name, 00052 char *path, 00053 bool external_blockwise_store = false); 00054 00055 // Prevents the use of default constructor. 00056 M2MObject(); 00057 00058 // Prevents the use of assignment operator. 00059 M2MObject& operator=( const M2MObject& /*other*/ ); 00060 00061 // Prevents the use of copy constructor. 00062 M2MObject( const M2MObject& /*other*/ ); 00063 00064 /** 00065 * \brief Constructor 00066 * \param name The name of the object. 00067 */ 00068 M2MObject(const M2MBase::lwm2m_parameters_s* static_res); 00069 00070 public: 00071 00072 /** 00073 * \brief Destructor 00074 */ 00075 virtual ~M2MObject(); 00076 00077 /** 00078 * \brief Creates a new object instance for a given mbed Client Interface object. With this, 00079 * the client can respond to server's GET methods with the provided value. 00080 * \return M2MObjectInstance. An object instance for managing other client operations. 00081 */ 00082 M2MObjectInstance* create_object_instance(uint16_t instance_id = 0); 00083 00084 /** 00085 * TODO!! 00086 */ 00087 M2MObjectInstance* create_object_instance(const lwm2m_parameters_s* s); 00088 00089 /** 00090 * \brief Removes the object instance resource with the given instance id. 00091 * \param instance_id The instance ID of the object instance to be removed, default is 0. 00092 * \return True if removed, else false. 00093 */ 00094 bool remove_object_instance(uint16_t instance_id = 0); 00095 00096 /** 00097 * \brief Returns the object instance with the the given instance ID. 00098 * \param instance_id The instance ID of the requested object instance ID, default is 0. 00099 * \return Object instance reference if found, else NULL. 00100 */ 00101 M2MObjectInstance* object_instance(uint16_t instance_id = 0) const; 00102 00103 /** 00104 * \brief Returns a list of object instances. 00105 * \return A list of object instances. 00106 */ 00107 const M2MObjectInstanceList& instances() const; 00108 00109 /** 00110 * \brief Returns the total number of object instances- 00111 * \return The total number of the object instances. 00112 */ 00113 uint16_t instance_count() const; 00114 00115 /** 00116 * \brief Returns the Observation Handler object. 00117 * \return M2MObservationHandler object. 00118 */ 00119 virtual M2MObservationHandler* observation_handler() const; 00120 00121 /** 00122 * \brief Sets the observation handler 00123 * \param handler Observation handler 00124 */ 00125 virtual void set_observation_handler(M2MObservationHandler *handler); 00126 00127 /** 00128 * \brief Adds the observation level for the object. 00129 * \param observation_level The level of observation. 00130 */ 00131 virtual void add_observation_level(M2MBase::Observation observation_level); 00132 00133 /** 00134 * \brief Removes the observation level from the object. 00135 * \param observation_level The level of observation. 00136 */ 00137 virtual void remove_observation_level(M2MBase::Observation observation_level); 00138 00139 /** 00140 * \brief Handles GET request for the registered objects. 00141 * \param nsdl The NSDL handler for the CoAP library. 00142 * \param received_coap_header The CoAP message received from the server. 00143 * \param observation_handler The handler object for sending 00144 * observation callbacks. 00145 * \return sn_coap_hdr_s The message that needs to be sent to server. 00146 */ 00147 virtual sn_coap_hdr_s* handle_get_request(nsdl_s *nsdl, 00148 sn_coap_hdr_s *received_coap_header, 00149 M2MObservationHandler *observation_handler = NULL); 00150 00151 /** 00152 * \brief Handles PUT request for the registered objects. 00153 * \param nsdl The NSDL handler for the CoAP library. 00154 * \param received_coap_header The received CoAP message from the server. 00155 * \param observation_handler The handler object for sending 00156 * observation callbacks. 00157 * \param execute_value_updated True will execute the "value_updated" callback. 00158 * \return sn_coap_hdr_s The message that needs to be sent to server. 00159 */ 00160 virtual sn_coap_hdr_s* handle_put_request(nsdl_s *nsdl, 00161 sn_coap_hdr_s *received_coap_header, 00162 M2MObservationHandler *observation_handler, 00163 bool &execute_value_updated); 00164 00165 /** 00166 * \brief Handles GET request for the registered objects. 00167 * \param nsdl The NSDL handler for the CoAP library. 00168 * \param received_coap_header The received CoAP message from the server. 00169 * \param observation_handler The handler object for sending 00170 * observation callbacks. 00171 * \param execute_value_updated True will execute the "value_updated" callback. 00172 * \return sn_coap_hdr_s The message that needs to be sent to server. 00173 */ 00174 virtual sn_coap_hdr_s* handle_post_request(nsdl_s *nsdl, 00175 sn_coap_hdr_s *received_coap_header, 00176 M2MObservationHandler *observation_handler, 00177 bool &execute_value_updated, 00178 sn_nsdl_addr_s *address = NULL); 00179 00180 void notification_update(uint16_t obj_instance_id); 00181 00182 #ifdef MBED_CLOUD_CLIENT_EDGE_EXTENSION 00183 void set_endpoint(M2MEndpoint *endpoint); 00184 00185 M2MEndpoint* get_endpoint() const; 00186 #endif 00187 00188 protected : 00189 /** 00190 * \brief Returns the owner object. Can return NULL if the object has no parent. 00191 */ 00192 virtual M2MBase *get_parent() const; 00193 00194 private: 00195 00196 M2MObjectInstanceList _instance_list; // owned 00197 00198 M2MObservationHandler *_observation_handler; // Not owned 00199 00200 #ifdef MBED_CLOUD_CLIENT_EDGE_EXTENSION 00201 M2MEndpoint *_endpoint; // Parent endpoint 00202 #endif 00203 00204 friend class Test_M2MObject; 00205 friend class Test_M2MEndpoint; 00206 friend class Test_M2MInterfaceImpl; 00207 friend class Test_M2MNsdlInterface; 00208 friend class Test_M2MTLVSerializer; 00209 friend class Test_M2MTLVDeserializer; 00210 friend class Test_M2MDevice; 00211 friend class Test_M2MFirmware; 00212 friend class Test_M2MBase; 00213 friend class Test_M2MObjectInstance; 00214 friend class Test_M2MResource; 00215 friend class Test_M2MSecurity; 00216 friend class Test_M2MServer; 00217 friend class Test_M2MResourceInstance; 00218 }; 00219 00220 #endif // M2M_OBJECT_H
Generated on Tue Jul 12 2022 16:24:15 by
 1.7.2
 1.7.2