Loading...
Searching...
No Matches
coap_pdu.h File Reference

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

`#include "coap_option.h"`
`#include "coap_uri.h"`
`#include <stdint.h>`
Include dependency graph for coap_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_option

## Macros

#define | COAP_DEFAULT_PORT 5683 /* CoAP default UDP/TCP port */
#define | COAPS_DEFAULT_PORT 5684 /* CoAP default UDP/TCP port for secure transmission */
#define | COAP_DEFAULT_MAX_AGE 60 /* default maximum object lifetime in seconds */
#define | COAP_DEFAULT_MTU 1152
#define | COAP_BERT_BASE 1152
#define | COAP_DEFAULT_HOP_LIMIT 16
#define | COAP_DEFAULT_SCHEME "coap" /* the default scheme for CoAP URIs */
#define | COAP_DEFAULT_URI_WELLKNOWN ".well-known/core"
| well-known resources URI
#define | COAP_TOKEN_DEFAULT_MAX 8
#define | COAP_TOKEN_EXT_MAX 65804 /* 13 + 256 + 65535 */
#define | COAP_OPTION_IF_MATCH 1 /* C__RE__, opaque, 0-8 B, RFC7252 */
#define | COAP_OPTION_URI_HOST 3 /* CU-___U, String, 1-255 B, RFC7252 */
#define | COAP_OPTION_ETAG 4 /* ___RE__, opaque, 1-8 B, RFC7252 */
#define | COAP_OPTION_IF_NONE_MATCH 5 /* C___E__, empty, 0 B, RFC7252 */
#define | COAP_OPTION_OBSERVE 6 /* _U-_E_U, empty/uint,0/0-3 B, RFC7641 */
#define | COAP_OPTION_URI_PORT 7 /* CU-___U, uint, 0-2 B, RFC7252 */
#define | COAP_OPTION_LOCATION_PATH 8 /* ___RE__, String, 0-255 B, RFC7252 */
#define | COAP_OPTION_OSCORE 9 /* C_____U, *, 0-255 B, RFC8613 */
#define | COAP_OPTION_URI_PATH 11 /* CU-RE__, String, 0-255 B, RFC7252 */
#define | COAP_OPTION_CONTENT_FORMAT 12 /* ____E__, uint, 0-2 B, RFC7252 */
#define | COAP_OPTION_CONTENT_TYPE COAP_OPTION_CONTENT_FORMAT
#define | COAP_OPTION_MAXAGE 14 /* _U-_E_U, uint, 0-4 B, RFC7252 */
#define | COAP_OPTION_URI_QUERY 15 /* CU-RE__, String, 1-255 B, RFC7252 */
#define | COAP_OPTION_HOP_LIMIT 16 /* ______U, uint, 1 B, RFC8768 */
#define | COAP_OPTION_ACCEPT 17 /* C___E__, uint, 0-2 B, RFC7252 */
#define | COAP_OPTION_Q_BLOCK1 19 /* CU__E_U, uint, 0-3 B, RFC9177 */
#define | COAP_OPTION_LOCATION_QUERY 20 /* ___RE__, String, 0-255 B, RFC7252 */
#define | COAP_OPTION_BLOCK2 23 /* CU-_E_U, uint, 0-3 B, RFC7959 */
#define | COAP_OPTION_BLOCK1 27 /* CU-_E_U, uint, 0-3 B, RFC7959 */
#define | COAP_OPTION_SIZE2 28 /* __N_E_U, uint, 0-4 B, RFC7959 */
#define | COAP_OPTION_Q_BLOCK2 31 /* CU_RE_U, uint, 0-3 B, RFC9177 */
#define | COAP_OPTION_PROXY_URI 35 /* CU-___U, String, 1-1034 B, RFC7252 */
#define | COAP_OPTION_PROXY_SCHEME 39 /* CU-___U, String, 1-255 B, RFC7252 */
#define | COAP_OPTION_SIZE1 60 /* __N_E_U, uint, 0-4 B, RFC7252 */
#define | COAP_OPTION_ECHO 252 /* _N__E_U, opaque, 0-40 B, RFC9175 */
#define | COAP_OPTION_NORESPONSE 258 /* _U-_E_U, uint, 0-1 B, RFC7967 */
#define | COAP_OPTION_RTAG 292 /* ___RE_U, opaque, 0-8 B, RFC9175 */
#define | COAP_MAX_OPT 65535
| the highest option number we know
#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
#define | COAP_SIGNALING_CODE(N) (((N)/100 << 5) | (N)%100)
#define | COAP_SIGNALING_OPTION_MAX_MESSAGE_SIZE 2
#define | COAP_SIGNALING_OPTION_BLOCK_WISE_TRANSFER 4
#define | COAP_SIGNALING_OPTION_EXTENDED_TOKEN_LENGTH 6
#define | COAP_SIGNALING_OPTION_CUSTODY 2
#define | COAP_SIGNALING_OPTION_ALTERNATIVE_ADDRESS 2
#define | COAP_SIGNALING_OPTION_HOLD_OFF 4
#define | COAP_SIGNALING_OPTION_BAD_CSM_OPTION 2
#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_APPLICATION_CWT 61 /* application/cwt, RFC 8392 */
#define | COAP_MEDIATYPE_APPLICATION_COAP_GROUP_JSON 256 /* application/coap-group+json */
#define | COAP_MEDIATYPE_APPLICATION_COSE_SIGN 98 /* application/cose; cose-type="cose-sign" */
#define | COAP_MEDIATYPE_APPLICATION_COSE_SIGN1 18 /* application/cose; cose-type="cose-sign1" */
#define | COAP_MEDIATYPE_APPLICATION_COSE_ENCRYPT 96 /* application/cose; cose-type="cose-encrypt" */
#define | COAP_MEDIATYPE_APPLICATION_COSE_ENCRYPT0 16 /* application/cose; cose-type="cose-encrypt0" */
#define | COAP_MEDIATYPE_APPLICATION_COSE_MAC 97 /* application/cose; cose-type="cose-mac" */
#define | COAP_MEDIATYPE_APPLICATION_COSE_MAC0 17 /* application/cose; cose-type="cose-mac0" */
#define | COAP_MEDIATYPE_APPLICATION_COSE_KEY 101 /* application/cose-key */
#define | COAP_MEDIATYPE_APPLICATION_COSE_KEY_SET 102 /* application/cose-key-set */
#define | COAP_MEDIATYPE_APPLICATION_SENML_JSON 110 /* application/senml+json */
#define | COAP_MEDIATYPE_APPLICATION_SENSML_JSON 111 /* application/sensml+json */
#define | COAP_MEDIATYPE_APPLICATION_SENML_CBOR 112 /* application/senml+cbor */
#define | COAP_MEDIATYPE_APPLICATION_SENSML_CBOR 113 /* application/sensml+cbor */
#define | COAP_MEDIATYPE_APPLICATION_SENML_EXI 114 /* application/senml-exi */
#define | COAP_MEDIATYPE_APPLICATION_SENSML_EXI 115 /* application/sensml-exi */
#define | COAP_MEDIATYPE_APPLICATION_SENML_XML 310 /* application/senml+xml */
#define | COAP_MEDIATYPE_APPLICATION_SENSML_XML 311 /* application/sensml+xml */
#define | COAP_MEDIATYPE_APPLICATION_DOTS_CBOR 271 /* application/dots+cbor */
#define | COAP_MEDIATYPE_APPLICATION_ACE_CBOR 19 /* application/ace+cbor */
#define | COAP_MEDIATYPE_APPLICATION_MB_CBOR_SEQ 272 /* application/missing-blocks+cbor-seq */
#define | COAP_MEDIATYPE_APPLICATION_OSCORE 10001 /* application/oscore */
#define | COAP_INVALID_MID -1
| Indicates an invalid message id.
#define | COAP_INVALID_TID COAP_INVALID_MID
| Indicates an invalid message id.
#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))

