pdu.h File Reference

Pre-defined constants that reflect defaults for CoAP. More...

`#include "uri.h"`
Include dependency graph for pdu.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures

struct | coap_hdr_t
struct | coap_option
| Structures for more convenient handling of options. More...
struct | coap_pdu_t
| Header structure for CoAP PDUs. More...

## Macros

#define | COAP_DEFAULT_PORT 5683 /* CoAP default UDP port */
#define | COAP_DEFAULT_MAX_AGE 60 /* default maximum object lifetime in seconds */
#define | COAP_MAX_PDU_SIZE 1400 /* maximum size of a CoAP PDU */
#define | COAP_DEFAULT_VERSION 1 /* version of CoAP supported */
#define | COAP_DEFAULT_SCHEME "coap" /* the default scheme for CoAP URIs */
#define | COAP_DEFAULT_URI_WELLKNOWN ".well-known/core"
| well-known resources URI More...
#define | COAP_DEFAULT_WKC_HASHKEY "\345\130\144\245"
#define | COAP_MESSAGE_CON 0 /* confirmable message (requires ACK/RST) */
#define | COAP_MESSAGE_NON 1 /* non-confirmable message (one-shot message) */
#define | COAP_MESSAGE_ACK 2 /* used to acknowledge confirmable messages */
#define | COAP_MESSAGE_RST 3 /* indicates error in received messages */
#define | COAP_REQUEST_GET 1
#define | COAP_REQUEST_POST 2
#define | COAP_REQUEST_PUT 3
#define | COAP_REQUEST_DELETE 4
#define | COAP_OPTION_IF_MATCH 1 /* C, opaque, 0-8 B, (none) */
#define | COAP_OPTION_URI_HOST 3 /* C, String, 1-255 B, destination address */
#define | COAP_OPTION_ETAG 4 /* E, opaque, 1-8 B, (none) */
#define | COAP_OPTION_IF_NONE_MATCH 5 /* empty, 0 B, (none) */
#define | COAP_OPTION_URI_PORT 7 /* C, uint, 0-2 B, destination port */
#define | COAP_OPTION_LOCATION_PATH 8 /* E, String, 0-255 B, - */
#define | COAP_OPTION_URI_PATH 11 /* C, String, 0-255 B, (none) */
#define | COAP_OPTION_CONTENT_FORMAT 12 /* E, uint, 0-2 B, (none) */
#define | COAP_OPTION_CONTENT_TYPE COAP_OPTION_CONTENT_FORMAT
#define | COAP_OPTION_MAXAGE 14 /* E, uint, 0--4 B, 60 Seconds */
#define | COAP_OPTION_URI_QUERY 15 /* C, String, 1-255 B, (none) */
#define | COAP_OPTION_ACCEPT 17 /* C, uint, 0-2 B, (none) */
#define | COAP_OPTION_LOCATION_QUERY 20 /* E, String, 0-255 B, (none) */
#define | COAP_OPTION_PROXY_URI 35 /* C, String, 1-1034 B, (none) */
#define | COAP_OPTION_PROXY_SCHEME 39 /* C, String, 1-255 B, (none) */
#define | COAP_OPTION_SIZE1 60 /* E, uint, 0-4 B, (none) */
#define | COAP_OPTION_OBSERVE 6 /* E, empty/uint, 0 B/0-3 B, (none) */
#define | COAP_OPTION_SUBSCRIPTION COAP_OPTION_OBSERVE
#define | COAP_OPTION_BLOCK2 23 /* C, uint, 0--3 B, (none) */
#define | COAP_OPTION_BLOCK1 27 /* C, uint, 0--3 B, (none) */
#define | COAP_OPTION_NORESPONSE 258 /* N, uint, 0--1 B, 0 */
#define | COAP_MAX_OPT 65535
| the highest option number we know More...
#define | COAP_RESPONSE_CODE(N) (((N)/100 << 5) | (N)%100)
#define | COAP_RESPONSE_CLASS(C) (((C) >> 5) & 0xFF)
#define | COAP_ERROR_PHRASE_LENGTH 32
| maximum length of error phrase More...
#define | COAP_RESPONSE_200 COAP_RESPONSE_CODE(200) /* 2.00 OK */
#define | COAP_RESPONSE_201 COAP_RESPONSE_CODE(201) /* 2.01 Created */
#define | COAP_RESPONSE_304 COAP_RESPONSE_CODE(203) /* 2.03 Valid */
#define | COAP_RESPONSE_400 COAP_RESPONSE_CODE(400) /* 4.00 Bad Request */
#define | COAP_RESPONSE_404 COAP_RESPONSE_CODE(404) /* 4.04 Not Found */
#define | COAP_RESPONSE_405 COAP_RESPONSE_CODE(405) /* 4.05 Method Not Allowed */
#define | COAP_RESPONSE_415 COAP_RESPONSE_CODE(415) /* 4.15 Unsupported Media Type */
#define | COAP_RESPONSE_500 COAP_RESPONSE_CODE(500) /* 5.00 Internal Server Error */
#define | COAP_RESPONSE_501 COAP_RESPONSE_CODE(501) /* 5.01 Not Implemented */
#define | COAP_RESPONSE_503 COAP_RESPONSE_CODE(503) /* 5.03 Service Unavailable */
#define | COAP_RESPONSE_504 COAP_RESPONSE_CODE(504) /* 5.04 Gateway Timeout */
#define | COAP_RESPONSE_X_242 COAP_RESPONSE_CODE(402) /* Critical Option not supported */
#define | COAP_MEDIATYPE_TEXT_PLAIN 0 /* text/plain (UTF-8) */
#define | COAP_MEDIATYPE_APPLICATION_LINK_FORMAT 40 /* application/link-format */
#define | COAP_MEDIATYPE_APPLICATION_XML 41 /* application/xml */
#define | COAP_MEDIATYPE_APPLICATION_OCTET_STREAM 42 /* application/octet-stream */
#define | COAP_MEDIATYPE_APPLICATION_RDF_XML 43 /* application/rdf+xml */
#define | COAP_MEDIATYPE_APPLICATION_EXI 47 /* application/exi */
#define | COAP_MEDIATYPE_APPLICATION_JSON 50 /* application/json */
#define | COAP_MEDIATYPE_APPLICATION_CBOR 60 /* application/cbor */
#define | COAP_MEDIATYPE_ANY 0xff /* any media type */
#define | COAP_INVALID_TID -1
| Indicates an invalid transaction id. More...
#define | COAP_DROPPED_RESPONSE -2
| Indicates that a response is suppressed. More...
#define | COAP_MESSAGE_IS_EMPTY(MSG) ((MSG)->code == 0)
#define | COAP_MESSAGE_IS_REQUEST(MSG)
#define | COAP_MESSAGE_IS_RESPONSE(MSG) ((MSG)->code >= 64)
#define | COAP_OPT_LONG
#define | COAP_OPT_END 0xF0 /* end marker */
#define | COAP_PAYLOAD_START 0xFF /* payload marker */
#define | COAP_OPTION_KEY(option) (option).key
#define | COAP_OPTION_LENGTH(option) (option).length
#define | COAP_OPTION_DATA(option) ((unsigned char *)&(option) + sizeof(coap_option))
#define | COAP_OPTION(node) ((coap_option *)(node)->options)
| Options in coap_pdu_t are accessed with the macro COAP_OPTION. More...

