From b104433d4ed44b638ed213db0619dcc7fc04d237 Mon Sep 17 00:00:00 2001 From: Hauke Petersen <hauke.petersen@fu-berlin.de> Date: Tue, 23 May 2017 13:38:04 +0200 Subject: [PATCH] net/gcoap: improved header documentation - fixed/unified indention throughout the file - use same style for @brief blocks - removed colons from end of brief descriptions - fixed in and out annotations for function parameters --- sys/include/net/gcoap.h | 285 ++++++++++++++++++++++------------------ 1 file changed, 158 insertions(+), 127 deletions(-) diff --git a/sys/include/net/gcoap.h b/sys/include/net/gcoap.h index 47c34206b3..1c63b765fc 100644 --- a/sys/include/net/gcoap.h +++ b/sys/include/net/gcoap.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2015-2016 Ken Bannister. All rights reserved. + * 2017 Freie Universität Berlin * * This file is subject to the terms and conditions of the GNU Lesser * General Public License v2.1. See the file LICENSE in the top level @@ -174,12 +175,17 @@ * ## Implementation Status ## * gcoap includes server and client capability. Available features include: * - * - Message Type: Supports non-confirmable (NON) messaging. Additionally provides a callback on timeout. + * - Message Type: Supports non-confirmable (NON) messaging. Additionally + * provides a callback on timeout. * - Observe extension: Provides server-side registration and notifications. - * - Server and Client provide helper functions for writing the response/request. See the CoAP topic in the source documentation for details. See the gcoap example for sample implementations. - * - Server allows an application to register a 'listener', which includes an array of endpoint paths and function callbacks used to write a response. + * - Server and Client provide helper functions for writing the + * response/request. See the CoAP topic in the source documentation for + * details. See the gcoap example for sample implementations. + * - Server allows an application to register a 'listener', which includes an + * array of endpoint paths and function callbacks used to write a response. * - Server listens on a port at startup; defaults to 5683. - * - Client operates asynchronously; sends request and then handles response in a user provided callback. + * - Client operates asynchronously; sends request and then handles response + * in a user provided callback. * - Client generates token; length defined at compile time. * - Options: Supports Content-Format for payload. * @@ -189,6 +195,7 @@ * @brief gcoap definition * * @author Ken Bannister <kb2ma@runbox.com> + * @author Hauke Petersen <hauke.petersen@fu-berlin.de> */ #ifndef NET_GCOAP_H @@ -202,113 +209,134 @@ extern "C" { #endif -/** @brief Size for module message queue */ +/** + * @brief Size for module message queue + */ #define GCOAP_MSG_QUEUE_SIZE (4) -/** @brief Server port; use RFC 7252 default if not defined */ +/** + * @brief Server port; use RFC 7252 default if not defined + */ #ifndef GCOAP_PORT #define GCOAP_PORT (5683) #endif -/** @brief Size of the buffer used to build a CoAP request or response. */ +/** + * @brief Size of the buffer used to build a CoAP request or response + */ #define GCOAP_PDU_BUF_SIZE (128) /** - * @brief Size of the buffer used to write options, other than Uri-Path, in a - * request. + * @brief Size of the buffer used to write options, other than Uri-Path, in a + * request * * Accommodates Content-Format. */ #define GCOAP_REQ_OPTIONS_BUF (8) /** - * @brief Size of the buffer used to write options in a response. + * @brief Size of the buffer used to write options in a response * * Accommodates Content-Format. */ #define GCOAP_RESP_OPTIONS_BUF (8) /** - * @brief Size of the buffer used to write options in an Observe notification. + * @brief Size of the buffer used to write options in an Observe notification * * Accommodates Content-Format and Observe. */ -#define GCOAP_OBS_OPTIONS_BUF (8) +#define GCOAP_OBS_OPTIONS_BUF (8) -/** @brief Maximum number of requests awaiting a response */ +/** + * @brief Maximum number of requests awaiting a response + */ #define GCOAP_REQ_WAITING_MAX (2) -/** @brief Maximum length in bytes for a token */ +/** + * @brief Maximum length in bytes for a token + */ #define GCOAP_TOKENLEN_MAX (8) -/** @brief Maximum length in bytes for a header, including the token */ +/** + * @brief Maximum length in bytes for a header, including the token + */ #define GCOAP_HEADER_MAXLEN (sizeof(coap_hdr_t) + GCOAP_TOKENLEN_MAX) -/** @brief Length in bytes for a token; use 2 if not defined */ +/** + * @brief Length in bytes for a token; use 2 if not defined + */ #ifndef GCOAP_TOKENLEN #define GCOAP_TOKENLEN (2) #endif -/** @brief Marks the boundary between header and payload */ +/** + * @brief Marks the boundary between header and payload + */ #define GCOAP_PAYLOAD_MARKER (0xFF) /** - * @name States for the memo used to track waiting for a response + * @name States for the memo used to track waiting for a response * @{ */ -#define GCOAP_MEMO_UNUSED (0) /**< This memo is unused */ -#define GCOAP_MEMO_WAIT (1) /**< Request sent; awaiting response */ -#define GCOAP_MEMO_RESP (2) /**< Got response */ -#define GCOAP_MEMO_TIMEOUT (3) /**< Timeout waiting for response */ -#define GCOAP_MEMO_ERR (4) /**< Error processing response packet */ +#define GCOAP_MEMO_UNUSED (0) /**< This memo is unused */ +#define GCOAP_MEMO_WAIT (1) /**< Request sent; awaiting response */ +#define GCOAP_MEMO_RESP (2) /**< Got response */ +#define GCOAP_MEMO_TIMEOUT (3) /**< Timeout waiting for response */ +#define GCOAP_MEMO_ERR (4) /**< Error processing response packet */ /** @} */ -/** @brief Time in usec that the event loop waits for an incoming CoAP message */ +/** + * @brief Time in usec that the event loop waits for an incoming CoAP message + */ #define GCOAP_RECV_TIMEOUT (1 * US_PER_SEC) /** - * - * @brief Default time to wait for a non-confirmable response, in usec + * @brief Default time to wait for a non-confirmable response [in usec] * * Set to 0 to disable timeout. */ #define GCOAP_NON_TIMEOUT (5000000U) -/** @brief Identifies waiting timed out for a response to a sent message. */ +/** + * @brief Identifies waiting timed out for a response to a sent message + */ #define GCOAP_MSG_TYPE_TIMEOUT (0x1501) /** - * @brief Identifies a request to interrupt listening for an incoming message - * on a sock. + * @brief Identifies a request to interrupt listening for an incoming message + * on a sock * * Allows the event loop to process IPC messages. */ #define GCOAP_MSG_TYPE_INTR (0x1502) -/** @brief Maximum number of Observe clients; use 2 if not defined */ +/** + * @brief Maximum number of Observe clients; use 2 if not defined + */ #ifndef GCOAP_OBS_CLIENTS_MAX -#define GCOAP_OBS_CLIENTS_MAX (2) +#define GCOAP_OBS_CLIENTS_MAX (2) #endif /** - * @brief Maximum number of registrations for Observable resources; use 2 if - * not defined + * @brief Maximum number of registrations for Observable resources; use 2 if + * not defined */ #ifndef GCOAP_OBS_REGISTRATIONS_MAX -#define GCOAP_OBS_REGISTRATIONS_MAX (2) +#define GCOAP_OBS_REGISTRATIONS_MAX (2) #endif /** - * @name States for the memo used to track Observe registrations + * @name States for the memo used to track Observe registrations * @{ */ -#define GCOAP_OBS_MEMO_UNUSED (0) /**< This memo is unused */ -#define GCOAP_OBS_MEMO_IDLE (1) /**< Registration OK; no current activity */ -#define GCOAP_OBS_MEMO_PENDING (2) /**< Resource changed; notification pending */ +#define GCOAP_OBS_MEMO_UNUSED (0) /**< This memo is unused */ +#define GCOAP_OBS_MEMO_IDLE (1) /**< Registration OK; no current activity */ +#define GCOAP_OBS_MEMO_PENDING (2) /**< Resource changed; notification pending */ /** @} */ /** - * @brief Width in bytes of the Observe option value for a notification. + * @brief Width in bytes of the Observe option value for a notification * * This width is used to determine the length of the 'tick' used to measure * the time between observable changes to a resource. A tick is expressed @@ -327,10 +355,12 @@ extern "C" { * useful when packet size is limited. */ #ifndef GCOAP_OBS_VALUE_WIDTH -#define GCOAP_OBS_VALUE_WIDTH (3) +#define GCOAP_OBS_VALUE_WIDTH (3) #endif -/** @brief See GCOAP_OBS_VALUE_WIDTH. */ +/** + * @brief See GCOAP_OBS_VALUE_WIDTH + */ #if (GCOAP_OBS_VALUE_WIDTH == 3) #define GCOAP_OBS_TICK_EXPONENT (5) #elif (GCOAP_OBS_VALUE_WIDTH == 2) @@ -340,16 +370,16 @@ extern "C" { #endif /** - * @name Return values for gcoap_obs_init() + * @name Return values for gcoap_obs_init() * @{ */ #define GCOAP_OBS_INIT_OK (0) -#define GCOAP_OBS_INIT_ERR (-1) -#define GCOAP_OBS_INIT_UNUSED (-2) +#define GCOAP_OBS_INIT_ERR (-1) +#define GCOAP_OBS_INIT_UNUSED (-2) /** @} */ /** - * @brief A modular collection of resources for a server + * @brief A modular collection of resources for a server */ typedef struct gcoap_listener { coap_resource_t *resources; /**< First element in the array of @@ -359,15 +389,15 @@ typedef struct gcoap_listener { } gcoap_listener_t; /** - * @brief Handler function for a server response, including the state for the - * originating request. + * @brief Handler function for a server response, including the state for the + * originating request * * If request timed out, the packet header is for the request. */ typedef void (*gcoap_resp_handler_t)(unsigned req_state, coap_pkt_t* pdu); /** - * @brief Memo to handle a response for a request + * @brief Memo to handle a response for a request */ typedef struct { unsigned state; /**< State of this memo, a GCOAP_MEMO... */ @@ -378,7 +408,9 @@ typedef struct { msg_t timeout_msg; /**< For response timer */ } gcoap_request_memo_t; -/** @brief Memo for Observe registration and notifications */ +/** + * @brief Memo for Observe registration and notifications + */ typedef struct { sock_udp_ep_t *observer; /**< Client endpoint; unused if null */ coap_resource_t *resource; /**< Entity being observed */ @@ -387,7 +419,7 @@ typedef struct { } gcoap_observe_memo_t; /** - * @brief Container for the state of gcoap itself + * @brief Container for the state of gcoap itself */ typedef struct { gcoap_listener_t *listeners; /**< List of registered listeners */ @@ -404,7 +436,7 @@ typedef struct { } gcoap_state_t; /** - * @brief Initializes the gcoap thread and device. + * @brief Initializes the gcoap thread and device * * Must call once before first use. * @@ -415,58 +447,57 @@ typedef struct { kernel_pid_t gcoap_init(void); /** - * @brief Starts listening for resource paths. + * @brief Starts listening for resource paths * - * @param listener Listener containing the resources. + * @param[in] listener Listener containing the resources. */ void gcoap_register_listener(gcoap_listener_t *listener); /** - * @brief Initializes a CoAP request PDU on a buffer. + * @brief Initializes a CoAP request PDU on a buffer. * - * @param[in] pdu Request metadata - * @param[in] buf Buffer containing the PDU - * @param[in] len Length of the buffer - * @param[in] code Request code - * @param[in] path Resource path + * @param[out] pdu Request metadata + * @param[out] buf Buffer containing the PDU + * @param[in] len Length of the buffer + * @param[in] code Request code: GCOAP_[GET|POST|PUT|DELETE] + * @param[in] path Resource path, *must* start with '/' * - * @return 0 on success - * @return < 0 on error + * @return 0 on success + * @return < 0 on error */ -int gcoap_req_init(coap_pkt_t *pdu, uint8_t *buf, size_t len, unsigned code, - char *path); +int gcoap_req_init(coap_pkt_t *pdu, uint8_t *buf, size_t len, + unsigned code, char *path); /** - * @brief Finishes formatting a CoAP PDU after the payload has been written. + * @brief Finishes formatting a CoAP PDU after the payload has been written * * Assumes the PDU has been initialized with gcoap_req_init() or * gcoap_resp_init(). * - * @param[in] pdu Request metadata - * @param[in] payload_len Length of the payload, or 0 if none - * @param[in] format Format code for the payload; use COAP_FORMAT_NONE if not - * specified + * @param[in,out] pdu Request metadata + * @param[in] payload_len Length of the payload, or 0 if none + * @param[in] format Format code for the payload; use COAP_FORMAT_NONE if + * not specified * - * @return size of the PDU - * @return < 0 on error + * @return size of the PDU + * @return < 0 on error */ ssize_t gcoap_finish(coap_pkt_t *pdu, size_t payload_len, unsigned format); /** - * @brief Writes a complete CoAP request PDU when there is not a payload. + * @brief Writes a complete CoAP request PDU when there is not a payload * - * @param[in] pdu Request metadata - * @param[in] buf Buffer containing the PDU - * @param[in] len Length of the buffer - * @param[in] code Request code - * @param[in] path Resource path + * @param[in,out] pdu Request metadata + * @param[in,out] buf Buffer containing the PDU + * @param[in] len Length of the buffer + * @param[in] code Request code: GCOAP_[GET|POST|PUT|DELETE] + * @param[in] path Resource path, *must* start with '/' * - * @return size of the PDU within the buffer - * @return < 0 on error + * @return size of the PDU within the buffer + * @return < 0 on error */ static inline ssize_t gcoap_request(coap_pkt_t *pdu, uint8_t *buf, size_t len, - unsigned code, - char *path) + unsigned code, char *path) { return (gcoap_req_init(pdu, buf, len, code, path) == 0) ? gcoap_finish(pdu, 0, COAP_FORMAT_NONE) @@ -474,65 +505,65 @@ static inline ssize_t gcoap_request(coap_pkt_t *pdu, uint8_t *buf, size_t len, } /** - * @brief Sends a buffer containing a CoAP request to the provided endpoint. + * @brief Sends a buffer containing a CoAP request to the provided endpoint * - * @param[in] buf Buffer containing the PDU - * @param[in] len Length of the buffer - * @param[in] remote Destination for the packet - * @param[in] resp_handler Callback when response received + * @param[in] buf Buffer containing the PDU + * @param[in] len Length of the buffer + * @param[in] remote Destination for the packet + * @param[in] resp_handler Callback when response received * - * @return length of the packet - * @return 0 if cannot send + * @return length of the packet + * @return 0 if cannot send */ size_t gcoap_req_send2(const uint8_t *buf, size_t len, const sock_udp_ep_t *remote, gcoap_resp_handler_t resp_handler); /** - * @brief Sends a buffer containing a CoAP request to the provided host/port. + * @brief Sends a buffer containing a CoAP request to the provided host/port * * @deprecated Please use @ref gcoap_req_send2() instead * - * @param[in] buf Buffer containing the PDU - * @param[in] len Length of the buffer - * @param[in] addr Destination for the packet - * @param[in] port Port at the destination - * @param[in] resp_handler Callback when response received + * @param[in] buf Buffer containing the PDU + * @param[in] len Length of the buffer + * @param[in] addr Destination for the packet + * @param[in] port Port at the destination + * @param[in] resp_handler Callback when response received * - * @return length of the packet - * @return 0 if cannot send + * @return length of the packet + * @return 0 if cannot send */ size_t gcoap_req_send(const uint8_t *buf, size_t len, const ipv6_addr_t *addr, uint16_t port, gcoap_resp_handler_t resp_handler); /** - * @brief Initializes a CoAP response packet on a buffer. + * @brief Initializes a CoAP response packet on a buffer * * Initializes payload location within the buffer based on packet setup. * - * @param[in] pdu Response metadata - * @param[in] buf Buffer containing the PDU - * @param[in] len Length of the buffer - * @param[in] code Response code + * @param[out] pdu Response metadata + * @param[in] buf Buffer containing the PDU + * @param[in] len Length of the buffer + * @param[in] code Response code * - * @return 0 on success - * @return < 0 on error + * @return 0 on success + * @return < 0 on error */ int gcoap_resp_init(coap_pkt_t *pdu, uint8_t *buf, size_t len, unsigned code); /** - * @brief Writes a complete CoAP response PDU when there is no payload. + * @brief Writes a complete CoAP response PDU when there is no payload * - * @param[in] pdu Response metadata - * @param[in] buf Buffer containing the PDU - * @param[in] len Length of the buffer - * @param[in] code Response code + * @param[out] pdu Response metadata + * @param[out] buf Buffer containing the PDU + * @param[in] len Length of the buffer + * @param[in] code Response code * - * @return size of the PDU within the buffer - * @return < 0 on error + * @return size of the PDU within the buffer + * @return < 0 on error */ -static inline ssize_t gcoap_response(coap_pkt_t *pdu, uint8_t *buf, size_t len, - unsigned code) +static inline ssize_t gcoap_response(coap_pkt_t *pdu, uint8_t *buf, + size_t len, unsigned code) { return (gcoap_resp_init(pdu, buf, len, code) == 0) ? gcoap_finish(pdu, 0, COAP_FORMAT_NONE) @@ -540,26 +571,26 @@ static inline ssize_t gcoap_response(coap_pkt_t *pdu, uint8_t *buf, size_t len, } /** - * @brief Initializes a CoAP Observe notification packet on a buffer, for the - * observer registered for a resource. + * @brief Initializes a CoAP Observe notification packet on a buffer, for the + * observer registered for a resource * * First verifies that an observer has been registered for the resource. * - * @param[in] pdu Notification metadata - * @param[in] buf Buffer containing the PDU - * @param[in] len Length of the buffer - * @param[in] resource Resource for the notification + * @param[out] pdu Notification metadata + * @param[out] buf Buffer containing the PDU + * @param[in] len Length of the buffer + * @param[in] resource Resource for the notification * - * @return GCOAP_OBS_INIT_OK on success - * @return GCOAP_OBS_INIT_ERR on error - * @return GCOAP_OBS_INIT_UNUSED if no observer for resource + * @return GCOAP_OBS_INIT_OK on success + * @return GCOAP_OBS_INIT_ERR on error + * @return GCOAP_OBS_INIT_UNUSED if no observer for resource */ int gcoap_obs_init(coap_pkt_t *pdu, uint8_t *buf, size_t len, - const coap_resource_t *resource); + const coap_resource_t *resource); /** - * @brief Sends a buffer containing a CoAP Observe notification to the - * observer registered for a resource. + * @brief Sends a buffer containing a CoAP Observe notification to the + * observer registered for a resource * * Assumes a single observer for a resource. * @@ -567,18 +598,18 @@ int gcoap_obs_init(coap_pkt_t *pdu, uint8_t *buf, size_t len, * @param[in] len Length of the buffer * @param[in] resource Resource to send * - * @return length of the packet - * @return 0 if cannot send + * @return length of the packet + * @return 0 if cannot send */ size_t gcoap_obs_send(const uint8_t *buf, size_t len, const coap_resource_t *resource); /** - * @brief Provides important operational statistics. + * @brief Provides important operational statistics * * Useful for monitoring. * - * @return count of unanswered requests + * @return count of unanswered requests */ uint8_t gcoap_op_state(void); -- GitLab