12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #ifndef _NODE_H
- #define _NODE_H 1
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "hash.h"
- #include "pdu.h"
- struct coap_queue_t;
- typedef uint32_t coap_tick_t;
- /*
- 1. queue(first)->t store when to send PDU for the next time, it's a base(absolute) time
- 2. queue->next->t store the delta between time and base-time. queue->next->t = timeout + now - basetime
- 3. node->next->t store the delta between time and previous->t. node->next->t = timeout + now - node->t - basetime
- 4. time to fire: 10, 15, 18, 25
- node->t: 10, 5, 3, 7
- */
- typedef struct coap_queue_t {
- struct coap_queue_t *next;
- coap_tick_t t; /**< when to send PDU for the next time */
- unsigned char retransmit_cnt; /**< retransmission counter, will be removed when zero */
- unsigned int timeout; /**< the randomized timeout value */
- coap_tid_t id; /**< unique transaction id */
- // coap_packet_t *pkt;
- coap_pdu_t *pdu; /**< the CoAP PDU to send */
- struct espconn *pconn;
- } coap_queue_t;
- void coap_free_node(coap_queue_t *node);
- /** Adds node to given queue, ordered by node->t. */
- int coap_insert_node(coap_queue_t **queue, coap_queue_t *node);
- /** Destroys specified node. */
- int coap_delete_node(coap_queue_t *node);
- /** Removes all items from given queue and frees the allocated storage. */
- void coap_delete_all(coap_queue_t *queue);
- /** Creates a new node suitable for adding to the CoAP sendqueue. */
- coap_queue_t *coap_new_node(void);
- coap_queue_t *coap_pop_next( coap_queue_t **queue );
- int coap_remove_node( coap_queue_t **queue, const coap_tid_t id);
- #ifdef __cplusplus
- }
- #endif
- #endif
|