xremote_custom_event.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #pragma once
  2. #include <stdint.h>
  3. #include <stddef.h>
  4. enum XRemoteCustomEventType {
  5. // Reserve first 100 events for button types and indexes, starting from 0
  6. XRemoteCustomEventMenuVoid,
  7. XRemoteCustomEventMenuSelected,
  8. XRemoteCustomEventMenuAddSelected,
  9. XRemoteCustomEventMenuAddIrSelected,
  10. };
  11. #pragma pack(push, 1)
  12. typedef union {
  13. uint32_t packed_value;
  14. struct {
  15. uint16_t type;
  16. int16_t value;
  17. } content;
  18. } XRemoteCustomEventMenu;
  19. #pragma pack(pop)
  20. typedef enum {
  21. XRemoteCustomEventInfoscreenUp,
  22. XRemoteCustomEventInfoscreenDown,
  23. XRemoteCustomEventInfoscreenLeft,
  24. XRemoteCustomEventInfoscreenRight,
  25. XRemoteCustomEventInfoscreenOk,
  26. XRemoteCustomEventInfoscreenBack,
  27. XRemoteCustomEventCreateUp,
  28. XRemoteCustomEventCreateDown,
  29. XRemoteCustomEventCreateLeft,
  30. XRemoteCustomEventCreateRight,
  31. XRemoteCustomEventCreateOk,
  32. XRemoteCustomEventCreateBack,
  33. XRemoteCustomEventScene2Up,
  34. XRemoteCustomEventScene2Down,
  35. XRemoteCustomEventScene2Left,
  36. XRemoteCustomEventScene2Right,
  37. XRemoteCustomEventScene2Ok,
  38. XRemoteCustomEventScene2Back,
  39. XRemoteCustomEventTypePopupClosed,
  40. XRemoteCustomEventTextInput,
  41. XRemoteCustomEventPauseSetBack,
  42. XRemoteCustomEventPauseSetUp,
  43. XRemoteCustomEventPauseSetDown,
  44. XRemoteCustomEventPauseSetOk,
  45. XRemoteCustomEventViewTransmitterSendStop,
  46. } XRemoteCustomEvent;
  47. static inline uint32_t xremote_custom_menu_event_pack(uint16_t type, int16_t value) {
  48. XRemoteCustomEventMenu event = {.content = {.type = type, .value = value}};
  49. return event.packed_value;
  50. }
  51. static inline void
  52. xremote_custom_menu_event_unpack(uint32_t packed_value, uint16_t* type, int16_t* value) {
  53. XRemoteCustomEventMenu event = {.packed_value = packed_value};
  54. if(type) *type = event.content.type;
  55. if(value) *value = event.content.value;
  56. }
  57. static inline uint16_t xremote_custom_menu_event_get_type(uint32_t packed_value) {
  58. uint16_t type;
  59. xremote_custom_menu_event_unpack(packed_value, &type, NULL);
  60. return type;
  61. }
  62. static inline int16_t xremote_custom_menu_event_get_value(uint32_t packed_value) {
  63. int16_t value;
  64. xremote_custom_menu_event_unpack(packed_value, NULL, &value);
  65. return value;
  66. }