## Typedefs

typedef enum coap_pdu_type_t | coap_pdu_type_t
| CoAP PDU message type definitions.
typedef enum coap_request_t | coap_request_t
| CoAP PDU Request methods.
typedef enum coap_pdu_signaling_proto_t | coap_pdu_signaling_proto_t
typedef int | coap_mid_t
| coap_mid_t is used to store the CoAP Message ID of a CoAP PDU.
typedef enum coap_proto_t | coap_proto_t
| CoAP protocol types.
typedef enum coap_pdu_code_t | coap_pdu_code_t
| Set of codes available for a PDU.

## Enumerations

enum | coap_pdu_type_t { COAP_MESSAGE_CON , COAP_MESSAGE_NON , COAP_MESSAGE_ACK , COAP_MESSAGE_RST }
| CoAP PDU message type definitions. More...
enum | coap_request_t { COAP_REQUEST_GET = 1 , COAP_REQUEST_POST , COAP_REQUEST_PUT , COAP_REQUEST_DELETE , COAP_REQUEST_FETCH , COAP_REQUEST_PATCH , COAP_REQUEST_IPATCH }
| CoAP PDU Request methods. More...
enum | coap_pdu_signaling_proto_t { COAP_SIGNALING_CSM = COAP_SIGNALING_CODE(701) , COAP_SIGNALING_PING = COAP_SIGNALING_CODE(702) , COAP_SIGNALING_PONG = COAP_SIGNALING_CODE(703) , COAP_SIGNALING_RELEASE = COAP_SIGNALING_CODE(704) , COAP_SIGNALING_ABORT = COAP_SIGNALING_CODE(705) }
enum | coap_proto_t { COAP_PROTO_NONE = 0 , COAP_PROTO_UDP , COAP_PROTO_DTLS , COAP_PROTO_TCP , COAP_PROTO_TLS , COAP_PROTO_WS , COAP_PROTO_WSS , COAP_PROTO_LAST }
| CoAP protocol types. More...

