camera_suite.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #pragma once
  2. #include <furi.h>
  3. #include <furi_hal.h>
  4. #include <gui/gui.h>
  5. #include <gui/modules/button_menu.h>
  6. #include <gui/modules/submenu.h>
  7. #include <gui/modules/variable_item_list.h>
  8. #include <gui/scene_manager.h>
  9. #include <gui/view_dispatcher.h>
  10. #include <input/input.h>
  11. #include <notification/notification_messages.h>
  12. #include <stdlib.h>
  13. #include "scenes/camera_suite_scene.h"
  14. #include "views/camera_suite_view_guide.h"
  15. #include "views/camera_suite_view_start.h"
  16. #include "views/camera_suite_view_camera.h"
  17. #include "helpers/camera_suite_storage.h"
  18. #include <assets_icons.h>
  19. #define TAG "Camera Suite"
  20. #ifdef xtreme_settings
  21. /**
  22. * Enable the following line for "Xtreme Firmware" & "Xtreme Apps" (Flipper-XFW).
  23. *
  24. * @see https://github.com/Flipper-XFW/Xtreme-Firmware
  25. * @see https://github.com/Flipper-XFW/Xtreme-Apps
  26. */
  27. #define UART_CH (xtreme_settings.uart_esp_channel)
  28. #elif momentum_settings
  29. /**
  30. * Enable the following line for "Momentum Firmware" & "Momentum Apps".
  31. *
  32. * @see https://github.com/Next-Flip/Momentum-Firmware
  33. * @see https://github.com/Next-Flip/Momentum-Apps
  34. */
  35. #define UART_CH (momentum_settings.uart_esp_channel)
  36. #else
  37. #define UART_CH (FuriHalSerialIdUsart)
  38. #endif
  39. typedef struct {
  40. Gui* gui;
  41. NotificationApp* notification;
  42. ViewDispatcher* view_dispatcher;
  43. Submenu* submenu;
  44. SceneManager* scene_manager;
  45. VariableItemList* variable_item_list;
  46. CameraSuiteViewStart* camera_suite_view_start;
  47. CameraSuiteViewCamera* camera_suite_view_camera;
  48. CameraSuiteViewGuide* camera_suite_view_guide;
  49. uint32_t orientation;
  50. uint32_t dither;
  51. uint32_t flash;
  52. uint32_t haptic;
  53. uint32_t jpeg;
  54. uint32_t speaker;
  55. uint32_t led;
  56. ButtonMenu* button_menu;
  57. } CameraSuite;
  58. typedef enum {
  59. CameraSuiteViewIdStartscreen,
  60. CameraSuiteViewIdMenu,
  61. CameraSuiteViewIdCamera,
  62. CameraSuiteViewIdGuide,
  63. CameraSuiteViewIdAppSettings,
  64. CameraSuiteViewIdCamSettings,
  65. } CameraSuiteViewId;
  66. typedef enum {
  67. CameraSuiteOrientation0,
  68. CameraSuiteOrientation90,
  69. CameraSuiteOrientation180,
  70. CameraSuiteOrientation270,
  71. } CameraSuiteOrientationState;
  72. typedef enum {
  73. CameraSuiteDitherFloydSteinberg,
  74. CameraSuiteDitherStucki,
  75. CameraSuiteDitherJarvisJudiceNinke,
  76. } CameraSuiteDitherState;
  77. typedef enum {
  78. CameraSuiteFlashOff,
  79. CameraSuiteFlashOn,
  80. } CameraSuiteFlashState;
  81. typedef enum {
  82. CameraSuiteJpegOff,
  83. CameraSuiteJpegOn,
  84. } CameraSuiteJpegState;
  85. typedef enum {
  86. CameraSuiteHapticOff,
  87. CameraSuiteHapticOn,
  88. } CameraSuiteHapticState;
  89. typedef enum {
  90. CameraSuiteSpeakerOff,
  91. CameraSuiteSpeakerOn,
  92. } CameraSuiteSpeakerState;
  93. typedef enum {
  94. CameraSuiteLedOff,
  95. CameraSuiteLedOn,
  96. } CameraSuiteLedState;