17#ifndef COAP_COAP_PDU_INTERNAL_H_
18#define COAP_COAP_PDU_INTERNAL_H_
35#define COAP_DEFAULT_VERSION 1
38#define COAP_MESSAGE_SIZE_OFFSET_TCP8 13
39#define COAP_MESSAGE_SIZE_OFFSET_TCP16 269
40#define COAP_MESSAGE_SIZE_OFFSET_TCP32 65805
43#define COAP_MAX_MESSAGE_SIZE_TCP0 (COAP_MESSAGE_SIZE_OFFSET_TCP8-1)
44#define COAP_MAX_MESSAGE_SIZE_TCP8 (COAP_MESSAGE_SIZE_OFFSET_TCP16-1)
45#define COAP_MAX_MESSAGE_SIZE_TCP16 (COAP_MESSAGE_SIZE_OFFSET_TCP32-1)
46#define COAP_MAX_MESSAGE_SIZE_TCP32 (COAP_MESSAGE_SIZE_OFFSET_TCP32+0xFFFFFFFF)
48#ifndef COAP_DEBUG_BUF_SIZE
49#if defined(WITH_CONTIKI) || defined(WITH_LWIP)
50#define COAP_DEBUG_BUF_SIZE 128
53#define COAP_DEBUG_BUF_SIZE (8 + 1024 * 2)
57#ifndef COAP_DEFAULT_MAX_PDU_RX_SIZE
58#if defined(WITH_CONTIKI) || defined(WITH_LWIP)
59#define COAP_DEFAULT_MAX_PDU_RX_SIZE (COAP_MAX_MESSAGE_SIZE_TCP16+4UL)
62#define COAP_DEFAULT_MAX_PDU_RX_SIZE (8UL*1024*1024+256)
70#define COAP_DROPPED_RESPONSE -2
72#define COAP_PDU_DELAYED -3
74#define COAP_PAYLOAD_START 0xFF
76#define COAP_PDU_IS_EMPTY(pdu) ((pdu)->code == 0)
77#define COAP_PDU_IS_REQUEST(pdu) (!COAP_PDU_IS_EMPTY(pdu) && (pdu)->code < 32)
78#define COAP_PDU_IS_RESPONSE(pdu) ((pdu)->code >= 64 && (pdu)->code < 224)
79#define COAP_PDU_IS_SIGNALING(pdu) ((pdu)->code >= 224)
81#define COAP_PDU_MAX_UDP_HEADER_SIZE 4
82#define COAP_PDU_MAX_TCP_HEADER_SIZE 6
166 const uint8_t *data);
239 const uint8_t *data);
263 size_t len,
const uint8_t *data);
279 const uint8_t *data);
304 const uint8_t *data);
Pulls together all the internal only header files.
uint16_t coap_option_num_t
size_t coap_insert_option(coap_pdu_t *pdu, coap_option_num_t number, size_t len, const uint8_t *data)
Inserts option of given number in the pdu with the appropriate data.
int coap_remove_option(coap_pdu_t *pdu, coap_option_num_t number)
Removes (first) option of given number from the pdu.
int coap_update_token(coap_pdu_t *pdu, size_t len, const uint8_t *data)
Updates token in pdu with length len and data.
int coap_pdu_parse_header(coap_pdu_t *pdu, coap_proto_t proto)
Decode the protocol specific header for the specified PDU.
size_t coap_pdu_parse_header_size(coap_proto_t proto, const uint8_t *data)
Interprets data to determine the number of bytes in the header.
void coap_pdu_clear(coap_pdu_t *pdu, size_t size)
Clears any contents from pdu and resets used_size, and data pointers.
int coap_pdu_parse_opt(coap_pdu_t *pdu)
Verify consistency in the given CoAP PDU structure and locate the data.
size_t coap_update_option(coap_pdu_t *pdu, coap_option_num_t number, size_t len, const uint8_t *data)
Updates existing first option of given number in the pdu with the new data.
size_t coap_pdu_encode_header(coap_pdu_t *pdu, coap_proto_t proto)
Compose the protocol specific header for the specified PDU.
int coap_pdu_check_resize(coap_pdu_t *pdu, size_t new_size)
Dynamically grows the size of pdu to new_size if needed.
size_t coap_pdu_parse_size(coap_proto_t proto, const uint8_t *data, size_t length)
Parses data to extract the message size.
int coap_pdu_resize(coap_pdu_t *pdu, size_t new_size)
Dynamically grows the size of pdu to new_size.
size_t coap_add_option_internal(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_mid_t
coap_mid_t is used to store the CoAP Message ID of a CoAP PDU.
coap_proto_t
CoAP protocol types.
coap_pdu_code_t
Set of codes available for a PDU.
coap_pdu_type_t
CoAP PDU message type definitions.
Structure to hold large body (many blocks) transmission information.
structure for CoAP PDUs token, if any, follows the fixed size header, then options until payload mark...
uint8_t max_hdr_size
space reserved for protocol-specific header
uint16_t max_opt
highest option number in PDU
uint8_t * token
first byte of token, if any, or options
coap_lg_xmit_t * lg_xmit
Holds ptr to lg_xmit if sending a set of blocks.
size_t body_length
Holds body data length.
size_t max_size
maximum size for token, options and payload, or zero for variable size pdu
const uint8_t * body_data
Holds ptr to re-assembled data or NULL.
size_t body_offset
Holds body data offset.
coap_pdu_code_t code
request method (value 1–31) or response code (value 64-255)
uint8_t token_length
length of Token
uint8_t hdr_size
actual size used for protocol-specific header
uint8_t * data
first byte of payload, if any
coap_mid_t mid
message id, if any, in regular host byte order
size_t used_size
used bytes of storage for token, options and payload
uint8_t crit_opt
Set if unknown critical option for proxy.
size_t alloc_size
allocated storage for token, options and payload
size_t body_total
Holds body data total size.
coap_pdu_type_t type
message type