libcoap
4.1.2
|
Data Structures | |
struct | coap_opt_iterator_t |
Iterator to run through PDU options. More... | |
Macros | |
#define | COAP_OPT_FILTER_SHORT 6 |
The number of option types below 256 that can be stored in an option filter. More... | |
#define | COAP_OPT_FILTER_LONG 2 |
The number of option types above 255 that can be stored in an option filter. More... | |
#define | COAP_OPT_FILTER_SIZE (((COAP_OPT_FILTER_SHORT + 1) >> 1) + COAP_OPT_FILTER_LONG) +1 |
The number of elements in coap_opt_filter_t. More... | |
#define | COAP_OPT_ALL NULL |
Pre-defined filter that includes all options. More... | |
#define | COAP_OPT_DELTA(opt) coap_opt_delta(opt) |
#define | COAP_OPT_SETDELTA(opt, val) coap_opt_encode((opt), COAP_MAX_PDU_SIZE, (val), NULL, 0) |
#define | COAP_OPT_LENGTH(opt) coap_opt_length(opt) |
#define | COAP_OPT_VALUE(opt) coap_opt_value((coap_opt_t *)opt) |
Typedefs | |
typedef uint16_t | coap_opt_filter_t[COAP_OPT_FILTER_SIZE] |
Fixed-size vector we use for option filtering. More... | |
Functions | |
static void | coap_option_filter_clear (coap_opt_filter_t f) |
Clears filter f . More... | |
int | coap_option_filter_set (coap_opt_filter_t filter, unsigned short type) |
Sets the corresponding entry for type in filter . More... | |
int | coap_option_filter_unset (coap_opt_filter_t filter, unsigned short type) |
Clears the corresponding entry for type in filter . More... | |
int | coap_option_filter_get (const coap_opt_filter_t filter, unsigned short type) |
Checks if type is contained in filter . More... | |
static int | coap_option_setb (coap_opt_filter_t filter, unsigned short type) |
Sets the corresponding bit for type in filter . More... | |
static int | coap_option_clrb (coap_opt_filter_t filter, unsigned short type) |
Clears the corresponding bit for type in filter . More... | |
static int | coap_option_getb (const coap_opt_filter_t filter, unsigned short type) |
Gets the corresponding bit for type in filter . More... | |
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. More... | |
coap_opt_t * | coap_option_next (coap_opt_iterator_t *oi) |
Updates the iterator oi to point to the next option. More... | |
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 . More... | |
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 . More... | |
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 . More... | |
unsigned short | coap_opt_delta (const coap_opt_t *opt) |
Decodes the delta value of the next option. More... | |
unsigned short | coap_opt_length (const coap_opt_t *opt) |
Returns the length of the given option. More... | |
unsigned char * | coap_opt_value (coap_opt_t *opt) |
Returns a pointer to the value of the given option. More... | |
#define COAP_OPT_ALL NULL |
#define COAP_OPT_DELTA | ( | opt | ) | coap_opt_delta(opt) |
#define COAP_OPT_FILTER_LONG 2 |
#define COAP_OPT_FILTER_SHORT 6 |
#define COAP_OPT_FILTER_SIZE (((COAP_OPT_FILTER_SHORT + 1) >> 1) + COAP_OPT_FILTER_LONG) +1 |
#define COAP_OPT_LENGTH | ( | opt | ) | coap_opt_length(opt) |
#define COAP_OPT_SETDELTA | ( | opt, | |
val | |||
) | coap_opt_encode((opt), COAP_MAX_PDU_SIZE, (val), NULL, 0) |
#define COAP_OPT_VALUE | ( | opt | ) | coap_opt_value((coap_opt_t *)opt) |
typedef uint16_t coap_opt_filter_t[COAP_OPT_FILTER_SIZE] |
Fixed-size vector we use for option filtering.
It is large enough to hold COAP_OPT_FILTER_SHORT entries with an option number between 0 and 255, and COAP_OPT_FILTER_LONG entries with an option number between 256 and 65535. Its internal structure is
The first element contains a bit vector that indicates which fields in the remaining array are used. The first COAP_OPT_FILTER_LONG bits correspond to the long option types that are stored in the elements from index 1 to COAP_OPT_FILTER_LONG. The next COAP_OPT_FILTER_SHORT bits correspond to the short option types that are stored in the elements from index COAP_OPT_FILTER_LONG + 1 to COAP_OPT_FILTER_LONG + COAP_OPT_FILTER_SHORT. The latter elements are treated as bytes.
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
.
oi
must point to a coap_opt_iterator_t object that will be initialized by this function to filter only options with code type
. This function returns the first option with this type, or NULL
if not found.
pdu | The PDU to parse for options. |
type | The option type code to search for. |
oi | An iterator object to use. |
type
, or NULL
if not found. Definition at line 209 of file option.c.
unsigned short coap_opt_delta | ( | const coap_opt_t * | opt | ) |
Decodes the delta value of the next option.
This function returns the number of bytes read or 0
on error. The caller of this function must ensure that it does not read over the boundaries of opt
(e.g. by calling coap_opt_check_delta().
opt | The option to examine. |
0
on error. 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
.
This function returns the number of bytes written to opt
or 0
on error. This happens especially when opt
does not provide sufficient space to store the option value, delta, and option jumps when required.
opt | The option buffer space where val is written. |
n | Maximum length of opt . |
delta | The option delta. |
val | The option value to copy into opt . |
length | The actual length of val . |
opt
or 0
on error. The return value will always be less than n
. Definition at line 384 of file option.c.
unsigned short coap_opt_length | ( | const coap_opt_t * | opt | ) |
Returns the length of the given option.
opt
must point to an option jump or the beginning of the option. This function returns 0
when opt
is not an option or the actual length of opt
(which can be 0
as well).
0
in case of an error is that in most contexts, the result of this function is used to skip the next coap_opt_length() bytes.}opt | The option whose length should be returned. |
0
when undefined. Definition at line 251 of file option.c.
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
.
This function returns the number of bytes that were required to encode delta
and length
or 0
on error. Note that the result indicates by how many bytes opt
must be advanced to encode the option value.
opt | The option buffer space where delta and length are written. |
maxlen | The maximum length of opt . |
delta | The actual delta value to encode. |
length | The actual length value to encode. |
0
on error. Definition at line 329 of file option.c.
unsigned char* coap_opt_value | ( | coap_opt_t * | opt | ) |
Returns a pointer to the value of the given option.
opt
must point to an option jump or the beginning of the option. This function returns NULL
if opt
is not a valid option.
opt | The option whose value should be returned. |
NULL
on error. Definition at line 286 of file option.c.
|
inlinestatic |
Clears the corresponding bit for type
in filter
.
This function returns 1
if bit was cleared or -1
on error (i.e. when the given type does not fit in the filter).
filter | The filter object to change. |
type | The type for which the bit should be cleared. |
1
if bit was set, -1
otherwise. Definition at line 216 of file option.h.
|
inlinestatic |
int coap_option_filter_get | ( | const coap_opt_filter_t | filter, |
unsigned short | type | ||
) |
Checks if type
is contained in filter
.
This function returns 1
if found, 0
if not, or -1
on error (i.e. when the given type does not fit in the filter).
filter | The filter object to search. |
type | The type to search for. |
1
if type
was found, 0
otherwise, or -1
on error. Definition at line 519 of file option.c.
int coap_option_filter_set | ( | coap_opt_filter_t | filter, |
unsigned short | type | ||
) |
Sets the corresponding entry for type
in filter
.
This function returns 1
if bit was set or 0
on error (i.e. when the given type does not fit in the filter).
filter | The filter object to change. |
type | The type for which the bit should be set. |
1
if bit was set, 0
otherwise. Definition at line 509 of file option.c.
int coap_option_filter_unset | ( | coap_opt_filter_t | filter, |
unsigned short | type | ||
) |
Clears the corresponding entry for type
in filter
.
This function returns 1
if bit was set or 0
on error (i.e. when the given type does not fit in the filter).
filter | The filter object to change. |
type | The type that should be cleared from the filter. |
1
if bit was set, 0
otherwise. Definition at line 514 of file option.c.
|
inlinestatic |
Gets the corresponding bit for type
in filter
.
This function returns 1
if the bit is set 0
if not, or -1
on error (i.e. when the given type does not fit in the filter).
filter | The filter object to read bit from. |
type | The type for which the bit should be read. |
1
if bit was set, 0
if not, -1
on error. Definition at line 233 of file option.h.
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.
This function returns oi
on success, NULL
otherwise (i.e. when no options exist). Note that a length check on the option list must be performed before coap_option_iterator_init() is called.
pdu | The PDU the options of which should be walked through. |
oi | An iterator object that will be initilized. |
filter | An optional option type filter. With type != COAP_OPT_ALL , coap_option_next() will return only options matching this bitmask. Fence-post options 14 , 28 , 42 , ... are always skipped. |
oi
on success, NULL
otherwise. Definition at line 120 of file option.c.
coap_opt_t* coap_option_next | ( | coap_opt_iterator_t * | oi | ) |
Updates the iterator oi
to point to the next option.
This function returns a pointer to that option or NULL
if no more options exist. The contents of oi
will be updated. In particular, oi->n
specifies the current option's ordinal number (counted from 1
), oi->type
is the option's type code, and oi->option
points to the beginning of the current option itself. When advanced past the last option, oi->option
will be NULL
.
Note that options are skipped whose corresponding bits in the filter specified with coap_option_iterator_init() are 0
. Options with type codes that do not fit in this filter hence will always be returned.
oi | The option iterator to update. |
NULL
if no more options exist. Definition at line 159 of file option.c.
|
inlinestatic |
Sets the corresponding bit for type
in filter
.
This function returns 1
if bit was set or -1
on error (i.e. when the given type does not fit in the filter).
filter | The filter object to change. |
type | The type for which the bit should be set. |
1
if bit was set, -1
otherwise. Definition at line 199 of file option.h.