9 #include <esp_camera.h> 10 #include <freertos/FreeRTOS.h> 11 #include <freertos/queue.h> 14 namespace esp32_camera {
78 CameraImage(camera_fb_t *buffer, uint8_t requester);
97 void set_image(std::shared_ptr<CameraImage> image);
98 size_t available()
const;
99 uint8_t *peek_data_buffer();
100 void consume_data(
size_t consumed);
115 void set_data_pins(std::array<uint8_t, 8> pins);
116 void set_vsync_pin(uint8_t pin);
117 void set_href_pin(uint8_t pin);
118 void set_pixel_clock_pin(uint8_t pin);
119 void set_external_clock(uint8_t pin, uint32_t
frequency);
120 void set_i2c_pins(uint8_t sda, uint8_t scl);
121 void set_reset_pin(uint8_t pin);
122 void set_power_down_pin(uint8_t pin);
125 void set_jpeg_quality(uint8_t quality);
126 void set_vertical_flip(
bool vertical_flip);
127 void set_horizontal_mirror(
bool horizontal_mirror);
128 void set_contrast(
int contrast);
129 void set_brightness(
int brightness);
130 void set_saturation(
int saturation);
134 void set_aec2(
bool aec2);
135 void set_ae_level(
int ae_level);
136 void set_aec_value(uint32_t aec_value);
139 void set_agc_value(uint8_t agc_value);
144 void set_test_pattern(
bool test_pattern);
146 void set_max_update_interval(uint32_t max_update_interval);
147 void set_idle_update_interval(uint32_t idle_update_interval);
149 void set_frame_buffer_mode(camera_grab_mode_t mode);
150 void set_frame_buffer_count(uint8_t fb_count);
153 void setup()
override;
154 void loop()
override;
155 void dump_config()
override;
156 float get_setup_priority()
const override;
161 void update_camera_parameters();
163 void add_image_callback(std::function<
void(std::shared_ptr<CameraImage>)> &&callback);
164 void add_stream_start_callback(std::function<
void()> &&callback);
165 void add_stream_stop_callback(std::function<
void()> &&callback);
169 bool has_requested_image_()
const;
170 bool can_return_image_()
const;
172 static void framebuffer_task(
void *pv);
176 camera_config_t config_{};
178 bool vertical_flip_{
true};
179 bool horizontal_mirror_{
true};
188 uint32_t aec_value_{300};
191 uint8_t agc_value_{0};
196 bool test_pattern_{
false};
198 uint32_t max_update_interval_{1000};
199 uint32_t idle_update_interval_{15000};
201 esp_err_t init_error_{ESP_OK};
203 uint8_t single_requesters_{0};
204 uint8_t stream_requesters_{0};
211 uint32_t last_idle_request_{0};
212 uint32_t last_update_{0};
221 parent->
add_image_callback([
this](
const std::shared_ptr<esp32_camera::CameraImage> &image) {
223 camera_image_data.
length = image->get_data_length();
224 camera_image_data.data = image->get_data_buffer();
225 this->trigger(camera_image_data);
std::shared_ptr< CameraImage > current_image_
std::shared_ptr< CameraImage > image_
ESP32CameraStreamStopTrigger(ESP32Camera *parent)
void add_stream_start_callback(std::function< void()> &&callback)
void add_image_callback(std::function< void(std::shared_ptr< CameraImage >)> &&callback)
QueueHandle_t framebuffer_get_queue_
ESP32CameraImageTrigger(ESP32Camera *parent)
ESP32Camera * global_esp32_camera
BedjetMode mode
BedJet operating mode.
void add_stream_stop_callback(std::function< void()> &&callback)
camera_fb_t * get_raw_buffer()
uint8_t * get_data_buffer()
bool was_requested_by(CameraRequester requester) const
ESP32CameraStreamStartTrigger(ESP32Camera *parent)
CameraImage(camera_fb_t *buffer, uint8_t requester)
QueueHandle_t framebuffer_return_queue_
Implementation of SPI Controller mode.