81 char* host,
size_t length
83 assert(length > 0 && length <= 255);
427 char* scheme,
size_t length
508 char* uri,
size_t length
510 assert(length > 0 && length <= 1034);
625 const uint8_t** value
645 const uint8_t** value
665 uint8_t* value,
size_t size
745 uint8_t* etag,
size_t size
747 assert(size > 0 && size <= 8);
784 const char** component
804 const char** component
836 return res < 0 ? res : res + 1;
854 char* component,
size_t length
895 char* path,
size_t length
955 const char** component
975 const char** component
1007 return res < 0 ? res : res + 1;
1026 char* component,
size_t length
1070 char* path,
size_t length
1178 name, length, value);
1231 unicoap_options_iterator_init(&iterator, options);
1232 return unicoap_options_get_next_uri_query_by_name(&iterator,
1233 name, length, value);
1261 unicoap_options_iterator_init(&iterator, options);
1262 return unicoap_options_get_next_uri_query_by_name_string(&iterator,
1287 (uint8_t*)queries, capacity,
'&');
1306 char* query,
size_t length
1350 char* queries,
size_t length
1458 name, length, value);
1511 unicoap_options_iterator_init(&iterator, options);
1512 return unicoap_options_get_next_location_query_by_name(&iterator,
1513 name, length, value);
1541 unicoap_options_iterator_init(&iterator, options);
1542 return unicoap_options_get_next_location_query_by_name_string(&iterator,
1567 (uint8_t*)queries, capacity,
'&');
1586 char* query,
size_t length
1630 char* queries,
size_t length
1679#define UNICOAP_OBSERVE_OPTION_REGISTER (0)
1682#define UNICOAP_OBSERVE_OPTION_DEREGISTER (1)
1756#define UNICOAP_BLOCK_OPTION_NONE (0x0f000000)
POSIX.1-2008 compliant version of the assert macro.
#define assert(cond)
abort the program if assertion is false
Functions to work with different byte orders.
Constants used in CoAP such as option numbers and message codes.
static ssize_t unicoap_options_get_uint8(const unicoap_options_t *options, unicoap_option_number_t number, uint8_t *uint)
Retrieves an unsigned option value that takes up at most one bytes.
static ssize_t unicoap_options_get_uint16(const unicoap_options_t *options, unicoap_option_number_t number, uint16_t *uint)
Retrieves an unsigned option value that takes up at most 2 bytes.
ssize_t unicoap_options_copy_values_joined(const unicoap_options_t *options, unicoap_option_number_t number, uint8_t *buffer, size_t capacity, uint8_t separator)
Copies the values of all options with the given number joined by the given separator.
ssize_t unicoap_options_get(const unicoap_options_t *options, unicoap_option_number_t number, const uint8_t **value)
Retrieves the value of the option with given value, if present.
static ssize_t unicoap_options_get_next_query_by_name_string(unicoap_options_iterator_t *iterator, unicoap_option_number_t number, const char *name, const char **value)
Gets the next query option matching a given null-terminated name string, potentially skipping any opt...
int unicoap_options_remove_all(unicoap_options_t *options, unicoap_option_number_t number)
Removes all options with the given number, if any.
static ssize_t unicoap_options_get_uint24(const unicoap_options_t *options, unicoap_option_number_t number, uint32_t *uint)
Retrieves an unsigned option value that takes up at most 3 bytes.
int unicoap_options_add(unicoap_options_t *options, unicoap_option_number_t number, const uint8_t *value, size_t value_size)
Adds a repeatable option with the given value.
int unicoap_options_set(unicoap_options_t *options, unicoap_option_number_t number, const uint8_t *value, size_t value_size)
Sets the option with the given number.
int unicoap_options_set_uint(unicoap_options_t *options, unicoap_option_number_t number, uint32_t value)
Sets the option with the given number to the unsigned integer value passed.
ssize_t unicoap_options_get_next_by_number(unicoap_options_iterator_t *iterator, unicoap_option_number_t number, const uint8_t **value)
Gets the next option with the given number, potentially skipping any options in between.
static int unicoap_options_remove(unicoap_options_t *options, unicoap_option_number_t number)
Removes option with the given number, if present.
static ssize_t unicoap_options_get_uint32(const unicoap_options_t *options, unicoap_option_number_t number, uint32_t *uint)
Retrieves an unsigned option value that takes up at most 4 bytes.
int unicoap_options_add_values_joined(unicoap_options_t *options, unicoap_option_number_t number, const uint8_t *buffer, size_t size, uint8_t separator)
Splits the given value into separate values and adds them as option values.
ssize_t unicoap_options_get_next_query_by_name(unicoap_options_iterator_t *iterator, unicoap_option_number_t number, const char *name, size_t length, const char **value)
Gets the next query option matching the given name, potentially skipping any options in between.
static ssize_t unicoap_options_get_next_location_query_by_name_string(unicoap_options_iterator_t *iterator, const char *name, const char **value)
Gets the next Location-Query option matching the given name, potentially skipping any options in betw...
static ssize_t unicoap_options_add_uri_path_string(unicoap_options_t *options, char *path)
Adds multiple Uri-Path options from null-terminated string.
uint32_t unicoap_block_option_t
Block1 and Block2 option value
static ssize_t unicoap_options_get_proxy_scheme(const unicoap_options_t *options, const char **scheme)
Retrieves the Proxy-Scheme option, if present.
static ssize_t unicoap_options_set_size2(unicoap_options_t *options, uint32_t size)
Sets the Size2 option.
static ssize_t unicoap_options_get_first_uri_query(const unicoap_options_t *options, const char **query)
Retrieves the first Uri-Query option, if present.
static ssize_t unicoap_options_set_proxy_scheme_string(unicoap_options_t *options, char *scheme)
Sets the Proxy-Scheme option from null-terminated string.
static int unicoap_options_remove_observe(unicoap_options_t *options)
Removes the Observe option, if present.
static ssize_t unicoap_options_copy_location_path(const unicoap_options_t *options, char *path, size_t capacity)
Copies absolute location path into the given buffer.
static ssize_t unicoap_options_set_if_none_match(unicoap_options_t *options, bool value)
Sets the If-None-Match option.
static ssize_t unicoap_options_get_next_location_query_by_name(unicoap_options_iterator_t *iterator, const char *name, size_t length, const char **value)
Gets the next Location-Query option matching the given name, potentially skipping any options in betw...
static int unicoap_options_remove_block1(unicoap_options_t *options)
Removes the Block1 option, if present.
static int unicoap_options_remove_location_queries(unicoap_options_t *options)
Removes all Location-Query options, if any.
static ssize_t unicoap_options_add_uri_query_string(unicoap_options_t *options, char *query)
Adds Uri-Query option from null-terminated string.
static ssize_t unicoap_options_get_first_uri_query_by_name(unicoap_options_t *options, const char *name, size_t length, const char **value)
Retrieves the first Uri-Query option matching the given name,if present.
static ssize_t unicoap_options_set_uri_port(unicoap_options_t *options, uint16_t port)
Sets the Uri-Port option.
static ssize_t unicoap_options_set_proxy_uri(unicoap_options_t *options, char *uri, size_t length)
Sets the Proxy-Uri option.
static ssize_t unicoap_options_set_proxy_uri_string(unicoap_options_t *options, char *uri)
Sets the Proxy-Uri option from null-terminated string.
static ssize_t unicoap_options_set_proxy_scheme(unicoap_options_t *options, char *scheme, size_t length)
Sets the Proxy-Scheme option.
static int unicoap_options_remove_accept(unicoap_options_t *options)
Removes the Accept option, if present.
static ssize_t unicoap_options_set_accept(unicoap_options_t *options, unicoap_content_format_t format)
Sets the Accept option.
static ssize_t unicoap_options_add_location_queries(unicoap_options_t *options, char *queries, size_t length)
Adds multiple Location-Query options from string.
static int unicoap_options_set_block(unicoap_options_t *options, unicoap_option_number_t number, unicoap_block_option_t block)
Sets the Block1 or Block2 option.
static ssize_t unicoap_options_add_location_path_component_string(unicoap_options_t *options, char *component)
Adds Location-Path option from null-terminated string.
static ssize_t unicoap_options_add_uri_queries(unicoap_options_t *options, char *queries, size_t length)
Adds multiple Uri-Query options from string.
static ssize_t unicoap_options_add_if_match(unicoap_options_t *options, uint8_t *value, size_t size)
Adds If-Match option.
static ssize_t unicoap_options_add_uri_query(unicoap_options_t *options, char *query, size_t length)
Adds Uri-Query option.
static ssize_t unicoap_options_set_no_response(unicoap_options_t *options, uint8_t value)
Sets the No-Response option.
static ssize_t unicoap_options_set_block1(unicoap_options_t *options, unicoap_block_option_t block)
Sets the Block1 option.
static ssize_t unicoap_options_add_location_path(unicoap_options_t *options, char *path, size_t length)
Adds multiple Location-Path options from string.
static ssize_t unicoap_options_set_observe(unicoap_options_t *options, uint32_t observe)
Sets the Observe option.
static ssize_t unicoap_options_get_block(const unicoap_options_t *options, unicoap_option_number_t number, unicoap_block_option_t *block)
Retrieves a Block1 or Block2 option.
static ssize_t unicoap_options_get_max_age(const unicoap_options_t *options, uint32_t *age)
Retrieves the Max-Age option, if present.
static int unicoap_options_remove_max_age(unicoap_options_t *options)
Removes the Max-Age option, if present.
static ssize_t unicoap_options_add_location_path_component(unicoap_options_t *options, char *component, size_t length)
Adds Location-Path option.
static ssize_t unicoap_options_get_first_etag(const unicoap_options_t *options, const uint8_t **etag)
Retrieves the first ETag option, if present.
static ssize_t unicoap_options_get_block2(const unicoap_options_t *options, unicoap_block_option_t *block)
Retrieves the Block2 option, if present.
static ssize_t unicoap_options_get_next_uri_query_by_name_string(unicoap_options_iterator_t *iterator, const char *name, const char **value)
Gets the next Uri-Query option matching the given name, potentially skipping any options in between.
static ssize_t unicoap_options_copy_location_queries(const unicoap_options_t *options, char *queries, size_t capacity)
Copies location query string into the given buffer.
static ssize_t unicoap_options_add_uri_path(unicoap_options_t *options, char *path, size_t length)
Adds multiple Uri-Path options from string.
static ssize_t unicoap_options_get_first_location_query(const unicoap_options_t *options, const char **query)
Retrieves the first Location-Query option, if present.
unicoap_content_format_t
Content-Format option values
static ssize_t unicoap_options_set_uri_host_string(unicoap_options_t *options, char *host)
Sets the Uri-Host option from null-terminated string.
static ssize_t unicoap_options_get_first_if_match(const unicoap_options_t *options, const uint8_t **value)
Retrieves the first If-Match option, if present.
static int unicoap_options_remove_no_response(unicoap_options_t *options)
Removes the No-Response option, if present.
static ssize_t unicoap_options_add_location_query_string(unicoap_options_t *options, char *query)
Adds Location-Query option from null-terminated string.
static ssize_t unicoap_options_get_next_uri_query(unicoap_options_iterator_t *iterator, const char **query)
Gets the next Uri-Query option provided by the specified iterator.
static int unicoap_options_remove_all_if_match(unicoap_options_t *options)
Removes all If-Match options, if any.
static ssize_t unicoap_options_get_first_location_query_by_name_string(unicoap_options_t *options, const char *name, const char **value)
Retrieves the first Location-Query option matching the given null-terminated name,...
static int unicoap_options_remove_uri_host(unicoap_options_t *options)
Removes the Uri-Host option, if present.
static ssize_t unicoap_options_get_first_uri_path_component(const unicoap_options_t *options, const char **component)
Retrieves the first Uri-Path option, if present.
static int unicoap_options_remove_content_format(unicoap_options_t *options)
Removes the Content-Format option, if present.
static ssize_t unicoap_options_set_max_age(unicoap_options_t *options, uint32_t age)
Sets the Max-Age option.
static ssize_t unicoap_options_get_no_response(const unicoap_options_t *options, uint8_t *value)
Retrieves the No-Response option, if present.
static ssize_t unicoap_options_get_next_uri_query_by_name(unicoap_options_iterator_t *iterator, const char *name, size_t length, const char **value)
Gets the next Uri-Query option matching the given name, potentially skipping any options in between.
static ssize_t unicoap_options_set_block2(unicoap_options_t *options, unicoap_block_option_t block)
Sets the Block2 option.
static ssize_t unicoap_options_get_next_location_path_component(unicoap_options_iterator_t *iterator, const char **component)
Gets the next Location-Path option provided by the specified iterator.
static ssize_t unicoap_options_get_next_etag(unicoap_options_iterator_t *iterator, const uint8_t **etag)
Gets the next ETag option provided by the specified iterator.
static ssize_t unicoap_options_get_next_if_match(unicoap_options_iterator_t *iterator, const uint8_t **value)
Gets the next If-Match option provided by the specified iterator.
static ssize_t unicoap_options_get_uri_port(const unicoap_options_t *options, uint16_t *port)
Retrieves the Uri-Port option, if present.
static int unicoap_options_remove_size2(unicoap_options_t *options)
Removes the Size2 option, if present.
int unicoap_options_set_observe_generated(unicoap_options_t *options)
Sets the Observe option to a randomly generated value.
static int unicoap_options_remove_uri_path(unicoap_options_t *options)
Removes all Uri-Path options, if any.
static ssize_t unicoap_options_get_size1(const unicoap_options_t *options, uint32_t *size)
Retrieves the Size1 option, if present.
static bool unicoap_options_get_if_none_match(const unicoap_options_t *options)
Determines whether the If-None-Match option is present.
static ssize_t unicoap_options_copy_uri_queries(const unicoap_options_t *options, char *queries, size_t capacity)
Copies URI query string into the given buffer.
static ssize_t unicoap_options_add_location_query(unicoap_options_t *options, char *query, size_t length)
Adds Location-Query option.
static ssize_t unicoap_options_get_size2(const unicoap_options_t *options, uint32_t *size)
Retrieves the Size2 option, if present.
static ssize_t unicoap_options_get_accept(const unicoap_options_t *options, unicoap_content_format_t *format)
Retrieves the Accept option, if present.
static ssize_t unicoap_options_add_uri_path_component(unicoap_options_t *options, char *component, size_t length)
Adds Uri-Path option.
static ssize_t unicoap_options_get_next_location_query(unicoap_options_iterator_t *iterator, const char **query)
Gets the next Location-Query option provided by the specified iterator.
static int unicoap_options_remove_etags(unicoap_options_t *options)
Removes all ETag options, if any.
static ssize_t unicoap_options_copy_uri_path(const unicoap_options_t *options, char *path, size_t capacity)
Copies absolute URI path into the given buffer.
static ssize_t unicoap_options_add_etag(unicoap_options_t *options, uint8_t *etag, size_t size)
Adds ETag option.
static ssize_t unicoap_options_get_content_format(const unicoap_options_t *options, unicoap_content_format_t *format)
Retrieves the Content-Format option, if present.
static ssize_t unicoap_options_get_first_uri_query_by_name_string(unicoap_options_t *options, const char *name, const char **value)
Retrieves the first Uri-Query option matching the given null-terminated name,if present.
static int unicoap_options_remove_proxy_scheme(unicoap_options_t *options)
Removes the Proxy-Scheme option, if present.
static ssize_t unicoap_options_add_location_queries_string(unicoap_options_t *options, char *queries)
Adds multiple Location-Query options from null-terminated string.
static int unicoap_options_remove_uri_queries(unicoap_options_t *options)
Removes all Uri-Query options, if any.
static ssize_t unicoap_options_add_uri_queries_string(unicoap_options_t *options, char *queries)
Adds multiple Uri-Query options from null-terminated string.
static ssize_t unicoap_options_add_uri_path_component_string(unicoap_options_t *options, char *component)
Adds Uri-Path option from null-terminated string.
static ssize_t unicoap_options_get_block1(const unicoap_options_t *options, unicoap_block_option_t *block)
Retrieves the Block1 option, if present.
static ssize_t unicoap_options_get_proxy_uri(const unicoap_options_t *options, const char **uri)
Retrieves the Proxy-Uri option, if present.
static ssize_t unicoap_options_get_uri_host(const unicoap_options_t *options, const char **host)
Retrieves the Uri-Host option, if present.
static int unicoap_options_remove_location_path(unicoap_options_t *options)
Removes all Location-Path options, if any.
static ssize_t unicoap_options_add_location_path_string(unicoap_options_t *options, char *path)
Adds multiple Location-Path options from null-terminated string.
static ssize_t unicoap_options_set_content_format(unicoap_options_t *options, unicoap_content_format_t format)
Sets the Content-Format option.
static int unicoap_options_remove_block2(unicoap_options_t *options)
Removes the Block2 option, if present.
static ssize_t unicoap_options_get_next_uri_path_component(unicoap_options_iterator_t *iterator, const char **component)
Gets the next Uri-Path option provided by the specified iterator.
static int unicoap_options_remove_size1(unicoap_options_t *options)
Removes the Size1 option, if present.
static ssize_t unicoap_options_set_uri_host(unicoap_options_t *options, char *host, size_t length)
Sets the Uri-Host option.
static ssize_t unicoap_options_get_observe(const unicoap_options_t *options, uint32_t *observe)
Retrieves the Observe option, if present.
static ssize_t unicoap_options_get_first_location_query_by_name(unicoap_options_t *options, const char *name, size_t length, const char **value)
Retrieves the first Location-Query option matching the given name,if present.
static ssize_t unicoap_options_get_first_location_path_component(const unicoap_options_t *options, const char **component)
Retrieves the first Location-Path option, if present.
static ssize_t unicoap_options_set_size1(unicoap_options_t *options, uint32_t size)
Sets the Size1 option.
static int unicoap_options_remove_uri_port(unicoap_options_t *options)
Removes the Uri-Port option, if present.
static int unicoap_options_remove_proxy_uri(unicoap_options_t *options)
Removes the Proxy-Uri option, if present.
unicoap_option_number_t
CoAP option number.
bool unicoap_options_contains(const unicoap_options_t *options, unicoap_option_number_t number)
Determines whether the given options container has one or more options with the given number.
#define UNICOAP_UINT24_MAX
Largest number representable with 24 bits (3 bytes)
@ UNICOAP_OPTION_URI_PORT
Uri-Port
@ UNICOAP_OPTION_MAX_AGE
Max-Age option
@ UNICOAP_OPTION_URI_HOST
Uri-Host option
@ UNICOAP_OPTION_CONTENT_FORMAT
Content-Format option
@ UNICOAP_OPTION_OBSERVE
Observe option
@ UNICOAP_OPTION_IF_MATCH
If-Match option
@ UNICOAP_OPTION_NO_RESPONSE
suppress CoAP response
@ UNICOAP_OPTION_PROXY_URI
Proxy-Uri option
@ UNICOAP_OPTION_BLOCK2
Block2 option
@ UNICOAP_OPTION_SIZE2
Size2 option.
@ UNICOAP_OPTION_URI_PATH
Uri-Path option
@ UNICOAP_OPTION_BLOCK1
Block1 option
@ UNICOAP_OPTION_ETAG
ETag option
@ UNICOAP_OPTION_LOCATION_QUERY
Location-Query option
@ UNICOAP_OPTION_IF_NONE_MATCH
If-None-Match option
@ UNICOAP_OPTION_LOCATION_PATH
Location-Path option
@ UNICOAP_OPTION_SIZE1
Size1 option.
@ UNICOAP_OPTION_PROXY_SCHEME
Proxy-Scheme option
@ UNICOAP_OPTION_URI_QUERY
Uri-Query option
@ UNICOAP_OPTION_ACCEPT
Accept option
The iterator you use to retrieve option values in-order.
Utility macros for unicoap