Provides CoAP functionality optimized for minimal resource usage.
More...
Provides CoAP functionality optimized for minimal resource usage.
nanocoap provides a low-level interface to CoAP messaging to reduce
and minimize resource usage. It also provides foundational structures
and functions used by gcoap, RIOT's higher level interface.
nanocoap includes both server-side request handling and response generation, and client-side request generation.
Read Request
For a server, nanocoap provides coap_parse()
to read a message and generate structures that organize the message content. The primary structure is a coap_pkt_t
, with elements for header, option, and payload information.
The table below shows function name templates and attributes for access to the sections of the parsed message.
Section | Description |
Header | coap_get_xxx() , like coap_get_type() and coap_get_token_len() |
Options | coap_opt_get_xxx() , for common options by name, like coap_opt_get_uri_path() |
Options | coap_opt_get_xxx() , for any option by value type, like coap_opt_get_string() |
Payload | coap_pkt_t payload and payload_len |
Write Response
The simplest responses may be generated with a single call to coap_reply_simple(). This function copies the provided payload into the buffer.
Beyond simple responses, coap_build_reply() begins a response by writing the header. The user then may write options and the payload as described below.
Write Request
As a client, first write the request header with coap_build_hdr(). Then choose a mechanism below for writing options and the payload, if any.
Write Options and Payload
For both server responses and client requests, CoAP uses an Option
mechanism to encode message metadata that is not required for each
message. For example, the resource URI path is required only for a
request, and is encoded as the Uri-Path option.
nanocoap provides two APIs for writing CoAP options:
- a convenient API that uses a coap_pkt_t struct to track each option as it is written, and can anticipate a buffer overrun
- a minimal API that requires only a reference to the buffer; however,
the caller must remember and provide the last option number written, as
well as the buffer position
In either case, the caller must write options in order by
option number (see "CoAP option numbers"). To manage resource use,
nanocoap provides macros to enable each API.
Higher-level, struct-based API
First, use coap_pkt_init() to initialize the coap_pkt_t struct, including the array of options.
Next, use the coap_opt_add_xxx()
functions to write each option. These functions are provided in two flavors:
- by name, for commonly used options, like coap_opt_add_ct()
- by value type, for any option, like coap_opt_add_uint()
Finally, write any message payload at the coap_pkt_t payload pointer attribute. The payload_len attribute provides the available length in the buffer.
This API is enabled by the COAP_WRITE_OPTIONS_STRUCT macro.
Minimal, buffer-based API
Use the coap_opt_put_xxx() functions, which are provided by value
type. While writing options, use the return value to track the space
remaining in the buffer. Finally, write the payload, if any.
This API is enabled by the COAP_WRITE_OPTIONS_BUFFER macro.
|
int | coap_parse (coap_pkt_t *pkt, uint8_t *buf, size_t len) |
| Parse a CoAP PDU. More...
|
|
ssize_t | coap_build_reply (coap_pkt_t *pkt, unsigned code, uint8_t *rbuf, unsigned rlen, unsigned payload_len) |
| Build reply to CoAP request. More...
|
|
ssize_t | coap_reply_simple (coap_pkt_t *pkt, unsigned code, uint8_t *buf, size_t len, unsigned ct, const uint8_t *payload, uint8_t payload_len) |
| Create CoAP reply (convenience function) More...
|
|
ssize_t | coap_handle_req (coap_pkt_t *pkt, uint8_t *resp_buf, unsigned resp_buf_len) |
| Handle incoming CoAP request. More...
|
|
ssize_t | coap_build_hdr (coap_hdr_t *hdr, unsigned type, uint8_t *token, size_t token_len, unsigned code, uint16_t id) |
| Builds a CoAP header. More...
|
|
size_t | coap_put_option (uint8_t *buf, uint16_t lastonum, uint16_t onum, uint8_t *odata, size_t olen) |
| Insert a CoAP option into buffer. More...
|
|
size_t | coap_put_option_ct (uint8_t *buf, uint16_t lastonum, uint16_t content_type) |
| Insert content type option into buffer. More...
|
|
size_t | coap_put_option_uri (uint8_t *buf, uint16_t lastonum, const char *uri, uint16_t optnum) |
| Insert URI encoded option into buffer. More...
|
|
int | coap_get_blockopt (coap_pkt_t *pkt, uint16_t option, uint32_t *blknum, unsigned *szx) |
| Generic block option getter. More...
|
|
int | coap_get_block1 (coap_pkt_t *pkt, coap_block1_t *block1) |
| Block1 option getter. More...
|
|
size_t | coap_put_option_block1 (uint8_t *buf, uint16_t lastonum, unsigned blknum, unsigned szx, int more) |
| Insert block1 option into buffer. More...
|
|
size_t | coap_put_block1_ok (uint8_t *pkt_pos, coap_block1_t *block1, uint16_t lastonum) |
| Insert block1 option into buffer (from coap_block1_t) More...
|
|
unsigned | coap_get_content_type (coap_pkt_t *pkt) |
| Get content type from packet. More...
|
|
int | coap_get_uri (coap_pkt_t *pkt, uint8_t *target) |
| Get the packet's request URI. More...
|
|
static unsigned | coap_szx2size (unsigned szx) |
| Helper to decode SZX value to size in bytes. More...
|
|
static unsigned | coap_get_ver (coap_pkt_t *pkt) |
| Get the CoAP version number. More...
|
|
static unsigned | coap_get_type (coap_pkt_t *pkt) |
| Get the message type. More...
|
|
static unsigned | coap_get_token_len (coap_pkt_t *pkt) |
| Get a message's token length [in byte]. More...
|
|
static unsigned | coap_get_code_class (coap_pkt_t *pkt) |
| Get a message's code class (3 most significant bits of code) More...
|
|
static unsigned | coap_get_code_detail (coap_pkt_t *pkt) |
| Get a message's code detail (5 least significant bits of code) More...
|
|
static unsigned | coap_get_code_raw (coap_pkt_t *pkt) |
| Get a message's raw code (class + detail) More...
|
|
static unsigned | coap_get_code (coap_pkt_t *pkt) |
| Get a message's code in decimal format ((class * 100) + detail) More...
|
|
static unsigned | coap_get_id (coap_pkt_t *pkt) |
| Get the message ID of the given CoAP packet. More...
|
|
static unsigned | coap_get_total_hdr_len (coap_pkt_t *pkt) |
| Get the total header length (4-byte header + token length) More...
|
|
static uint8_t | coap_code (unsigned class, unsigned detail) |
| Encode given code class and code detail to raw code. More...
|
|
static void | coap_hdr_set_code (coap_hdr_t *hdr, uint8_t code) |
| Write the given raw message code to given CoAP header. More...
|
|
static void | coap_hdr_set_type (coap_hdr_t *hdr, unsigned type) |
| Set the message type for the given CoAP header. More...
|
|
static unsigned | coap_method2flag (unsigned code) |
| Convert message code (request method) into a corresponding bit field. More...
|
|
static bool | coap_has_observe (coap_pkt_t *pkt) |
| Identifies a packet containing an observe option. More...
|
|
static void | coap_clear_observe (coap_pkt_t *pkt) |
| Clears the observe option value from a packet. More...
|
|
static uint32_t | coap_get_observe (coap_pkt_t *pkt) |
| Get the value of the observe option from the given packet. More...
|
|
ssize_t | coap_well_known_core_default_handler (coap_pkt_t *pkt, uint8_t *buf, size_t len, void *context) |
| Reference to the default .well-known/core handler defined by the application.
|
|
|
#define | NANOCOAP_NOPTS_MAX (16) |
|
#define | NANOCOAP_URI_MAX (64) |
|
|
#define | COAP_OPT_URI_HOST (3) |
|
#define | COAP_OPT_OBSERVE (6) |
|
#define | COAP_OPT_URI_PATH (11) |
|
#define | COAP_OPT_CONTENT_FORMAT (12) |
|
#define | COAP_OPT_URI_QUERY (15) |
|
#define | COAP_OPT_BLOCK2 (23) |
|
#define | COAP_OPT_BLOCK1 (27) |
|
|
#define | COAP_REQ (0) |
|
#define | COAP_RESP (2) |
|
#define | COAP_RST (3) |
|
|
#define | COAP_TYPE_CON (0) |
|
#define | COAP_TYPE_NON (1) |
|
#define | COAP_TYPE_ACK (2) |
|
#define | COAP_TYPE_RST (3) |
|
|
#define | COAP_CLASS_REQ (0) |
|
#define | COAP_METHOD_GET (1) |
|
#define | COAP_METHOD_POST (2) |
|
#define | COAP_METHOD_PUT (3) |
|
#define | COAP_METHOD_DELETE (4) |
|
|
#define | COAP_GET (0x1) |
|
#define | COAP_POST (0x2) |
|
#define | COAP_PUT (0x4) |
|
#define | COAP_DELETE (0x8) |
|
|
#define | COAP_CODE_EMPTY (0) |
|
|
#define | COAP_CLASS_SUCCESS (2) |
|
#define | COAP_CODE_CREATED ((2 << 5) | 1) |
|
#define | COAP_CODE_DELETED ((2 << 5) | 2) |
|
#define | COAP_CODE_VALID ((2 << 5) | 3) |
|
#define | COAP_CODE_CHANGED ((2 << 5) | 4) |
|
#define | COAP_CODE_204 ((2 << 5) | 4) |
|
#define | COAP_CODE_CONTENT ((2 << 5) | 5) |
|
#define | COAP_CODE_205 ((2 << 5) | 5) |
|
#define | COAP_CODE_231 ((2 << 5) | 31) |
|
|
#define | COAP_CLASS_CLIENT_FAILURE (4) |
|
#define | COAP_CODE_BAD_REQUEST ((4 << 5) | 0) |
|
#define | COAP_CODE_UNAUTHORIZED ((4 << 5) | 1) |
|
#define | COAP_CODE_BAD_OPTION ((4 << 5) | 2) |
|
#define | COAP_CODE_FORBIDDEN ((4 << 5) | 3) |
|
#define | COAP_CODE_PATH_NOT_FOUND ((4 << 5) | 4) |
|
#define | COAP_CODE_404 ((4 << 5) | 4) |
|
#define | COAP_CODE_METHOD_NOT_ALLOWED ((4 << 5) | 5) |
|
#define | COAP_CODE_NOT_ACCEPTABLE ((4 << 5) | 6) |
|
#define | COAP_CODE_REQUEST_ENTITY_INCOMPLETE ((4 << 5) | 8) |
|
#define | COAP_CODE_PRECONDITION_FAILED ((4 << 5) | 0xC) |
|
#define | COAP_CODE_REQUEST_ENTITY_TOO_LARGE ((4 << 5) | 0xD) |
|
#define | COAP_CODE_UNSUPPORTED_CONTENT_FORMAT ((4 << 5) | 0xF) |
|
|
#define | COAP_CLASS_SERVER_FAILURE (5) |
|
#define | COAP_CODE_INTERNAL_SERVER_ERROR ((5 << 5) | 0) |
|
#define | COAP_CODE_NOT_IMPLEMENTED ((5 << 5) | 1) |
|
#define | COAP_CODE_BAD_GATEWAY ((5 << 5) | 2) |
|
#define | COAP_CODE_SERVICE_UNAVAILABLE ((5 << 5) | 3) |
|
#define | COAP_CODE_GATEWAY_TIMEOUT ((5 << 5) | 4) |
|
#define | COAP_CODE_PROXYING_NOT_SUPPORTED ((5 << 5) | 5) |
|
|
#define | COAP_CT_LINK_FORMAT (40) |
|
#define | COAP_CT_XML (41) |
|
#define | COAP_CT_OCTET_STREAM (42) |
|
#define | COAP_CT_EXI (47) |
|
#define | COAP_CT_JSON (50) |
|
|
#define | COAP_FORMAT_TEXT (0) |
|
#define | COAP_FORMAT_LINK (40) |
|
#define | COAP_FORMAT_OCTET (42) |
|
#define | COAP_FORMAT_JSON (50) |
|
#define | COAP_FORMAT_CBOR (60) |
|
#define | COAP_FORMAT_NONE (65535) |
| nanocoap-specific value to indicate no format specified. More...
|
|
|
#define | COAP_OBS_REGISTER (0) |
|
#define | COAP_OBS_DEREGISTER (1) |
|
|
#define | COAP_ACK_TIMEOUT (2U) |
|
#define | COAP_RANDOM_FACTOR (1.5) |
|
#define | COAP_ACK_VARIANCE (1U) |
| Maximum variation for confirmable timeout. More...
|
|
#define | COAP_MAX_RETRANSMIT (4) |
|
#define | COAP_NSTART (1) |
|
#define | COAP_DEFAULT_LEISURE (5) |
|
|
#define | COAP_BLOCKWISE_NUM_OFF (4) |
|
#define | COAP_BLOCKWISE_MORE_OFF (3) |
|
#define | COAP_BLOCKWISE_SZX_MASK (0x07) |
|
#define | COAP_BLOCKWISE_SZX_MAX (7) |
|
#define COAP_ACK_VARIANCE (1U) |
Maximum variation for confirmable timeout.
Must be an integer, defined as:
(COAP_ACK_TIMEOUT * COAP_RANDOM_FACTOR) - COAP_ACK_TIMEOUT
Definition at line 294 of file nanocoap.h.
#define COAP_FORMAT_NONE (65535) |
nanocoap-specific value to indicate no format specified.
Definition at line 269 of file nanocoap.h.
#define COAP_WELL_KNOWN_CORE_DEFAULT_HANDLER |
Value:{ \
.path = "/.well-known/core", \
.methods = COAP_GET, \
}
ssize_t coap_well_known_core_default_handler(coap_pkt_t *pkt, uint8_t *buf, size_t len, void *context)
Reference to the default .well-known/core handler defined by the application.
Resource definition for the default .well-known/core handler.
Definition at line 835 of file nanocoap.h.
ssize_t coap_build_hdr |
( |
coap_hdr_t * |
hdr, |
|
|
unsigned |
type, |
|
|
uint8_t * |
token, |
|
|
size_t |
token_len, |
|
|
unsigned |
code, |
|
|
uint16_t |
id |
|
) |
| |
Builds a CoAP header.
Caller must ensure hdr
can hold the header and the full token!
- Parameters
-
[out] | hdr | hdr to fill |
[in] | type | CoAP packet type (e.g., COAP_TYPE_CON, ...) |
[in] | token | token |
[in] | token_len | length of token |
[in] | code | CoAP code (e.g., COAP_CODE_204, ...) |
[in] | id | CoAP request id |
- Returns
- length of resulting header
ssize_t coap_build_reply |
( |
coap_pkt_t * |
pkt, |
|
|
unsigned |
code, |
|
|
uint8_t * |
rbuf, |
|
|
unsigned |
rlen, |
|
|
unsigned |
payload_len |
|
) |
| |
Build reply to CoAP request.
This function can be used to create a reply to any CoAP request
packet. It will create the reply packet header based on parameters from
the request (e.g., id, token). Passing a non-zero payload_len
will ensure the payload fits into the buffer along with the header.
- Parameters
-
[in] | pkt | packet to reply to |
[in] | code | reply code (e.g., COAP_CODE_204) |
[out] | rbuf | buffer to write reply to |
[in] | rlen | size of rbuf |
[in] | payload_len | length of payload |
- Returns
- size of reply packet on success
-
<0 on error
static void coap_clear_observe |
( |
coap_pkt_t * |
pkt | ) |
|
|
inlinestatic |
Clears the observe option value from a packet.
- Parameters
-
Definition at line 806 of file nanocoap.h.
static uint8_t coap_code |
( |
unsigned |
class, |
|
|
unsigned |
detail |
|
) |
| |
|
inlinestatic |
Encode given code class and code detail to raw code.
- Parameters
-
[in] | class | message code class |
[in] | detail | message code detail |
- Returns
- raw message code
Definition at line 742 of file nanocoap.h.
Block1 option getter.
This function gets a CoAP packet's block1 option and parses it into a helper structure.
If no block1 option is present in pkt
, the values in block1
will be initialized with zero. That implies both block1->offset and
block1->more are also valid in that case, as packet with offset==0
and more==0 means it contains all the payload for the corresponding
request.
- Parameters
-
[in] | pkt | pkt to work on |
[out] | block1 | ptr to preallocated coap_block1_t structure |
- Returns
- 0 if block1 option not present
-
1 if structure has been filled
int coap_get_blockopt |
( |
coap_pkt_t * |
pkt, |
|
|
uint16_t |
option, |
|
|
uint32_t * |
blknum, |
|
|
unsigned * |
szx |
|
) |
| |
Generic block option getter.
- Parameters
-
[in] | pkt | pkt to work on |
[in] | option | actual block option number to get |
[out] | blknum | block number |
[out] | szx | SZX value |
- Returns
- -1 if option not found
-
0 if more flag is not set
-
1 if more flag is set
Get a message's code in decimal format ((class * 100) + detail)
- Parameters
-
- Returns
- message code in decimal format
Definition at line 705 of file nanocoap.h.
static unsigned coap_get_code_class |
( |
coap_pkt_t * |
pkt | ) |
|
|
inlinestatic |
Get a message's code class (3 most significant bits of code)
- Parameters
-
- Returns
- message code class
Definition at line 669 of file nanocoap.h.
static unsigned coap_get_code_detail |
( |
coap_pkt_t * |
pkt | ) |
|
|
inlinestatic |
Get a message's code detail (5 least significant bits of code)
- Parameters
-
- Returns
- message code detail
Definition at line 681 of file nanocoap.h.
static unsigned coap_get_code_raw |
( |
coap_pkt_t * |
pkt | ) |
|
|
inlinestatic |
Get a message's raw code (class + detail)
- Parameters
-
- Returns
- raw message code
Definition at line 693 of file nanocoap.h.
unsigned coap_get_content_type |
( |
coap_pkt_t * |
pkt | ) |
|
Get content type from packet.
- Parameters
-
- Returns
- the packet's content type value if included, COAP_FORMAT_NONE otherwise
Get the message ID of the given CoAP packet.
- Parameters
-
- Returns
- message ID
Definition at line 717 of file nanocoap.h.
static uint32_t coap_get_observe |
( |
coap_pkt_t * |
pkt | ) |
|
|
inlinestatic |
Get the value of the observe option from the given packet.
- Parameters
-
- Returns
- value of the observe option
Definition at line 818 of file nanocoap.h.
static unsigned coap_get_token_len |
( |
coap_pkt_t * |
pkt | ) |
|
|
inlinestatic |
Get a message's token length [in byte].
- Parameters
-
- Returns
- length of token in the given message (0-8 byte)
Definition at line 657 of file nanocoap.h.
static unsigned coap_get_total_hdr_len |
( |
coap_pkt_t * |
pkt | ) |
|
|
inlinestatic |
Get the total header length (4-byte header + token length)
- Parameters
-
- Returns
- total header length
Definition at line 729 of file nanocoap.h.
Get the message type.
- Parameters
-
- Returns
- COAP_TYPE_CON
-
COAP_TYPE_NON
-
COAP_TYPE_ACK
-
COAP_TYPE_RST
Definition at line 645 of file nanocoap.h.
int coap_get_uri |
( |
coap_pkt_t * |
pkt, |
|
|
uint8_t * |
target |
|
) |
| |
Get the packet's request URI.
This function decodes the pkt's URI option into a "/"-seperated and NULL-terminated string.
Caller must ensure target
can hold at least NANOCOAP_URI_MAX bytes!
- Parameters
-
[in] | pkt | pkt to work on |
[out] | target | buffer for target URI |
- Returns
- -ENOSPC if URI option is larger than NANOCOAP_URI_MAX
-
nr of bytes written to
target
(including '\0')
Get the CoAP version number.
- Parameters
-
- Returns
- CoAP version number
Definition at line 630 of file nanocoap.h.
ssize_t coap_handle_req |
( |
coap_pkt_t * |
pkt, |
|
|
uint8_t * |
resp_buf, |
|
|
unsigned |
resp_buf_len |
|
) |
| |
Handle incoming CoAP request.
This function will find the correct handler, call it and write the reply into resp_buf
.
- Parameters
-
[in] | pkt | pointer to (parsed) CoAP packet |
[out] | resp_buf | buffer for response |
[in] | resp_buf_len | size of response buffer |
- Returns
- size of reply packet on success
-
<0 on error
Identifies a packet containing an observe option.
- Parameters
-
- Returns
- true if observe value is set
-
false if not
Definition at line 796 of file nanocoap.h.
static void coap_hdr_set_code |
( |
coap_hdr_t * |
hdr, |
|
|
uint8_t |
code |
|
) |
| |
|
inlinestatic |
Write the given raw message code to given CoAP header.
- Parameters
-
[out] | hdr | CoAP header to write to |
[in] | code | raw message code |
Definition at line 753 of file nanocoap.h.
static void coap_hdr_set_type |
( |
coap_hdr_t * |
hdr, |
|
|
unsigned |
type |
|
) |
| |
|
inlinestatic |
Set the message type for the given CoAP header.
- Precondition
- (type := [0-3])
- Parameters
-
[out] | hdr | CoAP header to write |
[in] | type | message type as integer value [0-3] |
Definition at line 766 of file nanocoap.h.
static unsigned coap_method2flag |
( |
unsigned |
code | ) |
|
|
inlinestatic |
Convert message code (request method) into a corresponding bit field.
- Parameters
-
[in] | code | request code denoting the request method |
- Returns
- bit field corresponding to the given request method
Definition at line 782 of file nanocoap.h.
Parse a CoAP PDU.
This function parses a raw CoAP PDU from buf
with size len
and fills the structure pointed to by pkt
. pkt
must point to a preallocated coap_pkt_t structure.
- Parameters
-
[out] | pkt | structure to parse into |
[in] | buf | pointer to raw packet data |
[in] | len | length of packet at buf |
- Returns
- 0 on success
-
<0 on error
Insert block1 option into buffer (from coap_block1_t)
This function is wrapper around coap_put_option_block1(), taking its arguments from a coap_block1_t struct.
It will write option Nr. 27 (COAP_OPT_BLOCK1).
It is safe to be called when block1
was generated for a non-blockwise request.
- Parameters
-
[in] | pkt_pos | buffer to write to |
[in] | block1 | ptr to block1 struct (created by coap_get_block1()) |
[in] | lastonum | last option number (must be < 27) |
- Returns
- amount of bytes written to
pkt_pos
size_t coap_put_option |
( |
uint8_t * |
buf, |
|
|
uint16_t |
lastonum, |
|
|
uint16_t |
onum, |
|
|
uint8_t * |
odata, |
|
|
size_t |
olen |
|
) |
| |
Insert a CoAP option into buffer.
This function writes a CoAP option with nr. onum
to buf
. It handles calculating the option delta (from lastonum
), encoding the length from olen
and copying the option data from odata
.
- Parameters
-
[out] | buf | buffer to write to |
[in] | lastonum | number of previous option (for delta calculation), or 0 for first option |
[in] | onum | number of option |
[in] | odata | ptr to raw option data (or NULL) |
[in] | olen | length of odata (if any) |
- Returns
- amount of bytes written to
buf
size_t coap_put_option_block1 |
( |
uint8_t * |
buf, |
|
|
uint16_t |
lastonum, |
|
|
unsigned |
blknum, |
|
|
unsigned |
szx, |
|
|
int |
more |
|
) |
| |
Insert block1 option into buffer.
- Parameters
-
[out] | buf | buffer to write to |
[in] | lastonum | number of previous option (for delta calculation), must be < 27 |
[in] | blknum | block number |
[in] | szx | SXZ value |
[in] | more | more flag (1 or 0) |
- Returns
- amount of bytes written to
buf
size_t coap_put_option_ct |
( |
uint8_t * |
buf, |
|
|
uint16_t |
lastonum, |
|
|
uint16_t |
content_type |
|
) |
| |
Insert content type option into buffer.
- Parameters
-
[out] | buf | buffer to write to |
[in] | lastonum | number of previous option (for delta calculation), or 0 if first option |
[in] | content_type | content type to set |
- Returns
- amount of bytes written to
buf
size_t coap_put_option_uri |
( |
uint8_t * |
buf, |
|
|
uint16_t |
lastonum, |
|
|
const char * |
uri, |
|
|
uint16_t |
optnum |
|
) |
| |
Insert URI encoded option into buffer.
- Parameters
-
[out] | buf | buffer to write to |
[in] | lastonum | number of previous option (for delta calculation), or 0 if first option |
[in] | uri | ptr to source URI |
[in] | optnum | option number to use (e.g., COAP_OPT_URI_PATH) |
- Returns
- amount of bytes written to
buf
ssize_t coap_reply_simple |
( |
coap_pkt_t * |
pkt, |
|
|
unsigned |
code, |
|
|
uint8_t * |
buf, |
|
|
size_t |
len, |
|
|
unsigned |
ct, |
|
|
const uint8_t * |
payload, |
|
|
uint8_t |
payload_len |
|
) |
| |
Create CoAP reply (convenience function)
This is a simple wrapper that allows for building CoAP replies for simple use-cases.
The reply will be written to buf
. Is payload
and payload_len
non-zero, the payload will be copied into the resulting reply packet.
- Parameters
-
[in] | pkt | packet to reply to |
[in] | code | reply code (e.g., COAP_CODE_204) |
[out] | buf | buffer to write reply to |
[in] | len | size of buf |
[in] | ct | content type of payload |
[in] | payload | ptr to payload |
[in] | payload_len | length of payload |
- Returns
- size of reply packet on success
-
<0 on error
static unsigned coap_szx2size |
( |
unsigned |
szx | ) |
|
|
inlinestatic |
Helper to decode SZX value to size in bytes.
- Parameters
-
[in] | szx | SZX value to decode |
- Returns
- SZX value decoded to bytes
Definition at line 618 of file nanocoap.h.