Friendly LWM2M client
WppRegistry.cpp
Go to the documentation of this file.
1 #include "WppRegistry.h"
2 #include "WppLogs.h"
3 #include "liblwm2m.h"
4 
5 namespace wpp {
6 
7 WppRegistry::WppRegistry(lwm2m_context_t &context): _context(context) {
8  WPP_LOGD(TAG_WPP_REG, "Creating registry instance");
9 
10  /* ---------- Mandatory objects init block begin ---------- */
11  #ifdef OBJ_M_3_DEVICE
12  _objects.push_back(new ObjectImpl<Device>(_context, DEVICE_OBJ_INFO));
13  #endif
14  #ifdef OBJ_M_1_LWM2M_SERVER
15  _objects.push_back(new ObjectImpl<Lwm2mServer>(_context, LWM2M_SERVER_OBJ_INFO));
16  #endif
17  #ifdef OBJ_M_0_LWM2M_SECURITY
18  _objects.push_back(new ObjectImpl<Lwm2mSecurity>(_context, LWM2M_SECURITY_OBJ_INFO));
19  #endif
20  /* ---------- Mandatory objects init block end ---------- */
21 
22  /* ---------- Optional objects init block begin ---------- */
23  #ifdef OBJ_O_4_CONNECTIVITY_MONITORING
25  #endif
26  #ifdef OBJ_O_2_LWM2M_ACCESS_CONTROL
27  _objects.push_back(new ObjectImpl<Lwm2mAccessControl>(_context, LWM2M_ACCESS_CONTROL_OBJ_INFO));
28  #endif
29  #if OBJ_O_3339_AUDIO_CLIP
30  _objects.push_back(new ObjectImpl<AudioClip>(_context, AUDIO_CLIP_OBJ_INFO));
31  #endif
32  #if OBJ_O_5_FIRMWARE_UPDATE
33  _objects.push_back(new ObjectImpl<FirmwareUpdate>(_context, FIRMWARE_UPDATE_OBJ_INFO));
34  #endif
35  /* ---------- Optional objects init block end ---------- */
36 }
37 
39  for (auto obj : _objects) {
40  delete obj;
41  }
42  _objects.clear();
43 }
44 
46  WPP_LOGD(TAG_WPP_CLIENT, "Register object with id: %d", object.getObjectID());
47  return !lwm2m_add_object(&_context, &object.getLwm2mObject());
48 }
49 
51  WPP_LOGD(TAG_WPP_CLIENT, "Deregister object with id: %d", object.getObjectID());
52  return !lwm2m_remove_object(&_context, object.getLwm2mObject().objID);
53 }
54 
56  lwm2m_object_t * lwm2m_object = (lwm2m_object_t *)LWM2M_LIST_FIND(_context.objectList, object.getLwm2mObject().objID);
57  return lwm2m_object != NULL;
58 }
59 
61  return object(objId) != NULL;
62 }
63 
65  auto finder = [objId](const Object *obj) -> bool { return obj->getObjectID() == objId; };
66  auto objIter = std::find_if(_objects.begin(), _objects.end(), finder);
67  return objIter != _objects.end()? *objIter : NULL;
68 }
69 
70 std::vector<Object *> & WppRegistry::objects() {
71  return _objects;
72 }
73 
74 /* ---------- Mandatory objects method block begin ---------- */
75 #ifdef OBJ_M_3_DEVICE
77  return *object(OBJ_ID::DEVICE);
78 }
79 #endif
80 #ifdef OBJ_M_1_LWM2M_SERVER
83 }
84 #endif
85 #ifdef OBJ_M_0_LWM2M_SECURITY
88 }
89 #endif
90 /* ---------- Mandatory objects method block end ---------- */
91 
92 /* ---------- Optional objects method block begin ---------- */
93 #ifdef OBJ_O_4_CONNECTIVITY_MONITORING
96 }
97 #endif
98 #ifdef OBJ_O_2_LWM2M_ACCESS_CONTROL
101 }
102 #endif
103 #if OBJ_O_3339_AUDIO_CLIP
104 Object & WppRegistry::audioClip() {
105  return *object(OBJ_ID::AUDIO_CLIP);
106 }
107 #endif
108 #if OBJ_O_5_FIRMWARE_UPDATE
111 }
112 #endif
113 /* ---------- Optional objects method block end ---------- */
114 
115 } //wpp
#define TAG_WPP_CLIENT
Definition: WppLogs.h:8
#define TAG_WPP_REG
Definition: WppLogs.h:10
#define WPP_LOGD(TAG, FMT,...)
Definition: WppLogs.h:31
The ObjectImpl class is a template class that represents an implementation of an object in the Wakaam...
Definition: ObjectImpl.h:25
The Object class implements manipulation with Instance interface class and its inheritors.
Definition: Object.h:32
OBJ_ID getObjectID() const
Gets the object ID.
Definition: Object.cpp:37
WppRegistry(lwm2m_context_t &context)
Definition: WppRegistry.cpp:7
Object & firmwareUpdate()
Object & device()
Definition: WppRegistry.cpp:76
std::vector< Object * > & objects()
Gets all registered objects.
Definition: WppRegistry.cpp:70
bool isExist(OBJ_ID objId)
Checks if an Object with the given objId exists in the registry.
Definition: WppRegistry.cpp:60
Object & connectivityMonitoring()
Definition: WppRegistry.cpp:94
bool isObjRegistered(Object &object)
Checks if an Object is registered in the registry.
Definition: WppRegistry.cpp:55
Object & lwm2mSecurity()
Definition: WppRegistry.cpp:86
bool registerObj(Object &object)
Registers an Object in the registry.
Definition: WppRegistry.cpp:45
Object & lwm2mAccessControl()
Definition: WppRegistry.cpp:99
Object & lwm2mServer()
Definition: WppRegistry.cpp:81
Object * object(OBJ_ID objId)
Retrieves a pointer to the Object with the given objId.
Definition: WppRegistry.cpp:64
bool deregisterObj(Object &object)
Deregisters an Object from the registry.
Definition: WppRegistry.cpp:50
The WppConnection class represents a connection interface for the Wpp library.
Definition: WppClient.cpp:14
const ObjectInfo LWM2M_ACCESS_CONTROL_OBJ_INFO
const ObjectInfo FIRMWARE_UPDATE_OBJ_INFO
const ObjectInfo CONNECTIVITY_MONITORING_OBJ_INFO
const ObjectInfo LWM2M_SERVER_OBJ_INFO
const ObjectInfo LWM2M_SECURITY_OBJ_INFO
const ObjectInfo DEVICE_OBJ_INFO
Definition: DeviceInfo.h:15
OBJ_ID
Enumeration of object IDs in the Wpp library.
Definition: ObjectID.h:14
@ LWM2M_SECURITY
Definition: ObjectID.h:23
@ LWM2M_SERVER
Definition: ObjectID.h:20
@ CONNECTIVITY_MONITORING
Definition: ObjectID.h:29
@ LWM2M_ACCESS_CONTROL
Definition: ObjectID.h:32
@ DEVICE
Definition: ObjectID.h:17
@ FIRMWARE_UPDATE
Definition: ObjectID.h:38