libcoap
4.3.0beta
|
API functions for access option filters. More...
Data Structures | |
struct | coap_opt_iterator_t |
Iterator to run through PDU options. More... | |
struct | coap_optlist_t |
Representation of chained list of CoAP options to install. 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... | |
Typedefs | |
typedef uint16_t | coap_opt_filter_t[COAP_OPT_FILTER_SIZE] |
Fixed-size vector we use for option filtering. More... | |
typedef struct coap_optlist_t | coap_optlist_t |
Representation of chained list of CoAP options to install. More... | |
Functions | |
COAP_STATIC_INLINE void | coap_option_filter_clear (coap_opt_filter_t f) |
Clears filter f . More... | |
int | coap_option_filter_set (coap_opt_filter_t filter, uint16_t type) |
Sets the corresponding entry for type in filter . More... | |
int | coap_option_filter_unset (coap_opt_filter_t filter, uint16_t type) |
Clears the corresponding entry for type in filter . More... | |
int | coap_option_filter_get (coap_opt_filter_t filter, uint16_t type) |
Checks if type is contained in filter . More... | |
coap_opt_iterator_t * | coap_option_iterator_init (const 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, uint16_t 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, uint16_t delta, size_t length) |
Encodes the given delta and length values into opt . More... | |
size_t | coap_opt_encode_size (uint16_t delta, size_t length) |
Compute storage bytes needed for an option with given delta and length . More... | |
size_t | coap_opt_encode (coap_opt_t *opt, size_t n, uint16_t delta, const uint8_t *val, size_t length) |
Encodes option with given delta into opt . More... | |
uint32_t | coap_opt_length (const coap_opt_t *opt) |
Returns the length of the given option. More... | |
const uint8_t * | coap_opt_value (const coap_opt_t *opt) |
Returns a pointer to the value of the given option. More... | |
coap_optlist_t * | coap_new_optlist (uint16_t number, size_t length, const uint8_t *data) |
Create a new optlist entry. More... | |
int | coap_add_optlist_pdu (coap_pdu_t *pdu, coap_optlist_t **optlist_chain) |
The current optlist of optlist_chain is first sorted (as per RFC7272 ordering requirements) and then added to the pdu . More... | |
int | coap_insert_optlist (coap_optlist_t **optlist_chain, coap_optlist_t *optlist) |
Adds optlist to the given optlist_chain . More... | |
void | coap_delete_optlist (coap_optlist_t *optlist_chain) |
Removes all entries from the optlist_chain , freeing off their memory usage. More... | |
API functions for access option filters.
#define COAP_OPT_ALL NULL |
#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 |
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.
typedef struct coap_optlist_t coap_optlist_t |
Representation of chained list of CoAP options to install.
int coap_add_optlist_pdu | ( | coap_pdu_t * | pdu, |
coap_optlist_t ** | optlist_chain | ||
) |
The current optlist of optlist_chain
is first sorted (as per RFC7272 ordering requirements) and then added to the pdu
.
pdu | The pdu to add the options to from the chain list |
optlist_chain | The chained list of optlist to add to the pdu |
1
if succesful or 0
if failure; Definition at line 550 of file option.c.
coap_opt_t* coap_check_option | ( | coap_pdu_t * | pdu, |
uint16_t | 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 196 of file option.c.
void coap_delete_optlist | ( | coap_optlist_t * | optlist_chain | ) |
int coap_insert_optlist | ( | coap_optlist_t ** | optlist_chain, |
coap_optlist_t * | optlist | ||
) |
Adds optlist
to the given optlist_chain
.
The optlist_chain variable be set to NULL before the initial call to coap_insert_optlist(). The optlist_chain will need to be deleted using coap_delete_optlist() when no longer required.
optlist_chain | The chain to add optlist to |
optlist | The optlist to add to the queue |
1
if successful, 0
otherwise. coap_optlist_t* coap_new_optlist | ( | uint16_t | number, |
size_t | length, | ||
const uint8_t * | data | ||
) |
size_t coap_opt_encode | ( | coap_opt_t * | opt, |
size_t | n, | ||
uint16_t | delta, | ||
const uint8_t * | 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 369 of file option.c.
size_t coap_opt_encode_size | ( | uint16_t | delta, |
size_t | length | ||
) |
uint32_t 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 209 of file option.c.
size_t coap_opt_setheader | ( | coap_opt_t * | opt, |
size_t | maxlen, | ||
uint16_t | 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 289 of file option.c.
const uint8_t* coap_opt_value | ( | const 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 246 of file option.c.
COAP_STATIC_INLINE void coap_option_filter_clear | ( | coap_opt_filter_t | f | ) |
int coap_option_filter_get | ( | coap_opt_filter_t | filter, |
uint16_t | 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 504 of file option.c.
int coap_option_filter_set | ( | coap_opt_filter_t | filter, |
uint16_t | 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 494 of file option.c.
int coap_option_filter_unset | ( | coap_opt_filter_t | filter, |
uint16_t | 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 499 of file option.c.
coap_opt_iterator_t* coap_option_iterator_init | ( | const 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 110 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 146 of file option.c.