mirror of
https://github.com/MrUnknownDE/OpenIris-ESPIDF.git
synced 2026-04-17 21:43:45 +02:00
PoC wired mode over UVC, add logs over websockets, needs cleanup
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
idf_component_register(SRCS "StreamServer/StreamServer.cpp"
|
||||
INCLUDE_DIRS "StreamServer"
|
||||
REQUIRES esp32-camera StateManager ProjectConfig esp_http_server Helpers
|
||||
REQUIRES esp32-camera StateManager ProjectConfig esp_http_server Helpers WebSocketLogger
|
||||
)
|
||||
@@ -6,7 +6,10 @@ constexpr static const char *STREAM_PART = "Content-Type: image/jpeg\r\nContent-
|
||||
|
||||
static const char *STREAM_SERVER_TAG = "[STREAM_SERVER]";
|
||||
|
||||
// the stream is super low FPS, find out why
|
||||
StreamServer::StreamServer(const int STREAM_PORT) : STREAM_SERVER_PORT(STREAM_PORT)
|
||||
{
|
||||
}
|
||||
|
||||
esp_err_t StreamHelpers::stream(httpd_req_t *req)
|
||||
{
|
||||
long last_request_time = 0;
|
||||
@@ -76,15 +79,14 @@ esp_err_t StreamHelpers::stream(httpd_req_t *req)
|
||||
return response;
|
||||
}
|
||||
|
||||
StreamServer::StreamServer(const int STREAM_PORT) : STREAM_SERVER_PORT(STREAM_PORT) {}
|
||||
esp_err_t StreamHelpers::ws_logs_handle(httpd_req_t *req)
|
||||
{
|
||||
auto ret = webSocketLogger.register_socket_client(req);
|
||||
return ret;
|
||||
}
|
||||
|
||||
esp_err_t StreamServer::startStreamServer()
|
||||
{
|
||||
if (cameraStateManager.getCurrentState() != CameraState_e::Camera_Success)
|
||||
{
|
||||
ESP_LOGE(STREAM_SERVER_TAG, "Camera not initialized. Cannot start stream server.");
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
httpd_config_t config = HTTPD_DEFAULT_CONFIG();
|
||||
config.stack_size = 20480;
|
||||
@@ -99,6 +101,14 @@ esp_err_t StreamServer::startStreamServer()
|
||||
.user_ctx = nullptr,
|
||||
};
|
||||
|
||||
httpd_uri_t logs_ws = {
|
||||
.uri = "/ws",
|
||||
.method = HTTP_GET,
|
||||
.handler = &StreamHelpers::ws_logs_handle,
|
||||
.user_ctx = nullptr,
|
||||
.is_websocket = true,
|
||||
};
|
||||
|
||||
int status = httpd_start(&camera_stream, &config);
|
||||
|
||||
if (status != ESP_OK)
|
||||
@@ -107,7 +117,15 @@ esp_err_t StreamServer::startStreamServer()
|
||||
return status;
|
||||
}
|
||||
|
||||
httpd_register_uri_handler(camera_stream, &logs_ws);
|
||||
if (cameraStateManager.getCurrentState() != CameraState_e::Camera_Success)
|
||||
{
|
||||
ESP_LOGE(STREAM_SERVER_TAG, "Camera not initialized. Cannot start stream server. Logs server will be running.");
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
httpd_register_uri_handler(camera_stream, &stream_page);
|
||||
|
||||
ESP_LOGI(STREAM_SERVER_TAG, "Stream server started on port %d", STREAM_SERVER_PORT);
|
||||
// todo add printing IP addr here
|
||||
|
||||
|
||||
@@ -9,22 +9,29 @@
|
||||
#include "esp_http_server.h"
|
||||
#include "esp_timer.h"
|
||||
#include <StateManager.hpp>
|
||||
#include <WebSocketLogger.hpp >
|
||||
#include <Helpers.hpp>
|
||||
|
||||
extern WebSocketLogger webSocketLogger;
|
||||
|
||||
namespace StreamHelpers
|
||||
{
|
||||
esp_err_t stream(httpd_req_t *req);
|
||||
esp_err_t ws_logs_handle(httpd_req_t *req);
|
||||
}
|
||||
|
||||
class StreamServer
|
||||
{
|
||||
private:
|
||||
httpd_handle_t camera_stream = nullptr;
|
||||
int STREAM_SERVER_PORT;
|
||||
httpd_handle_t camera_stream = nullptr;
|
||||
|
||||
public:
|
||||
StreamServer(const int STREAM_PORT = 80);
|
||||
StreamServer(const int STREAM_PORT);
|
||||
esp_err_t startStreamServer();
|
||||
|
||||
esp_err_t stream(httpd_req_t *req);
|
||||
esp_err_t ws_logs_handle(httpd_req_t *req);
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user