Files
SpotMicroESP32-Leika/esp32/include/peripherals/camera_service.h
T
2026-02-09 16:39:46 +01:00

54 lines
1.1 KiB
C++

#pragma once
#include <esp_http_server.h>
#include <features.h>
#include <template/stateful_service.h>
#include <template/stateful_proto_endpoint.h>
#include <template/stateful_persistence.h>
#include <settings/camera_settings.h>
namespace Camera {
#if USE_CAMERA && !CONFIG_IDF_TARGET_ESP32P4
#include <esp_camera.h>
#include <peripherals/camera_pins.h>
#else
typedef struct {
uint8_t *buf;
size_t len;
} camera_fb_t;
typedef struct {
} sensor_t;
#endif
#define PART_BOUNDARY "frame"
camera_fb_t *safe_camera_fb_get();
sensor_t *safe_sensor_get();
void safe_sensor_return();
class CameraService
#if USE_CAMERA && !CONFIG_IDF_TARGET_ESP32P4
: public StatefulService<CameraSettings>
#endif
{
public:
CameraService();
esp_err_t begin();
esp_err_t cameraStill(httpd_req_t *request);
esp_err_t cameraStream(httpd_req_t *request);
#if USE_CAMERA && !CONFIG_IDF_TARGET_ESP32P4
StatefulProtoEndpoint<CameraSettings, api_CameraSettings> protoEndpoint;
private:
FSPersistencePB<CameraSettings> _persistence;
void updateCamera();
#endif
};
} // namespace Camera