## Typedefs

typedef int | coap_tid_t
| coap_tid_t is used to store CoAP transaction id, i.e. More...

## Functions

char * | coap_response_phrase (unsigned char code)
| Returns a human-readable response phrase for the specified CoAP response `code`. More...
coap_pdu_t * | coap_pdu_init (unsigned char type, unsigned char code, unsigned short id, size_t size)
| Creates a new CoAP PDU of given `size` (must be large enough to hold the basic CoAP message header (coap_hdr_t). More...
void | coap_pdu_clear (coap_pdu_t *pdu, size_t size)
| Clears any contents from `pdu` and resets `version` field, `length` and `data` pointers. More...
coap_pdu_t * | coap_new_pdu (void)
| Creates a new CoAP PDU. More...
void | coap_delete_pdu (coap_pdu_t *)
int | coap_pdu_parse (unsigned char *data, size_t length, coap_pdu_t *result)
| Parses `data` into the CoAP PDU structure given in `result`. More...
int | coap_add_token (coap_pdu_t *pdu, size_t len, const unsigned char *data)
| Adds token of length `len` to `pdu`. More...
size_t | coap_add_option (coap_pdu_t *pdu, unsigned short type, unsigned int len, const unsigned char *data)
| Adds option of given type to pdu that is passed as first parameter. More...
unsigned char * | coap_add_option_later (coap_pdu_t *pdu, unsigned short type, unsigned int len)
| Adds option of given type to pdu that is passed as first parameter, but does not write a value. More...
int | coap_add_data (coap_pdu_t *pdu, unsigned int len, const unsigned char *data)
| Adds given data to the pdu that is passed as first parameter. More...
int | coap_get_data (coap_pdu_t *pdu, size_t *len, unsigned char **data)
| Retrieves the length and data pointer of specified PDU. More...

## Detailed Description

Pre-defined constants that reflect defaults for CoAP.

Definition in file pdu.h.

## Macro Definition Documentation

## COAP_DEFAULT_MAX_AGE

#define COAP_DEFAULT_MAX_AGE 60 /* default maximum object lifetime in seconds */

Definition at line 25 of file pdu.h.

## COAP_DEFAULT_PORT

#define COAP_DEFAULT_PORT 5683 /* CoAP default UDP port */

Definition at line 24 of file pdu.h.

## COAP_DEFAULT_SCHEME

#define COAP_DEFAULT_SCHEME "coap" /* the default scheme for CoAP URIs */

Definition at line 31 of file pdu.h.

## COAP_DEFAULT_URI_WELLKNOWN

#define COAP_DEFAULT_URI_WELLKNOWN ".well-known/core"

well-known resources URI

Definition at line 34 of file pdu.h.

## COAP_DEFAULT_VERSION

#define COAP_DEFAULT_VERSION 1 /* version of CoAP supported */

Definition at line 30 of file pdu.h.

## COAP_DEFAULT_WKC_HASHKEY

#define COAP_DEFAULT_WKC_HASHKEY "\345\130\144\245"

Definition at line 38 of file pdu.h.

## COAP_DROPPED_RESPONSE

#define COAP_DROPPED_RESPONSE -2

Indicates that a response is suppressed.

This will occur for error responses if the request was received via IP multicast.

Definition at line 172 of file pdu.h.

## COAP_ERROR_PHRASE_LENGTH

#define COAP_ERROR_PHRASE_LENGTH 32

maximum length of error phrase

Definition at line 114 of file pdu.h.

## COAP_INVALID_TID

#define COAP_INVALID_TID -1

Indicates an invalid transaction id.

Definition at line 166 of file pdu.h.

## COAP_MAX_OPT

#define COAP_MAX_OPT 65535

the highest option number we know

Definition at line 88 of file pdu.h.

## COAP_MAX_PDU_SIZE

#define COAP_MAX_PDU_SIZE 1400 /* maximum size of a CoAP PDU */

Definition at line 27 of file pdu.h.

## COAP_MEDIATYPE_ANY

#define COAP_MEDIATYPE_ANY 0xff /* any media type */

Definition at line 156 of file pdu.h.

## COAP_MEDIATYPE_APPLICATION_CBOR

#define COAP_MEDIATYPE_APPLICATION_CBOR 60 /* application/cbor */

Definition at line 152 of file pdu.h.

## COAP_MEDIATYPE_APPLICATION_EXI

#define COAP_MEDIATYPE_APPLICATION_EXI 47 /* application/exi */

Definition at line 150 of file pdu.h.

## COAP_MEDIATYPE_APPLICATION_JSON

#define COAP_MEDIATYPE_APPLICATION_JSON 50 /* application/json */

Definition at line 151 of file pdu.h.

## COAP_MEDIATYPE_APPLICATION_LINK_FORMAT

#define COAP_MEDIATYPE_APPLICATION_LINK_FORMAT 40 /* application/link-format */

Definition at line 146 of file pdu.h.

## COAP_MEDIATYPE_APPLICATION_OCTET_STREAM

#define COAP_MEDIATYPE_APPLICATION_OCTET_STREAM 42 /* application/octet-stream */

Definition at line 148 of file pdu.h.

## COAP_MEDIATYPE_APPLICATION_RDF_XML

#define COAP_MEDIATYPE_APPLICATION_RDF_XML 43 /* application/rdf+xml */

Definition at line 149 of file pdu.h.

## COAP_MEDIATYPE_APPLICATION_XML

#define COAP_MEDIATYPE_APPLICATION_XML 41 /* application/xml */

Definition at line 147 of file pdu.h.

## COAP_MEDIATYPE_TEXT_PLAIN

#define COAP_MEDIATYPE_TEXT_PLAIN 0 /* text/plain (UTF-8) */

Definition at line 145 of file pdu.h.

## COAP_MESSAGE_ACK

#define COAP_MESSAGE_ACK 2 /* used to acknowledge confirmable messages */

Definition at line 45 of file pdu.h.

## COAP_MESSAGE_CON

#define COAP_MESSAGE_CON 0 /* confirmable message (requires ACK/RST) */

Definition at line 43 of file pdu.h.

## COAP_MESSAGE_IS_EMPTY

#define COAP_MESSAGE_IS_EMPTY | ( |  | MSG | ) | ((MSG)->code == 0)

Definition at line 196 of file pdu.h.

## COAP_MESSAGE_IS_REQUEST

#define COAP_MESSAGE_IS_REQUEST | ( |  | MSG | ) |

Value:
(!COAP_MESSAGE_IS_EMPTY(MSG) \
&& ((MSG)->code < 32))
COAP_MESSAGE_IS_EMPTY
#define COAP_MESSAGE_IS_EMPTY(MSG)
Definition: pdu.h:196

Definition at line 197 of file pdu.h.

## COAP_MESSAGE_IS_RESPONSE

#define COAP_MESSAGE_IS_RESPONSE | ( |  | MSG | ) | ((MSG)->code >= 64)

Definition at line 199 of file pdu.h.

## COAP_MESSAGE_NON

#define COAP_MESSAGE_NON 1 /* non-confirmable message (one-shot message) */

Definition at line 44 of file pdu.h.

## COAP_MESSAGE_RST

#define COAP_MESSAGE_RST 3 /* indicates error in received messages */

Definition at line 46 of file pdu.h.

## COAP_OPT_END

#define COAP_OPT_END 0xF0 /* end marker */

Definition at line 205 of file pdu.h.

## COAP_OPT_LONG

#define COAP_OPT_LONG

Value:
0x0F /* OC == 0b1111 indicates that the option list
* in a CoAP message is limited by 0b11110000
* marker */

Definition at line 201 of file pdu.h.

## COAP_OPTION

#define COAP_OPTION | ( |  | node | ) | ((coap_option *)(node)->options)

Options in coap_pdu_t are accessed with the macro COAP_OPTION.

Definition at line 252 of file pdu.h.

## COAP_OPTION_ACCEPT

#define COAP_OPTION_ACCEPT 17 /* C, uint, 0-2 B, (none) */

Definition at line 68 of file pdu.h.

## COAP_OPTION_BLOCK1

#define COAP_OPTION_BLOCK1 27 /* C, uint, 0--3 B, (none) */

Definition at line 82 of file pdu.h.

## COAP_OPTION_BLOCK2

#define COAP_OPTION_BLOCK2 23 /* C, uint, 0--3 B, (none) */

Definition at line 81 of file pdu.h.

## COAP_OPTION_CONTENT_FORMAT

#define COAP_OPTION_CONTENT_FORMAT 12 /* E, uint, 0-2 B, (none) */

Definition at line 64 of file pdu.h.

## COAP_OPTION_CONTENT_TYPE

#define COAP_OPTION_CONTENT_TYPE COAP_OPTION_CONTENT_FORMAT

Definition at line 65 of file pdu.h.

## COAP_OPTION_DATA

#define COAP_OPTION_DATA | ( |  | option | ) | ((unsigned char *)&(option) + sizeof(coap_option))

Definition at line 221 of file pdu.h.

## COAP_OPTION_ETAG

#define COAP_OPTION_ETAG 4 /* E, opaque, 1-8 B, (none) */

Definition at line 59 of file pdu.h.

## COAP_OPTION_IF_MATCH

#define COAP_OPTION_IF_MATCH 1 /* C, opaque, 0-8 B, (none) */

Definition at line 57 of file pdu.h.

## COAP_OPTION_IF_NONE_MATCH

#define COAP_OPTION_IF_NONE_MATCH 5 /* empty, 0 B, (none) */

Definition at line 60 of file pdu.h.

## COAP_OPTION_KEY

#define COAP_OPTION_KEY | ( |  | option | ) | (option).key

Definition at line 219 of file pdu.h.

## COAP_OPTION_LENGTH

#define COAP_OPTION_LENGTH | ( |  | option | ) | (option).length

Definition at line 220 of file pdu.h.

## COAP_OPTION_LOCATION_PATH

#define COAP_OPTION_LOCATION_PATH 8 /* E, String, 0-255 B, - */

Definition at line 62 of file pdu.h.

## COAP_OPTION_LOCATION_QUERY

#define COAP_OPTION_LOCATION_QUERY 20 /* E, String, 0-255 B, (none) */

Definition at line 69 of file pdu.h.

## COAP_OPTION_MAXAGE

#define COAP_OPTION_MAXAGE 14 /* E, uint, 0--4 B, 60 Seconds */

Definition at line 66 of file pdu.h.

## COAP_OPTION_NORESPONSE

#define COAP_OPTION_NORESPONSE 258 /* N, uint, 0--1 B, 0 */

Definition at line 86 of file pdu.h.

## COAP_OPTION_OBSERVE

#define COAP_OPTION_OBSERVE 6 /* E, empty/uint, 0 B/0-3 B, (none) */

Definition at line 76 of file pdu.h.

## COAP_OPTION_PROXY_SCHEME

#define COAP_OPTION_PROXY_SCHEME 39 /* C, String, 1-255 B, (none) */

Definition at line 71 of file pdu.h.

## COAP_OPTION_PROXY_URI

#define COAP_OPTION_PROXY_URI 35 /* C, String, 1-1034 B, (none) */

Definition at line 70 of file pdu.h.

## COAP_OPTION_SIZE1

#define COAP_OPTION_SIZE1 60 /* E, uint, 0-4 B, (none) */

Definition at line 72 of file pdu.h.

## COAP_OPTION_SUBSCRIPTION

#define COAP_OPTION_SUBSCRIPTION COAP_OPTION_OBSERVE

Definition at line 77 of file pdu.h.

## COAP_OPTION_URI_HOST

#define COAP_OPTION_URI_HOST 3 /* C, String, 1-255 B, destination address */

Definition at line 58 of file pdu.h.

## COAP_OPTION_URI_PATH

#define COAP_OPTION_URI_PATH 11 /* C, String, 0-255 B, (none) */

Definition at line 63 of file pdu.h.

## COAP_OPTION_URI_PORT

#define COAP_OPTION_URI_PORT 7 /* C, uint, 0-2 B, destination port */

Definition at line 61 of file pdu.h.

## COAP_OPTION_URI_QUERY

#define COAP_OPTION_URI_QUERY 15 /* C, String, 1-255 B, (none) */

Definition at line 67 of file pdu.h.

## COAP_PAYLOAD_START

#define COAP_PAYLOAD_START 0xFF /* payload marker */

Definition at line 207 of file pdu.h.

## COAP_REQUEST_DELETE

#define COAP_REQUEST_DELETE 4

Definition at line 53 of file pdu.h.

## COAP_REQUEST_GET

#define COAP_REQUEST_GET 1

Definition at line 50 of file pdu.h.

## COAP_REQUEST_POST

#define COAP_REQUEST_POST 2

Definition at line 51 of file pdu.h.

## COAP_REQUEST_PUT

#define COAP_REQUEST_PUT 3

Definition at line 52 of file pdu.h.

## COAP_RESPONSE_200

#define COAP_RESPONSE_200 COAP_RESPONSE_CODE(200) /* 2.00 OK */

Definition at line 126 of file pdu.h.

## COAP_RESPONSE_201

#define COAP_RESPONSE_201 COAP_RESPONSE_CODE(201) /* 2.01 Created */

Definition at line 127 of file pdu.h.

## COAP_RESPONSE_304

#define COAP_RESPONSE_304 COAP_RESPONSE_CODE(203) /* 2.03 Valid */

Definition at line 128 of file pdu.h.

## COAP_RESPONSE_400

#define COAP_RESPONSE_400 COAP_RESPONSE_CODE(400) /* 4.00 Bad Request */

Definition at line 129 of file pdu.h.

## COAP_RESPONSE_404

#define COAP_RESPONSE_404 COAP_RESPONSE_CODE(404) /* 4.04 Not Found */

Definition at line 130 of file pdu.h.

## COAP_RESPONSE_405

#define COAP_RESPONSE_405 COAP_RESPONSE_CODE(405) /* 4.05 Method Not Allowed */

Definition at line 131 of file pdu.h.

## COAP_RESPONSE_415

#define COAP_RESPONSE_415 COAP_RESPONSE_CODE(415) /* 4.15 Unsupported Media Type */

Definition at line 132 of file pdu.h.

## COAP_RESPONSE_500

#define COAP_RESPONSE_500 COAP_RESPONSE_CODE(500) /* 5.00 Internal Server Error */

Definition at line 133 of file pdu.h.

## COAP_RESPONSE_501

#define COAP_RESPONSE_501 COAP_RESPONSE_CODE(501) /* 5.01 Not Implemented */

Definition at line 134 of file pdu.h.

## COAP_RESPONSE_503

#define COAP_RESPONSE_503 COAP_RESPONSE_CODE(503) /* 5.03 Service Unavailable */

Definition at line 135 of file pdu.h.

## COAP_RESPONSE_504

#define COAP_RESPONSE_504 COAP_RESPONSE_CODE(504) /* 5.04 Gateway Timeout */

Definition at line 136 of file pdu.h.

## COAP_RESPONSE_CLASS

#define COAP_RESPONSE_CLASS | ( |  | C | ) | (((C) >> 5) & 0xFF)

Definition at line 99 of file pdu.h.

## COAP_RESPONSE_CODE

#define COAP_RESPONSE_CODE | ( |  | N | ) | (((N)/100 << 5) | (N)%100)

Definition at line 96 of file pdu.h.

## COAP_RESPONSE_X_242

#define COAP_RESPONSE_X_242 COAP_RESPONSE_CODE(402) /* Critical Option not supported */

Definition at line 141 of file pdu.h.

## Typedef Documentation

## coap_tid_t

typedef int coap_tid_t

coap_tid_t is used to store CoAP transaction id, i.e.

a hash value built from the remote transport address and the message id of a CoAP PDU. Valid transaction ids are greater or equal zero.

Definition at line 163 of file pdu.h.

## Function Documentation

## coap_add_data()

int coap_add_data | ( | coap_pdu_t * | pdu,
|  | unsigned int | len,
|  | const unsigned char * | data
| ) |  |

Adds given data to the pdu that is passed as first parameter.

Note that the PDU's data is destroyed by coap_add_option(). coap_add_data() must be called only once per PDU, otherwise the result is undefined.

Definition at line 234 of file pdu.c.

Here is the caller graph for this function:

## coap_add_option()

size_t coap_add_option | ( | coap_pdu_t * | pdu,
|  | unsigned short | type,
|  | unsigned int | len,
|  | const unsigned char * | data
| ) |  |

Adds option of given type to pdu that is passed as first parameter.

coap_add_option() destroys the PDU's data, so coap_add_data() must be called after all options have been added. As coap_add_token() destroys the options following the token, the token must be added before coap_add_option() is called. This function returns the number of bytes written or `0` on error.

Adds option of given type to pdu that is passed as first parameter.

Definition at line 171 of file pdu.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_add_option_later()

unsigned char* coap_add_option_later | ( | coap_pdu_t * | pdu,
|  | unsigned short | type,
|  | unsigned int | len
| ) |  |

Adds option of given type to pdu that is passed as first parameter, but does not write a value.

It works like coap_add_option with respect to calling sequence (i.e. after token and before data). This function returns a memory address to which the option data has to be written before the PDU can be sent, or `NULL` on error.

Adds option of given type to pdu that is passed as first parameter, but does not write a value.

Definition at line 203 of file pdu.c.

Here is the call graph for this function:

## coap_add_token()

int coap_add_token | ( | coap_pdu_t * | pdu,
|  | size_t | len,
|  | const unsigned char * | data
| ) |  |

Adds token of length `len` to `pdu`.

Adding the token destroys any following contents of the pdu. Hence options and data must be added after coap_add_token() has been called. In `pdu`, length is set to `len` + `4`, and max_delta is set to `0`. This funtion returns `0` on error or a value greater than zero on success.

Parameters

  pdu | The PDU where the token is to be added.
  len | The length of the new token.
  data | The token to add.

Returns
  A value greater than zero on success, or `0` on error.

Definition at line 153 of file pdu.c.

Here is the caller graph for this function:

## coap_delete_pdu()

void coap_delete_pdu | ( | coap_pdu_t * |  | ) |

Definition at line 136 of file pdu.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_get_data()

int coap_get_data | ( | coap_pdu_t * | pdu,
|  | size_t * | len,
|  | unsigned char ** | data
| ) |  |

Retrieves the length and data pointer of specified PDU.

Returns 0 on error or 1 if *len and *data have correct values. Note that these values are destroyed with the pdu.

Definition at line 257 of file pdu.c.

Here is the caller graph for this function:

## coap_new_pdu()

coap_pdu_t* coap_new_pdu | ( | void |  | ) |

Creates a new CoAP PDU.

The object is created on the heap and must be released using coap_delete_pdu();

Deprecated:
  This function allocates the maximum storage for each PDU. Use coap_pdu_init() instead.

Definition at line 119 of file pdu.c.

Here is the call graph for this function:

## coap_pdu_clear()

void coap_pdu_clear | ( | coap_pdu_t * | pdu,
|  | size_t | size
| ) |  |

Clears any contents from `pdu` and resets `version` field, `length` and `data` pointers.

`max_size` is set to `size`, any other field is set to `0`. Note that `pdu` must be a valid pointer to a coap_pdu_t object created e.g. by coap_pdu_init().

Definition at line 29 of file pdu.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_pdu_init()

coap_pdu_t* coap_pdu_init | ( | unsigned char | type,
|  | unsigned char | code,
|  | unsigned short | id,
|  | size_t | size
| ) |  |

Creates a new CoAP PDU of given `size` (must be large enough to hold the basic CoAP message header (coap_hdr_t).

The function returns a pointer to the node coap_pdu_t object on success, or `NULL` on error. The storage allocated for the result must be released with coap_delete_pdu().

Parameters

  type | The type of the PDU (one of COAP_MESSAGE_CON, COAP_MESSAGE_NON, COAP_MESSAGE_ACK, COAP_MESSAGE_RST).
  code | The message code.
  id | The message id to set or COAP_INVALID_TID if unknown.
  size | The number of bytes to allocate for the actual message.

Returns
  A pointer to the new PDU object or `NULL` on error.

Definition at line 75 of file pdu.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_pdu_parse()

int coap_pdu_parse | ( | unsigned char * | data,
|  | size_t | length,
|  | coap_pdu_t * | result
| ) |  |

Parses `data` into the CoAP PDU structure given in `result`.

This function returns `0` on error or a number greater than zero on success.

Parameters

  data | The raw data to parse as CoAP PDU.
  length | The actual size of `data`.
  result | The PDU structure to fill. Note that the structure must provide space for at least `length` bytes to hold the entire CoAP PDU.

Returns
  A value greater than zero on success or `0` on error.

Definition at line 344 of file pdu.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_response_phrase()

char* coap_response_phrase | ( | unsigned char | code | ) |

Returns a human-readable response phrase for the specified CoAP response `code`.

This function returns `NULL` if not found.

Parameters

  code | The response code for which the literal phrase should be retrieved.

Returns
  A zero-terminated string describing the error, or `NULL` if not found.

Definition at line 309 of file pdu.c.

Here is the caller graph for this function: