camera_suite_custom_event.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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: Guide
  18. CameraSuiteCustomEventSceneGuideUp,
  19. CameraSuiteCustomEventSceneGuideDown,
  20. CameraSuiteCustomEventSceneGuideLeft,
  21. CameraSuiteCustomEventSceneGuideRight,
  22. CameraSuiteCustomEventSceneGuideOk,
  23. CameraSuiteCustomEventSceneGuideBack,
  24. } CameraSuiteCustomEvent;
  25. enum CameraSuiteCustomEventType {
  26. // Reserve first 100 events for button types and indexes, starting from 0.
  27. CameraSuiteCustomEventMenuVoid,
  28. CameraSuiteCustomEventMenuSelected,
  29. };
  30. #pragma pack(push, 1)
  31. typedef union {
  32. uint32_t packed_value;
  33. struct {
  34. uint16_t type;
  35. int16_t value;
  36. } content;
  37. } CameraSuiteCustomEventMenu;
  38. #pragma pack(pop)
  39. static inline uint32_t camera_suite_custom_menu_event_pack(uint16_t type, int16_t value) {
  40. CameraSuiteCustomEventMenu event = {.content = {.type = type, .value = value}};
  41. return event.packed_value;
  42. }
  43. static inline void
  44. camera_suite_custom_menu_event_unpack(uint32_t packed_value, uint16_t* type, int16_t* value) {
  45. CameraSuiteCustomEventMenu event = {.packed_value = packed_value};
  46. if(type) *type = event.content.type;
  47. if(value) *value = event.content.value;
  48. }
  49. static inline uint16_t camera_suite_custom_menu_event_get_type(uint32_t packed_value) {
  50. uint16_t type;
  51. camera_suite_custom_menu_event_unpack(packed_value, &type, NULL);
  52. return type;
  53. }
  54. static inline int16_t camera_suite_custom_menu_event_get_value(uint32_t packed_value) {
  55. int16_t value;
  56. camera_suite_custom_menu_event_unpack(packed_value, NULL, &value);
  57. return value;
  58. }