xremote_custom_event.h 2.2 KB

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