libcoap  4.1.2
Data Structures | Macros | Enumerations | Functions
option.c File Reference
#include "coap_config.h"
#include <stdio.h>
#include <string.h>
#include "option.h"
#include "encode.h"
#include "debug.h"
Include dependency graph for option.c:

Go to the source code of this file.

Data Structures

struct  opt_filter
 

Macros

#define ADVANCE_OPT(o, e, step)
 
#define LONG_MASK   ((1 << COAP_OPT_FILTER_LONG) - 1)
 
#define SHORT_MASK   (~LONG_MASK & ((1 << (COAP_OPT_FILTER_LONG + COAP_OPT_FILTER_SHORT)) - 1))
 

Enumerations

enum  filter_op_t { FILTER_SET, FILTER_CLEAR, FILTER_GET }
 Operation specifiers for coap_filter_op(). More...
 

Functions

coap_opt_toptions_start (coap_pdu_t *pdu)
 Calculates the beginning of the PDU's option section. More...
 
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. More...
 
coap_opt_iterator_tcoap_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...
 
static int opt_finished (coap_opt_iterator_t *oi)
 
coap_opt_tcoap_option_next (coap_opt_iterator_t *oi)
 Updates the iterator oi to point to the next option. More...
 
coap_opt_tcoap_check_option (coap_pdu_t *pdu, unsigned short type, coap_opt_iterator_t *oi)
 Retrieves the first option of type type from pdu. 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...
 
size_t coap_opt_size (const coap_opt_t *opt)
 Returns the size of the given option, taking into account a possible option jump. 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 maxlen, unsigned short delta, const unsigned char *val, size_t length)
 Encodes option with given delta into opt. More...
 
static int is_long_option (unsigned short type)
 Returns true iff type denotes an option type larger than 255. More...
 
static int coap_option_filter_op (coap_opt_filter_t filter, unsigned short type, enum filter_op_t op)
 Applies op on filter with respect to type. 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...
 

Macro Definition Documentation

§ ADVANCE_OPT

#define ADVANCE_OPT (   o,
  e,
  step 
)
Value:
if ((e) < step) { \
debug("cannot advance opt past end\n"); \
return 0; \
} else { \
(e) -= step; \
(o) = ((unsigned char *)(o)) + step; \
}

§ LONG_MASK

#define LONG_MASK   ((1 << COAP_OPT_FILTER_LONG) - 1)

Definition at line 414 of file option.c.

§ SHORT_MASK

#define SHORT_MASK   (~LONG_MASK & ((1 << (COAP_OPT_FILTER_LONG + COAP_OPT_FILTER_SHORT)) - 1))

Definition at line 415 of file option.c.

Enumeration Type Documentation

§ filter_op_t

Operation specifiers for coap_filter_op().

Enumerator
FILTER_SET 
FILTER_CLEAR 
FILTER_GET 

Definition at line 427 of file option.c.

Function Documentation

§ coap_opt_parse()

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.

This function returns the number of bytes that have been parsed, or 0 on error. An error is signaled when illegal delta or length values are encountered or when option parsing would result in reading past the option (i.e. beyond opt + length).

Parameters
optThe beginning of the option to parse.
lengthThe maximum length of opt.
resultA pointer to the coap_option_t structure that is filled with actual values iff coap_opt_parse() > 0.
Returns
The number of bytes parsed or 0 on error.

Definition at line 39 of file option.c.

Here is the caller graph for this function:

§ coap_opt_size()

size_t coap_opt_size ( const coap_opt_t opt)

Returns the size of the given option, taking into account a possible option jump.

Parameters
optAn option jump or the beginning of the option.
Returns
The number of bytes between opt and the end of the option starting at opt. In case of an error, this function returns 0 as options need at least one byte storage space.

Definition at line 321 of file option.c.

Here is the call graph for this function:

§ coap_option_filter_op()

static int coap_option_filter_op ( coap_opt_filter_t  filter,
unsigned short  type,
enum filter_op_t  op 
)
static

Applies op on filter with respect to type.

The following operations are defined:

FILTER_SET: Store type into an empty slot in filter. Returns 1 on success, or 0 if no spare slot was available.

FILTER_CLEAR: Remove type from filter if it exists.

FILTER_GET: Search for type in filter. Returns 1 if found, or 0 if not found.

Parameters
filterThe filter object.
typeThe option type to set, get or clear in filter.
opThe operation to apply to filter and type.
Returns
1 on success, and 0 when FILTER_GET yields no hit or no free slot is available to store type with FILTER_SET.

Definition at line 449 of file option.c.

Here is the call graph for this function:
Here is the caller graph for this function:

§ is_long_option()

static int is_long_option ( unsigned short  type)
inlinestatic

Returns true iff type denotes an option type larger than 255.

Definition at line 424 of file option.c.

Here is the caller graph for this function:

§ opt_finished()

static int opt_finished ( coap_opt_iterator_t oi)
inlinestatic

Definition at line 147 of file option.c.

Here is the caller graph for this function:

§ options_start()

coap_opt_t* options_start ( coap_pdu_t pdu)

Calculates the beginning of the PDU's option section.

Parameters
pduThe PDU containing the options.
Returns
A pointer to the first option if available, or NULL otherwise.

Definition at line 25 of file option.c.