147 #if IS_USED(MODULE_NANOCOAP_DTLS) 
  160 #ifndef CONFIG_NANOCOAP_SOCK_DTLS_TAG 
  161 #define CONFIG_NANOCOAP_SOCK_DTLS_TAG           (0xc0ab) 
  168 #ifndef CONFIG_NANOCOAP_SERVER_BUF_SIZE 
  169 #define CONFIG_NANOCOAP_SERVER_BUF_SIZE         ((1 << (CONFIG_NANOCOAP_BLOCKSIZE_DEFAULT + 3)) \ 
  170                                                  + CONFIG_NANOCOAP_URI_MAX + 16) 
  176 #ifndef CONFIG_NANOCOAP_SERVER_STACK_SIZE 
  177 #define CONFIG_NANOCOAP_SERVER_STACK_SIZE       THREAD_STACKSIZE_DEFAULT 
  188 #ifndef CONFIG_NANOCOAP_SOCK_BLOCK_TOKEN 
  189 #define CONFIG_NANOCOAP_SOCK_BLOCK_TOKEN        (0) 
  195 #ifndef CONFIG_NANOCOAP_SOCK_EVENT_PRIO 
  196 #  define CONFIG_NANOCOAP_SOCK_EVENT_PRIO       EVENT_PRIO_MEDIUM 
  212 #if IS_USED(MODULE_NANOCOAP_DTLS) || defined(DOXYGEN) 
  250     uint8_t token[COAP_TOKEN_LENGTH_MAX];   
 
  317                                   unsigned code, 
unsigned type,
 
  318                                   const void *payload, 
size_t len);
 
  346                                        void *buf, 
size_t buf_len,
 
  347                                        unsigned code, 
unsigned type,
 
  463                                       const void *payload, 
size_t payload_len);
 
  517 #if IS_USED(MODULE_NANOCOAP_DTLS) 
  525 #if IS_USED(MODULE_NANOCOAP_DTLS) || DOXYGEN 
  560 #if IS_USED(MODULE_NANOCOAP_DTLS) 
  618                           void *response, 
size_t len_max);
 
  635                               void *response, 
size_t len_max);
 
  654                           const void *request, 
size_t len,
 
  655                           void *response, 
size_t len_max);
 
  674                               const void *request, 
size_t len,
 
  675                               void *response, 
size_t len_max);
 
  690                               const void *request, 
size_t len,
 
  691                               void *response, 
size_t len_max);
 
  711                            const void *request, 
size_t len,
 
  712                            void *response, 
size_t len_max);
 
  732                                const void *request, 
size_t len,
 
  733                                void *response, 
size_t len_max);
 
  748                                const void *request, 
size_t len,
 
  749                                void *response, 
size_t len_max);
 
  769                             const void *request, 
size_t len,
 
  770                             void *response, 
size_t len_max);
 
  790                                 const void *request, 
size_t len,
 
  791                                 void *response, 
size_t len_max);
 
  807                                 const void *request, 
size_t len,
 
  808                                 void *response, 
size_t len_max);
 
  870                             void *dst, 
size_t len);
 
  914                                           void *buf, 
size_t len);
 
  937                                       void *buf, 
size_t len);
 
 1045                                 const void *data, 
size_t len, 
bool more,
 
(D)TLS credentials management module definitions
 
int16_t kernel_pid_t
Unique process identifier.
 
coap_blksize_t
Coap block-wise-transfer size SZX.
 
coap_method_t
CoAP method codes used in request.
 
uint16_t credman_tag_t
Tag of the credential.
 
#define CONFIG_NANOCOAP_BLOCK_HEADER_MAX
Maximum length of a CoAP header for a blockwise message.
 
int(* coap_blockwise_cb_t)(void *arg, size_t offset, uint8_t *buf, size_t len, int more)
Coap blockwise request callback descriptor.
 
int(* coap_request_cb_t)(void *arg, coap_pkt_t *pkt)
Coap request callback descriptor.
 
ssize_t nanocoap_server_build_separate(const nanocoap_server_response_ctx_t *ctx, void *buf, size_t buf_len, unsigned code, unsigned type, uint16_t msg_id)
Build a separate response header to a CoAP request.
 
int nanocoap_register_observer(const coap_request_ctx_t *req_ctx, coap_pkt_t *req_pkt)
Register an observer.
 
ssize_t nanocoap_sock_put_non(nanocoap_sock_t *sock, const char *path, const void *request, size_t len, void *response, size_t len_max)
Simple non-confirmable PUT.
 
