mirror of
https://github.com/MrUnknownDE/OpenIris-ESPIDF.git
synced 2026-04-26 01:23:45 +02:00
Add event queue to send stream event for StreamServer
This commit is contained in:
@@ -26,6 +26,11 @@ esp_err_t StreamHelpers::stream(httpd_req_t *req)
|
|||||||
if (!last_frame)
|
if (!last_frame)
|
||||||
last_frame = esp_timer_get_time();
|
last_frame = esp_timer_get_time();
|
||||||
|
|
||||||
|
// Pull event queue from user_ctx to send STREAM on/off notifications
|
||||||
|
auto *stateManager = static_cast<StateManager *>(req->user_ctx);
|
||||||
|
QueueHandle_t eventQueue = stateManager ? stateManager->GetEventQueue() : nullptr;
|
||||||
|
bool stream_on_sent = false;
|
||||||
|
|
||||||
response = httpd_resp_set_type(req, STREAM_CONTENT_TYPE);
|
response = httpd_resp_set_type(req, STREAM_CONTENT_TYPE);
|
||||||
if (response != ESP_OK)
|
if (response != ESP_OK)
|
||||||
return response;
|
return response;
|
||||||
@@ -33,6 +38,10 @@ esp_err_t StreamHelpers::stream(httpd_req_t *req)
|
|||||||
httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*");
|
httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*");
|
||||||
httpd_resp_set_hdr(req, "X-Framerate", "60");
|
httpd_resp_set_hdr(req, "X-Framerate", "60");
|
||||||
|
|
||||||
|
if (SendStreamEvent(eventQueue, StreamState_e::Stream_ON)) {
|
||||||
|
stream_on_sent = true;
|
||||||
|
}
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
fb = esp_camera_fb_get();
|
fb = esp_camera_fb_get();
|
||||||
@@ -86,6 +95,11 @@ esp_err_t StreamHelpers::stream(httpd_req_t *req)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
last_frame = 0;
|
last_frame = 0;
|
||||||
|
|
||||||
|
if (stream_on_sent) {
|
||||||
|
SendStreamEvent(eventQueue, StreamState_e::Stream_OFF);
|
||||||
|
}
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,7 +124,7 @@ esp_err_t StreamServer::startStreamServer()
|
|||||||
.uri = "/",
|
.uri = "/",
|
||||||
.method = HTTP_GET,
|
.method = HTTP_GET,
|
||||||
.handler = &StreamHelpers::stream,
|
.handler = &StreamHelpers::stream,
|
||||||
.user_ctx = nullptr,
|
.user_ctx = this->stateManager,
|
||||||
};
|
};
|
||||||
|
|
||||||
httpd_uri_t logs_ws = {
|
httpd_uri_t logs_ws = {
|
||||||
|
|||||||
Reference in New Issue
Block a user