camera_suite.h 3.0 KB

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