📷 Adds camera service
This commit is contained in:
@@ -15,15 +15,20 @@
|
||||
|
||||
#include <ESP32SvelteKit.h>
|
||||
|
||||
ESP32SvelteKit::ESP32SvelteKit(PsychicHttpServer *server, unsigned int numberEndpoints)
|
||||
: _server(server), _numberEndpoints(numberEndpoints), _taskManager(),
|
||||
_featureService(server), _securitySettingsService(server, &ESPFS),
|
||||
ESP32SvelteKit::ESP32SvelteKit(PsychicHttpServer *server,
|
||||
unsigned int numberEndpoints)
|
||||
: _server(server),
|
||||
_numberEndpoints(numberEndpoints),
|
||||
_taskManager(),
|
||||
_featureService(server),
|
||||
_securitySettingsService(server, &ESPFS),
|
||||
_wifiSettingsService(server, &ESPFS, &_securitySettingsService, &_socket),
|
||||
_wifiScanner(server, &_securitySettingsService),
|
||||
_wifiStatus(server, &_securitySettingsService),
|
||||
_apSettingsService(server, &ESPFS, &_securitySettingsService),
|
||||
_apStatus(server, &_securitySettingsService, &_apSettingsService),
|
||||
_socket(server, &_securitySettingsService, AuthenticationPredicates::IS_AUTHENTICATED),
|
||||
_socket(server, &_securitySettingsService,
|
||||
AuthenticationPredicates::IS_AUTHENTICATED),
|
||||
#if FT_ENABLED(FT_NTP)
|
||||
_ntpSettingsService(server, &ESPFS, &_securitySettingsService),
|
||||
_ntpStatus(server, &_securitySettingsService),
|
||||
@@ -32,7 +37,8 @@ ESP32SvelteKit::ESP32SvelteKit(PsychicHttpServer *server, unsigned int numberEnd
|
||||
_uploadFirmwareService(server, &_securitySettingsService),
|
||||
#endif
|
||||
#if FT_ENABLED(FT_DOWNLOAD_FIRMWARE)
|
||||
_downloadFirmwareService(server, &_securitySettingsService, &_socket, &_taskManager),
|
||||
_downloadFirmwareService(server, &_securitySettingsService, &_socket,
|
||||
&_taskManager),
|
||||
#endif
|
||||
#if FT_ENABLED(FT_MQTT)
|
||||
_mqttSettingsService(server, &ESPFS, &_securitySettingsService),
|
||||
@@ -49,153 +55,169 @@ ESP32SvelteKit::ESP32SvelteKit(PsychicHttpServer *server, unsigned int numberEnd
|
||||
#endif
|
||||
#if FT_ENABLED(FT_ANALYTICS)
|
||||
_analyticsService(&_socket, &_taskManager),
|
||||
#endif
|
||||
#if FT_ENABLED(FT_CAMERA)
|
||||
_cameraService(server, &_taskManager, &_securitySettingsService),
|
||||
_cameraSettingsService(server, &ESPFS, &_securitySettingsService, &_socket),
|
||||
#endif
|
||||
_restartService(server, &_securitySettingsService),
|
||||
_factoryResetService(server, &ESPFS, &_securitySettingsService),
|
||||
_systemStatus(server, &_securitySettingsService),
|
||||
_fileExplorer(server, &_securitySettingsService),
|
||||
_motionService(_server, &_socket, &_securitySettingsService, &_taskManager) {
|
||||
_motionService(_server, &_socket, &_securitySettingsService,
|
||||
&_taskManager) {
|
||||
}
|
||||
|
||||
void ESP32SvelteKit::begin() {
|
||||
ESP_LOGV("ESP32SvelteKit", "Loading settings from files system");
|
||||
ESP_LOGI("Running Firmware Version: %s", APP_VERSION);
|
||||
ESPFS.begin(true);
|
||||
ESP_LOGV("ESP32SvelteKit", "Loading settings from files system");
|
||||
ESP_LOGI("Running Firmware Version: %s", APP_VERSION);
|
||||
ESPFS.begin(true);
|
||||
|
||||
_wifiSettingsService.initWiFi();
|
||||
_wifiSettingsService.initWiFi();
|
||||
|
||||
setupServer();
|
||||
setupServer();
|
||||
|
||||
setupMDNS();
|
||||
setupMDNS();
|
||||
|
||||
startServices();
|
||||
startServices();
|
||||
|
||||
ESP_LOGV("ESP32SvelteKit", "Starting loop task");
|
||||
_taskManager.createTask(this->_loopImpl, "Spot main", 4096, this,
|
||||
(tskIDLE_PRIORITY + 1), NULL,
|
||||
ESP32SVELTEKIT_RUNNING_CORE);
|
||||
ESP_LOGV("ESP32SvelteKit", "Starting loop task");
|
||||
_taskManager.createTask(this->_loopImpl, "Spot main", 4096, this,
|
||||
(tskIDLE_PRIORITY + 1), NULL,
|
||||
ESP32SVELTEKIT_RUNNING_CORE);
|
||||
}
|
||||
|
||||
void ESP32SvelteKit::setupServer() {
|
||||
_server->config.max_uri_handlers = _numberEndpoints;
|
||||
_server->listen(80);
|
||||
_server->config.max_uri_handlers = _numberEndpoints;
|
||||
_server->listen(80);
|
||||
|
||||
#ifdef EMBED_WWW
|
||||
ESP_LOGV("ESP32SvelteKit","Registering routes from PROGMEM static resources");
|
||||
WWWData::registerRoutes([&](const String &uri, const String &contentType, const uint8_t *content, size_t len) {
|
||||
PsychicHttpRequestCallback requestHandler = [contentType, content, len](PsychicRequest *request) {
|
||||
PsychicResponse response(request);
|
||||
response.setCode(200);
|
||||
response.setContentType(contentType.c_str());
|
||||
response.addHeader("Content-Encoding", "gzip");
|
||||
response.addHeader("Cache-Control", "public, immutable, max-age=31536000");
|
||||
response.setContent(content, len);
|
||||
return response.send();
|
||||
};
|
||||
PsychicWebHandler *handler = new PsychicWebHandler();
|
||||
handler->onRequest(requestHandler);
|
||||
_server->on(uri.c_str(), HTTP_GET, handler);
|
||||
ESP_LOGV("ESP32SvelteKit",
|
||||
"Registering routes from PROGMEM static resources");
|
||||
WWWData::registerRoutes([&](const String &uri, const String &contentType,
|
||||
const uint8_t *content, size_t len) {
|
||||
PsychicHttpRequestCallback requestHandler =
|
||||
[contentType, content, len](PsychicRequest *request) {
|
||||
PsychicResponse response(request);
|
||||
response.setCode(200);
|
||||
response.setContentType(contentType.c_str());
|
||||
response.addHeader("Content-Encoding", "gzip");
|
||||
response.addHeader("Cache-Control",
|
||||
"public, immutable, max-age=31536000");
|
||||
response.setContent(content, len);
|
||||
return response.send();
|
||||
};
|
||||
PsychicWebHandler *handler = new PsychicWebHandler();
|
||||
handler->onRequest(requestHandler);
|
||||
_server->on(uri.c_str(), HTTP_GET, handler);
|
||||
|
||||
// Set default end-point for all non matching requests
|
||||
// this is easier than using webServer.onNotFound()
|
||||
if (uri.equals("/index.html")) {
|
||||
_server->defaultEndpoint->setHandler(handler);
|
||||
}
|
||||
});
|
||||
// Set default end-point for all non matching requests
|
||||
// this is easier than using webServer.onNotFound()
|
||||
if (uri.equals("/index.html")) {
|
||||
_server->defaultEndpoint->setHandler(handler);
|
||||
}
|
||||
});
|
||||
#else
|
||||
// Serve static resources from /www/
|
||||
ESP_LOGV("ESP32SvelteKit",
|
||||
"Registering routes from FS /www/ static resources");
|
||||
_server->serveStatic("/_app/", ESPFS, "/www/_app/");
|
||||
_server->serveStatic("/favicon.png", ESPFS, "/www/favicon.png");
|
||||
// Serving all other get requests with "/www/index.htm"
|
||||
_server->onNotFound([](PsychicRequest *request) {
|
||||
if (request->method() == HTTP_GET) {
|
||||
PsychicFileResponse response(request, ESPFS, "/www/index.html",
|
||||
"text/html");
|
||||
return response.send();
|
||||
// String url = "http://" + request->host() + "/index.html";
|
||||
// request->redirect(url.c_str());
|
||||
}
|
||||
});
|
||||
// Serve static resources from /www/
|
||||
ESP_LOGV("ESP32SvelteKit",
|
||||
"Registering routes from FS /www/ static resources");
|
||||
_server->serveStatic("/_app/", ESPFS, "/www/_app/");
|
||||
_server->serveStatic("/favicon.png", ESPFS, "/www/favicon.png");
|
||||
// Serving all other get requests with "/www/index.htm"
|
||||
_server->onNotFound([](PsychicRequest *request) {
|
||||
if (request->method() == HTTP_GET) {
|
||||
PsychicFileResponse response(request, ESPFS, "/www/index.html",
|
||||
"text/html");
|
||||
return response.send();
|
||||
// String url = "http://" + request->host() + "/index.html";
|
||||
// request->redirect(url.c_str());
|
||||
}
|
||||
});
|
||||
#endif
|
||||
#ifdef SERVE_CONFIG_FILES
|
||||
_server->serveStatic("/config/", ESPFS, "/config/");
|
||||
_server->serveStatic("/config/", ESPFS, "/config/");
|
||||
#endif
|
||||
|
||||
#if defined(ENABLE_CORS)
|
||||
ESP_LOGV("ESP32SvelteKit", "Enabling CORS headers");
|
||||
DefaultHeaders::Instance().addHeader("Access-Control-Allow-Origin", CORS_ORIGIN);
|
||||
DefaultHeaders::Instance().addHeader("Access-Control-Allow-Headers", "Accept, Content-Type, Authorization");
|
||||
DefaultHeaders::Instance().addHeader("Access-Control-Allow-Credentials", "true");
|
||||
ESP_LOGV("ESP32SvelteKit", "Enabling CORS headers");
|
||||
DefaultHeaders::Instance().addHeader("Access-Control-Allow-Origin",
|
||||
CORS_ORIGIN);
|
||||
DefaultHeaders::Instance().addHeader("Access-Control-Allow-Headers",
|
||||
"Accept, Content-Type, Authorization");
|
||||
DefaultHeaders::Instance().addHeader("Access-Control-Allow-Credentials",
|
||||
"true");
|
||||
#endif
|
||||
DefaultHeaders::Instance().addHeader("Server", _appName);
|
||||
DefaultHeaders::Instance().addHeader("Server", _appName);
|
||||
}
|
||||
|
||||
void ESP32SvelteKit::setupMDNS() {
|
||||
ESP_LOGV("ESP32SvelteKit", "Starting MDNS");
|
||||
MDNS.begin(_wifiSettingsService.getHostname().c_str());
|
||||
MDNS.setInstanceName(_appName);
|
||||
MDNS.addService("http", "tcp", 80);
|
||||
MDNS.addService("ws", "tcp", 80);
|
||||
MDNS.addServiceTxt("http", "tcp", "Firmware Version", APP_VERSION);
|
||||
ESP_LOGV("ESP32SvelteKit", "Starting MDNS");
|
||||
MDNS.begin(_wifiSettingsService.getHostname().c_str());
|
||||
MDNS.setInstanceName(_appName);
|
||||
MDNS.addService("http", "tcp", 80);
|
||||
MDNS.addService("ws", "tcp", 80);
|
||||
MDNS.addServiceTxt("http", "tcp", "Firmware Version", APP_VERSION);
|
||||
}
|
||||
|
||||
void ESP32SvelteKit::startServices() {
|
||||
_apStatus.begin();
|
||||
_socket.begin();
|
||||
_apSettingsService.begin();
|
||||
_factoryResetService.begin();
|
||||
_featureService.begin();
|
||||
_restartService.begin();
|
||||
_systemStatus.begin();
|
||||
_wifiSettingsService.begin();
|
||||
_wifiScanner.begin();
|
||||
_wifiStatus.begin();
|
||||
_apStatus.begin();
|
||||
_socket.begin();
|
||||
_apSettingsService.begin();
|
||||
_factoryResetService.begin();
|
||||
_featureService.begin();
|
||||
_restartService.begin();
|
||||
_systemStatus.begin();
|
||||
_wifiSettingsService.begin();
|
||||
_wifiScanner.begin();
|
||||
_wifiStatus.begin();
|
||||
|
||||
#if FT_ENABLED(FT_UPLOAD_FIRMWARE)
|
||||
_uploadFirmwareService.begin();
|
||||
_uploadFirmwareService.begin();
|
||||
#endif
|
||||
#if FT_ENABLED(FT_DOWNLOAD_FIRMWARE)
|
||||
_downloadFirmwareService.begin();
|
||||
_downloadFirmwareService.begin();
|
||||
#endif
|
||||
#if FT_ENABLED(FT_NTP)
|
||||
_ntpSettingsService.begin();
|
||||
_ntpStatus.begin();
|
||||
_ntpSettingsService.begin();
|
||||
_ntpStatus.begin();
|
||||
#endif
|
||||
#if FT_ENABLED(FT_MQTT)
|
||||
_mqttSettingsService.begin();
|
||||
_mqttStatus.begin();
|
||||
_mqttSettingsService.begin();
|
||||
_mqttStatus.begin();
|
||||
#endif
|
||||
#if FT_ENABLED(FT_SECURITY)
|
||||
_authenticationService.begin();
|
||||
_securitySettingsService.begin();
|
||||
_authenticationService.begin();
|
||||
_securitySettingsService.begin();
|
||||
#endif
|
||||
#if FT_ENABLED(FT_ANALYTICS)
|
||||
_analyticsService.begin();
|
||||
_analyticsService.begin();
|
||||
#endif
|
||||
#if FT_ENABLED(FT_SLEEP)
|
||||
_sleepService.begin();
|
||||
_sleepService.begin();
|
||||
#endif
|
||||
#if FT_ENABLED(FT_BATTERY)
|
||||
_batteryService.begin();
|
||||
_batteryService.begin();
|
||||
#endif
|
||||
_taskManager.begin();
|
||||
_fileExplorer.begin();
|
||||
_motionService.begin();
|
||||
#if FT_ENABLED(FT_CAMERA)
|
||||
_cameraService.begin();
|
||||
_cameraSettingsService.begin();
|
||||
#endif
|
||||
_taskManager.begin();
|
||||
_fileExplorer.begin();
|
||||
_motionService.begin();
|
||||
}
|
||||
|
||||
void IRAM_ATTR ESP32SvelteKit::_loop() {
|
||||
while (1) {
|
||||
_wifiSettingsService.loop();
|
||||
_apSettingsService.loop();
|
||||
while (1) {
|
||||
_wifiSettingsService.loop();
|
||||
_apSettingsService.loop();
|
||||
#if FT_ENABLED(FT_MQTT)
|
||||
_mqttSettingsService.loop();
|
||||
_mqttSettingsService.loop();
|
||||
#endif
|
||||
#if FT_ENABLED(FT_ANALYTICS)
|
||||
_analyticsService.loop();
|
||||
_analyticsService.loop();
|
||||
#endif
|
||||
_motionService.loop();
|
||||
vTaskDelay(20 / portTICK_PERIOD_MS);
|
||||
}
|
||||
_motionService.loop();
|
||||
vTaskDelay(20 / portTICK_PERIOD_MS);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user