xremote_custom_event.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. XRemoteCustomEventTypeIrGpioPinChanged,
  47. XRemoteCustomEventTypeIrGpioOtgChanged,
  48. } XRemoteCustomEvent;
  49. static inline uint32_t xremote_custom_menu_event_pack(uint16_t type, int16_t value) {
  50. XRemoteCustomEventMenu event = {.content = {.type = type, .value = value}};
  51. return event.packed_value;
  52. }
  53. static inline void
  54. xremote_custom_menu_event_unpack(uint32_t packed_value, uint16_t* type, int16_t* value) {
  55. XRemoteCustomEventMenu event = {.packed_value = packed_value};
  56. if(type) *type = event.content.type;
  57. if(value) *value = event.content.value;
  58. }
  59. static inline uint16_t xremote_custom_menu_event_get_type(uint32_t packed_value) {
  60. uint16_t type;
  61. xremote_custom_menu_event_unpack(packed_value, &type, NULL);
  62. return type;
  63. }
  64. static inline int16_t xremote_custom_menu_event_get_value(uint32_t packed_value) {
  65. int16_t value;
  66. xremote_custom_menu_event_unpack(packed_value, NULL, &value);
  67. return value;
  68. }