meal_pager_custom_event.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #pragma once
  2. typedef enum {
  3. Meal_PagerCustomEventStartscreenUp,
  4. Meal_PagerCustomEventStartscreenDown,
  5. Meal_PagerCustomEventStartscreenLeft,
  6. Meal_PagerCustomEventStartscreenRight,
  7. Meal_PagerCustomEventStartscreenOk,
  8. Meal_PagerCustomEventStartscreenBack,
  9. Meal_PagerCustomEventTransmitUp,
  10. Meal_PagerCustomEventTransmitDown,
  11. Meal_PagerCustomEventTransmitLeft,
  12. Meal_PagerCustomEventTransmitRight,
  13. Meal_PagerCustomEventTransmitOk,
  14. Meal_PagerCustomEventTransmitBack,
  15. Meal_PagerCustomEventScene2Up,
  16. Meal_PagerCustomEventScene2Down,
  17. Meal_PagerCustomEventScene2Left,
  18. Meal_PagerCustomEventScene2Right,
  19. Meal_PagerCustomEventScene2Ok,
  20. Meal_PagerCustomEventScene2Back,
  21. Meal_PagerCustomEventViewTransmitterBack,
  22. Meal_PagerCustomEventViewTransmitterSendStart,
  23. Meal_PagerCustomEventViewTransmitterSendStop,
  24. Meal_PagerCustomEventViewTransmitterError,
  25. Meal_PagerCustomerEventIntInput,
  26. Meal_PagerCustomEventViewIntInputOk,
  27. } Meal_PagerCustomEvent;
  28. enum Meal_PagerCustomEventType {
  29. // Reserve first 100 events for button types and indexes, starting from 0
  30. Meal_PagerCustomEventMenuVoid,
  31. Meal_PagerCustomEventMenuSelected,
  32. };
  33. #pragma pack(push, 1)
  34. typedef union {
  35. uint32_t packed_value;
  36. struct {
  37. uint16_t type;
  38. int16_t value;
  39. } content;
  40. } Meal_PagerCustomEventMenu;
  41. #pragma pack(pop)
  42. static inline uint32_t meal_pager_custom_menu_event_pack(uint16_t type, int16_t value) {
  43. Meal_PagerCustomEventMenu event = {.content = {.type = type, .value = value}};
  44. return event.packed_value;
  45. }
  46. static inline void
  47. meal_pager_custom_menu_event_unpack(uint32_t packed_value, uint16_t* type, int16_t* value) {
  48. Meal_PagerCustomEventMenu event = {.packed_value = packed_value};
  49. if(type) *type = event.content.type;
  50. if(value) *value = event.content.value;
  51. }
  52. static inline uint16_t meal_pager_custom_menu_event_get_type(uint32_t packed_value) {
  53. uint16_t type;
  54. meal_pager_custom_menu_event_unpack(packed_value, &type, NULL);
  55. return type;
  56. }
  57. static inline int16_t meal_pager_custom_menu_event_get_value(uint32_t packed_value) {
  58. int16_t value;
  59. meal_pager_custom_menu_event_unpack(packed_value, NULL, &value);
  60. return value;
  61. }