Zephyr API Documentation  3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
coap.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018 Intel Corporation
3 * Copyright (c) 2021 Nordic Semiconductor
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
14#ifndef ZEPHYR_INCLUDE_NET_COAP_H_
15#define ZEPHYR_INCLUDE_NET_COAP_H_
16
26#include <zephyr/types.h>
27#include <stddef.h>
28#include <stdbool.h>
29#include <zephyr/net/net_ip.h>
31#include <zephyr/sys/slist.h>
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
68};
69
83};
84
87#define COAP_REQUEST_MASK 0x07
88
89#define COAP_VERSION_1 1U
90
91#define COAP_OBSERVE_MAX_AGE 0xFFFFFF
92
127
134#define COAP_MAKE_RESPONSE_CODE(class, det) ((class << 5) | (det))
135
199
202#define COAP_CODE_EMPTY (0)
203
204#define COAP_TOKEN_MAX_LEN 8UL
205
224
227/* block option helper */
228#define GET_BLOCK_NUM(v) ((v) >> 4)
229#define GET_BLOCK_SIZE(v) (((v) & 0x7))
230#define GET_MORE(v) (!!((v) & 0x08))
231
234struct coap_observer;
235struct coap_packet;
236struct coap_pending;
237struct coap_reply;
238struct coap_resource;
239
245typedef int (*coap_method_t)(struct coap_resource *resource,
246 struct coap_packet *request,
247 struct sockaddr *addr, socklen_t addr_len);
248
254typedef void (*coap_notify_t)(struct coap_resource *resource,
255 struct coap_observer *observer);
256
269 const char * const *path;
275 int age;
276};
277
290};
291
302#if defined(CONFIG_COAP_KEEP_USER_DATA) || defined(DOXYGEN)
307 void *user_data;
308#endif
309};
310
316#if defined(CONFIG_COAP_EXTENDED_OPTIONS_LEN)
318 uint8_t value[CONFIG_COAP_EXTENDED_OPTIONS_LEN_VALUE];
319#else
322#endif
323};
324
333typedef int (*coap_reply_t)(const struct coap_packet *response,
334 struct coap_reply *reply,
335 const struct sockaddr *from);
336
347};
348
353 struct sockaddr addr;
361};
362
373 int age;
380};
381
390
399
410
419
427int coap_header_set_code(const struct coap_packet *cpkt, uint8_t code);
428
437
448 uint16_t *len);
449
460bool coap_uri_path_match(const char * const *path,
461 struct coap_option *options,
462 uint8_t opt_num);
463
480int coap_packet_parse(struct coap_packet *cpkt, uint8_t *data, uint16_t len,
481 struct coap_option *options, uint8_t opt_num);
482
492int coap_packet_set_path(struct coap_packet *cpkt, const char *path);
493
509int coap_packet_init(struct coap_packet *cpkt, uint8_t *data, uint16_t max_len,
510 uint8_t ver, uint8_t type, uint8_t token_len,
511 const uint8_t *token, uint8_t code, uint16_t id);
512
528int coap_ack_init(struct coap_packet *cpkt, const struct coap_packet *req,
529 uint8_t *data, uint16_t max_len, uint8_t code);
530
538
545
559int coap_find_options(const struct coap_packet *cpkt, uint16_t code,
560 struct coap_option *options, uint16_t veclen);
561
577 const uint8_t *value, uint16_t len);
578
588
600unsigned int coap_option_value_to_int(const struct coap_option *option);
601
615 unsigned int val);
616
625
635int coap_packet_append_payload(struct coap_packet *cpkt, const uint8_t *payload,
636 uint16_t payload_len);
637
646bool coap_packet_is_request(const struct coap_packet *cpkt);
647
666 struct coap_resource *resources,
667 size_t resources_len,
668 struct coap_option *options,
669 uint8_t opt_num,
670 struct sockaddr *addr, socklen_t addr_len);
671
689 struct coap_resource *resources,
690 struct coap_option *options,
691 uint8_t opt_num,
692 struct sockaddr *addr, socklen_t addr_len);
693
710};
711
721 enum coap_block_size block_size)
722{
723 return (1 << (block_size + 4));
724}
725
735{
736 int sz = u32_count_trailing_zeros(bytes) - 4;
737
738 if (sz < COAP_BLOCK_16) {
739 return COAP_BLOCK_16;
740 }
741 if (sz > COAP_BLOCK_1024) {
742 return COAP_BLOCK_1024;
743 }
744 return (enum coap_block_size)sz;
745}
746
754 size_t current;
757};
758
769 enum coap_block_size block_size,
770 size_t total_size);
771
785
798
810
819
830 struct coap_block_context *ctx);
831
842 struct coap_block_context *ctx);
843
854 struct coap_block_context *ctx);
855
866 struct coap_block_context *ctx);
867
877int coap_get_option_int(const struct coap_packet *cpkt, uint16_t code);
878
890int coap_get_block1_option(const struct coap_packet *cpkt, bool *has_more, uint8_t *block_number);
891
904int coap_get_block2_option(const struct coap_packet *cpkt, uint8_t *block_number);
905
915int coap_update_from_block(const struct coap_packet *cpkt,
916 struct coap_block_context *ctx);
917
931 struct coap_block_context *ctx,
932 enum coap_option_num option);
933
945size_t coap_next_block(const struct coap_packet *cpkt,
946 struct coap_block_context *ctx);
947
956void coap_observer_init(struct coap_observer *observer,
957 const struct coap_packet *request,
958 const struct sockaddr *addr);
959
970 struct coap_observer *observer);
971
982 struct coap_observer *observer);
983
998 struct coap_observer *observers, size_t len,
999 const struct sockaddr *addr,
1000 const uint8_t *token, uint8_t token_len);
1001
1016 struct coap_observer *observers, size_t len,
1017 const struct sockaddr *addr);
1018
1034 struct coap_observer *observers, size_t len,
1035 const uint8_t *token, uint8_t token_len);
1036
1047 struct coap_observer *observers, size_t len);
1048
1055void coap_reply_init(struct coap_reply *reply,
1056 const struct coap_packet *request);
1057
1075 const struct coap_packet *request,
1076 const struct sockaddr *addr,
1077 const struct coap_transmission_parameters *params);
1078
1090 struct coap_pending *pendings, size_t len);
1091
1103 struct coap_reply *replies, size_t len);
1104
1119 const struct coap_packet *response,
1120 struct coap_pending *pendings, size_t len);
1121
1135 const struct coap_packet *response,
1136 const struct sockaddr *from,
1137 struct coap_reply *replies, size_t len);
1138
1150 struct coap_pending *pendings, size_t len);
1151
1160bool coap_pending_cycle(struct coap_pending *pending);
1161
1168void coap_pending_clear(struct coap_pending *pending);
1169
1177void coap_pendings_clear(struct coap_pending *pendings, size_t len);
1178
1186size_t coap_pendings_count(struct coap_pending *pendings, size_t len);
1187
1194void coap_reply_clear(struct coap_reply *reply);
1195
1202void coap_replies_clear(struct coap_reply *replies, size_t len);
1203
1213
1222bool coap_request_is_observe(const struct coap_packet *request);
1223
1230
1237
1238#ifdef __cplusplus
1239}
1240#endif
1241
1246#endif /* ZEPHYR_INCLUDE_NET_COAP_H_ */
void coap_pending_clear(struct coap_pending *pending)
Cancels the pending retransmission, so it again becomes available.
size_t coap_next_block(const struct coap_packet *cpkt, struct coap_block_context *ctx)
Updates ctx so after this is called the current entry indicates the correct offset in the body of dat...
int coap_get_block2_option(const struct coap_packet *cpkt, uint8_t *block_number)
Get values from CoAP block2 option.
struct coap_transmission_parameters coap_get_transmission_parameters(void)
Get currently active CoAP transmission parameters.
coap_response_code
Set of response codes available for a response packet.
Definition: coap.h:141
int coap_get_option_int(const struct coap_packet *cpkt, uint16_t code)
Get the integer representation of a CoAP option.
int coap_packet_append_payload_marker(struct coap_packet *cpkt)
Append payload marker to CoAP packet.
struct coap_observer * coap_observer_next_unused(struct coap_observer *observers, size_t len)
Returns the next available observer representation.
int coap_packet_parse(struct coap_packet *cpkt, uint8_t *data, uint16_t len, struct coap_option *options, uint8_t opt_num)
Parses the CoAP packet in data, validating it and initializing cpkt.
static enum coap_block_size coap_bytes_to_block_size(uint16_t bytes)
Helper for converting block size in bytes to enumeration.
Definition: coap.h:734
const uint8_t * coap_packet_get_payload(const struct coap_packet *cpkt, uint16_t *len)
Returns the data pointer and length of the CoAP packet.
int coap_packet_append_option(struct coap_packet *cpkt, uint16_t code, const uint8_t *value, uint16_t len)
Appends an option to the packet.
bool coap_pending_cycle(struct coap_pending *pending)
After a request is sent, user may want to cycle the pending retransmission so the timeout is updated.
unsigned int coap_option_value_to_int(const struct coap_option *option)
Converts an option to its integer representation.
bool coap_packet_is_request(const struct coap_packet *cpkt)
Check if a CoAP packet is a CoAP request.
bool coap_remove_observer(struct coap_resource *resource, struct coap_observer *observer)
Remove this observer from the list of registered observers of that resource.
int coap_append_block2_option(struct coap_packet *cpkt, struct coap_block_context *ctx)
Append BLOCK2 option to the packet.
void coap_reply_clear(struct coap_reply *reply)
Cancels awaiting for this reply, so it becomes available again.
int coap_update_from_block(const struct coap_packet *cpkt, struct coap_block_context *ctx)
Retrieves BLOCK{1,2} and SIZE{1,2} from cpkt and updates ctx accordingly.
coap_msgtype
CoAP packets may be of one of these types.
Definition: coap.h:98
bool coap_register_observer(struct coap_resource *resource, struct coap_observer *observer)
After the observer is initialized, associate the observer with an resource.
void coap_observer_init(struct coap_observer *observer, const struct coap_packet *request, const struct sockaddr *addr)
Indicates that the remote device referenced by addr, with request, wants to observe a resource.
struct coap_reply * coap_response_received(const struct coap_packet *response, const struct sockaddr *from, struct coap_reply *replies, size_t len)
After a response is received, call coap_reply_t handler registered in coap_reply structure.
int coap_append_size1_option(struct coap_packet *cpkt, struct coap_block_context *ctx)
Append SIZE1 option to the packet.
struct coap_observer * coap_find_observer_by_addr(struct coap_observer *observers, size_t len, const struct sockaddr *addr)
Returns the observer that matches address addr.
bool coap_request_is_observe(const struct coap_packet *request)
Returns if this request is enabling observing a resource.
int(* coap_reply_t)(const struct coap_packet *response, struct coap_reply *reply, const struct sockaddr *from)
Helper function to be called when a response matches the a pending request.
Definition: coap.h:333
int coap_next_block_for_option(const struct coap_packet *cpkt, struct coap_block_context *ctx, enum coap_option_num option)
Updates ctx according to option set in cpkt so after this is called the current entry indicates the c...
int coap_append_block1_option(struct coap_packet *cpkt, struct coap_block_context *ctx)
Append BLOCK1 option to the packet.
int coap_block_transfer_init(struct coap_block_context *ctx, enum coap_block_size block_size, size_t total_size)
Initializes the context of a block-wise transfer.
uint16_t coap_header_get_id(const struct coap_packet *cpkt)
Returns the message id associated with the CoAP packet.
struct coap_reply * coap_reply_next_unused(struct coap_reply *replies, size_t len)
Returns the next available reply struct, so it can be used to track replies and notifications receive...
uint8_t * coap_next_token(void)
Returns a randomly generated array of 8 bytes, that can be used as a message's token.
uint8_t coap_header_get_token(const struct coap_packet *cpkt, uint8_t *token)
Returns the token (if any) in the CoAP packet.
coap_method
Available request methods.
Definition: coap.h:75
int coap_append_option_int(struct coap_packet *cpkt, uint16_t code, unsigned int val)
Appends an integer value option to the packet.
void coap_pendings_clear(struct coap_pending *pendings, size_t len)
Cancels all pending retransmissions, so they become available again.
coap_block_size
Represents the size of each block that will be transferred using block-wise transfers [RFC7959]:
Definition: coap.h:702
int(* coap_method_t)(struct coap_resource *resource, struct coap_packet *request, struct sockaddr *addr, socklen_t addr_len)
Type of the callback being called when a resource's method is invoked by the remote entity.
Definition: coap.h:245
int coap_get_block1_option(const struct coap_packet *cpkt, bool *has_more, uint8_t *block_number)
Get the block size, more flag and block number from the CoAP block1 option.
coap_option_num
Set of CoAP packet options we are aware of.
Definition: coap.h:46
struct coap_pending * coap_pending_next_unused(struct coap_pending *pendings, size_t len)
Returns the next available pending struct, that can be used to track the retransmission status of a r...
int coap_handle_request_len(struct coap_packet *cpkt, struct coap_resource *resources, size_t resources_len, struct coap_option *options, uint8_t opt_num, struct sockaddr *addr, socklen_t addr_len)
When a request is received, call the appropriate methods of the matching resources.
int coap_pending_init(struct coap_pending *pending, const struct coap_packet *request, const struct sockaddr *addr, const struct coap_transmission_parameters *params)
Initialize a pending request with a request.
int coap_handle_request(struct coap_packet *cpkt, struct coap_resource *resources, struct coap_option *options, uint8_t opt_num, struct sockaddr *addr, socklen_t addr_len)
When a request is received, call the appropriate methods of the matching resources.
int coap_append_descriptive_block_option(struct coap_packet *cpkt, struct coap_block_context *ctx)
Append BLOCK1 or BLOCK2 option to the packet.
bool coap_uri_path_match(const char *const *path, struct coap_option *options, uint8_t opt_num)
Verify if CoAP URI path matches with provided options.
int coap_packet_init(struct coap_packet *cpkt, uint8_t *data, uint16_t max_len, uint8_t ver, uint8_t type, uint8_t token_len, const uint8_t *token, uint8_t code, uint16_t id)
Creates a new CoAP Packet from input data.
int coap_remove_descriptive_block_option(struct coap_packet *cpkt)
Remove BLOCK1 or BLOCK2 option from the packet.
coap_content_format
Set of Content-Format option values for CoAP.
Definition: coap.h:213
struct coap_pending * coap_pending_received(const struct coap_packet *response, struct coap_pending *pendings, size_t len)
After a response is received, returns if there is any matching pending request exits.
struct coap_pending * coap_pending_next_to_expire(struct coap_pending *pendings, size_t len)
Returns the next pending about to expire, pending->timeout informs how many ms to next expiration.
void(* coap_notify_t)(struct coap_resource *resource, struct coap_observer *observer)
Type of the callback being called when a resource's has observers to be informed when an update happe...
Definition: coap.h:254
bool coap_has_descriptive_block_option(struct coap_packet *cpkt)
Check if a descriptive block option is set in the packet.
int coap_packet_set_path(struct coap_packet *cpkt, const char *path)
Parses provided coap path (with/without query) or query and appends that as options to the cpkt.
#define COAP_MAKE_RESPONSE_CODE(class, det)
Utility macro to create a CoAP response code.
Definition: coap.h:134
int coap_packet_remove_option(struct coap_packet *cpkt, uint16_t code)
Remove an option from the packet.
void coap_reply_init(struct coap_reply *reply, const struct coap_packet *request)
Indicates that a reply is expected for request.
int coap_resource_notify(struct coap_resource *resource)
Indicates that this resource was updated and that the notify callback should be called for every regi...
size_t coap_pendings_count(struct coap_pending *pendings, size_t len)
Count number of pending requests.
int coap_packet_append_payload(struct coap_packet *cpkt, const uint8_t *payload, uint16_t payload_len)
Append payload to CoAP packet.
void coap_replies_clear(struct coap_reply *replies, size_t len)
Cancels all replies, so they become available again.
uint16_t coap_next_id(void)
Helper to generate message ids.
struct coap_observer * coap_find_observer_by_token(struct coap_observer *observers, size_t len, const uint8_t *token, uint8_t token_len)
Returns the observer that has token token.
uint8_t coap_header_get_code(const struct coap_packet *cpkt)
Returns the code of the CoAP packet.
int coap_ack_init(struct coap_packet *cpkt, const struct coap_packet *req, uint8_t *data, uint16_t max_len, uint8_t code)
Create a new CoAP Acknowledgment message for given request.
uint8_t coap_header_get_type(const struct coap_packet *cpkt)
Returns the type of the CoAP packet.
int coap_find_options(const struct coap_packet *cpkt, uint16_t code, struct coap_option *options, uint16_t veclen)
Return the values associated with the option of value code.
void coap_set_transmission_parameters(const struct coap_transmission_parameters *params)
Set CoAP transmission parameters.
struct coap_observer * coap_find_observer(struct coap_observer *observers, size_t len, const struct sockaddr *addr, const uint8_t *token, uint8_t token_len)
Returns the observer that matches address addr and has token token.
int coap_append_size2_option(struct coap_packet *cpkt, struct coap_block_context *ctx)
Append SIZE2 option to the packet.
bool coap_block_has_more(struct coap_packet *cpkt)
Check if BLOCK1 or BLOCK2 option has more flag set.
uint8_t coap_header_get_version(const struct coap_packet *cpkt)
Returns the version present in a CoAP packet.
int coap_header_set_code(const struct coap_packet *cpkt, uint8_t code)
Modifies the code of the CoAP packet.
static uint16_t coap_block_size_to_bytes(enum coap_block_size block_size)
Helper for converting the enumeration to the size expressed in bytes.
Definition: coap.h:720
@ COAP_RESPONSE_CODE_OK
2.00 - OK
Definition: coap.h:143
@ COAP_RESPONSE_CODE_INTERNAL_ERROR
5.00 - Internal Server Error
Definition: coap.h:186
@ COAP_RESPONSE_CODE_PRECONDITION_FAILED
4.12 - Precondition Failed
Definition: coap.h:175
@ COAP_RESPONSE_CODE_NOT_ALLOWED
4.05 - Method Not Allowed
Definition: coap.h:167
@ COAP_RESPONSE_CODE_CHANGED
2.04 - Changed
Definition: coap.h:151
@ COAP_RESPONSE_CODE_NOT_ACCEPTABLE
4.06 - Not Acceptable
Definition: coap.h:169
@ COAP_RESPONSE_CODE_UNPROCESSABLE_ENTITY
4.22 - Unprocessable Entity
Definition: coap.h:182
@ COAP_RESPONSE_CODE_PROXYING_NOT_SUPPORTED
5.05 - Proxying Not Supported
Definition: coap.h:196
@ COAP_RESPONSE_CODE_BAD_REQUEST
4.00 - Bad Request
Definition: coap.h:157
@ COAP_RESPONSE_CODE_INCOMPLETE
4.08 - Request Entity Incomplete
Definition: coap.h:171
@ COAP_RESPONSE_CODE_NOT_IMPLEMENTED
5.01 - Not Implemented
Definition: coap.h:188
@ COAP_RESPONSE_CODE_NOT_FOUND
4.04 - Not Found
Definition: coap.h:165
@ COAP_RESPONSE_CODE_BAD_GATEWAY
5.02 - Bad Gateway
Definition: coap.h:190
@ COAP_RESPONSE_CODE_BAD_OPTION
4.02 - Bad Option
Definition: coap.h:161
@ COAP_RESPONSE_CODE_REQUEST_TOO_LARGE
4.13 - Request Entity Too Large
Definition: coap.h:177
@ COAP_RESPONSE_CODE_TOO_MANY_REQUESTS
4.29 - Too Many Requests
Definition: coap.h:184
@ COAP_RESPONSE_CODE_CONFLICT
4.12 - Precondition Failed
Definition: coap.h:173
@ COAP_RESPONSE_CODE_DELETED
2.02 - Deleted
Definition: coap.h:147
@ COAP_RESPONSE_CODE_UNAUTHORIZED
4.01 - Unauthorized
Definition: coap.h:159
@ COAP_RESPONSE_CODE_CREATED
2.01 - Created
Definition: coap.h:145
@ COAP_RESPONSE_CODE_CONTENT
2.05 - Content
Definition: coap.h:153
@ COAP_RESPONSE_CODE_CONTINUE
2.31 - Continue
Definition: coap.h:155
@ COAP_RESPONSE_CODE_VALID
2.03 - Valid
Definition: coap.h:149
@ COAP_RESPONSE_CODE_UNSUPPORTED_CONTENT_FORMAT
4.15 - Unsupported Content-Format
Definition: coap.h:179
@ COAP_RESPONSE_CODE_GATEWAY_TIMEOUT
5.04 - Gateway Timeout
Definition: coap.h:194
@ COAP_RESPONSE_CODE_SERVICE_UNAVAILABLE
5.03 - Service Unavailable
Definition: coap.h:192
@ COAP_RESPONSE_CODE_FORBIDDEN
4.03 - Forbidden
Definition: coap.h:163
@ COAP_TYPE_RESET
Reset.
Definition: coap.h:125
@ COAP_TYPE_NON_CON
Non-confirmable message.
Definition: coap.h:112
@ COAP_TYPE_CON
Confirmable message.
Definition: coap.h:105
@ COAP_TYPE_ACK
Acknowledge.
Definition: coap.h:118
@ COAP_METHOD_GET
GET.
Definition: coap.h:76
@ COAP_METHOD_IPATCH
IPATCH.
Definition: coap.h:82
@ COAP_METHOD_PUT
PUT.
Definition: coap.h:78
@ COAP_METHOD_POST
POST.
Definition: coap.h:77
@ COAP_METHOD_PATCH
PATCH.
Definition: coap.h:81
@ COAP_METHOD_DELETE
DELETE.
Definition: coap.h:79
@ COAP_METHOD_FETCH
FETCH.
Definition: coap.h:80
@ COAP_BLOCK_128
128-byte block size
Definition: coap.h:706
@ COAP_BLOCK_32
32-byte block size
Definition: coap.h:704
@ COAP_BLOCK_1024
1024-byte block size
Definition: coap.h:709
@ COAP_BLOCK_64
64-byte block size
Definition: coap.h:705
@ COAP_BLOCK_16
16-byte block size
Definition: coap.h:703
@ COAP_BLOCK_256
256-byte block size
Definition: coap.h:707
@ COAP_BLOCK_512
512-byte block size
Definition: coap.h:708
@ COAP_OPTION_OBSERVE
Observe (RFC 7641)
Definition: coap.h:51
@ COAP_OPTION_IF_NONE_MATCH
If-None-Match.
Definition: coap.h:50
@ COAP_OPTION_ETAG
ETag.
Definition: coap.h:49
@ COAP_OPTION_SIZE2
Size2 (RFC 7959)
Definition: coap.h:62
@ COAP_OPTION_REQUEST_TAG
Request-Tag (RFC 9175)
Definition: coap.h:67
@ COAP_OPTION_PROXY_SCHEME
Proxy-Scheme.
Definition: coap.h:64
@ COAP_OPTION_URI_PORT
Uri-Port.
Definition: coap.h:52
@ COAP_OPTION_URI_HOST
Uri-Host.
Definition: coap.h:48
@ COAP_OPTION_BLOCK2
Block2 (RFC 7959)
Definition: coap.h:60
@ COAP_OPTION_IF_MATCH
If-Match.
Definition: coap.h:47
@ COAP_OPTION_SIZE1
Size1.
Definition: coap.h:65
@ COAP_OPTION_ECHO
Echo (RFC 9175)
Definition: coap.h:66
@ COAP_OPTION_BLOCK1
Block1 (RFC 7959)
Definition: coap.h:61
@ COAP_OPTION_URI_PATH
Uri-Path.
Definition: coap.h:54
@ COAP_OPTION_MAX_AGE
Max-Age.
Definition: coap.h:56
@ COAP_OPTION_CONTENT_FORMAT
Content-Format.
Definition: coap.h:55
@ COAP_OPTION_LOCATION_QUERY
Location-Query.
Definition: coap.h:59
@ COAP_OPTION_URI_QUERY
Uri-Query.
Definition: coap.h:57
@ COAP_OPTION_PROXY_URI
Proxy-Uri.
Definition: coap.h:63
@ COAP_OPTION_LOCATION_PATH
Location-Path.
Definition: coap.h:53
@ COAP_OPTION_ACCEPT
Accept.
Definition: coap.h:58
@ COAP_CONTENT_FORMAT_APP_JSON_PATCH_JSON
application/json-patch+json
Definition: coap.h:220
@ COAP_CONTENT_FORMAT_APP_LINK_FORMAT
application/link-format
Definition: coap.h:215
@ COAP_CONTENT_FORMAT_APP_MERGE_PATCH_JSON
application/merge-patch+json
Definition: coap.h:221
@ COAP_CONTENT_FORMAT_APP_EXI
application/exi
Definition: coap.h:218
@ COAP_CONTENT_FORMAT_APP_CBOR
application/cbor
Definition: coap.h:222
@ COAP_CONTENT_FORMAT_APP_OCTET_STREAM
application/octet-stream
Definition: coap.h:217
@ COAP_CONTENT_FORMAT_APP_JSON
application/json
Definition: coap.h:219
@ COAP_CONTENT_FORMAT_APP_XML
application/xml
Definition: coap.h:216
@ COAP_CONTENT_FORMAT_TEXT_PLAIN
text/plain;charset=utf-8
Definition: coap.h:214
size_t socklen_t
Length of a socket address.
Definition: net_ip.h:168
static int u32_count_trailing_zeros(uint32_t x)
Count the number of trailing zero bits in a 32-bit integer.
struct _slist sys_slist_t
Single-linked list structure.
Definition: slist.h:49
struct _snode sys_snode_t
Single-linked list node structure.
Definition: slist.h:39
IPv6 and IPv4 definitions.
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
__INT64_TYPE__ int64_t
Definition: stdint.h:75
Represents the current state of a block-wise transaction.
Definition: coap.h:750
size_t total_size
Total size of the block-wise transaction.
Definition: coap.h:752
enum coap_block_size block_size
Block size.
Definition: coap.h:756
size_t current
Current size of the block-wise transaction.
Definition: coap.h:754
Represents a remote device that is observing a local resource.
Definition: coap.h:281
sys_snode_t list
Observer list node.
Definition: coap.h:283
uint8_t token[8]
Observer token.
Definition: coap.h:287
uint8_t tkl
Extended token length.
Definition: coap.h:289
struct sockaddr addr
Observer connection end point information.
Definition: coap.h:285
Representation of a CoAP option.
Definition: coap.h:314
uint8_t len
Option length.
Definition: coap.h:320
uint16_t delta
Option delta.
Definition: coap.h:315
uint8_t value[12]
Option value.
Definition: coap.h:321
Representation of a CoAP Packet.
Definition: coap.h:295
uint16_t offset
CoAP lib maintains offset while adding data.
Definition: coap.h:297
uint16_t max_len
Max CoAP packet data length.
Definition: coap.h:298
uint8_t * data
User allocated buffer.
Definition: coap.h:296
uint16_t delta
Used for delta calculation in CoAP packet.
Definition: coap.h:301
uint8_t hdr_len
CoAP header length.
Definition: coap.h:299
uint16_t opt_len
Total options length (delta + len + value)
Definition: coap.h:300
Represents a request awaiting for an acknowledgment (ACK).
Definition: coap.h:352
struct coap_transmission_parameters params
Transmission parameters.
Definition: coap.h:360
uint8_t * data
User allocated buffer.
Definition: coap.h:357
uint16_t len
Length of the CoAP packet.
Definition: coap.h:358
uint8_t retries
Number of times the request has been sent.
Definition: coap.h:359
uint16_t id
Message id.
Definition: coap.h:356
int64_t t0
Time when the request was sent.
Definition: coap.h:354
uint32_t timeout
Timeout in ms.
Definition: coap.h:355
struct sockaddr addr
Remote address.
Definition: coap.h:353
Represents the handler for the reply of a request, it is also used when observing resources.
Definition: coap.h:367
uint8_t tkl
Extended token length.
Definition: coap.h:379
uint8_t token[8]
Reply token.
Definition: coap.h:377
coap_reply_t reply
CoAP reply callback.
Definition: coap.h:369
uint16_t id
Reply id.
Definition: coap.h:375
void * user_data
User specific opaque data.
Definition: coap.h:371
int age
Reply age.
Definition: coap.h:373
Description of CoAP resource.
Definition: coap.h:263
coap_method_t post
Definition: coap.h:265
void * user_data
User specific opaque data.
Definition: coap.h:271
coap_method_t put
Definition: coap.h:265
coap_notify_t notify
Notify function to call.
Definition: coap.h:267
sys_slist_t observers
List of resource observers.
Definition: coap.h:273
coap_method_t fetch
Definition: coap.h:265
coap_method_t ipatch
Definition: coap.h:265
coap_method_t del
Definition: coap.h:265
coap_method_t patch
Definition: coap.h:265
const char *const * path
Resource path.
Definition: coap.h:269
int age
Resource age.
Definition: coap.h:275
coap_method_t get
Which function to be called for each CoAP method.
Definition: coap.h:265
CoAP transmission parameters.
Definition: coap.h:340
uint8_t max_retransmission
Maximum number of retransmissions.
Definition: coap.h:346
uint16_t coap_backoff_percent
Set CoAP retry backoff factor.
Definition: coap.h:344
uint32_t ack_timeout
Initial ACK timeout.
Definition: coap.h:342
Generic sockaddr struct.
Definition: net_ip.h:385