8#ifndef OBSERVERS_H_INCLUDED
9#define OBSERVERS_H_INCLUDED
51 uint8_t _tokenLength = 0;
67 Observer(IPAddress
ip, uint16_t port,
const uint8_t *token, uint8_t tokenLength)
68 : _active(true), _ip(
ip), _port(port), _tokenLength(tokenLength)
89 this->_active = active;
125 return this->_tokenLength;
142 unsigned long currentTime = millis();
143 return currentTime & 0xFFFFFF;
178 return _observers[index];
188 return _observers[index];
215 ErrorCode add(IPAddress
ip, uint16_t port,
const uint8_t *token, uint8_t tokenLength)
218 for (
size_t i = 0; i < N; i++)
220 if (!this->_observers[i].isActive())
224 if (this->_observers[i].getIp() ==
ip &&
225 this->_observers[i].getPort() == port &&
226 this->_observers[i].getTokenLength() == tokenLength &&
227 memcmp(this->_observers[i].getToken(), token, tokenLength) == 0)
236 for (
size_t i = 0; i < N; i++)
238 if (!this->_observers[i].isActive())
241 this->_observers[i] =
Observer(
ip, port, token, tokenLength);
265 for (
size_t i = 0; i < N; i++)
267 if (!this->_observers[i].isActive())
269 if (this->_observers[i].getIp() ==
ip &&
270 this->_observers[i].getPort() == port &&
271 this->_observers[i].getTokenLength() == tokenLength &&
272 memcmp(this->_observers[i].getToken(), token, tokenLength) == 0)
A resource observer registry.
Definition Observers.h:163
ErrorCode remove(const Observer &observer)
Remove an observer from the registry.
Definition Observers.h:290
size_t length() const
Get the maximum number of observers that can be stored in the registry.
Definition Observers.h:196
ErrorCode remove(IPAddress ip, uint16_t port, const uint8_t *token, uint8_t tokenLength)
Remove an observer from the registry.
Definition Observers.h:262
ErrorCode add(IPAddress ip, uint16_t port, const uint8_t *token, uint8_t tokenLength)
Add a new observer to the registry.
Definition Observers.h:215
Observer & operator[](size_t index)
Get the observer at the given index.
Definition Observers.h:176
const Observer & operator[](size_t index) const
Get the observer at the given index.
Definition Observers.h:186
A remote CoAP observer, actively observing a resource.
Definition Observers.h:23
uint8_t getTokenLength() const
Get the token length used by the observer.
Definition Observers.h:123
Observer()
Default constructor that creates an inactive observer.
Definition Observers.h:57
const uint8_t * getToken() const
Get the token pointer used by the observer.
Definition Observers.h:114
uint16_t getPort() const
Get the port of the observer.
Definition Observers.h:105
Observer(IPAddress ip, uint16_t port, const uint8_t *token, uint8_t tokenLength)
Constructor that creates an active observer with the given parameters.
Definition Observers.h:67
void setActive(bool active)
Set the observer as active or inactive.
Definition Observers.h:87
bool isActive() const
Check if the observer is currently active.
Definition Observers.h:78
IPAddress getIp() const
Get the IP address of the observer.
Definition Observers.h:96
uint32_t getNextSequentialNumber()
The sequential number for notifications, as per specifications.
Definition Observers.h:140
constexpr uint8_t COAP_MAX_TOKEN_LENGTH
The maximum length of a CoAP token.
Definition Definitions.h:149
Namespace for the library.
Definition Definitions.h:155
ErrorCode
Error codes used in the library.
Definition Definitions.h:321
IPAddress ip(192, 168, 0, DEVICE_ID)