mqtt_outbox.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /* This is an adaption of https://github.com/espressif/esp-mqtt/blob/master/lib/include/mqtt_outbox.h
  2. * This file is subject to the terms and conditions defined in
  3. * file 'LICENSE', which is part of this source code package.
  4. * Tuan PM <tuanpm at live dot com>
  5. */
  6. #ifndef _MQTT_OUTOBX_H_
  7. #define _MQTT_OUTOBX_H_
  8. //#include "platform.h"
  9. #include "esp_err.h"
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. struct outbox_item;
  14. typedef struct outbox_list_t *outbox_handle_t;
  15. typedef struct outbox_item *outbox_item_handle_t;
  16. typedef struct outbox_message *outbox_message_handle_t;
  17. typedef long long outbox_tick_t;
  18. typedef struct outbox_message {
  19. uint8_t *data;
  20. int len;
  21. int msg_id;
  22. int msg_qos;
  23. int msg_type;
  24. uint8_t *remaining_data;
  25. int remaining_len;
  26. } outbox_message_t;
  27. typedef enum pending_state {
  28. QUEUED,
  29. TRANSMITTED,
  30. ACKNOWLEDGED,
  31. CONFIRMED
  32. } pending_state_t;
  33. outbox_handle_t outbox_init(void);
  34. outbox_item_handle_t outbox_enqueue(outbox_handle_t outbox, outbox_message_handle_t message, outbox_tick_t tick);
  35. outbox_item_handle_t outbox_dequeue(outbox_handle_t outbox, pending_state_t pending, outbox_tick_t *tick);
  36. outbox_item_handle_t outbox_get(outbox_handle_t outbox, int msg_id);
  37. uint8_t *outbox_item_get_data(outbox_item_handle_t item, size_t *len, uint16_t *msg_id, int *msg_type, int *qos);
  38. esp_err_t outbox_delete(outbox_handle_t outbox, int msg_id, int msg_type);
  39. esp_err_t outbox_delete_msgid(outbox_handle_t outbox, int msg_id);
  40. esp_err_t outbox_delete_msgtype(outbox_handle_t outbox, int msg_type);
  41. esp_err_t outbox_delete_item(outbox_handle_t outbox, outbox_item_handle_t item);
  42. int outbox_delete_expired(outbox_handle_t outbox, outbox_tick_t current_tick, outbox_tick_t timeout);
  43. /**
  44. * @brief Deletes single expired message returning it's message id
  45. *
  46. * @return msg id of the deleted message, -1 if no expired message in the outbox
  47. */
  48. int outbox_delete_single_expired(outbox_handle_t outbox, outbox_tick_t current_tick, outbox_tick_t timeout);
  49. esp_err_t outbox_set_pending(outbox_handle_t outbox, int msg_id, pending_state_t pending);
  50. pending_state_t outbox_item_get_pending(outbox_item_handle_t item);
  51. esp_err_t outbox_set_tick(outbox_handle_t outbox, int msg_id, outbox_tick_t tick);
  52. int outbox_get_size(outbox_handle_t outbox);
  53. void outbox_destroy(outbox_handle_t outbox);
  54. void outbox_delete_all_items(outbox_handle_t outbox);
  55. #ifdef __cplusplus
  56. }
  57. #endif
  58. #endif