Mistake on this page? Email us
m2mobject.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015 ARM Limited. All rights reserved.
3  * SPDX-License-Identifier: Apache-2.0
4  * Licensed under the Apache License, Version 2.0 (the License); you may
5  * not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #ifndef M2M_OBJECT_H
17 #define M2M_OBJECT_H
18 
19 #include "mbed-client/m2mvector.h"
20 #include "mbed-client/m2mbase.h"
22 
23 //FORWARD DECLARATION
24 typedef Vector<M2MObjectInstance *> M2MObjectInstanceList;
25 
26 class M2MEndpoint;
27 
35 class M2MObject : public M2MBase
36 {
37 
38 friend class M2MInterfaceFactory;
39 friend class M2MEndpoint;
40 friend class TestFactory;
41 
42 protected :
43 
51  M2MObject(const String &object_name,
52  char *path,
53  bool external_blockwise_store = false);
54 
55  // Prevents the use of default constructor.
56  M2MObject();
57 
58  // Prevents the use of assignment operator.
59  M2MObject& operator=( const M2MObject& /*other*/ );
60 
61  // Prevents the use of copy constructor.
62  M2MObject( const M2MObject& /*other*/ );
63 
68  M2MObject(const M2MBase::lwm2m_parameters_s* static_res);
69 
70 public:
71 
75  virtual ~M2MObject();
76 
83 
90 
96  bool remove_object_instance(uint16_t instance_id = 0);
97 
103  M2MObjectInstance* object_instance(uint16_t instance_id = 0) const;
104 
109  const M2MObjectInstanceList& instances() const;
110 
115  uint16_t instance_count() const;
116 
122 
127  virtual void set_observation_handler(M2MObservationHandler *handler);
128 
134 
139  virtual void remove_observation_level(M2MBase::Observation observation_level);
140 
149  virtual sn_coap_hdr_s* handle_get_request(nsdl_s *nsdl,
150  sn_coap_hdr_s *received_coap_header,
151  M2MObservationHandler *observation_handler = NULL);
152 
162  virtual sn_coap_hdr_s* handle_put_request(nsdl_s *nsdl,
163  sn_coap_hdr_s *received_coap_header,
164  M2MObservationHandler *observation_handler,
165  bool &execute_value_updated);
166 
176  virtual sn_coap_hdr_s* handle_post_request(nsdl_s *nsdl,
177  sn_coap_hdr_s *received_coap_header,
178  M2MObservationHandler *observation_handler,
179  bool &execute_value_updated,
180  sn_nsdl_addr_s *address = NULL);
181 
182  void notification_update(uint16_t obj_instance_id);
183 
184 #ifdef MBED_CLOUD_CLIENT_EDGE_EXTENSION
185  void set_endpoint(M2MEndpoint *endpoint);
186 
187  M2MEndpoint* get_endpoint() const;
188 #endif
189 
190 protected :
194  virtual M2MBase *get_parent() const;
195 
196 private:
197 
198  M2MObjectInstanceList _instance_list; // owned
199 
200  M2MObservationHandler *_observation_handler; // Not owned
201 
202 #ifdef MBED_CLOUD_CLIENT_EDGE_EXTENSION
203  M2MEndpoint *_endpoint; // Parent endpoint
204 #endif
205 
206 friend class Test_M2MObject;
207 friend class Test_M2MEndpoint;
208 friend class Test_M2MInterfaceImpl;
209 friend class Test_M2MInterfaceFactory;
210 friend class Test_M2MNsdlInterface;
211 friend class Test_M2MTLVSerializer;
212 friend class Test_M2MTLVDeserializer;
213 friend class Test_M2MDevice;
214 friend class Test_M2MBase;
215 friend class Test_M2MObjectInstance;
216 friend class Test_M2MResource;
217 friend class Test_M2MSecurity;
218 friend class Test_M2MServer;
219 friend class Test_M2MReportHandler;
220 friend class Test_M2MResourceInstance;
221 };
222 
223 #endif // M2M_OBJECT_H
Definition: m2mobject.h:35
Definition: m2mobservationhandler.h:30
virtual M2MBase * get_parent() const
Returns the owner object. Can return NULL if the object has no parent.
Definition: m2mbase.h:54
virtual void set_observation_handler(M2MObservationHandler *handler)
Sets the observation handler.
virtual ~M2MObject()
Destructor.
Observation
Enum to define observation level.
Definition: m2mbase.h:74
virtual void add_observation_level(M2MBase::Observation observation_level)
Adds the observation level for the object.
header for M2MObjectInstance
Definition: m2mobjectinstance.h:42
LwM2M parameters.
Definition: m2mbase.h:199
const M2MObjectInstanceList & instances() const
Returns a list of object instances.
Header for M2MBase class.
virtual sn_coap_hdr_s * handle_put_request(nsdl_s *nsdl, sn_coap_hdr_s *received_coap_header, M2MObservationHandler *observation_handler, bool &execute_value_updated)
Handles PUT request for the registered objects.
header for m2m::Vector
virtual M2MObservationHandler * observation_handler() const
Returns the Observation Handler object.
virtual sn_coap_hdr_s * handle_get_request(nsdl_s *nsdl, sn_coap_hdr_s *received_coap_header, M2MObservationHandler *observation_handler=NULL)
Handles GET request for the registered objects.
M2MObjectInstance * create_object_instance(uint16_t instance_id=0)
Creates a new object instance for a given mbed Client Interface object. With this, the client can respond to server&#39;s GET methods with the provided value.
M2MBase::Observation observation_level() const
Returns the observation level of the object.
Definition: m2minterfacefactory.h:35
uint16_t instance_id() const
Returns the object&#39;s instance ID.
bool remove_object_instance(uint16_t instance_id=0)
Removes the object instance resource with the given instance id.
void execute_value_updated(const String &name)
Calls the function that is set in the "set_value_updated_function".
M2MObjectInstance * object_instance(uint16_t instance_id=0) const
Returns the object instance with the the given instance ID.
virtual void remove_observation_level(M2MBase::Observation observation_level)
Removes the observation level from the object.
uint16_t instance_count() const
Returns the total number of object instances-.
virtual sn_coap_hdr_s * handle_post_request(nsdl_s *nsdl, sn_coap_hdr_s *received_coap_header, M2MObservationHandler *observation_handler, bool &execute_value_updated, sn_nsdl_addr_s *address=NULL)
Handles GET request for the registered objects.