camera_suite_custom_event.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #pragma once
  2. typedef enum {
  3. // Scene events: Start menu
  4. CameraSuiteCustomEventStartUp,
  5. CameraSuiteCustomEventStartDown,
  6. CameraSuiteCustomEventStartLeft,
  7. CameraSuiteCustomEventStartRight,
  8. CameraSuiteCustomEventStartOk,
  9. CameraSuiteCustomEventStartBack,
  10. // Scene events: Camera
  11. CameraSuiteCustomEventSceneCameraUp,
  12. CameraSuiteCustomEventSceneCameraDown,
  13. CameraSuiteCustomEventSceneCameraLeft,
  14. CameraSuiteCustomEventSceneCameraRight,
  15. CameraSuiteCustomEventSceneCameraOk,
  16. CameraSuiteCustomEventSceneCameraBack,
  17. // Scene events: WiFi Camera
  18. CameraSuiteCustomEventSceneWiFiCameraUp,
  19. CameraSuiteCustomEventSceneWiFiCameraDown,
  20. CameraSuiteCustomEventSceneWiFiCameraLeft,
  21. CameraSuiteCustomEventSceneWiFiCameraRight,
  22. CameraSuiteCustomEventSceneWiFiCameraOk,
  23. CameraSuiteCustomEventSceneWiFiCameraBack,
  24. // Scene events: Guide
  25. CameraSuiteCustomEventSceneGuideUp,
  26. CameraSuiteCustomEventSceneGuideDown,
  27. CameraSuiteCustomEventSceneGuideLeft,
  28. CameraSuiteCustomEventSceneGuideRight,
  29. CameraSuiteCustomEventSceneGuideOk,
  30. CameraSuiteCustomEventSceneGuideBack,
  31. } CameraSuiteCustomEvent;
  32. enum CameraSuiteCustomEventType {
  33. // Reserve first 100 events for button types and indexes, starting from 0.
  34. CameraSuiteCustomEventMenuVoid,
  35. CameraSuiteCustomEventMenuSelected,
  36. };
  37. #pragma pack(push, 1)
  38. typedef union {
  39. uint32_t packed_value;
  40. struct {
  41. uint16_t type;
  42. int16_t value;
  43. } content;
  44. } CameraSuiteCustomEventMenu;
  45. #pragma pack(pop)
  46. static inline uint32_t camera_suite_custom_menu_event_pack(uint16_t type, int16_t value) {
  47. CameraSuiteCustomEventMenu event = {.content = {.type = type, .value = value}};
  48. return event.packed_value;
  49. }
  50. static inline void
  51. camera_suite_custom_menu_event_unpack(uint32_t packed_value, uint16_t* type, int16_t* value) {
  52. CameraSuiteCustomEventMenu 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 camera_suite_custom_menu_event_get_type(uint32_t packed_value) {
  57. uint16_t type;
  58. camera_suite_custom_menu_event_unpack(packed_value, &type, NULL);
  59. return type;
  60. }
  61. static inline int16_t camera_suite_custom_menu_event_get_value(uint32_t packed_value) {
  62. int16_t value;
  63. camera_suite_custom_menu_event_unpack(packed_value, NULL, &value);
  64. return value;
  65. }