7#ifndef __PROSECCOAP_H__
8#define __PROSECCOAP_H__
112 uint16_t _currentOptionNumber;
173 size_t _messageLength;
188 ErrorCode _insert(
size_t startPosition,
const uint8_t *data,
size_t length);
201 ErrorCode _remove(
size_t startPosition,
size_t length);
211 static uint16_t _getNextId();
220 void _setId(uint16_t
id);
267 return this->_message;
313 return (this->_message[0] >> 6) & 0x03;
322 return this->_messageLength;
359 uint16_t
getId()
const;
429 bool matchesToken(
const uint8_t *token,
size_t length)
const;
679 struct RetransmissionEntry
694 unsigned long nextAttemptDeadline = 0;
705 RetransmissionEntry() =
default;
719 void set(
Coap::Message message, IPAddress ip, uint16_t port);
739 unsigned long getDeadline()
const
741 return this->nextAttemptDeadline;
749 void setAsCompleted()
771 class RetransmissionQueue
780 RetransmissionQueue() =
default;
840 Detail::UriRegistry _serverRegistry;
842 Detail::RetransmissionQueue _retransmissionQueue;
860 Node(UDP &
udp, uint16_t port) : _udp(&
udp), _port(port), _responseHandler(nullptr), _retransmissionQueue() {}
This header file contains detail functions, not meant for public use.
A CoAP message.
Definition ProsecCoAP.h:161
uint16_t getId() const
Get the message ID.
Definition ProsecCoAP.cpp:147
void setCode(MessageCode code)
Set the message code.
Definition ProsecCoAP.cpp:226
MessageCode getCode() const
Get the message code.
Definition ProsecCoAP.cpp:231
ErrorCode getObserveValue(uint32_t &observeValue)
Extract the Observe option value, if present.
Definition ProsecCoAP.cpp:868
MessageType getType() const
Get the message type.
Definition ProsecCoAP.cpp:219
ErrorCode getPath(String *path) const
Retrieve all the URI path and URI query options from the message and concatenate them into a single s...
Definition ProsecCoAP.cpp:925
size_t getLength() const
Get the message length.
Definition ProsecCoAP.h:320
ErrorCode getPayload(const uint8_t *&payload, size_t &length) const
Get the payload from the message.
Definition ProsecCoAP.cpp:747
size_t getTokenLength() const
Get the current token length.
Definition ProsecCoAP.cpp:236
static ErrorCode fromUdp(UDP *udp, Message &message)
Build a CoAP message reading from a UDP instance.
Definition ProsecCoAP.cpp:44
uint8_t getVersion() const
Get the CoAP version of this message.
Definition ProsecCoAP.h:311
ErrorCode addPort(uint16_t port)
Add the Uri-Port option to the message.
Definition ProsecCoAP.cpp:558
ErrorCode addPayload(const uint8_t *payload, size_t length)
Add a payload to the message.
Definition ProsecCoAP.cpp:785
ErrorCode addOption(Option option)
Add an option to the message.
Definition ProsecCoAP.h:473
ErrorCode addOption(OptionNumber number, const uint8_t *value, size_t length)
Add an option to the message.
Definition ProsecCoAP.cpp:300
OptionIterator getOptionIterator() const
Return an iterator over the message options.
Definition ProsecCoAP.cpp:539
Message()
Builds a default CoAP message.
Definition ProsecCoAP.h:232
const uint8_t * asRaw() const
Get the raw binary representation of the message.
Definition ProsecCoAP.h:265
ErrorCode buildResponse(MessageCode code, Message &response) const
Build a response message based on a request message.
Definition ProsecCoAP.cpp:77
const uint8_t * getToken() const
Get the pointer to the current token.
Definition ProsecCoAP.cpp:282
ErrorCode addPath(const char *path)
Add the URI path and query to the message.
Definition ProsecCoAP.cpp:571
bool isObserveDeregister()
Check if the message is an Observe deregister GET request.
Definition ProsecCoAP.cpp:911
ErrorCode buildNotification(Observer &observer, Message ¬ification) const
Build a notification message for the given observer.
Definition ProsecCoAP.cpp:100
ErrorCode setToken(const uint8_t *token, size_t length)
Sets the token of the message with the given value and length.
Definition ProsecCoAP.cpp:242
bool isObserveRegister()
Check if the message is an Observe register GET request.
Definition ProsecCoAP.cpp:897
ErrorCode addRandomToken(size_t length)
Add a token of the given length to the message.
Definition ProsecCoAP.cpp:266
bool matchesToken(const uint8_t *token, size_t length) const
Check if the message token matches the given token and length.
Definition ProsecCoAP.cpp:289
ErrorCode addHost(IPAddress ip)
Add the Uri-Host option to the message.
Definition ProsecCoAP.cpp:545
void setType(MessageType type)
Set the message type.
Definition ProsecCoAP.cpp:211
Message(MessageType type, MessageCode code)
Builds a CoAP message with the given type and code.
Definition ProsecCoAP.h:244
The CoAP node that runs on this device.
Definition ProsecCoAP.h:831
Node(UDP &udp, uint16_t port)
Build a CoAP node using the given UDP instance and port.
Definition ProsecCoAP.h:860
ErrorCode loop()
Perform a single iteration of the CoAP event loop.
Definition ProsecCoAP.cpp:1067
ErrorCode start()
Start the CoAP instance.
Definition ProsecCoAP.cpp:1054
void setResponseHandler(Callback handler)
Set the response callback.
Definition ProsecCoAP.h:895
uint16_t getPort() const
Get the local port used by this CoAP node.
Definition ProsecCoAP.h:866
ErrorCode sendMessage(const Message &message, IPAddress ip, uint16_t port)
Send a CoAP message to the specified IP address and port.
Definition ProsecCoAP.cpp:1168
ErrorCode serve(const char *path, Callback callback)
Serve a given URI path with the specified callback.
Definition ProsecCoAP.cpp:1049
Node(UDP &udp)
Build a CoAP node using the given UDP instance.
Definition ProsecCoAP.h:852
A remote CoAP observer, actively observing a resource.
Definition Observers.h:23
The option iterator.
Definition ProsecCoAP.h:95
OptionIterator(const Message &message)
Initialize the option iterator for the given message.
Definition ProsecCoAP.cpp:532
ErrorCode next(Option &option)
Get the next option in the message.
Definition ProsecCoAP.cpp:645
#define COAP_ACK_MAX_TIMEOUT_MS
The precomputed maximum ACK timeout derived from the minimum timeout and the random factor.
Definition Definitions.h:85
#define COAP_MAX_MESSAGE_SIZE
Maximum size of a CoAP message in bytes.
Definition Definitions.h:46
#define COAP_MAX_RETRANSMIT
The maximum number of retransmission attempts for confirmable messages. Default to 4 as per RFC 7252,...
Definition Definitions.h:92
#define COAP_CONFIRMABLE_MESSAGE_QUEUE_SIZE
The maximum number of confirmable messages that are stored for retransmission.
Definition Definitions.h:104
ErrorCode getRandomToken(size_t length, uint8_t *buffer)
Generate a random token of the given length.
Definition ProsecCoAP.cpp:7
constexpr uint16_t COAP_DEFAULT_PORT
The default CoAP port number.
Definition Definitions.h:139
Namespace for the library.
Definition Definitions.h:155
void(* Callback)(Message &message, IPAddress ip, uint16_t port)
Callback function type for handling incoming messages.
Definition Definitions.h:355
ErrorCode
Error codes used in the library.
Definition Definitions.h:321
MessageType
The CoAP message type.
Definition Definitions.h:164
OptionNumber
Definition Definitions.h:255
MessageCode
The CoAP code.
Definition Definitions.h:186
ContentFormat
The CoAP content format.
Definition Definitions.h:286
WiFiUDP udp
Definition serverEsp32.ino:17
IPAddress ip(192, 168, 0, DEVICE_ID)
A CoAP option.
Definition ProsecCoAP.h:59
Option(OptionNumber number, const uint8_t *value, size_t length)
Build a CoAP option.
Definition ProsecCoAP.h:84
size_t length
Length of the option value in bytes.
Definition ProsecCoAP.h:75
OptionNumber number
The option number.
Definition ProsecCoAP.h:65
const uint8_t * value
Pointer to the option value.
Definition ProsecCoAP.h:71
Option()
Definition ProsecCoAP.h:77