ssize_t nanocoap_sock_get_non(nanocoap_sock_t *sock, const char *path, void *response, size_t len_max)
Simple non-confirmable GET.
 
ssize_t nanocoap_sock_get(nanocoap_sock_t *sock, const char *path, void *response, size_t len_max)
Simple synchronous CoAP (confirmable) GET.
 
ssize_t nanocoap_sock_delete(nanocoap_sock_t *sock, const char *path)
Simple synchronous CoAP (confirmable) DELETE.
 
void nanocoap_notify_observers(const coap_resource_t *res, const iolist_t *iol)
Notify all currently registered observers of the given resource.
 
ssize_t nanocoap_sock_observe_url(const char *url, coap_observe_client_t *ctx, coap_request_cb_t cb, void *arg)
Observe a CoAP resource behind a URL (via GET)
 
ssize_t nanocoap_sock_put(nanocoap_sock_t *sock, const char *path, const void *request, size_t len, void *response, size_t len_max)
Simple synchronous CoAP (confirmable) PUT.
 
void nanocoap_unregister_observer_due_to_reset(const sock_udp_ep_t *ep, uint16_t msg_id)
Unregister a stale observation due to a reset message received.
 
int nanocoap_sock_url_connect(const char *url, nanocoap_sock_t *sock)
Create a CoAP client socket by URL.
 
ssize_t nanocoap_sock_post_url(const char *url, const void *request, size_t len, void *response, size_t len_max)
Simple synchronous CoAP (confirmable) POST to URL.
 
ssize_t nanocoap_sock_delete_url(const char *url)
Simple synchronous CoAP (confirmable) DELETE for URL.
 
int nanocoap_sock_get_slice(nanocoap_sock_t *sock, const char *path, coap_blksize_t blksize, size_t offset, void *dst, size_t len)
Performs a blockwise coap get request to the specified url, store the response in a buffer.
 
ssize_t nanocoap_request(coap_pkt_t *pkt, const sock_udp_ep_t *local, const sock_udp_ep_t *remote, size_t len)
Simple synchronous CoAP request.
 
int nanocoap_server_prepare_separate(nanocoap_server_response_ctx_t *ctx, coap_pkt_t *pkt, const coap_request_ctx_t *req)
Prepare the context for a separate response.
 
void nanocoap_notify_observers_simple(const coap_resource_t *res, uint32_t obs, const void *payload, size_t payload_len)
Build and send notification to observers registered to a specific resource.
 
kernel_pid_t nanocoap_server_start(const sock_udp_ep_t *local)
Create and start the nanoCoAP server thread.
 
ssize_t nanocoap_sock_request(nanocoap_sock_t *sock, coap_pkt_t *pkt, size_t len)
Simple synchronous CoAP request.
 
int nanocoap_server_sendv_separate(const nanocoap_server_response_ctx_t *ctx, const iolist_t *reply)
Send an already build separate response.
 
ssize_t nanocoap_sock_fetch(nanocoap_sock_t *sock, const char *path, const void *request, size_t len, void *response, size_t len_max)
Simple synchronous CoAP (confirmable) FETCH (RFC 8132)
 
int nanocoap_sock_dtls_connect(nanocoap_sock_t *sock, sock_udp_ep_t *local, const sock_udp_ep_t *remote, credman_tag_t tag)
Create a DTLS secured CoAP client socket.
 
ssize_t nanocoap_sock_fetch_non(nanocoap_sock_t *sock, const char *path, const void *request, size_t len, void *response, size_t len_max)
Simple non-confirmable FETCH (RFC 8132)
 
ssize_t nanocoap_sock_fetch_url(const char *url, const void *request, size_t len, void *response, size_t len_max)
Simple synchronous CoAP (confirmable) FETCH to URL (RFC 8132)
 
static uint16_t nanocoap_sock_next_msg_id(nanocoap_sock_t *sock)
Get next consecutive message ID for use when building a new CoAP request.
 
ssize_t nanocoap_sock_post(nanocoap_sock_t *sock, const char *path, const void *request, size_t len, void *response, size_t len_max)
Simple synchronous CoAP (confirmable) POST.
 
int nanocoap_sock_block_request(coap_block_request_t *ctx, const void *data, size_t len, bool more, coap_request_cb_t cb, void *arg)
Do a block-wise request, send a single block.
 
ssize_t nanocoap_sock_post_non(nanocoap_sock_t *sock, const char *path, const void *request, size_t len, void *response, size_t len_max)
Simple non-confirmable POST.
 
int nanocoap_server_send_separate(const nanocoap_server_response_ctx_t *ctx, unsigned code, unsigned type, const void *payload, size_t len)
Build and send a separate response to a CoAP request.
 
