37#define COAP_DEFAULT_PORT 5683
38#define COAPS_DEFAULT_PORT 5684
39#define COAP_DEFAULT_MAX_AGE 60
40#ifndef COAP_DEFAULT_MTU
41#define COAP_DEFAULT_MTU 1152
44#define COAP_BERT_BASE 1152
46#ifndef COAP_DEFAULT_HOP_LIMIT
47#define COAP_DEFAULT_HOP_LIMIT 16
50#define COAP_DEFAULT_SCHEME "coap"
53#define COAP_DEFAULT_URI_WELLKNOWN ".well-known/core"
111#define COAP_OPTION_IF_MATCH 1
112#define COAP_OPTION_URI_HOST 3
113#define COAP_OPTION_ETAG 4
114#define COAP_OPTION_IF_NONE_MATCH 5
115#define COAP_OPTION_OBSERVE 6
116#define COAP_OPTION_URI_PORT 7
117#define COAP_OPTION_LOCATION_PATH 8
118#define COAP_OPTION_OSCORE 9
119#define COAP_OPTION_URI_PATH 11
120#define COAP_OPTION_CONTENT_FORMAT 12
121#define COAP_OPTION_CONTENT_TYPE COAP_OPTION_CONTENT_FORMAT
123#define COAP_OPTION_MAXAGE 14
124#define COAP_OPTION_URI_QUERY 15
125#define COAP_OPTION_HOP_LIMIT 16
126#define COAP_OPTION_ACCEPT 17
127#define COAP_OPTION_LOCATION_QUERY 20
128#define COAP_OPTION_BLOCK2 23
129#define COAP_OPTION_BLOCK1 27
130#define COAP_OPTION_SIZE2 28
131#define COAP_OPTION_PROXY_URI 35
132#define COAP_OPTION_PROXY_SCHEME 39
133#define COAP_OPTION_SIZE1 60
134#define COAP_OPTION_ECHO 252
135#define COAP_OPTION_NORESPONSE 258
136#define COAP_OPTION_RTAG 292
138#define COAP_MAX_OPT 65535
146#define COAP_RESPONSE_CODE(N) (((N)/100 << 5) | (N)%100)
149#define COAP_RESPONSE_CLASS(C) (((C) >> 5) & 0xFF)
151#ifndef SHORT_ERROR_RESPONSE
164#define COAP_ERROR_PHRASE_LENGTH 32
167#define coap_response_phrase(x) ((char *)NULL)
169#define COAP_ERROR_PHRASE_LENGTH 0
172#define COAP_SIGNALING_CODE(N) (((N)/100 << 5) | (N)%100)
183#define COAP_SIGNALING_OPTION_MAX_MESSAGE_SIZE 2
184#define COAP_SIGNALING_OPTION_BLOCK_WISE_TRANSFER 4
186#define COAP_SIGNALING_OPTION_CUSTODY 2
188#define COAP_SIGNALING_OPTION_ALTERNATIVE_ADDRESS 2
189#define COAP_SIGNALING_OPTION_HOLD_OFF 4
191#define COAP_SIGNALING_OPTION_BAD_CSM_OPTION 2
195#define COAP_MEDIATYPE_TEXT_PLAIN 0
196#define COAP_MEDIATYPE_APPLICATION_LINK_FORMAT 40
197#define COAP_MEDIATYPE_APPLICATION_XML 41
198#define COAP_MEDIATYPE_APPLICATION_OCTET_STREAM 42
199#define COAP_MEDIATYPE_APPLICATION_RDF_XML 43
200#define COAP_MEDIATYPE_APPLICATION_EXI 47
201#define COAP_MEDIATYPE_APPLICATION_JSON 50
202#define COAP_MEDIATYPE_APPLICATION_CBOR 60
203#define COAP_MEDIATYPE_APPLICATION_CWT 61
206#define COAP_MEDIATYPE_APPLICATION_COAP_GROUP_JSON 256
209#define COAP_MEDIATYPE_APPLICATION_COSE_SIGN 98
210#define COAP_MEDIATYPE_APPLICATION_COSE_SIGN1 18
211#define COAP_MEDIATYPE_APPLICATION_COSE_ENCRYPT 96
212#define COAP_MEDIATYPE_APPLICATION_COSE_ENCRYPT0 16
213#define COAP_MEDIATYPE_APPLICATION_COSE_MAC 97
214#define COAP_MEDIATYPE_APPLICATION_COSE_MAC0 17
216#define COAP_MEDIATYPE_APPLICATION_COSE_KEY 101
217#define COAP_MEDIATYPE_APPLICATION_COSE_KEY_SET 102
220#define COAP_MEDIATYPE_APPLICATION_SENML_JSON 110
221#define COAP_MEDIATYPE_APPLICATION_SENSML_JSON 111
222#define COAP_MEDIATYPE_APPLICATION_SENML_CBOR 112
223#define COAP_MEDIATYPE_APPLICATION_SENSML_CBOR 113
224#define COAP_MEDIATYPE_APPLICATION_SENML_EXI 114
225#define COAP_MEDIATYPE_APPLICATION_SENSML_EXI 115
226#define COAP_MEDIATYPE_APPLICATION_SENML_XML 310
227#define COAP_MEDIATYPE_APPLICATION_SENSML_XML 311
230#define COAP_MEDIATYPE_APPLICATION_DOTS_CBOR 271
233#define COAP_MEDIATYPE_APPLICATION_ACE_CBOR 19
237#define COAP_MEDIATYPE_ANY 0xff
246#define COAP_INVALID_MID -1
252#define COAP_INVALID_TID COAP_INVALID_MID
266#define COAP_OPTION_KEY(option) (option).key
267#define COAP_OPTION_LENGTH(option) (option).length
268#define COAP_OPTION_DATA(option) ((unsigned char *)&(option) + sizeof(coap_option))
286coap_pdu_t * coap_pdu_from_pbuf(
struct pbuf *pbuf);
406 const uint8_t *token,
444 const uint8_t *data);
470 const uint8_t *data);
485 const uint8_t *data);
515 const uint8_t **data);
536 const uint8_t **data,
Helpers for handling options in CoAP PDUs.
uint16_t coap_option_num_t
coap_pdu_code_t coap_pdu_get_code(const coap_pdu_t *pdu)
Gets the PDU code associated with pdu.
const char * coap_response_phrase(unsigned char code)
Returns a human-readable response phrase for the specified CoAP response code.
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.
void coap_delete_pdu(coap_pdu_t *pdu)
Dispose of an CoAP PDU and frees associated storage.
void coap_pdu_set_code(coap_pdu_t *pdu, coap_pdu_code_t code)
Sets the PDU code in the pdu.
int coap_mid_t
coap_mid_t is used to store the CoAP Message ID of a CoAP PDU.
coap_request_t
CoAP PDU Request methods.
#define COAP_RESPONSE_CODE(N)
#define COAP_SIGNALING_CODE(N)
coap_proto_t
CoAP protocol types.
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.
coap_pdu_code_t
Set of codes available for a PDU.
coap_pdu_type_t
CoAP PDU message type definitions.
int coap_add_token(coap_pdu_t *pdu, size_t len, const uint8_t *data)
Adds token of length len to pdu.
void coap_pdu_set_type(coap_pdu_t *pdu, coap_pdu_type_t type)
Sets the PDU type in the 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.
coap_pdu_signaling_proto_t
coap_pdu_type_t coap_pdu_get_type(const coap_pdu_t *pdu)
Gets the PDU type associated with pdu.
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_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.
void coap_pdu_set_mid(coap_pdu_t *pdu, coap_mid_t mid)
Sets the message id in the pdu.
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.
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.
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_mid_t coap_pdu_get_mid(const coap_pdu_t *pdu)
Gets the message id associated with pdu.
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.
coap_bin_const_t coap_pdu_get_token(const coap_pdu_t *pdu)
Gets the token associated with pdu.
@ COAP_RESPONSE_CODE_INTERNAL_ERROR
@ COAP_RESPONSE_CODE_HOP_LIMIT_REACHED
@ COAP_SIGNALING_CODE_ABORT
@ COAP_RESPONSE_CODE_PRECONDITION_FAILED
@ COAP_RESPONSE_CODE_NOT_ALLOWED
@ COAP_RESPONSE_CODE_CHANGED
@ COAP_RESPONSE_CODE_NOT_ACCEPTABLE
@ COAP_SIGNALING_CODE_CSM
@ COAP_REQUEST_CODE_PATCH
@ COAP_RESPONSE_CODE_PROXYING_NOT_SUPPORTED
@ COAP_RESPONSE_CODE_BAD_REQUEST
@ COAP_SIGNALING_CODE_PING
@ COAP_RESPONSE_CODE_INCOMPLETE
@ COAP_REQUEST_CODE_DELETE
@ COAP_SIGNALING_CODE_PONG
@ COAP_RESPONSE_CODE_NOT_IMPLEMENTED
@ COAP_RESPONSE_CODE_NOT_FOUND
@ COAP_RESPONSE_CODE_BAD_GATEWAY
@ COAP_RESPONSE_CODE_BAD_OPTION
@ COAP_RESPONSE_CODE_REQUEST_TOO_LARGE
@ COAP_RESPONSE_CODE_TOO_MANY_REQUESTS
@ COAP_RESPONSE_CODE_CONFLICT
@ COAP_RESPONSE_CODE_DELETED
@ COAP_RESPONSE_CODE_UNAUTHORIZED
@ COAP_RESPONSE_CODE_CREATED
@ COAP_RESPONSE_CODE_CONTENT
@ COAP_RESPONSE_CODE_UNPROCESSABLE
@ COAP_RESPONSE_CODE_CONTINUE
@ COAP_RESPONSE_CODE_VALID
@ COAP_RESPONSE_CODE_UNSUPPORTED_CONTENT_FORMAT
@ COAP_SIGNALING_CODE_RELEASE
@ COAP_REQUEST_CODE_FETCH
@ COAP_RESPONSE_CODE_GATEWAY_TIMEOUT
@ COAP_REQUEST_CODE_IPATCH
@ COAP_RESPONSE_CODE_SERVICE_UNAVAILABLE
@ COAP_RESPONSE_CODE_FORBIDDEN
CoAP binary data definition with const data.
structure for CoAP PDUs token, if any, follows the fixed size header, then options until payload mark...
Abstraction of virtual session that can be attached to coap_context_t (client) or coap_endpoint_t (se...
Helper functions for URI treatment.