message_queue.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /**
  2. * @file message_queue.h
  3. * FuriMessageQueue
  4. */
  5. #pragma once
  6. #include "core/base.h"
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. typedef void FuriMessageQueue;
  11. /** Allocate furi message queue
  12. *
  13. * @param[in] msg_count The message count
  14. * @param[in] msg_size The message size
  15. *
  16. * @return pointer to FuriMessageQueue instance
  17. */
  18. FuriMessageQueue* furi_message_queue_alloc(uint32_t msg_count, uint32_t msg_size);
  19. /** Free queue
  20. *
  21. * @param instance pointer to FuriMessageQueue instance
  22. */
  23. void furi_message_queue_free(FuriMessageQueue* instance);
  24. /** Put message into queue
  25. *
  26. * @param instance pointer to FuriMessageQueue instance
  27. * @param[in] msg_ptr The message pointer
  28. * @param[in] timeout The timeout
  29. * @param[in] msg_prio The message prio
  30. *
  31. * @return The furi status.
  32. */
  33. FuriStatus
  34. furi_message_queue_put(FuriMessageQueue* instance, const void* msg_ptr, uint32_t timeout);
  35. /** Get message from queue
  36. *
  37. * @param instance pointer to FuriMessageQueue instance
  38. * @param msg_ptr The message pointer
  39. * @param msg_prio The message prioority
  40. * @param[in] timeout The timeout
  41. *
  42. * @return The furi status.
  43. */
  44. FuriStatus furi_message_queue_get(FuriMessageQueue* instance, void* msg_ptr, uint32_t timeout);
  45. /** Get queue capacity
  46. *
  47. * @param instance pointer to FuriMessageQueue instance
  48. *
  49. * @return capacity in object count
  50. */
  51. uint32_t furi_message_queue_get_capacity(FuriMessageQueue* instance);
  52. /** Get message size
  53. *
  54. * @param instance pointer to FuriMessageQueue instance
  55. *
  56. * @return Message size in bytes
  57. */
  58. uint32_t furi_message_queue_get_message_size(FuriMessageQueue* instance);
  59. /** Get message count in queue
  60. *
  61. * @param instance pointer to FuriMessageQueue instance
  62. *
  63. * @return Message count
  64. */
  65. uint32_t furi_message_queue_get_count(FuriMessageQueue* instance);
  66. /** Get queue available space
  67. *
  68. * @param instance pointer to FuriMessageQueue instance
  69. *
  70. * @return Message count
  71. */
  72. uint32_t furi_message_queue_get_space(FuriMessageQueue* instance);
  73. /** Reset queue
  74. *
  75. * @param instance pointer to FuriMessageQueue instance
  76. *
  77. * @return The furi status.
  78. */
  79. FuriStatus furi_message_queue_reset(FuriMessageQueue* instance);
  80. #ifdef __cplusplus
  81. }
  82. #endif