/* * coap_event.h -- libcoap Event API * * Copyright (C) 2016 Olaf Bergmann * * This file is part of the CoAP library libcoap. Please see README for terms * of use. */ #ifndef COAP_EVENT_H_ #define COAP_EVENT_H_ #include "libcoap.h" struct coap_context_t; struct coap_session_t; /** * @defgroup events Event API * API functions for event delivery from lower-layer library functions. * @{ */ /** * Scalar type to represent different events, e.g. DTLS events or * retransmission timeouts. */ typedef unsigned int coap_event_t; /** * (D)TLS events for COAP_PROTO_DTLS and COAP_PROTO_TLS */ #define COAP_EVENT_DTLS_CLOSED 0x0000 #define COAP_EVENT_DTLS_CONNECTED 0x01DE #define COAP_EVENT_DTLS_RENEGOTIATE 0x01DF #define COAP_EVENT_DTLS_ERROR 0x0200 /** * TCP events for COAP_PROTO_TCP and COAP_PROTO_TLS */ #define COAP_EVENT_TCP_CONNECTED 0x1001 #define COAP_EVENT_TCP_CLOSED 0x1002 #define COAP_EVENT_TCP_FAILED 0x1003 /** * CSM exchange events for reliable protocols only */ #define COAP_EVENT_SESSION_CONNECTED 0x2001 #define COAP_EVENT_SESSION_CLOSED 0x2002 #define COAP_EVENT_SESSION_FAILED 0x2003 /** * Type for event handler functions that can be registered with a CoAP * context using the unction coap_set_event_handler(). When called by * the library, the first argument will be the coap_context_t object * where the handler function has been registered. The second argument * is the event type that may be complemented by event-specific data * passed as the third argument. */ typedef int (*coap_event_handler_t)(struct coap_context_t *, coap_event_t event, struct coap_session_t *session); /** * Registers the function @p hnd as callback for events from the given * CoAP context @p context. Any event handler that has previously been * registered with @p context will be overwritten by this operation. * * @param context The CoAP context to register the event handler with. * @param hnd The event handler to be registered. @c NULL if to be * de-registered. */ void coap_register_event_handler(struct coap_context_t *context, coap_event_handler_t hnd); /** * Registers the function @p hnd as callback for events from the given * CoAP context @p context. Any event handler that has previously been * registered with @p context will be overwritten by this operation. * * @deprecated Use coap_register_event_handler() instead. * * @param context The CoAP context to register the event handler with. * @param hnd The event handler to be registered. */ COAP_DEPRECATED void coap_set_event_handler(struct coap_context_t *context, coap_event_handler_t hnd); /** * Clears the event handler registered with @p context. * * @deprecated Use coap_register_event_handler() instead with NULL for hnd. * * @param context The CoAP context whose event handler is to be removed. */ COAP_DEPRECATED void coap_clear_event_handler(struct coap_context_t *context); /** @} */ #endif /* COAP_EVENT_H */