enum

coap_pdu_code_t {
COAP_EMPTY_CODE = 0 , COAP_REQUEST_CODE_GET = COAP_REQUEST_GET , COAP_REQUEST_CODE_POST = COAP_REQUEST_POST , COAP_REQUEST_CODE_PUT = COAP_REQUEST_PUT ,
COAP_REQUEST_CODE_DELETE = COAP_REQUEST_DELETE , COAP_REQUEST_CODE_FETCH = COAP_REQUEST_FETCH , COAP_REQUEST_CODE_PATCH = COAP_REQUEST_PATCH , COAP_REQUEST_CODE_IPATCH = COAP_REQUEST_IPATCH ,
COAP_RESPONSE_CODE_CREATED = COAP_RESPONSE_CODE(201) , COAP_RESPONSE_CODE_DELETED = COAP_RESPONSE_CODE(202) , COAP_RESPONSE_CODE_VALID = COAP_RESPONSE_CODE(203) , COAP_RESPONSE_CODE_CHANGED = COAP_RESPONSE_CODE(204) ,
COAP_RESPONSE_CODE_CONTENT = COAP_RESPONSE_CODE(205) , COAP_RESPONSE_CODE_CONTINUE = COAP_RESPONSE_CODE(231) , COAP_RESPONSE_CODE_BAD_REQUEST = COAP_RESPONSE_CODE(400) , COAP_RESPONSE_CODE_UNAUTHORIZED = COAP_RESPONSE_CODE(401) ,
COAP_RESPONSE_CODE_BAD_OPTION = COAP_RESPONSE_CODE(402) , COAP_RESPONSE_CODE_FORBIDDEN = COAP_RESPONSE_CODE(403) , COAP_RESPONSE_CODE_NOT_FOUND = COAP_RESPONSE_CODE(404) , COAP_RESPONSE_CODE_NOT_ALLOWED = COAP_RESPONSE_CODE(405) ,
COAP_RESPONSE_CODE_NOT_ACCEPTABLE = COAP_RESPONSE_CODE(406) , COAP_RESPONSE_CODE_INCOMPLETE = COAP_RESPONSE_CODE(408) , COAP_RESPONSE_CODE_CONFLICT = COAP_RESPONSE_CODE(409) , COAP_RESPONSE_CODE_PRECONDITION_FAILED = COAP_RESPONSE_CODE(412) ,
COAP_RESPONSE_CODE_REQUEST_TOO_LARGE = COAP_RESPONSE_CODE(413) , COAP_RESPONSE_CODE_UNSUPPORTED_CONTENT_FORMAT = COAP_RESPONSE_CODE(415) , COAP_RESPONSE_CODE_UNPROCESSABLE = COAP_RESPONSE_CODE(422) , COAP_RESPONSE_CODE_TOO_MANY_REQUESTS = COAP_RESPONSE_CODE(429) ,
COAP_RESPONSE_CODE_INTERNAL_ERROR = COAP_RESPONSE_CODE(500) , COAP_RESPONSE_CODE_NOT_IMPLEMENTED = COAP_RESPONSE_CODE(501) , COAP_RESPONSE_CODE_BAD_GATEWAY = COAP_RESPONSE_CODE(502) , COAP_RESPONSE_CODE_SERVICE_UNAVAILABLE = COAP_RESPONSE_CODE(503) ,
COAP_RESPONSE_CODE_GATEWAY_TIMEOUT = COAP_RESPONSE_CODE(504) , COAP_RESPONSE_CODE_PROXYING_NOT_SUPPORTED = COAP_RESPONSE_CODE(505) , COAP_RESPONSE_CODE_HOP_LIMIT_REACHED = COAP_RESPONSE_CODE(508) , COAP_SIGNALING_CODE_CSM = COAP_SIGNALING_CSM ,
COAP_SIGNALING_CODE_PING = COAP_SIGNALING_PING , COAP_SIGNALING_CODE_PONG = COAP_SIGNALING_PONG , COAP_SIGNALING_CODE_RELEASE = COAP_SIGNALING_RELEASE , COAP_SIGNALING_CODE_ABORT = COAP_SIGNALING_ABORT
}