void nanocoap_unregister_observer(const coap_request_ctx_t *req_ctx, const coap_pkt_t *req_pkt)
Unregister an observer.
 
ssize_t nanocoap_sock_request_cb(nanocoap_sock_t *sock, coap_pkt_t *pkt, coap_request_cb_t cb, void *arg)
Simple synchronous CoAP request with callback.
 
static int nanocoap_block_request_connect_url(coap_block_request_t *ctx, nanocoap_sock_t *sock, const char *url, coap_method_t method, coap_blksize_t blksize)
Initialize block request context by URL and connect a socket.
 
ssize_t nanocoap_get_blockwise_url_to_buf(const char *url, coap_blksize_t blksize, void *buf, size_t len)
Performs a blockwise coap get request to the specified url, store the response in a buffer.
 
int nanocoap_get_blockwise_url(const char *url, coap_blksize_t blksize, coap_blockwise_cb_t callback, void *arg)
Performs a blockwise coap get request to the specified url.
 
ssize_t nanocoap_sock_put_url(const char *url, const void *request, size_t len, void *response, size_t len_max)
Simple synchronous CoAP (confirmable) PUT to URL.
 
static int nanocoap_sock_connect(nanocoap_sock_t *sock, const sock_udp_ep_t *local, const sock_udp_ep_t *remote)
Create a CoAP client socket.
 
ssize_t nanocoap_sock_unobserve_url(const char *url, coap_observe_client_t *ctx)
Stop observing a CoAP resource.
 
int nanocoap_sock_get_blockwise(nanocoap_sock_t *sock, const char *path, coap_blksize_t blksize, coap_blockwise_cb_t callback, void *arg)
Performs a blockwise coap get request on a socket.
 
bool nanocoap_server_is_remote_in_response_ctx(const nanocoap_server_response_ctx_t *ctx, const coap_request_ctx_t *req)
Check if a given separate response context was prepared for the remote endpoint of a given request.
 
nanocoap_socket_type_t
NanoCoAP socket types.
 
static void nanocoap_sock_close(nanocoap_sock_t *sock)
Close a CoAP client socket.
 
int nanocoap_server(sock_udp_ep_t *local, void *buf, size_t bufsize)
Start a nanoCoAP server instance.
 
ssize_t nanocoap_get_blockwise_to_buf(nanocoap_sock_t *sock, const char *path, coap_blksize_t blksize, void *buf, size_t len)
Performs a blockwise CoAP GET request, store the response in a buffer.
 
@ COAP_SOCKET_TYPE_UDP
transport is plain UDP
 
@ COAP_SOCKET_TYPE_DTLS
transport is DTLS
 
void sock_dtls_close(sock_dtls_t *sock)
Closes a DTLS sock.
 
void sock_dtls_session_destroy(sock_dtls_t *sock, sock_dtls_session_t *remote)
Destroys an existing DTLS session.
 
int sock_udp_create(sock_udp_t *sock, const sock_udp_ep_t *local, const sock_udp_ep_t *remote, uint16_t flags)
Creates a new UDP sock object.
 
void sock_udp_close(sock_udp_t *sock)
Closes a UDP sock object.
 
const char * sock_urlpath(const char *url)
Returns a pointer to the path component in url.
 
uint32_t random_uint32(void)
generates a random number on [0,0xffffffff]-interval
 
Common interface to the software PRNG.
 
CoAP resource request handler context.
 
Common IP-based transport layer end point.
 
Blockwise request helper struct.
 
nanocoap_sock_t * sock
socket used for the request
 
uint32_t blknum
current block number
 
const char * path
path on the server
 
coap_method_t method
request method (GET, POST, PUT)
 
uint8_t blksize
CoAP blocksize exponent
 
Observe Client helper struct.
 
coap_request_cb_t cb
user callback function
 
nanocoap_sock_t sock
socket used for the request
 
void * arg
callback function argument
 
CoAP PDU parsing context structure.
 
Type for CoAP resource entry.
 
iolist structure definition
 
Context from CoAP request for separate response.
 
sock_udp_ep_t local
local from which to send response
 
uint8_t tkl
request token length
 
sock_udp_ep_t remote
remote to send response to
 
uint8_t no_response
no-response bitmap
 
uint16_t msg_id
next CoAP message ID
 
sock_dtls_session_t dtls_session
Session object for the stored socket.
 
sock_dtls_t dtls
DTLS socket
 
nanocoap_socket_type_t type
Socket type (UDP, DTLS)
 
Information about remote client connected to the server.
 
Information about DTLS sock.
 
sock utility function definitions