Friendly LWM2M client
Object.h
Go to the documentation of this file.
1 /*
2  * Object.h
3  *
4  * Created on: 10 Jul 2023
5  * Author: valentin
6  */
7 
8 #ifndef WPP_OBJECT_H_
9 #define WPP_OBJECT_H_
10 
11 #include <vector>
12 #include <variant>
13 
14 #include "ObjSubject.h"
15 #include "Instance.h"
16 #include "WppTypes.h"
17 #include "WppLogs.h"
18 
19 namespace wpp {
20 
21 class WppRegistry;
22 class WppClient;
23 
32 class Object : public ObjSubject {
33 private:
34  Object(const Object&) = delete;
35  Object(Object&&) = delete;
36  Object& operator=(const Object&) = delete;
37  Object& operator=(Object&&) = delete;
38 
39 public:
43  Object(lwm2m_context_t &context);
44 
51  Object(lwm2m_context_t &context, const ObjectInfo &info);
52 
56  virtual ~Object();
57 
58  /* ------------- Object management ------------- */
59 
65  OBJ_ID getObjectID() const;
66 
72  const ObjectInfo& getObjectInfo() const;
73 
79  lwm2m_object_t& getLwm2mObject();
80 
84  lwm2m_context_t& getContext();
85 
90 
95 
96  /* ------------- Object instance management ------------- */
97 
104  virtual Instance* createInstance(ID_T instanceID = ID_T_MAX_VAL) = 0;
105 
112  bool remove(ID_T instanceID);
113 
117  void clear();
118 
125  Instance* instance(ID_T instanceID = ID_T_MAX_VAL);
126 
132  const std::vector<Instance*>& instances();
133 
139  size_t instanceCnt();
140 
147  bool isExist(ID_T instanceID);
148 
149 protected:
156  std::vector<Instance*>::iterator getInstIter(ID_T instanceID);
157 
164 
165  /* ------------- Lwm2m core callback ------------- */
166 
178  static uint8_t serverRead_clb(lwm2m_context_t * contextP, lwm2m_server_t *server, ID_T instanceId, int * numDataP, lwm2m_data_t ** dataArrayP, lwm2m_object_t * objectP);
179 
192  static uint8_t serverWrite_clb(lwm2m_context_t * contextP, lwm2m_server_t *server, ID_T instanceId, int numData, lwm2m_data_t * dataArray, lwm2m_object_t * objectP, lwm2m_write_type_t writeType);
193 
206  static uint8_t serverExecute_clb(lwm2m_context_t * contextP, lwm2m_server_t *server, ID_T instanceId, ID_T resId, uint8_t * buffer, int length, lwm2m_object_t * objectP);
207 
219  static uint8_t serverDiscover_clb(lwm2m_context_t * contextP, lwm2m_server_t *server, ID_T instanceId, int * numDataP, lwm2m_data_t ** dataArrayP, lwm2m_object_t * objectP);
220 
232  static uint8_t serverCreate_clb(lwm2m_context_t * contextP, lwm2m_server_t *server, ID_T instanceId, int numData, lwm2m_data_t * dataArray, lwm2m_object_t * objectP);
233 
243  static uint8_t serverDelete_clb(lwm2m_context_t * contextP, lwm2m_server_t *server, ID_T instanceId, lwm2m_object_t * objectP);
244 
245 protected:
246  std::vector<Instance*> _instances;
247  lwm2m_context_t &_context;
248  lwm2m_object_t _lwm2m_object;
250 };
251 
252 } // namespace wpp
253 
254 #endif /* WPP_OBJECT_H_ */
#define ID_T_MAX_VAL
Definition: WppTypes.h:16
Instance is interface class that implements manipulation with derived class resources....
Definition: Instance.h:40
The ObjSubject class represents a subject that notifies observers about object operations and actions...
Definition: ObjSubject.h:21
The Object class implements manipulation with Instance interface class and its inheritors.
Definition: Object.h:32
Instance * instance(ID_T instanceID=ID_T_MAX_VAL)
Gets an instance of the object.
Definition: Object.cpp:102
static uint8_t serverRead_clb(lwm2m_context_t *contextP, lwm2m_server_t *server, ID_T instanceId, int *numDataP, lwm2m_data_t **dataArrayP, lwm2m_object_t *objectP)
The read callback function for the Lwm2m core.
Definition: Object.cpp:135
size_t instanceCnt()
Gets the number of instances of the object.
Definition: Object.cpp:112
const std::vector< Instance * > & instances()
Gets all instances of the object.
Definition: Object.cpp:108
ObjectInfo _objInfo
Definition: Object.h:249
virtual Instance * createInstance(ID_T instanceID=ID_T_MAX_VAL)=0
Creates an instance of the object.
lwm2m_context_t & _context
Definition: Object.h:247
lwm2m_object_t _lwm2m_object
Definition: Object.h:248
ID_T getFirstAvailableInstanceID()
Gets the first available instance ID.
Definition: Object.cpp:125
lwm2m_object_t & getLwm2mObject()
Gets the lwm2m_object_t object.
Definition: Object.cpp:41
WppRegistry & getRegistry()
Helpfull methods to get registry instances.
Definition: Object.cpp:57
bool remove(ID_T instanceID)
Removes an instance of the object.
Definition: Object.cpp:82
lwm2m_context_t & getContext()
Return context that can be used by derived class.
Definition: Object.cpp:49
static uint8_t serverExecute_clb(lwm2m_context_t *contextP, lwm2m_server_t *server, ID_T instanceId, ID_T resId, uint8_t *buffer, int length, lwm2m_object_t *objectP)
The execute callback function for the Lwm2m core.
Definition: Object.cpp:149
OBJ_ID getObjectID() const
Gets the object ID.
Definition: Object.cpp:37
static uint8_t serverWrite_clb(lwm2m_context_t *contextP, lwm2m_server_t *server, ID_T instanceId, int numData, lwm2m_data_t *dataArray, lwm2m_object_t *objectP, lwm2m_write_type_t writeType)
The write callback function for the Lwm2m core.
Definition: Object.cpp:142
virtual ~Object()
Destroys the Object instance.
Definition: Object.cpp:32
void clear()
Clears the object.
Definition: Object.cpp:61
static uint8_t serverDiscover_clb(lwm2m_context_t *contextP, lwm2m_server_t *server, ID_T instanceId, int *numDataP, lwm2m_data_t **dataArrayP, lwm2m_object_t *objectP)
The discover callback function for the Lwm2m core.
Definition: Object.cpp:156
static uint8_t serverCreate_clb(lwm2m_context_t *contextP, lwm2m_server_t *server, ID_T instanceId, int numData, lwm2m_data_t *dataArray, lwm2m_object_t *objectP)
The create callback function for the Lwm2m core.
Definition: Object.cpp:163
static uint8_t serverDelete_clb(lwm2m_context_t *contextP, lwm2m_server_t *server, ID_T instanceId, lwm2m_object_t *objectP)
The delete callback function for the Lwm2m core.
Definition: Object.cpp:179
WppClient & getClient()
Helpfull methods to get client instances.
Definition: Object.cpp:53
bool isExist(ID_T instanceID)
Checks if an instance exists.
Definition: Object.cpp:116
const ObjectInfo & getObjectInfo() const
Gets the object information.
Definition: Object.cpp:45
std::vector< Instance * >::iterator getInstIter(ID_T instanceID)
Gets the iterator to the instance.
Definition: Object.cpp:120
std::vector< Instance * > _instances
Definition: Object.h:246
Represents a client interface for Wpp library.
Definition: WppClient.h:37
The WppRegistry class represents a registry for managing LWM2M objects.
Definition: WppRegistry.h:53
The WppConnection class represents a connection interface for the Wpp library.
Definition: WppClient.cpp:14
uint16_t ID_T
Definition: WppTypes.h:15
OBJ_ID
Enumeration of object IDs in the Wpp library.
Definition: ObjectID.h:14
The ObjectInfo struct represents information about an object in the Wakaama data model.
Definition: ObjectInfo.h:16