| Set of codes available for a PDU. More...

## Functions

const char * | coap_response_phrase (unsigned char code)
| Returns a human-readable response phrase for the specified CoAP response `code`.
coap_pdu_t * | coap_pdu_init (coap_pdu_type_t type, coap_pdu_code_t code, coap_mid_t mid, size_t size)
| Creates a new CoAP PDU with at least enough storage space for the given `size` maximum message size.
coap_pdu_t * | coap_new_pdu (coap_pdu_type_t type, coap_pdu_code_t code, coap_session_t *session)
| Creates a new CoAP PDU.
void | coap_delete_pdu (coap_pdu_t *pdu)
| Dispose of an CoAP PDU and frees associated storage.
coap_pdu_t * | coap_pdu_duplicate (const coap_pdu_t *old_pdu, coap_session_t *session, size_t token_length, const uint8_t *token, coap_opt_filter_t *drop_options)
| Duplicate an existing PDU.
int | coap_pdu_parse (coap_proto_t proto, const uint8_t *data, size_t length, coap_pdu_t *pdu)
| Parses `data` into the CoAP PDU structure given in `result`.
int | coap_add_token (coap_pdu_t *pdu, size_t len, const uint8_t *data)
| Adds token of length `len` to `pdu`.
size_t | coap_add_option (coap_pdu_t *pdu, coap_option_num_t number, size_t len, const uint8_t *data)
| Adds option of given `number` to `pdu` that is passed as first parameter.
int | coap_add_data (coap_pdu_t *pdu, size_t len, const uint8_t *data)
| Adds given data to the pdu that is passed as first parameter.
uint8_t * | coap_add_data_after (coap_pdu_t *pdu, size_t len)
| Adds given data to the pdu that is passed as first parameter but does not.
int | coap_get_data (const coap_pdu_t *pdu, size_t *len, const uint8_t **data)
| Retrieves the length and data pointer of specified PDU.
int | coap_get_data_large (const coap_pdu_t *pdu, size_t *len, const uint8_t **data, size_t *offset, size_t *total)
| Retrieves the data from a PDU, with support for large bodies of data that spans multiple PDUs.
coap_pdu_code_t | coap_pdu_get_code (const coap_pdu_t *pdu)
| Gets the PDU code associated with `pdu`.
void | coap_pdu_set_code (coap_pdu_t *pdu, coap_pdu_code_t code)
| Sets the PDU code in the `pdu`.
coap_pdu_type_t | coap_pdu_get_type (const coap_pdu_t *pdu)
| Gets the PDU type associated with `pdu`.
void | coap_pdu_set_type (coap_pdu_t *pdu, coap_pdu_type_t type)
| Sets the PDU type in the `pdu`.
coap_bin_const_t | coap_pdu_get_token (const coap_pdu_t *pdu)
| Gets the token associated with `pdu`.
coap_mid_t | coap_pdu_get_mid (const coap_pdu_t *pdu)
| Gets the message id associated with `pdu`.
void | coap_pdu_set_mid (coap_pdu_t *pdu, coap_mid_t mid)
| Sets the message id in the `pdu`.

## Detailed Description

Pre-defined constants that reflect defaults for CoAP.

Definition in file coap_pdu.h.