dispatcher.h 622 B

12345678910111213141516171819202122232425262728
  1. #pragma once
  2. #include <stddef.h>
  3. #include <stdint.h>
  4. enum MessageTypeBase {
  5. MessageTypeExit = 0x00,
  6. MessageTypeMemoryLow = 0x01,
  7. MessageTypeBatteryLow = 0x02,
  8. };
  9. typedef struct {
  10. enum MessageTypeBase type;
  11. } Message;
  12. typedef struct Dispatcher Dispatcher;
  13. Dispatcher* dispatcher_alloc(size_t queue_size, size_t message_size);
  14. void dispatcher_free(Dispatcher* dispatcher);
  15. void dispatcher_send(Dispatcher* dispatcher, Message* message);
  16. void dispatcher_recieve(Dispatcher* dispatcher, Message* message);
  17. void dispatcher_lock(Dispatcher* dispatcher);
  18. void dispatcher_unlock(Dispatcher* dispatcher);