Go to the documentation of this file.
403 #ifndef CONFIG_GCOAP_PORT
404 #define CONFIG_GCOAP_PORT (5683)
410 #ifndef CONFIG_GCOAP_PDU_BUF_SIZE
411 #define CONFIG_GCOAP_PDU_BUF_SIZE (128)
417 #ifndef CONFIG_GCOAP_REQ_WAITING_MAX
418 #define CONFIG_GCOAP_REQ_WAITING_MAX (2)
425 #define GCOAP_TOKENLEN_MAX (8)
430 #define GCOAP_HEADER_MAXLEN (sizeof(coap_hdr_t) + GCOAP_TOKENLEN_MAX)
438 #ifndef CONFIG_GCOAP_TOKENLEN
439 #define CONFIG_GCOAP_TOKENLEN (2)
445 #define GCOAP_PAYLOAD_MARKER (0xFF)
453 #ifndef CONFIG_GCOAP_NO_AUTO_INIT
454 #define CONFIG_GCOAP_NO_AUTO_INIT 0
461 #define GCOAP_MEMO_UNUSED (0)
462 #define GCOAP_MEMO_RETRANSMIT (1)
463 #define GCOAP_MEMO_WAIT (2)
464 #define GCOAP_MEMO_RESP (3)
465 #define GCOAP_MEMO_TIMEOUT (4)
466 #define GCOAP_MEMO_ERR (5)
472 #define GCOAP_SEND_LIMIT_NON (-1)
484 #define CONFIG_GCOAP_NO_RETRANS_BACKOFF
493 #ifndef CONFIG_GCOAP_NON_TIMEOUT
494 #define CONFIG_GCOAP_NON_TIMEOUT (5000000U)
501 #ifndef CONFIG_GCOAP_OBS_CLIENTS_MAX
502 #define CONFIG_GCOAP_OBS_CLIENTS_MAX (2)
509 #ifndef CONFIG_GCOAP_OBS_REGISTRATIONS_MAX
510 #define CONFIG_GCOAP_OBS_REGISTRATIONS_MAX (2)
517 #define GCOAP_OBS_MEMO_UNUSED (0)
518 #define GCOAP_OBS_MEMO_IDLE (1)
519 #define GCOAP_OBS_MEMO_PENDING (2)
542 #ifndef CONFIG_GCOAP_OBS_VALUE_WIDTH
543 #define CONFIG_GCOAP_OBS_VALUE_WIDTH (3)
549 #if (CONFIG_GCOAP_OBS_VALUE_WIDTH == 3)
550 #define GCOAP_OBS_TICK_EXPONENT (5)
551 #elif (CONFIG_GCOAP_OBS_VALUE_WIDTH == 2)
552 #define GCOAP_OBS_TICK_EXPONENT (16)
553 #elif (CONFIG_GCOAP_OBS_VALUE_WIDTH == 1)
554 #define GCOAP_OBS_TICK_EXPONENT (24)
561 #define GCOAP_OBS_INIT_OK (0)
562 #define GCOAP_OBS_INIT_ERR (-1)
563 #define GCOAP_OBS_INIT_UNUSED (-2)
569 #ifndef GCOAP_STACK_SIZE
570 #define GCOAP_STACK_SIZE (THREAD_STACKSIZE_DEFAULT + DEBUG_EXTRA_STACKSIZE \
571 + sizeof(coap_pkt_t))
578 #ifndef CONFIG_GCOAP_RESEND_BUFS_MAX
579 #define CONFIG_GCOAP_RESEND_BUFS_MAX (1)
587 #define COAP_LINK_FLAG_INIT_RESLIST (1)
619 #define GCOAP_RESOURCE_FOUND (0)
620 #define GCOAP_RESOURCE_WRONG_METHOD (1)
621 #define GCOAP_RESOURCE_NO_PATH (2)
622 #define GCOAP_RESOURCE_ERROR (3)
769 unsigned code,
const char *path);
784 unsigned code,
char *path)
834 size_t len,
unsigned code)
A modular collection of resources for a server.
int16_t kernel_pid_t
Unique process identifier.
gcoap_link_encoder_t link_encoder
Writes a link for a resource.
uint8_t hdr_buf[GCOAP_HEADER_MAXLEN]
Copy of PDU header, if no resends.
int gcoap_get_resource_list(void *buf, size_t maxlen, uint8_t cf)
Get the resource list, currently only CoRE Link Format (COAP_FORMAT_LINK) supported.
kernel_pid_t gcoap_init(void)
Initializes the gcoap thread and device.
int gcoap_add_qstring(coap_pkt_t *pdu, const char *key, const char *val)
Adds a single Uri-Query option to a CoAP request.
#define GCOAP_TOKENLEN_MAX
Maximum length in bytes for a token.
gcoap_resp_handler_t resp_handler
Callback for the response.
Definitions for IPv6 addresses.
size_t pdu_len
Length of pdu_buf.
Extends request memo for resending a confirmable request.
Provides functionality to trigger events after timeout.
sock_udp_ep_t remote_ep
Remote endpoint.
size_t gcoap_obs_send(const uint8_t *buf, size_t len, const coap_resource_t *resource)
Sends a buffer containing a CoAP Observe notification to the observer registered for a resource.
Provides a callback-with-argument event type.
sock_udp_ep_t * observer
Client endpoint; unused if null.
uint16_t flags
encoder switches; see COAP_LINK_FLAG_ constants
size_t link_pos
position of link within listener
int(* gcoap_request_matcher_t)(gcoap_listener_t *listener, const coap_resource_t **resource, const coap_pkt_t *pdu)
Handler function for the request matcher strategy.
Callback Event structure definition.
int send_limit
Remaining resends, 0 if none; GCOAP_SEND_LIMIT_NON if non-confirmable.
ssize_t(* gcoap_link_encoder_t)(const coap_resource_t *resource, char *buf, size_t maxlen, coap_link_encoder_ctx_t *context)
Handler function to write a resource link.
void gcoap_register_listener(gcoap_listener_t *listener)
Starts listening for resource paths.
int gcoap_resp_init(coap_pkt_t *pdu, uint8_t *buf, size_t len, unsigned code)
Initializes a CoAP response packet on a buffer.
Memo to handle a response for a request.
unsigned content_format
link format
void * context
ptr to user defined context data
gcoap_request_matcher_t request_matcher
Function that picks a suitable request handler from a request.
Common IP-based transport layer end point.
Type for CoAP resource entry.
event_timeout_t resp_evt_tmout
Limits wait for response.
#define GCOAP_HEADER_MAXLEN
Maximum length in bytes for a header, including the token.
Context information required to write a resource link.
size_t resources_len
Length of array.
void(* gcoap_resp_handler_t)(const gcoap_request_memo_t *memo, coap_pkt_t *pdu, const sock_udp_ep_t *remote)
Handler function for a server response, including the state for the originating request.
struct gcoap_listener * next
Next listener in list.
gcoap_resend_t data
Endpoint and PDU buffer, for resend.
size_t gcoap_req_send(const uint8_t *buf, size_t len, const sock_udp_ep_t *remote, gcoap_resp_handler_t resp_handler, void *context)
Sends a buffer containing a CoAP request to the provided endpoint.
#define COAP_OPT_FINISH_NONE
no special handling required
static ssize_t gcoap_request(coap_pkt_t *pdu, uint8_t *buf, size_t len, unsigned code, char *path)
Writes a complete CoAP request PDU when there is not a payload.
const coap_resource_t * resource
Entity being observed.
CoAP PDU parsing context structure.
uint8_t * pdu_buf
Buffer containing the PDU.
int gcoap_req_init(coap_pkt_t *pdu, uint8_t *buf, size_t len, unsigned code, const char *path)
Initializes a CoAP request PDU on a buffer.
static ssize_t gcoap_response(coap_pkt_t *pdu, uint8_t *buf, size_t len, unsigned code)
Writes a complete CoAP response PDU when there is no payload.
event_callback_t resp_tmout_cb
Callback for response timeout.
ssize_t gcoap_encode_link(const coap_resource_t *resource, char *buf, size_t maxlen, coap_link_encoder_ctx_t *context)
Writes a resource in CoRE Link Format to a provided buffer.
union gcoap_request_memo::@264 msg
Request message data; if confirmable, supports resending message.
ssize_t coap_opt_finish(coap_pkt_t *pkt, uint16_t flags)
Finalizes options as required and prepares for payload.
unsigned state
State of this memo, a GCOAP_MEMO...
unsigned token_len
Actual length of token attribute.
xtimer interface definitions
const coap_resource_t * resources
First element in the array of resources; must order alphabetically.
uint8_t gcoap_op_state(void)
Provides important operational statistics.
int gcoap_obs_init(coap_pkt_t *pdu, uint8_t *buf, size_t len, const coap_resource_t *resource)
Initializes a CoAP Observe notification packet on a buffer, for the observer registered for a resourc...
Memo for Observe registration and notifications.