camera_suite_view_camera.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #pragma once
  2. #include <furi_hal_serial.h>
  3. #include <furi_hal_serial_control.h>
  4. #define FLIPPER_SCREEN_HEIGHT 64
  5. #define FLIPPER_SCREEN_WIDTH 128
  6. #define WORKER_EVENTS_MASK (WorkerEventStop | WorkerEventRx)
  7. #define UART_CH (FuriHalSerialIdUsart)
  8. typedef void (*CameraSuiteViewCameraCallback)(CameraSuiteCustomEvent event, void* context);
  9. typedef enum {
  10. // Reserved for StreamBuffer internal event
  11. WorkerEventReserved = (1 << 0),
  12. WorkerEventStop = (1 << 1),
  13. WorkerEventRx = (1 << 2),
  14. } WorkerEventFlags;
  15. typedef struct CameraSuiteViewCamera {
  16. CameraSuiteViewCameraCallback callback;
  17. FuriHalSerialHandle* serial_handle;
  18. FuriStreamBuffer* rx_stream;
  19. FuriThread* worker_thread;
  20. View* view;
  21. void* context;
  22. } CameraSuiteViewCamera;
  23. typedef struct UartDumpModel {
  24. bool is_dithering_enabled;
  25. bool is_initialized;
  26. bool is_inverted;
  27. int rotation_angle;
  28. uint32_t orientation;
  29. uint8_t pixels[FRAME_BUFFER_LENGTH];
  30. uint8_t ringbuffer_index;
  31. uint8_t row_identifier;
  32. uint8_t row_ringbuffer[RING_BUFFER_LENGTH];
  33. FuriString* log;
  34. size_t log_strlen;
  35. } UartDumpModel;
  36. CameraSuiteViewCamera* camera_suite_view_camera_alloc();
  37. View* camera_suite_view_camera_get_view(CameraSuiteViewCamera* camera_suite_static);
  38. void camera_suite_view_camera_free(CameraSuiteViewCamera* camera_suite_static);
  39. void camera_suite_view_camera_set_callback(
  40. CameraSuiteViewCamera* camera_suite_view_camera,
  41. CameraSuiteViewCameraCallback callback,
  42. void* context);