| 
    Zephyr Project API
    3.3.0
    
   A Scalable Open Source RTOS 
   | 
 
CoAP implementation for Zephyr. More...
#include <zephyr/types.h>#include <stddef.h>#include <stdbool.h>#include <zephyr/net/net_ip.h>#include <zephyr/sys/slist.h>Go to the source code of this file.
Data Structures | |
| struct | coap_resource | 
| Description of CoAP resource.  More... | |
| struct | coap_observer | 
| Represents a remote device that is observing a local resource.  More... | |
| struct | coap_packet | 
| Representation of a CoAP Packet.  More... | |
| struct | coap_option | 
| struct | coap_pending | 
| Represents a request awaiting for an acknowledgment (ACK).  More... | |
| struct | coap_reply | 
| Represents the handler for the reply of a request, it is also used when observing resources.  More... | |
| struct | coap_block_context | 
| Represents the current state of a block-wise transaction.  More... | |
Macros | |
| #define | COAP_REQUEST_MASK 0x07 | 
| #define | COAP_VERSION_1 1U | 
| #define | coap_make_response_code(class, det) ((class << 5) | (det)) | 
| #define | COAP_CODE_EMPTY (0) | 
| #define | COAP_TOKEN_MAX_LEN 8UL | 
| #define | GET_BLOCK_NUM(v) ((v) >> 4) | 
| #define | GET_BLOCK_SIZE(v) (((v) & 0x7)) | 
| #define | GET_MORE(v) (!!((v) & 0x08)) | 
Typedefs | |
| typedef 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.  More... | |
| typedef 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 happens.  More... | |
| typedef 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.  More... | |
Functions | |
| uint8_t | coap_header_get_version (const struct coap_packet *cpkt) | 
| Returns the version present in a CoAP packet.  More... | |
| uint8_t | coap_header_get_type (const struct coap_packet *cpkt) | 
| Returns the type of the CoAP packet.  More... | |
| uint8_t | coap_header_get_token (const struct coap_packet *cpkt, uint8_t *token) | 
| Returns the token (if any) in the CoAP packet.  More... | |
| uint8_t | coap_header_get_code (const struct coap_packet *cpkt) | 
| Returns the code of the CoAP packet.  More... | |
| uint16_t | coap_header_get_id (const struct coap_packet *cpkt) | 
| Returns the message id associated with the CoAP packet.  More... | |
| 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.  More... | |
| 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. data must remain valid while cpkt is used.  More... | |
| 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.  More... | |
| 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.  More... | |
| uint8_t * | coap_next_token (void) | 
| Returns a randomly generated array of 8 bytes, that can be used as a message's token.  More... | |
| uint16_t | coap_next_id (void) | 
| Helper to generate message ids.  More... | |
| 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.  More... | |
| 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.  More... | |
| unsigned int | coap_option_value_to_int (const struct coap_option *option) | 
| Converts an option to its integer representation.  More... | |
| int | coap_append_option_int (struct coap_packet *cpkt, uint16_t code, unsigned int val) | 
| Appends an integer value option to the packet.  More... | |
| int | coap_packet_append_payload_marker (struct coap_packet *cpkt) | 
| Append payload marker to CoAP packet.  More... | |
| int | coap_packet_append_payload (struct coap_packet *cpkt, const uint8_t *payload, uint16_t payload_len) | 
| Append payload to CoAP packet.  More... | |
| 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.  More... | |
| 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.  More... | |
| 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.  More... | |
| int | coap_append_block1_option (struct coap_packet *cpkt, struct coap_block_context *ctx) | 
| Append BLOCK1 option to the packet.  More... | |
| int | coap_append_block2_option (struct coap_packet *cpkt, struct coap_block_context *ctx) | 
| Append BLOCK2 option to the packet.  More... | |
| int | coap_append_size1_option (struct coap_packet *cpkt, struct coap_block_context *ctx) | 
| Append SIZE1 option to the packet.  More... | |
| int | coap_append_size2_option (struct coap_packet *cpkt, struct coap_block_context *ctx) | 
| Append SIZE2 option to the packet.  More... | |
| int | coap_get_option_int (const struct coap_packet *cpkt, uint16_t code) | 
| Get the integer representation of a CoAP option.  More... | |
| 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.  More... | |
| 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 correct offset in the body of data being transferred.  More... | |
| 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 data being transferred.  More... | |
| 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.  More... | |
| bool | coap_register_observer (struct coap_resource *resource, struct coap_observer *observer) | 
| After the observer is initialized, associate the observer with an resource.  More... | |
| void | coap_remove_observer (struct coap_resource *resource, struct coap_observer *observer) | 
| Remove this observer from the list of registered observers of that resource.  More... | |
| 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.  More... | |
| struct coap_observer * | coap_observer_next_unused (struct coap_observer *observers, size_t len) | 
| Returns the next available observer representation.  More... | |
| void | coap_reply_init (struct coap_reply *reply, const struct coap_packet *request) | 
| Indicates that a reply is expected for request.  More... | |
| int | coap_pending_init (struct coap_pending *pending, const struct coap_packet *request, const struct sockaddr *addr, uint8_t retries) | 
| Initialize a pending request with a request.  More... | |
| 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 request.  More... | |
| 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 received.  More... | |
| 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. User has to clear all pending retransmissions related to that response by calling coap_pending_clear().  More... | |
| 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.  More... | |
| 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.  More... | |
| 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.  More... | |
| void | coap_pending_clear (struct coap_pending *pending) | 
| Cancels the pending retransmission, so it again becomes available.  More... | |
| void | coap_pendings_clear (struct coap_pending *pendings, size_t len) | 
| Cancels all pending retransmissions, so they become available again.  More... | |
| void | coap_reply_clear (struct coap_reply *reply) | 
| Cancels awaiting for this reply, so it becomes available again. User responsibility to free the memory associated with data.  More... | |
| void | coap_replies_clear (struct coap_reply *replies, size_t len) | 
| Cancels all replies, so they become available again.  More... | |
| int | coap_resource_notify (struct coap_resource *resource) | 
| Indicates that this resource was updated and that the notify callback should be called for every registered observer.  More... | |
| bool | coap_request_is_observe (const struct coap_packet *request) | 
| Returns if this request is enabling observing a resource.  More... | |
CoAP implementation for Zephyr.