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 /** 00027 * \brief M2MObject. 00028 * This class is the base class for the mbed Client Objects. All defined 00029 * LWM2M object models can be created based on it. This class also holds all object 00030 * instances associated with the given object. 00031 */ 00032 00033 class M2MObject : public M2MBase, 00034 public M2MObjectCallback 00035 { 00036 00037 friend class M2MInterfaceFactory; 00038 00039 protected : 00040 00041 /** 00042 * \brief Constructor 00043 * \param name The name of the object. 00044 */ 00045 M2MObject(const String &object_name); 00046 00047 // Prevents the use of default constructor. 00048 M2MObject(); 00049 00050 // Prevents the use of assignment operator. 00051 M2MObject& operator=( const M2MObject& /*other*/ ); 00052 00053 // Prevents the use of copy constructor. 00054 M2MObject( const M2MObject& /*other*/ ); 00055 00056 public: 00057 00058 /** 00059 * \brief Destructor 00060 */ 00061 virtual ~M2MObject(); 00062 00063 /** 00064 * \brief Creates a new object instance for a given mbed Client Interface object. With this, 00065 * the client can respond to server's GET methods with the provided value. 00066 * \return M2MObjectInstance. An object instance for managing other client operations. 00067 */ 00068 M2MObjectInstance* create_object_instance(uint16_t instance_id = 0); 00069 00070 /** 00071 * \brief Removes the object instance resource with the given instance id. 00072 * \param instance_id The instance ID of the object instance to be removed, default is 0. 00073 * \return True if removed, else false. 00074 */ 00075 virtual bool remove_object_instance(uint16_t instance_id = 0); 00076 00077 /** 00078 * \brief Returns the object instance with the the given instance ID. 00079 * \param instance_id The instance ID of the requested object instance ID, default is 0. 00080 * \return Object instance reference if found, else NULL. 00081 */ 00082 virtual M2MObjectInstance* object_instance(uint16_t instance_id = 0) const; 00083 00084 /** 00085 * \brief Returns a list of object instances. 00086 * \return A list of object instances. 00087 */ 00088 virtual const M2MObjectInstanceList& instances() const; 00089 00090 /** 00091 * \brief Returns the total number of object instances- 00092 * \return The total number of the object instances. 00093 */ 00094 virtual uint16_t instance_count() const; 00095 00096 /** 00097 * \brief Returns the object type. 00098 * \return BaseType. 00099 */ 00100 virtual M2MBase::BaseType base_type() const; 00101 00102 /** 00103 * \brief Adds the observation level for the object. 00104 * \param observation_level The level of observation. 00105 */ 00106 virtual void add_observation_level(M2MBase::Observation observation_level); 00107 00108 /** 00109 * \brief Removes the observation level from the object. 00110 * \param observation_level The level of observation. 00111 */ 00112 virtual void remove_observation_level(M2MBase::Observation observation_level); 00113 00114 /** 00115 * \brief Handles GET request for the registered objects. 00116 * \param nsdl The NSDL handler for the CoAP library. 00117 * \param received_coap_header The CoAP message received from the server. 00118 * \param observation_handler The handler object for sending 00119 * observation callbacks. 00120 * \return sn_coap_hdr_s The message that needs to be sent to server. 00121 */ 00122 virtual sn_coap_hdr_s* handle_get_request(nsdl_s *nsdl, 00123 sn_coap_hdr_s *received_coap_header, 00124 M2MObservationHandler *observation_handler = NULL); 00125 00126 /** 00127 * \brief Handles PUT request for the registered objects. 00128 * \param nsdl The NSDL handler for the CoAP library. 00129 * \param received_coap_header The received CoAP message from the server. 00130 * \param observation_handler The handler object for sending 00131 * observation callbacks. 00132 * \param execute_value_updated True will execute the "value_updated" callback. 00133 * \return sn_coap_hdr_s The message that needs to be sent to server. 00134 */ 00135 virtual sn_coap_hdr_s* handle_put_request(nsdl_s *nsdl, 00136 sn_coap_hdr_s *received_coap_header, 00137 M2MObservationHandler *observation_handler, 00138 bool &execute_value_updated); 00139 00140 /** 00141 * \brief Handles GET request for the registered objects. 00142 * \param nsdl The NSDL handler for the CoAP library. 00143 * \param received_coap_header The received CoAP message from the server. 00144 * \param observation_handler The handler object for sending 00145 * observation callbacks. 00146 * \param execute_value_updated True will execute the "value_updated" callback. 00147 * \return sn_coap_hdr_s The message that needs to be sent to server. 00148 */ 00149 virtual sn_coap_hdr_s* handle_post_request(nsdl_s *nsdl, 00150 sn_coap_hdr_s *received_coap_header, 00151 M2MObservationHandler *observation_handler, 00152 bool &execute_value_updated); 00153 00154 protected : 00155 00156 virtual void notification_update(uint16_t obj_instance_id); 00157 00158 private: 00159 00160 M2MObjectInstanceList _instance_list; // owned 00161 uint16_t _max_instance_count; 00162 00163 friend class Test_M2MObject; 00164 friend class Test_M2MInterfaceImpl; 00165 friend class Test_M2MNsdlInterface; 00166 friend class Test_M2MTLVSerializer; 00167 friend class Test_M2MTLVDeserializer; 00168 00169 }; 00170 00171 #endif // M2M_OBJECT_H
Generated on Tue Jul 12 2022 12:58:28 by
1.7.2