supla-device
Loading...
Searching...
No Matches
registry.h
1// SPDX-FileCopyrightText: AC SOFTWARE SP. Z O.O.
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#ifndef SRC_SUPLA_SUPLET_REGISTRY_H_
5#define SRC_SUPLA_SUPLET_REGISTRY_H_
6
7#include <stdint.h>
8#include <supla/suplet/definition.h>
9
10namespace Supla {
11namespace Suplet {
12
13class Registry {
14 public:
15 ~Registry();
16
17 bool add(const Definition *definition,
18 uint8_t maxInstances = 1,
19 bool supportsDownloadedDefinition = false);
20 bool remove(uint32_t definitionId, uint16_t definitionVersion = 0);
21 void clear();
22
23 uint8_t getCount() const;
24 const Definition *findDefinition(uint32_t definitionId,
25 uint16_t definitionVersion = 0) const;
26 bool getCapability(uint8_t index, Capability *capability) const;
27 bool getCapability(uint32_t definitionId,
28 uint16_t definitionVersion,
29 Capability *capability) const;
30
31 private:
32 struct Entry {
33 const Definition *definition = nullptr;
34 uint8_t maxInstances = 1;
35 uint8_t supportsDownloadedDefinition = 0;
36 Entry *next = nullptr;
37 };
38
39 bool contains(uint32_t definitionId, uint16_t definitionVersion) const;
40 Entry *first = nullptr;
41};
42
43} // namespace Suplet
44} // namespace Supla
45
46#endif // SRC_SUPLA_SUPLET_REGISTRY_H_
Definition registry.h:13
Definition definition.h:73
Definition definition.h:123