15 #ifndef _COAP_OPTION_H_ 16 #define _COAP_OPTION_H_ 26 #define PCHAR(p) ((coap_opt_t *)(p)) 63 #define COAP_OPT_SIZE(opt) coap_opt_size(opt) 78 #define options_next(opt) \ 79 ((coap_opt_t *)((unsigned char *)(opt) + COAP_OPT_SIZE(opt))) 92 #define COAP_OPT_FILTER_SHORT 6 100 #define COAP_OPT_FILTER_LONG 2 104 #if (COAP_OPT_FILTER_SHORT + COAP_OPT_FILTER_LONG > 16) 105 #error COAP_OPT_FILTER_SHORT + COAP_OPT_FILTER_LONG must be less or equal 16 109 #define COAP_OPT_FILTER_SIZE \ 110 (((COAP_OPT_FILTER_SHORT + 1) >> 1) + COAP_OPT_FILTER_LONG) +1 138 #define COAP_OPT_ALL NULL 257 unsigned int filtered:1;
333 unsigned short delta,
353 unsigned short delta,
354 const unsigned char *val,
370 #define COAP_OPT_DELTA(opt) coap_opt_delta(opt) 373 #define COAP_OPT_SETDELTA(opt,val) \ 374 coap_opt_encode((opt), COAP_MAX_PDU_SIZE, (val), NULL, 0) 392 #define COAP_OPT_LENGTH(opt) coap_opt_length(opt) 406 #define COAP_OPT_VALUE(opt) coap_opt_value((coap_opt_t *)opt) size_t coap_opt_size(const coap_opt_t *opt)
Returns the size of the given option, taking into account a possible option jump. ...
int coap_option_filter_set(coap_opt_filter_t filter, unsigned short type)
Sets the corresponding entry for type in filter.
size_t coap_opt_parse(const coap_opt_t *opt, size_t length, coap_option_t *result)
Parses the option pointed to by opt into result.
unsigned char * coap_opt_value(coap_opt_t *opt)
Returns a pointer to the value of the given option.
coap_opt_t * options_start(coap_pdu_t *pdu)
Calculates the beginning of the PDU's option section.
size_t length
remaining length of PDU
static int coap_option_getb(const coap_opt_filter_t filter, unsigned short type)
Gets the corresponding bit for type in filter.
coap_opt_t * coap_option_next(coap_opt_iterator_t *oi)
Updates the iterator oi to point to the next option.
coap_opt_filter_t filter
option filter
#define COAP_OPT_FILTER_SIZE
The number of elements in coap_opt_filter_t.
static int coap_option_setb(coap_opt_filter_t filter, unsigned short type)
Sets the corresponding bit for type in filter.
Header structure for CoAP PDUs.
coap_opt_iterator_t * coap_option_iterator_init(coap_pdu_t *pdu, coap_opt_iterator_t *oi, const coap_opt_filter_t filter)
Initializes the given option iterator oi to point to the beginning of the pdu's option list...
Representation of CoAP options.
coap_opt_t * next_option
pointer to the unparsed next option
unsigned short coap_opt_delta(const coap_opt_t *opt)
Decodes the delta value of the next option.
Iterator to run through PDU options.
Pre-defined constants that reflect defaults for CoAP.
unsigned short type
decoded option type
uint16_t coap_opt_filter_t[COAP_OPT_FILTER_SIZE]
Fixed-size vector we use for option filtering.
static void coap_option_filter_clear(coap_opt_filter_t f)
Clears filter f.
size_t coap_opt_setheader(coap_opt_t *opt, size_t maxlen, unsigned short delta, size_t length)
Encodes the given delta and length values into opt.
int coap_option_filter_get(const coap_opt_filter_t filter, unsigned short type)
Checks if type is contained in filter.
unsigned char coap_opt_t
Use byte-oriented access methods here because sliding a complex struct coap_opt_t over the data buffe...
coap_opt_t * coap_check_option(coap_pdu_t *pdu, unsigned short type, coap_opt_iterator_t *oi)
Retrieves the first option of type type from pdu.
static int coap_option_clrb(coap_opt_filter_t filter, unsigned short type)
Clears the corresponding bit for type in filter.
unsigned short coap_opt_length(const coap_opt_t *opt)
Returns the length of the given option.
size_t coap_opt_encode(coap_opt_t *opt, size_t n, unsigned short delta, const unsigned char *val, size_t length)
Encodes option with given delta into opt.
int coap_option_filter_unset(coap_opt_filter_t filter, unsigned short type)
Clears the corresponding entry for type in filter.