Fixed memory utilization issue. Utilized F() macro for moving strings from RAM to PROGMEM.
parent
ef935c1fac
commit
449bb07b58
|
|
@ -4,7 +4,7 @@
|
|||
It's neccesary install support for ESP32 board to the arduino IDE. In the board manager we need add next link
|
||||
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
|
||||
Then we can install "ESP32 by Espressif Systems" board in the board manager.
|
||||
ESP32 lib version: 2.0.15 (ESP-IDF v4.4.7) by Espressif Systems
|
||||
ESP32 lib version: 2.0.16 (ESP-IDF v4.4.7) by Espressif Systems
|
||||
|
||||
This project uses other libraries. It is necessary to install them in the arduino IDE.
|
||||
- Library - License - Version - Link
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
- AsyncTCP - LGPL 3.0 - 1.1.4 - https://github.com/dvarrel/ESPAsyncTCP
|
||||
- ArduinoJson - MIT - 7.0.4 - https://github.com/bblanchon/ArduinoJson
|
||||
- ArduinoUniqueID - MIT - 1.3.0 - https://github.com/ricaun/ArduinoUniqueID
|
||||
- ESP32 - LGPL 2.1 - 2.0.15 - https://github.com/espressif/arduino-esp32
|
||||
- ESP32 - LGPL 2.1 - 2.0.16 - https://github.com/espressif/arduino-esp32
|
||||
|
||||
Board configuration in the arduino IDE 2.3.2
|
||||
Tools -> Board -> ESP32 Arduino -> AI Thinker ESP32
|
||||
|
|
@ -64,12 +64,12 @@
|
|||
void setup() {
|
||||
/* Serial port for debugging purposes */
|
||||
Serial.begin(SERIAL_PORT_SPEED);
|
||||
Serial.println("----------------------------------------------------------------");
|
||||
Serial.println("Start MCU!");
|
||||
Serial.println("Prusa ESP32-cam https://prusa3d.cz");
|
||||
Serial.print("SW Version: ");
|
||||
Serial.println(F("----------------------------------------------------------------"));
|
||||
Serial.println(F("Start MCU!"));
|
||||
Serial.println(F("Prusa ESP32-cam https://prusa3d.cz"));
|
||||
Serial.print(F("SW Version: "));
|
||||
Serial.println(SW_VERSION);
|
||||
Serial.print("Build: ");
|
||||
Serial.print(F("Build: "));
|
||||
Serial.println(SW_BUILD);
|
||||
#if (CONSOLE_VERBOSE_DEBUG == true)
|
||||
Serial.setDebugOutput(true);
|
||||
|
|
@ -111,18 +111,18 @@ void setup() {
|
|||
Connect.Init();
|
||||
|
||||
/* init tasks */
|
||||
SystemLog.AddEvent(LogLevel_Info, "Start tasks");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("Start tasks"));
|
||||
xTaskCreatePinnedToCore(System_TaskMain, "SystemNtpOtaUpdate", 8000, NULL, 1, &Task_SystemMain, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskCaptureAndSendPhoto, "CaptureAndSendPhoto", 10000, NULL, 2, &Task_CapturePhotoAndSend, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskWifiManagement, "WiFiManagement", 6000, NULL, 3, &Task_WiFiManagement, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskSdCardCheck, "CheckMicroSdCard", 5000, NULL, 4, &Task_SdCardCheck, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskSerialCfg, "CheckSerialConfiguration", 3000, NULL, 5, &Task_SerialCfg, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskStreamTelemetry, "PrintStreamTelemetry", 3000, NULL, 6, &Task_StreamTelemetry, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskSysLed, "SystemLed", 3000, NULL, 7, &Task_SysLed, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskWiFiWatchdog, "WiFiWatchdog", 3000, NULL, 8, &Task_WiFiWatchdog, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskCaptureAndSendPhoto, "CaptureAndSendPhoto", 6000, NULL, 2, &Task_CapturePhotoAndSend, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskWifiManagement, "WiFiManagement", 2500, NULL, 3, &Task_WiFiManagement, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskSdCardCheck, "CheckMicroSdCard", 2200, NULL, 4, &Task_SdCardCheck, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskSerialCfg, "CheckSerialConfiguration", 2500, NULL, 5, &Task_SerialCfg, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskStreamTelemetry, "PrintStreamTelemetry", 2500, NULL, 6, &Task_StreamTelemetry, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskSysLed, "SystemLed", 2000, NULL, 7, &Task_SysLed, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskWiFiWatchdog, "WiFiWatchdog", 2200, NULL, 8, &Task_WiFiWatchdog, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
|
||||
/* init wdg */
|
||||
SystemLog.AddEvent(LogLevel_Info, "Init WDG");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("Init WDG"));
|
||||
esp_task_wdt_init(WDG_TIMEOUT, true); /* enable panic so ESP32 restarts */
|
||||
esp_task_wdt_add(NULL); /* add current thread to WDT watch */
|
||||
esp_task_wdt_add(Task_CapturePhotoAndSend);
|
||||
|
|
@ -135,7 +135,7 @@ void setup() {
|
|||
esp_task_wdt_add(Task_WiFiWatchdog);
|
||||
esp_task_wdt_reset(); /* reset wdg */
|
||||
|
||||
SystemLog.AddEvent(LogLevel_Info, "MCU configuration done");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("MCU configuration done"));
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
|
|
|||
|
|
@ -33,9 +33,9 @@ Camera::Camera(Configuration* i_conf, Logs* i_log, uint8_t i_FlashPin) {
|
|||
@return none
|
||||
*/
|
||||
void Camera::Init() {
|
||||
log->AddEvent(LogLevel_Info, "Init camera lib");
|
||||
log->AddEvent(LogLevel_Info, F("Init camera lib"));
|
||||
|
||||
log->AddEvent(LogLevel_Info, "Init GPIO");
|
||||
log->AddEvent(LogLevel_Info, F("Init GPIO"));
|
||||
ledcSetup(FLASH_PWM_CHANNEL, FLASH_PWM_FREQ, FLASH_PWM_RESOLUTION);
|
||||
ledcAttachPin(FLASH_GPIO_NUM, FLASH_PWM_CHANNEL);
|
||||
ledcWrite(FLASH_PWM_CHANNEL, FLASH_OFF_STATUS);
|
||||
|
|
@ -50,7 +50,7 @@ void Camera::Init() {
|
|||
@return none
|
||||
*/
|
||||
void Camera::InitCameraModule() {
|
||||
log->AddEvent(LogLevel_Info, "Init camera module");
|
||||
log->AddEvent(LogLevel_Info, F("Init camera module"));
|
||||
/* Turn-off the 'brownout detector' */
|
||||
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);
|
||||
esp_err_t err;
|
||||
|
|
@ -92,18 +92,18 @@ void Camera::InitCameraModule() {
|
|||
CameraConfig.grab_mode = CAMERA_GRAB_LATEST; /* CAMERA_GRAB_WHEN_EMPTY or CAMERA_GRAB_LATEST */
|
||||
|
||||
if (CameraConfig.fb_location == CAMERA_FB_IN_DRAM) {
|
||||
log->AddEvent(LogLevel_Verbose, "Camera frame buffer location: DRAM");
|
||||
log->AddEvent(LogLevel_Verbose, F("Camera frame buffer location: DRAM"));
|
||||
} else if (CameraConfig.fb_location == CAMERA_FB_IN_PSRAM) {
|
||||
log->AddEvent(LogLevel_Verbose, "Camera frame buffer location: PSRAM");
|
||||
log->AddEvent(LogLevel_Verbose, F("Camera frame buffer location: PSRAM"));
|
||||
} else {
|
||||
log->AddEvent(LogLevel_Verbose, "Camera frame buffer location: Unknown");
|
||||
log->AddEvent(LogLevel_Verbose, F("Camera frame buffer location: Unknown"));
|
||||
}
|
||||
|
||||
/* Camera init */
|
||||
err = esp_camera_init(&CameraConfig);
|
||||
if (err != ESP_OK) {
|
||||
log->AddEvent(LogLevel_Warning, "Camera init failed. Error: " + String(err, HEX));
|
||||
log->AddEvent(LogLevel_Warning, "Reset ESP32-cam!");
|
||||
log->AddEvent(LogLevel_Warning, F("Reset ESP32-cam!"));
|
||||
ESP.restart();
|
||||
}
|
||||
}
|
||||
|
|
@ -114,7 +114,7 @@ void Camera::InitCameraModule() {
|
|||
@return none
|
||||
*/
|
||||
void Camera::LoadCameraCfgFromEeprom() {
|
||||
log->AddEvent(LogLevel_Info, "Load camera CFG from EEPROM");
|
||||
log->AddEvent(LogLevel_Info, F("Load camera CFG from EEPROM"));
|
||||
PhotoQuality = config->LoadPhotoQuality();
|
||||
FrameSize = config->LoadFrameSize();
|
||||
TFrameSize = TransformFrameSizeDataType(config->LoadFrameSize());
|
||||
|
|
@ -212,7 +212,7 @@ bool Camera::GetFlashStatus() {
|
|||
@return none
|
||||
*/
|
||||
void Camera::ApplyCameraCfg() {
|
||||
log->AddEvent(LogLevel_Info, "Set camera CFG");
|
||||
log->AddEvent(LogLevel_Info, F("Set camera CFG"));
|
||||
|
||||
/* sensor configuration */
|
||||
sensor_t* sensor = esp_camera_sensor_get();
|
||||
|
|
@ -274,12 +274,12 @@ void Camera::CapturePhoto() {
|
|||
esp_camera_fb_return(FrameBuffer);
|
||||
|
||||
do {
|
||||
log->AddEvent(LogLevel_Info, "Taking photo...");
|
||||
log->AddEvent(LogLevel_Info, F("Taking photo..."));
|
||||
|
||||
/* capture final photo */
|
||||
FrameBuffer = esp_camera_fb_get();
|
||||
if (!FrameBuffer) {
|
||||
log->AddEvent(LogLevel_Error, "Camera capture failed! photo");
|
||||
log->AddEvent(LogLevel_Error, F("Camera capture failed! photo"));
|
||||
return;
|
||||
|
||||
} else {
|
||||
|
|
@ -325,7 +325,7 @@ void Camera::CaptureStream(camera_fb_t* i_buf) {
|
|||
/* capture final photo */
|
||||
FrameBuffer = esp_camera_fb_get();
|
||||
if (!FrameBuffer) {
|
||||
log->AddEvent(LogLevel_Error, "Camera capture failed! stream");
|
||||
log->AddEvent(LogLevel_Error, F("Camera capture failed! stream"));
|
||||
i_buf = NULL;
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ void Configuration::Init() {
|
|||
|
||||
/* check, when it is first MCU start. If yes, then set default CFG */
|
||||
if (CheckFirstMcuStart() == true) {
|
||||
Log->AddEvent(LogLevel_Warning, "First MCU start! Set factory cfg");
|
||||
Log->AddEvent(LogLevel_Warning, F("First MCU start! Set factory cfg"));
|
||||
DefaultCfg();
|
||||
SaveFirstMcuStartFlag(CFG_FIRST_MCU_START_NAK);
|
||||
Log->SetLogLevel(LoadLogLevel());
|
||||
|
|
@ -50,7 +50,7 @@ void Configuration::Init() {
|
|||
@return none
|
||||
*/
|
||||
void Configuration::ReadCfg() {
|
||||
Log->AddEvent(LogLevel_Info, "Load CFG from EEPROM");
|
||||
Log->AddEvent(LogLevel_Info, F("Load CFG from EEPROM"));
|
||||
LoadRefreshInterval();
|
||||
LoadToken();
|
||||
LoadFingerprint();
|
||||
|
|
@ -84,7 +84,7 @@ void Configuration::ReadCfg() {
|
|||
LoadAgcGain();
|
||||
LoadPrusaConnectHostname();
|
||||
Log->AddEvent(LogLevel_Info, "Active WiFi client cfg: " + String(CheckActifeWifiCfgFlag() ? "true" : "false"));
|
||||
Log->AddEvent(LogLevel_Info, "Load CFG from EEPROM done");
|
||||
Log->AddEvent(LogLevel_Info, F("Load CFG from EEPROM done"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -93,7 +93,7 @@ void Configuration::ReadCfg() {
|
|||
@return bool - status
|
||||
*/
|
||||
bool Configuration::CheckFirstMcuStart() {
|
||||
Log->AddEvent(LogLevel_Info, "Read FirstMcuStart: ");
|
||||
Log->AddEvent(LogLevel_Info, F("Read FirstMcuStart: "));
|
||||
uint8_t flag = EEPROM.read(EEPROM_ADDR_FIRST_MCU_START_FLAG_START);
|
||||
|
||||
if (CFG_FIRST_MCU_START_NAK == flag) {
|
||||
|
|
@ -123,8 +123,8 @@ void Configuration::SaveFirstMcuStartFlag(uint8_t i_data) {
|
|||
@return none
|
||||
*/
|
||||
void Configuration::DefaultCfg() {
|
||||
Log->AddEvent(LogLevel_Warning, "+++++++++++++++++++++++++++");
|
||||
Log->AddEvent(LogLevel_Warning, "Start set factory cfg!");
|
||||
Log->AddEvent(LogLevel_Warning, F("+++++++++++++++++++++++++++"));
|
||||
Log->AddEvent(LogLevel_Warning, F("Start set factory cfg!"));
|
||||
|
||||
SaveRefreshInterval(FACTORY_CFG_PHOTO_REFRESH_INTERVAL);
|
||||
SaveToken("");
|
||||
|
|
@ -160,7 +160,7 @@ void Configuration::DefaultCfg() {
|
|||
SaveAgcGain(FACTORY_CFG_AGC_GAIN);
|
||||
SaveLogLevel(LogLevel_Info);
|
||||
SavePrusaConnectHostname(FACTORY_CFG_HOSTNAME);
|
||||
Log->AddEvent(LogLevel_Warning, "+++++++++++++++++++++++++++");
|
||||
Log->AddEvent(LogLevel_Warning, F("+++++++++++++++++++++++++++"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -187,7 +187,7 @@ bool Configuration::CheckActifeWifiCfgFlag() {
|
|||
@return none
|
||||
*/
|
||||
void Configuration::CheckResetCfg() {
|
||||
Log->AddEvent(LogLevel_Verbose, "Check reset MCU cfg");
|
||||
Log->AddEvent(LogLevel_Verbose, F("Check reset MCU cfg"));
|
||||
bool ResetPinStatus = digitalRead(CFG_RESET_PIN);
|
||||
|
||||
/* wait 10s to pressed reset pin */
|
||||
|
|
@ -204,7 +204,7 @@ void Configuration::CheckResetCfg() {
|
|||
|
||||
/* check if is reset pin grounded more at 10s */
|
||||
if (i == (CFG_RESET_TIME_WAIT / CFG_RESET_LOOP_DELAY)) {
|
||||
Log->AddEvent(LogLevel_Warning, "Reset MCU to factory CFG!");
|
||||
Log->AddEvent(LogLevel_Warning, F("Reset MCU to factory CFG!"));
|
||||
|
||||
/* wait for ungrounded reset pin, and binking led */
|
||||
while (digitalRead(CFG_RESET_PIN) == LOW) {
|
||||
|
|
@ -220,7 +220,7 @@ void Configuration::CheckResetCfg() {
|
|||
ESP.restart();
|
||||
|
||||
} else {
|
||||
Log->AddEvent(LogLevel_Verbose, "Reset MCU cfg false");
|
||||
Log->AddEvent(LogLevel_Verbose, F("Reset MCU cfg false"));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -306,9 +306,9 @@ void Configuration::SaveString(uint16_t address, uint16_t max_length, String dat
|
|||
EEPROM.write(i, data.charAt(j));
|
||||
}
|
||||
EEPROM.commit();
|
||||
Log->AddEvent(LogLevel_Verbose, "Write string done");
|
||||
Log->AddEvent(LogLevel_Verbose, F("Write string done"));
|
||||
} else {
|
||||
Log->AddEvent(LogLevel_Verbose, "Skip write string");
|
||||
Log->AddEvent(LogLevel_Verbose, F("Skip write string"));
|
||||
}
|
||||
}
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ PrusaConnect::PrusaConnect(Configuration *i_conf, Logs *i_log, Camera *i_camera)
|
|||
* @return none
|
||||
*/
|
||||
void PrusaConnect::Init() {
|
||||
log->AddEvent(LogLevel_Info, "Init PrusaConnect lib");
|
||||
log->AddEvent(LogLevel_Info, F("Init PrusaConnect lib"));
|
||||
TakePicture();
|
||||
}
|
||||
|
||||
|
|
@ -46,7 +46,7 @@ void PrusaConnect::Init() {
|
|||
* @return none
|
||||
*/
|
||||
void PrusaConnect::LoadCfgFromEeprom() {
|
||||
log->AddEvent(LogLevel_Info, "Load PrusaConnect CFG from EEPROM");
|
||||
log->AddEvent(LogLevel_Info, F("Load PrusaConnect CFG from EEPROM"));
|
||||
Token = config->LoadToken();
|
||||
Fingerprint = config->LoadFingerprint();
|
||||
RefreshInterval = config->LoadRefreshInterval();
|
||||
|
|
@ -76,7 +76,6 @@ void PrusaConnect::TakePicture() {
|
|||
*/
|
||||
bool PrusaConnect::SendDataToBackend(String *i_data, int i_data_length, String i_content_type, String i_type, String i_url_path, SendDataToBackendType i_data_type) {
|
||||
WiFiClientSecure client;
|
||||
Server_pause();
|
||||
BackendReceivedStatus = "";
|
||||
bool ret = false;
|
||||
log->AddEvent(LogLevel_Info, "Sending " + i_type + " to PrusaConnect");
|
||||
|
|
@ -85,7 +84,7 @@ bool PrusaConnect::SendDataToBackend(String *i_data, int i_data_length, String i
|
|||
if ((Fingerprint.length() > 0) && (Token.length() > 0)) {
|
||||
client.setCACert(root_CAs);
|
||||
client.setTimeout(1000);
|
||||
log->AddEvent(LogLevel_Verbose, "Connecting to server...");
|
||||
log->AddEvent(LogLevel_Verbose, F("Connecting to server..."));
|
||||
|
||||
/* connecting to server */
|
||||
if (!client.connect(PrusaConnectHostname.c_str(), 443)) {
|
||||
|
|
@ -102,7 +101,7 @@ bool PrusaConnect::SendDataToBackend(String *i_data, int i_data_length, String i
|
|||
|
||||
} else {
|
||||
/* send data to server */
|
||||
log->AddEvent(LogLevel_Verbose, "Connected to server!");
|
||||
log->AddEvent(LogLevel_Verbose, F("Connected to server!"));
|
||||
client.println("PUT https://" + PrusaConnectHostname + i_url_path + " HTTP/1.0");
|
||||
client.println("Host: " + PrusaConnectHostname);
|
||||
client.println("User-Agent: ESP32-CAM");
|
||||
|
|
@ -111,14 +110,14 @@ bool PrusaConnect::SendDataToBackend(String *i_data, int i_data_length, String i
|
|||
client.println("Content-Type: " + i_content_type);
|
||||
client.println("fingerprint: " + Fingerprint);
|
||||
client.println("token: " + Token);
|
||||
client.print("Content-Length: ");
|
||||
client.println(i_data_length);
|
||||
client.println("Content-Length: " + String(i_data_length));
|
||||
client.println();
|
||||
|
||||
esp_task_wdt_reset();
|
||||
/* sending photo */
|
||||
if (SendPhoto == i_data_type) {
|
||||
log->AddEvent(LogLevel_Verbose, "Send data photo");
|
||||
int index;
|
||||
log->AddEvent(LogLevel_Verbose, F("Send data photo"));
|
||||
int index = 0;
|
||||
/* send data in fragments */
|
||||
for (index = 0; index < i_data_length; index = index + PHOTO_FRAGMENT_SIZE) {
|
||||
camera->CopyPhoto(i_data, index, index + PHOTO_FRAGMENT_SIZE);
|
||||
|
|
@ -128,14 +127,15 @@ bool PrusaConnect::SendDataToBackend(String *i_data, int i_data_length, String i
|
|||
|
||||
/* send rest of data */
|
||||
index -= PHOTO_FRAGMENT_SIZE;
|
||||
if((i_data_length > index) && ((i_data_length - index) > 0)) {
|
||||
if ((i_data_length > index) && ((i_data_length - index) > 0)) {
|
||||
camera->CopyPhoto(i_data, index, i_data_length);
|
||||
client.print(*i_data);
|
||||
log->AddEvent(LogLevel_Verbose, String(i_data_length) + "/" + String(i_data_length));
|
||||
}
|
||||
|
||||
/* sending device information */
|
||||
} else if (SendInfo == i_data_type) {
|
||||
log->AddEvent(LogLevel_Verbose, "Send data info");
|
||||
log->AddEvent(LogLevel_Verbose, F("Send data info"));
|
||||
client.print(*i_data);
|
||||
}
|
||||
|
||||
|
|
@ -170,19 +170,18 @@ bool PrusaConnect::SendDataToBackend(String *i_data, int i_data_length, String i
|
|||
}
|
||||
} else {
|
||||
/* err message */
|
||||
log->AddEvent(LogLevel_Verbose, "ERROR SEND DATA TO SERVER! INVALID DATA!");
|
||||
log->AddEvent(LogLevel_Verbose, F("ERROR SEND DATA TO SERVER! INVALID DATA!"));
|
||||
log->AddEvent(LogLevel_Verbose, "Fingerprint: " + Fingerprint);
|
||||
log->AddEvent(LogLevel_Verbose, "Token: " + Token);
|
||||
|
||||
if (Fingerprint.length() == 0) {
|
||||
BackendReceivedStatus = "Missing fingerprint";
|
||||
BackendReceivedStatus = F("Missing fingerprint");
|
||||
} else if (Token.length() == 0) {
|
||||
BackendReceivedStatus = "Missing token";
|
||||
BackendReceivedStatus = F("Missing token");
|
||||
}
|
||||
}
|
||||
|
||||
log->AddEvent(LogLevel_Info, "Upload done. Response code: " + BackendReceivedStatus + " ,BA:" + CovertBackendAvailabilitStatusToString(BackendAvailability));
|
||||
Server_resume();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -193,7 +192,8 @@ bool PrusaConnect::SendDataToBackend(String *i_data, int i_data_length, String i
|
|||
* @return none
|
||||
*/
|
||||
void PrusaConnect::SendPhotoToBackend() {
|
||||
log->AddEvent(LogLevel_Info, "Start sending photo to prusaconnect");
|
||||
log->AddEvent(LogLevel_Info, F("Start sending photo to prusaconnect"));
|
||||
String Photo = "";
|
||||
SendDataToBackend(&Photo, camera->GetPhotoSize(), "image/jpg", "Photo", HOST_URL_CAM_PATH, SendPhoto);
|
||||
SystemLog.AddEvent(LogLevel_Info, "Free RAM: " + String(ESP.getFreeHeap()) + " bytes");
|
||||
}
|
||||
|
|
@ -207,7 +207,7 @@ void PrusaConnect::SendInfoToBackend() {
|
|||
return;
|
||||
|
||||
} else {
|
||||
log->AddEvent(LogLevel_Info, "Start sending device information to prusaconnect");
|
||||
log->AddEvent(LogLevel_Info, F("Start sending device information to prusaconnect"));
|
||||
|
||||
JsonDocument json_data;
|
||||
String json_string = "";
|
||||
|
|
@ -253,40 +253,40 @@ void PrusaConnect::TakePictureAndSendToBackend() {
|
|||
String PrusaConnect::ProcessHttpResponseCode(int code) {
|
||||
String ret = "";
|
||||
switch (code) {
|
||||
case 200:
|
||||
ret = "200 - OK";
|
||||
break;
|
||||
case 201:
|
||||
ret = "201 - OK entry created";
|
||||
break;
|
||||
case 204:
|
||||
ret = "204 - Upload OK";
|
||||
break;
|
||||
case 304:
|
||||
ret = "304 - Response has not been modified";
|
||||
break;
|
||||
case 400:
|
||||
ret = "400 - Some data received is not valid";
|
||||
break;
|
||||
case 401:
|
||||
ret = "401 - Missing security toker or it is not valid";
|
||||
break;
|
||||
case 403:
|
||||
ret = "403 - Security toke is not valid or is outdated";
|
||||
break;
|
||||
case 404:
|
||||
ret = "404 - Entity not found or invalid auth token";
|
||||
break;
|
||||
case 409:
|
||||
ret = "409 - Conflict with the state of target resource (user error)";
|
||||
break;
|
||||
case 503:
|
||||
ret += "503 - Service is unavailable at this moment. Try again later";
|
||||
break;
|
||||
default:
|
||||
ret = String(code);
|
||||
ret += " - unknown error code";
|
||||
break;
|
||||
case 200:
|
||||
ret = F("200 - OK");
|
||||
break;
|
||||
case 201:
|
||||
ret = F("201 - OK entry created");
|
||||
break;
|
||||
case 204:
|
||||
ret = F("204 - Upload OK");
|
||||
break;
|
||||
case 304:
|
||||
ret = F("304 - Response has not been modified");
|
||||
break;
|
||||
case 400:
|
||||
ret = F("400 - Some data received is not valid");
|
||||
break;
|
||||
case 401:
|
||||
ret = F("401 - Missing security toker or it is not valid");
|
||||
break;
|
||||
case 403:
|
||||
ret = F("403 - Security toke is not valid or is outdated");
|
||||
break;
|
||||
case 404:
|
||||
ret = F("404 - Entity not found or invalid auth token");
|
||||
break;
|
||||
case 409:
|
||||
ret = F("409 - Conflict with the state of target resource (user error)");
|
||||
break;
|
||||
case 503:
|
||||
ret += F("503 - Service is unavailable at this moment. Try again later");
|
||||
break;
|
||||
default:
|
||||
ret = String(code);
|
||||
ret += F(" - unknown error code");
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
|
@ -301,39 +301,39 @@ String PrusaConnect::ProcessHttpResponseCode(int code) {
|
|||
bool PrusaConnect::ProcessHttpResponseCodeBool(int code) {
|
||||
bool ret = false;
|
||||
switch (code) {
|
||||
case 200:
|
||||
ret = true;
|
||||
break;
|
||||
case 201:
|
||||
ret = true;
|
||||
break;
|
||||
case 204:
|
||||
ret = true;
|
||||
break;
|
||||
case 304:
|
||||
ret = false;
|
||||
break;
|
||||
case 400:
|
||||
ret = false;
|
||||
break;
|
||||
case 401:
|
||||
ret = false;
|
||||
break;
|
||||
case 403:
|
||||
ret = false;
|
||||
break;
|
||||
case 404:
|
||||
ret = false;
|
||||
break;
|
||||
case 409:
|
||||
ret = false;
|
||||
break;
|
||||
case 503:
|
||||
ret = false;
|
||||
break;
|
||||
default:
|
||||
ret = false;
|
||||
break;
|
||||
case 200:
|
||||
ret = true;
|
||||
break;
|
||||
case 201:
|
||||
ret = true;
|
||||
break;
|
||||
case 204:
|
||||
ret = true;
|
||||
break;
|
||||
case 304:
|
||||
ret = false;
|
||||
break;
|
||||
case 400:
|
||||
ret = false;
|
||||
break;
|
||||
case 401:
|
||||
ret = false;
|
||||
break;
|
||||
case 403:
|
||||
ret = false;
|
||||
break;
|
||||
case 404:
|
||||
ret = false;
|
||||
break;
|
||||
case 409:
|
||||
ret = false;
|
||||
break;
|
||||
case 503:
|
||||
ret = false;
|
||||
break;
|
||||
default:
|
||||
ret = false;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
|
@ -458,18 +458,18 @@ BackendAvailabilitStatus PrusaConnect::GetBackendAvailabilitStatus() {
|
|||
String PrusaConnect::CovertBackendAvailabilitStatusToString(BackendAvailabilitStatus i_data) {
|
||||
String ret = "";
|
||||
switch (i_data) {
|
||||
case WaitForFirstConnection:
|
||||
ret = "Wait for first connection";
|
||||
break;
|
||||
case BackendAvailable:
|
||||
ret = "Backend available";
|
||||
break;
|
||||
case BackendUnavailable:
|
||||
ret = "Backend unavailable";
|
||||
break;
|
||||
default:
|
||||
ret = "Unknown";
|
||||
break;
|
||||
case WaitForFirstConnection:
|
||||
ret = F("Wait for first connection");
|
||||
break;
|
||||
case BackendAvailable:
|
||||
ret = F("Backend available");
|
||||
break;
|
||||
case BackendUnavailable:
|
||||
ret = F("Backend unavailable");
|
||||
break;
|
||||
default:
|
||||
ret = F("Unknown");
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
|
|
|||
|
|
@ -51,12 +51,11 @@ private:
|
|||
uint8_t RefreshInterval; ///< interval for sending photo to backend
|
||||
String BackendReceivedStatus; ///< status of backend response
|
||||
BackendAvailabilitStatus BackendAvailability; ///< status of backend availability
|
||||
bool SendDeviceInformationToBackend; ///< flag for sending device information to backend
|
||||
bool SendDeviceInformationToBackend; ///< flag for sending device information to backend
|
||||
uint8_t SendingIntervalCounter; ///< counter for sending interval, represents seconds
|
||||
|
||||
String Token; ///< token for backend communication
|
||||
String Fingerprint; ///< fingerprint for backend communication
|
||||
String Photo; ///< photo for sending to backend
|
||||
String PrusaConnectHostname; ///< hostname of prusa connect backend
|
||||
|
||||
Configuration *config; ///< pointer to configuration object
|
||||
|
|
|
|||
|
|
@ -93,8 +93,8 @@ Logs::Logs(LogLevel_enum i_LogLevel, String i_FilePath, String i_FileName, uint1
|
|||
@return none
|
||||
*/
|
||||
void Logs::Init() {
|
||||
Serial.println("----------------------------------------------------------------");
|
||||
Serial.println("Init Logs library");
|
||||
Serial.println(F("----------------------------------------------------------------"));
|
||||
Serial.println(F("Init Logs library"));
|
||||
|
||||
/* init micro SD card */
|
||||
InitSdCard();
|
||||
|
|
@ -110,22 +110,22 @@ void Logs::Init() {
|
|||
}
|
||||
|
||||
/* added first message to log file after start MCU */
|
||||
String msg = "----------------------------------------------------------------\n";
|
||||
msg += "Start MCU!\nSW Version: ";
|
||||
String msg = F("----------------------------------------------------------------\n");
|
||||
msg += F("Start MCU!\nSW Version: ");
|
||||
msg += String(SW_VERSION);
|
||||
msg += " ,Build: ";
|
||||
msg += F(" ,Build: ");
|
||||
msg += String(SW_BUILD);
|
||||
msg += "\n";
|
||||
msg += "Verbose mode: ";
|
||||
msg += F("Verbose mode: ");
|
||||
msg += (true == CONSOLE_VERBOSE_DEBUG) ? "true" : "false";
|
||||
msg += "\n";
|
||||
msg += "Log level: ";
|
||||
msg += F("Log level: ");
|
||||
msg += String(LogLevel);
|
||||
msg += "\n";
|
||||
AppendFile(SD_MMC, FilePath + FileName, msg);
|
||||
|
||||
} else {
|
||||
Serial.println("Micro-SD card not found! Disable logs");
|
||||
Serial.println(F("Micro-SD card not found! Disable logs"));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
#define _MCU_CFG_H_
|
||||
|
||||
/* ---------------- BASIC MCU CFG --------------*/
|
||||
#define SW_VERSION "1.0.1" ///< SW version
|
||||
#define SW_VERSION "1.0.2-beta" ///< SW version
|
||||
#define SW_BUILD __DATE__ " " __TIME__ ///< build number
|
||||
#define CONSOLE_VERBOSE_DEBUG false ///< enable/disable verbose debug log level for console
|
||||
#define DEVICE_HOSTNAME "Prusa-ESP32cam" ///< device hostname
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
/* ------------ PRUSA BACKEND CFG --------------*/
|
||||
#define HOST_URL_CAM_PATH "/c/snapshot" ///< path for sending photo to prusa connect
|
||||
#define HOST_URL_INFO_PATH "/c/info" ///< path for sending info to prusa connect
|
||||
#define REFRESH_INTERVAL_MIN 5 ///< minimum refresh interval for sending photo to prusa connect [s]
|
||||
#define REFRESH_INTERVAL_MIN 10 ///< minimum refresh interval for sending photo to prusa connect [s]
|
||||
#define REFRESH_INTERVAL_MAX 240 ///< maximum refresh interval for sending photo to prusa connect [s]
|
||||
|
||||
/* --------------- FLASH LED CFG ---------------*/
|
||||
|
|
@ -90,6 +90,12 @@
|
|||
/* ----------------- WiFi CFG -------------------*/
|
||||
#define WIFI_STA_WDG_TIMEOUT 60000 ///< STA watchdog timeout [ms]
|
||||
|
||||
/* ----------------- NTP CFG --------------------*/
|
||||
#define NTP_SERVER_1 "pool.ntp.org" ///< NTP server
|
||||
#define NTP_SERVER_2 "time.nist.gov" ///< NTP server
|
||||
#define NTP_GTM_OFFSET_SEC 0 ///< GMT offset in seconds. 0 = UTC. 3600 = GMT+1
|
||||
#define NTP_DAYLIGHT_OFFSET_SEC 0 ///< daylight offset in seconds. 0 = no daylight saving time. 3600 = +1 hour
|
||||
|
||||
/* ---------------- FACTORY CFG ----------------*/
|
||||
#define FACTORY_CFG_PHOTO_REFRESH_INTERVAL 30 ///< in the second
|
||||
#define FACTORY_CFG_PHOTO_QUALITY 10 ///< 10-63, lower is better
|
||||
|
|
|
|||
|
|
@ -28,11 +28,11 @@ MicroSd::MicroSd() {
|
|||
@return none
|
||||
*/
|
||||
void MicroSd::ReinitCard() {
|
||||
Serial.println("Reinit micro SD card!");
|
||||
Serial.println("Deinit micro SD card");
|
||||
Serial.println(F("Reinit micro SD card!"));
|
||||
Serial.println(F("Deinit micro SD card"));
|
||||
SD_MMC.end();
|
||||
delay(50);
|
||||
Serial.println("Init micro SD card");
|
||||
Serial.println(F("Init micro SD card"));
|
||||
InitSdCard();
|
||||
}
|
||||
|
||||
|
|
@ -43,12 +43,12 @@ void MicroSd::ReinitCard() {
|
|||
*/
|
||||
void MicroSd::InitSdCard() {
|
||||
/* Start INIT Micro SD card */
|
||||
Serial.println("Start init micro-SD Card");
|
||||
Serial.println(F("Start init micro-SD Card"));
|
||||
|
||||
/* set SD card to 1-line/1-bit mode. GPIO 4 is used for LED and for microSD card. But communication is slower. */
|
||||
/* https://github.com/espressif/arduino-esp32/blob/master/libraries/SD_MMC/src/SD_MMC.h */
|
||||
if (!SD_MMC.begin("/sdcard", true)) {
|
||||
Serial.println("SD Card Mount Failed");
|
||||
Serial.println(F("SD Card Mount Failed"));
|
||||
CardDetected = false;
|
||||
CardSize = 0;
|
||||
//DetectAfterBoot = false;
|
||||
|
|
@ -58,7 +58,7 @@ void MicroSd::InitSdCard() {
|
|||
/* check microSD card and card type */
|
||||
uint8_t cardType = SD_MMC.cardType();
|
||||
if (cardType == CARD_NONE) {
|
||||
Serial.println("No SD_MMC card attached");
|
||||
Serial.println(F("No SD_MMC card attached"));
|
||||
CardDetected = false;
|
||||
CardSize = 0;
|
||||
//DetectAfterBoot = false;
|
||||
|
|
@ -66,15 +66,15 @@ void MicroSd::InitSdCard() {
|
|||
}
|
||||
|
||||
/* print card type */
|
||||
Serial.print("Found card. Card Type: ");
|
||||
Serial.print(F("Found card. Card Type: "));
|
||||
if (cardType == CARD_MMC) {
|
||||
Serial.print("MMC");
|
||||
Serial.print(F("MMC"));
|
||||
} else if (cardType == CARD_SD) {
|
||||
Serial.print("SDSC");
|
||||
Serial.print(F("SDSC"));
|
||||
} else if (cardType == CARD_SDHC) {
|
||||
Serial.print("SDHC");
|
||||
Serial.print(F("SDHC"));
|
||||
} else {
|
||||
Serial.print("UNKNOWN");
|
||||
Serial.print(F("UNKNOWN"));
|
||||
}
|
||||
|
||||
/* calculation card size */
|
||||
|
|
@ -97,26 +97,26 @@ void MicroSd::ListDir(fs::FS &fs, String DirName, uint8_t levels) {
|
|||
|
||||
File root = fs.open(DirName.c_str());
|
||||
if (!root) {
|
||||
Serial.println("Failed to open directory");
|
||||
Serial.println(F("Failed to open directory"));
|
||||
return;
|
||||
}
|
||||
if (!root.isDirectory()) {
|
||||
Serial.println("Not a directory");
|
||||
Serial.println(F("Not a directory"));
|
||||
return;
|
||||
}
|
||||
|
||||
File file = root.openNextFile();
|
||||
while (file) {
|
||||
if (file.isDirectory()) {
|
||||
Serial.print(" DIR : ");
|
||||
Serial.print(F(" DIR : "));
|
||||
Serial.println(file.name());
|
||||
if (levels) {
|
||||
ListDir(fs, file.path(), levels - 1);
|
||||
}
|
||||
} else {
|
||||
Serial.print(" FILE: ");
|
||||
Serial.print(F(" FILE: "));
|
||||
Serial.print(file.name());
|
||||
Serial.print(" SIZE: ");
|
||||
Serial.print(F(" SIZE: "));
|
||||
Serial.println(file.size());
|
||||
}
|
||||
file = root.openNextFile();
|
||||
|
|
@ -184,11 +184,11 @@ void MicroSd::ReadFileConsole(fs::FS &fs, String path) {
|
|||
|
||||
File file = fs.open(path.c_str());
|
||||
if (!file) {
|
||||
Serial.println("Failed to open file for reading");
|
||||
Serial.println(F("Failed to open file for reading"));
|
||||
return;
|
||||
}
|
||||
|
||||
Serial.print("Read from file: ");
|
||||
Serial.print(F("Read from file: "));
|
||||
while (file.available()) {
|
||||
Serial.write(file.read());
|
||||
}
|
||||
|
|
@ -355,11 +355,11 @@ uint16_t MicroSd::FileCount(fs::FS &fs, String DirName, String FileName) {
|
|||
|
||||
File root = fs.open(DirName.c_str());
|
||||
if (!root) {
|
||||
Serial.println("Failed to open directory");
|
||||
Serial.println(F("Failed to open directory"));
|
||||
return 0;
|
||||
}
|
||||
if (!root.isDirectory()) {
|
||||
Serial.println("Not a directory");
|
||||
Serial.println(F("Not a directory"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -90,27 +90,27 @@ String lastTwoChars = command.substring(command.length() - 2);
|
|||
connect->SetToken(auth_token);
|
||||
|
||||
} else if (command.startsWith("wificonnect") && command.endsWith(";")) {
|
||||
log->AddEvent(LogLevel_Info, "--> Console connecting to wifi...");
|
||||
log->AddEvent(LogLevel_Info, F("--> Console connecting to wifi..."));
|
||||
wifim->ConnectToSta();
|
||||
|
||||
} else if (command.startsWith("getwifimode") && command.endsWith(";")) {
|
||||
log->AddEvent(LogLevel_Info, "--> Console print WiFi mode...");
|
||||
log->AddEvent(LogLevel_Info, F("--> Console print WiFi mode..."));
|
||||
Serial.print("wifimode:" + wifim->GetWiFiMode() + ";");
|
||||
|
||||
} else if (command.startsWith("getwifistastatus") && command.endsWith(";")) {
|
||||
log->AddEvent(LogLevel_Info, "--> Console print STA status...");
|
||||
log->AddEvent(LogLevel_Info, F("--> Console print STA status..."));
|
||||
Serial.print("wifistastatus:" + wifim->GetStaStatus() + ";");
|
||||
|
||||
} else if (command.startsWith("getwifistaip") && command.endsWith(";")) {
|
||||
log->AddEvent(LogLevel_Info, "--> Console print STA IP...");
|
||||
log->AddEvent(LogLevel_Info, F("--> Console print STA IP..."));
|
||||
Serial.print("wifistaip:" + wifim->GetStaIp() + ";");
|
||||
|
||||
} else if (command.startsWith("getserviceapssid") && command.endsWith(";")) {
|
||||
log->AddEvent(LogLevel_Info, "--> Console print service WiFi AP SSID...");
|
||||
log->AddEvent(LogLevel_Info, F("--> Console print service WiFi AP SSID..."));
|
||||
Serial.print("getserviceapssid:" + wifim->GetServiceApSsid() + ";");
|
||||
|
||||
} else if (command.startsWith("mcureboot") && command.endsWith(";")) {
|
||||
log->AddEvent(LogLevel_Warning, "--> Reboot MCU!");
|
||||
log->AddEvent(LogLevel_Warning, F("--> Reboot MCU!"));
|
||||
ESP.restart();
|
||||
|
||||
} else if (command.startsWith("commandslist") && command.endsWith(";")) {
|
||||
|
|
@ -130,17 +130,17 @@ String lastTwoChars = command.substring(command.length() - 2);
|
|||
@return none
|
||||
*/
|
||||
void SerialCfg::PrintAvailableCommands() {
|
||||
Serial.println("Available commands: ");
|
||||
Serial.println("setwifissid:SSID; - set WiFi SSID");
|
||||
Serial.println("setwifipass:PASS; - set WiFi password");
|
||||
Serial.println("setauthtoken:TOKEN; - set auth TOKEN for backend");
|
||||
Serial.println("wificonnect; - connect to WiFi network");
|
||||
Serial.println("getwifimode; - get WiFi mode (AP/STA)");
|
||||
Serial.println("getwifistastatus; - get STA status (connected/disconnected)");
|
||||
Serial.println("getwifistaip; - get STA IP address");
|
||||
Serial.println("getserviceapssid;- get service WiFi AP SSID");
|
||||
Serial.println("mcureboot; - reboot MCU");
|
||||
Serial.println("commandslist; - print available commands");
|
||||
Serial.println(F("Available commands: "));
|
||||
Serial.println(F("setwifissid:SSID; - set WiFi SSID"));
|
||||
Serial.println(F("setwifipass:PASS; - set WiFi password"));
|
||||
Serial.println(F("setauthtoken:TOKEN; - set auth TOKEN for backend"));
|
||||
Serial.println(F("wificonnect; - connect to WiFi network"));
|
||||
Serial.println(F("getwifimode; - get WiFi mode (AP/STA)"));
|
||||
Serial.println(F("getwifistastatus; - get STA status (connected/disconnected)"));
|
||||
Serial.println(F("getwifistaip; - get STA IP address"));
|
||||
Serial.println(F("getserviceapssid;- get service WiFi AP SSID"));
|
||||
Serial.println(F("mcureboot; - reboot MCU"));
|
||||
Serial.println(F("commandslist; - print available commands"));
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
@ -32,11 +32,11 @@ void Server_LoadCfg() {
|
|||
@return none
|
||||
*/
|
||||
void Server_InitWebServer() {
|
||||
SystemLog.AddEvent(LogLevel_Info, "Starting init WEB server");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("Starting init WEB server"));
|
||||
|
||||
/* route for get last capture photo */
|
||||
server.on("/saved-photo.jpg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: get photo");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: get photo"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ void Server_InitWebServer() {
|
|||
|
||||
/* route to jquery */
|
||||
server.on("/jquery-3.7.0.min.js", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get jquery-3.7.0.min.js");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get jquery-3.7.0.min.js"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -75,7 +75,7 @@ void Server_InitWebServer() {
|
|||
void Server_InitWebServer_JsonData() {
|
||||
/* route for json with cfg parameters */
|
||||
server.on("/json_input", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: get json_input");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: get json_input"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
request->send_P(200, F("text/plain"), Server_GetJsonData().c_str());
|
||||
|
|
@ -83,7 +83,7 @@ void Server_InitWebServer_JsonData() {
|
|||
|
||||
/* route for json with wifi networks */
|
||||
server.on("/json_wifi", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: get json_wifi");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: get json_wifi"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
request->send_P(200, F("text/plain"), SystemWifiMngt.GetAvailableWifiNetworks().c_str());
|
||||
|
|
@ -91,7 +91,7 @@ void Server_InitWebServer_JsonData() {
|
|||
|
||||
/* route for san wi-fi networks */
|
||||
server.on("/wifi_scan", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: scan WI-FI networks");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: scan WI-FI networks"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
request->send_P(200, F("text/html"), MSG_SCANNING);
|
||||
|
|
@ -123,7 +123,7 @@ void Server_InitWebServer_JsonData() {
|
|||
void Server_InitWebServer_WebPages() {
|
||||
/* Route for root / web page */
|
||||
server.on("/", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get index.html");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get index.html"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -132,7 +132,7 @@ void Server_InitWebServer_WebPages() {
|
|||
|
||||
/* Route for styles */
|
||||
server.on("/styles.css", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get styles.css");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get styles.css"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -141,7 +141,7 @@ void Server_InitWebServer_WebPages() {
|
|||
|
||||
/* Route for java scripts */
|
||||
server.on("/scripts.js", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get scripts.js");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get scripts.js"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
request->send_P(200, "application/javascript", scripts_js);
|
||||
|
|
@ -150,7 +150,7 @@ void Server_InitWebServer_WebPages() {
|
|||
|
||||
/* Route for config web page */
|
||||
server.on("/page_config.html", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get page_config.html");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get page_config.html"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -159,7 +159,7 @@ void Server_InitWebServer_WebPages() {
|
|||
|
||||
/* Route for wifi web page */
|
||||
server.on("/page_wifi.html", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get page_wifi.html");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get page_wifi.html"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -168,7 +168,7 @@ void Server_InitWebServer_WebPages() {
|
|||
|
||||
/* Route for auth web page */
|
||||
server.on("/page_auth.html", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get page_auth.html");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get page_auth.html"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -177,7 +177,7 @@ void Server_InitWebServer_WebPages() {
|
|||
|
||||
/* Route for system web page */
|
||||
server.on("/page_system.html", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get page_system.html");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get page_system.html"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -186,7 +186,7 @@ void Server_InitWebServer_WebPages() {
|
|||
|
||||
/* route to license page */
|
||||
server.on("/license.html", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get license.html");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get license.html"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -195,7 +195,7 @@ void Server_InitWebServer_WebPages() {
|
|||
|
||||
/* route to gtac page */
|
||||
server.on("/gtac.html", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get gtac.html");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get gtac.html"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -204,7 +204,7 @@ void Server_InitWebServer_WebPages() {
|
|||
|
||||
/* route to privacy policy page */
|
||||
server.on("/privacypolicy.html", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get privacypolicy.html");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get privacypolicy.html"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -213,7 +213,7 @@ void Server_InitWebServer_WebPages() {
|
|||
|
||||
/* route to cookie page */
|
||||
server.on("/cookie.html", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get cookie.html");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get cookie.html"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -222,7 +222,7 @@ void Server_InitWebServer_WebPages() {
|
|||
|
||||
/* route to logs page */
|
||||
server.on("/get_logs", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get get_logs.html");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get get_logs.html"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -242,7 +242,7 @@ void Server_InitWebServer_WebPages() {
|
|||
void Server_InitWebServer_Icons() {
|
||||
/* route to logo */
|
||||
server.on("/esp32_cam.svg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get esp32_cam.svg");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get esp32_cam.svg"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -251,7 +251,7 @@ void Server_InitWebServer_Icons() {
|
|||
|
||||
/* route to github icon */
|
||||
server.on("/github-icon.svg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get github-icon.svg");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get github-icon.svg"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -260,7 +260,7 @@ void Server_InitWebServer_Icons() {
|
|||
|
||||
/* route to light on icon */
|
||||
server.on("/light-on-icon.svg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get light-icon.svg");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get light-icon.svg"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -269,7 +269,7 @@ void Server_InitWebServer_Icons() {
|
|||
|
||||
/* route to light off icon */
|
||||
server.on("/light-off-icon.svg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get light-icon.svg");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get light-icon.svg"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -278,7 +278,7 @@ void Server_InitWebServer_Icons() {
|
|||
|
||||
/* route to refresh icon */
|
||||
server.on("/refresh-icon.svg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get refresh-icon.svg");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get refresh-icon.svg"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -287,7 +287,7 @@ void Server_InitWebServer_Icons() {
|
|||
|
||||
/* route to reboot icon */
|
||||
server.on("/reboot-icon.svg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get reboot-icon.svg");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get reboot-icon.svg"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -296,7 +296,7 @@ void Server_InitWebServer_Icons() {
|
|||
|
||||
/* route to wifi icon */
|
||||
server.on("/wifi-icon-1.svg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get wifi-icon-1.svg");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get wifi-icon-1.svg"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -305,7 +305,7 @@ void Server_InitWebServer_Icons() {
|
|||
|
||||
/* route to wifi icon */
|
||||
server.on("/wifi-icon-2.svg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get wifi-icon-2.svg");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get wifi-icon-2.svg"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -314,7 +314,7 @@ void Server_InitWebServer_Icons() {
|
|||
|
||||
/* route to wifi icon */
|
||||
server.on("/wifi-icon-3.svg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get wifi-icon-3.svg");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get wifi-icon-3.svg"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -323,7 +323,7 @@ void Server_InitWebServer_Icons() {
|
|||
|
||||
/* route to wifi icon */
|
||||
server.on("/wifi-icon-4.svg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get wifi-icon-4.svg");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get wifi-icon-4.svg"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -332,7 +332,7 @@ void Server_InitWebServer_Icons() {
|
|||
|
||||
/* route to wifi icon */
|
||||
server.on("/wifi-icon-0.svg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get wifi-icon-0.svg");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get wifi-icon-0.svg"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -341,7 +341,7 @@ void Server_InitWebServer_Icons() {
|
|||
|
||||
/* route to eye icon */
|
||||
server.on("/eye.svg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get eye.svg");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get eye.svg"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -350,7 +350,7 @@ void Server_InitWebServer_Icons() {
|
|||
|
||||
/* route to eye-slash icon */
|
||||
server.on("/eye-slash.svg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get eye-slash.svg");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get eye-slash.svg"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -359,7 +359,7 @@ void Server_InitWebServer_Icons() {
|
|||
|
||||
/* route to favicon */
|
||||
server.on("/favicon.svg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: Get favicon.svg");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: Get favicon.svg"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -375,7 +375,7 @@ void Server_InitWebServer_Icons() {
|
|||
void Server_InitWebServer_Actions() {
|
||||
/*route for capture photo */
|
||||
server.on("/action_capture", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: /action_capture Take photo");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: /action_capture Take photo"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
SystemCamera.CapturePhoto();
|
||||
|
|
@ -384,7 +384,7 @@ void Server_InitWebServer_Actions() {
|
|||
|
||||
/* route for send photo to prusa backend */
|
||||
server.on("/action_send", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: /action_send send photo to cloud");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: /action_send send photo to cloud"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
Connect.SetSendingIntervalExpired();
|
||||
|
|
@ -393,7 +393,7 @@ void Server_InitWebServer_Actions() {
|
|||
|
||||
/* route for change LED status */
|
||||
server.on("/action_led", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: /action_led Change LED status");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: /action_led Change LED status"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -405,7 +405,7 @@ void Server_InitWebServer_Actions() {
|
|||
|
||||
/* reboot MCU */
|
||||
server.on("/action_reboot", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: /action_reboo reboot MCU!");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: /action_reboo reboot MCU!"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
request->send_P(200, F("text/html"), MSG_REBOOT_MCU);
|
||||
|
|
@ -422,7 +422,7 @@ void Server_InitWebServer_Actions() {
|
|||
void Server_InitWebServer_Sets() {
|
||||
/* route to set integer value */
|
||||
server.on("/set_int", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: /set_int");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: /set_int"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -431,24 +431,20 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* set refresh interval */
|
||||
if (request->hasParam("refresh")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set refresh interval");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set refresh interval"));
|
||||
uint8_t value = request->getParam("refresh")->value().toInt();
|
||||
if ((value >= REFRESH_INTERVAL_MIN) && (value <= REFRESH_INTERVAL_MAX)) {
|
||||
Connect.SetRefreshInterval(value);
|
||||
response_msg = MSG_SAVE_OK;
|
||||
} else {
|
||||
response_msg = "ERROR! Bad value. Minimum is ";
|
||||
response_msg += String(REFRESH_INTERVAL_MIN);
|
||||
response_msg += ", maximum ";
|
||||
response_msg += String(REFRESH_INTERVAL_MAX);
|
||||
response_msg += " second";
|
||||
response_msg = "ERROR! Bad value. Minimum is " + String(REFRESH_INTERVAL_MIN) + ", maximum " + String(REFRESH_INTERVAL_MAX) + " second";
|
||||
}
|
||||
response = true;
|
||||
}
|
||||
|
||||
/* set saturation */
|
||||
if (request->hasParam("saturation")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "set saturation");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set saturation"));
|
||||
SystemCamera.SetSaturation(request->getParam("saturation")->value().toInt());
|
||||
response_msg = MSG_SAVE_OK;
|
||||
response = true;
|
||||
|
|
@ -456,7 +452,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* set contrast */
|
||||
if (request->hasParam("contrast")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "set contrast");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set contrast"));
|
||||
SystemCamera.SetContrast(request->getParam("contrast")->value().toInt());
|
||||
response_msg = MSG_SAVE_OK;
|
||||
response = true;
|
||||
|
|
@ -464,7 +460,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* set brightness */
|
||||
if (request->hasParam("brightness")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set brightness");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set brightness"));
|
||||
SystemCamera.SetBrightness(request->getParam("brightness")->value().toInt());
|
||||
response_msg = MSG_SAVE_OK;
|
||||
response = true;
|
||||
|
|
@ -472,7 +468,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* set frame size */
|
||||
if (request->hasParam("framesize")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set framesize");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set framesize"));
|
||||
SystemCamera.SetFrameSize(request->getParam("framesize")->value().toInt());
|
||||
response_msg = MSG_SAVE_OK;
|
||||
response = true;
|
||||
|
|
@ -480,7 +476,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* set photo quality */
|
||||
if (request->hasParam("photo_quality")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set photo_quality");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set photo_quality"));
|
||||
SystemCamera.SetPhotoQuality(73 - request->getParam("photo_quality")->value().toInt());
|
||||
response_msg = MSG_SAVE_OK;
|
||||
response = true;
|
||||
|
|
@ -488,7 +484,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* set flash time */
|
||||
if (request->hasParam("flash_time")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set flash_time");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set flash_time"));
|
||||
SystemCamera.SetCameraFlashTime(request->getParam("flash_time")->value().toInt());
|
||||
response_msg = MSG_SAVE_OK;
|
||||
response = true;
|
||||
|
|
@ -496,7 +492,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* set white balancing mode */
|
||||
if (request->hasParam("wb_mode")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set wb_mode");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set wb_mode"));
|
||||
SystemCamera.SetAwbMode(request->getParam("wb_mode")->value().toInt());
|
||||
response_msg = MSG_SAVE_OK;
|
||||
response = true;
|
||||
|
|
@ -504,7 +500,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* set auto exposition level */
|
||||
if (request->hasParam("ae_level")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set ae_level");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set ae_level"));
|
||||
SystemCamera.SetAeLevel(request->getParam("ae_level")->value().toInt());
|
||||
response_msg = MSG_SAVE_OK;
|
||||
response = true;
|
||||
|
|
@ -512,7 +508,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* set auto exposition controll value */
|
||||
if (request->hasParam("aec_value")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set aec_value");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set aec_value"));
|
||||
SystemCamera.SetAecValue(request->getParam("aec_value")->value().toInt());
|
||||
response_msg = MSG_SAVE_OK;
|
||||
response = true;
|
||||
|
|
@ -520,7 +516,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* set auto gain correction value */
|
||||
if (request->hasParam("agc_gain")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set agc_gain");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set agc_gain"));
|
||||
SystemCamera.SetAgcGain(request->getParam("agc_gain")->value().toInt());
|
||||
response_msg = MSG_SAVE_OK;
|
||||
response = true;
|
||||
|
|
@ -528,7 +524,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* set log level /set_int?log_level=2 */
|
||||
if (request->hasParam("log_level")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set log_level");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set log_level"));
|
||||
LogLevel_enum level = (LogLevel_enum)request->getParam("log_level")->value().toInt();
|
||||
if ((level >= LogLevel_Error) && (level <= LogLevel_Verbose)) {
|
||||
SystemConfig.SaveLogLevel(level);
|
||||
|
|
@ -548,7 +544,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* route to set bool value */
|
||||
server.on("/set_bool", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: /set_bool");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: /set_bool"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -556,84 +552,84 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* check cfg for hmirror */
|
||||
if (request->hasParam("hmirror")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set hmirror");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set hmirror"));
|
||||
SystemCamera.SetHMirror(Server_TransfeStringToBool(request->getParam("hmirror")->value()));
|
||||
response = true;
|
||||
}
|
||||
|
||||
/* set vertical flip */
|
||||
if (request->hasParam("vflip")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set hmirror");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set hmirror"));
|
||||
SystemCamera.SetVFlip(Server_TransfeStringToBool(request->getParam("vflip")->value()));
|
||||
response = true;
|
||||
}
|
||||
|
||||
/* set lens correction */
|
||||
if (request->hasParam("lenc")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set lensc");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set lensc"));
|
||||
SystemCamera.SetLensC(Server_TransfeStringToBool(request->getParam("lenc")->value()));
|
||||
response = true;
|
||||
}
|
||||
|
||||
/* set exposure controll */
|
||||
if (request->hasParam("exposure_ctrl")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set exposure ctrl");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set exposure ctrl"));
|
||||
SystemCamera.SetExposureCtrl(Server_TransfeStringToBool(request->getParam("exposure_ctrl")->value()));
|
||||
response = true;
|
||||
}
|
||||
|
||||
/* set auto white balancing */
|
||||
if (request->hasParam("awb")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set awb");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set awb"));
|
||||
SystemCamera.SetAwb(Server_TransfeStringToBool(request->getParam("awb")->value()));
|
||||
response = true;
|
||||
}
|
||||
|
||||
/* set auto white balancing gain */
|
||||
if (request->hasParam("awb_gain")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set awb_gain");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set awb_gain"));
|
||||
SystemCamera.SetAwbGain(Server_TransfeStringToBool(request->getParam("awb_gain")->value()));
|
||||
response = true;
|
||||
}
|
||||
|
||||
/* set bad pixel correction */
|
||||
if (request->hasParam("bpc")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set bpc");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set bpc"));
|
||||
SystemCamera.SetBpc(Server_TransfeStringToBool(request->getParam("bpc")->value()));
|
||||
response = true;
|
||||
}
|
||||
|
||||
/* set white pixel correction */
|
||||
if (request->hasParam("wpc")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set wpc");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set wpc"));
|
||||
SystemCamera.SetWpc(Server_TransfeStringToBool(request->getParam("wpc")->value()));
|
||||
response = true;
|
||||
}
|
||||
|
||||
/* set raw gama correction */
|
||||
if (request->hasParam("raw_gama")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set raw_gama");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set raw_gama"));
|
||||
SystemCamera.SetRawGama(Server_TransfeStringToBool(request->getParam("raw_gama")->value()));
|
||||
response = true;
|
||||
}
|
||||
|
||||
/* set automatic exposure correction */
|
||||
if (request->hasParam("aec2")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set aec2");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set aec2"));
|
||||
SystemCamera.SetAec2(Server_TransfeStringToBool(request->getParam("aec2")->value()));
|
||||
response = true;
|
||||
}
|
||||
|
||||
/* set gain controll */
|
||||
if (request->hasParam("gain_ctrl")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set gain_ctrl");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set gain_ctrl"));
|
||||
SystemCamera.SetGainCtrl(Server_TransfeStringToBool(request->getParam("gain_ctrl")->value()));
|
||||
response = true;
|
||||
}
|
||||
|
||||
/* set flash */
|
||||
if (request->hasParam("flash")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Set flash");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set flash"));
|
||||
SystemCamera.SetCameraFlashEnable(Server_TransfeStringToBool(request->getParam("flash")->value()));
|
||||
SystemCamera.SetFlashStatus(false);
|
||||
response = true;
|
||||
|
|
@ -646,7 +642,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* route for set token for authentification to prusa backend*/
|
||||
server.on("/set_token", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: /set_token");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: /set_token"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
request->send_P(200, F("text/html"), MSG_SAVE_OK);
|
||||
|
|
@ -658,7 +654,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* route for set prusa connect hostname */
|
||||
server.on("/set_hostname", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: /set_hostname");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: /set_hostname"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
request->send_P(200, F("text/html"), MSG_SAVE_OK);
|
||||
|
|
@ -670,7 +666,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* route for set WI-FI credentials */
|
||||
server.on("/wifi_cfg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: set WI-FI credentials");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: set WI-FI credentials"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -702,7 +698,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* route for set basic auth */
|
||||
server.on("/basicauth_cfg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: set basic auth user name and password");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: set basic auth user name and password"));
|
||||
bool ret = false;
|
||||
String ret_msg = "";
|
||||
|
||||
|
|
@ -719,8 +715,7 @@ void Server_InitWebServer_Sets() {
|
|||
ret = true;
|
||||
} else {
|
||||
ret = false;
|
||||
ret_msg = "Maximum username length: ";
|
||||
ret_msg += String(EEPROM_ADDR_BASIC_AUTH_USERNAME_LENGTH);
|
||||
ret_msg = "Maximum username length: " + String(EEPROM_ADDR_BASIC_AUTH_USERNAME_LENGTH);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -734,8 +729,7 @@ void Server_InitWebServer_Sets() {
|
|||
ret = true;
|
||||
} else {
|
||||
ret = false;
|
||||
ret_msg = "Maximum password length: ";
|
||||
ret_msg += String(EEPROM_ADDR_BASIC_AUTH_PASSWORD_LENGTH);
|
||||
ret_msg = "Maximum password length: " + String(EEPROM_ADDR_BASIC_AUTH_PASSWORD_LENGTH);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -752,15 +746,14 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
} else {
|
||||
String msg = MSG_SAVE_NOTOK;
|
||||
msg += " ";
|
||||
msg += ret_msg;
|
||||
msg += " " + ret_msg;
|
||||
request->send_P(200, F("text/html"), msg.c_str());
|
||||
}
|
||||
});
|
||||
|
||||
/* route for set firmware size */
|
||||
server.on("/set_firmware_size", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Info, "WEB server: /set_firmware_size");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("WEB server: /set_firmware_size"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
request->send_P(200, F("text/html"), MSG_SAVE_OK);
|
||||
|
|
@ -774,7 +767,7 @@ void Server_InitWebServer_Sets() {
|
|||
|
||||
/* route for set firmware size */
|
||||
server.on("/set_mdns", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: /set_mdns");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: /set_mdns"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -843,7 +836,7 @@ void Server_InitWebServer_Update() {
|
|||
FirmwareUpdate.Processing = false;
|
||||
if (Update.end(true)) {
|
||||
FirmwareUpdate.UpdatingStatus = String(SYSTEM_MSG_UPDATE_DONE);
|
||||
SystemLog.AddEvent(LogLevel_Info, "Update FW from file done. Reboot MCU");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("Update FW from file done. Reboot MCU"));
|
||||
} else {
|
||||
Update.printError(Serial);
|
||||
SystemLog.AddEvent(LogLevel_Error, String(SYSTEM_MSG_UPDATE_FAIL));
|
||||
|
|
@ -854,7 +847,7 @@ void Server_InitWebServer_Update() {
|
|||
|
||||
/* route for start web OTA update from server */
|
||||
server.on("/web_ota_update", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Info, "WEB server: /web_ota_update");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("WEB server: /web_ota_update"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
request->send_P(200, F("text/html"), MSG_UPDATE_START);
|
||||
|
|
@ -873,7 +866,7 @@ void Server_InitWebServer_Update() {
|
|||
|
||||
/* get OTA FW version on the server */
|
||||
server.on("/check_web_ota_update", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: /check_web_ota_update");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: /check_web_ota_update"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
|
|
@ -898,7 +891,7 @@ void Server_InitWebServer_Stream() {
|
|||
*/
|
||||
void Server_pause() {
|
||||
server.end();
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: pause");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: pause"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -908,7 +901,7 @@ void Server_pause() {
|
|||
*/
|
||||
void Server_resume() {
|
||||
server.begin();
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WEB server: resume");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: resume"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -932,13 +925,9 @@ void Server_handleCacheRequest(AsyncWebServerRequest* request, const char* conte
|
|||
void Server_handleNotFound(AsyncWebServerRequest* request) {
|
||||
String message = "URL not Found\n\n";
|
||||
|
||||
message += "URI: ";
|
||||
message += request->url();
|
||||
message += "\nMethod: ";
|
||||
message += "URI: " + request->url() + "\nMethod: ";
|
||||
message += (request->method() == HTTP_GET) ? "GET" : "POST";
|
||||
message += "\nArguments: ";
|
||||
message += request->args();
|
||||
message += "\n";
|
||||
message += "\nArguments: " + String(request->args()) + "\n";
|
||||
|
||||
for (uint8_t i = 0; i < request->args(); i++) {
|
||||
message += " " + request->argName(i) + ": " + request->arg(i) + "\n";
|
||||
|
|
@ -1017,7 +1006,7 @@ String Server_GetJsonData() {
|
|||
*/
|
||||
bool Server_CheckBasicAuth(AsyncWebServerRequest* request) {
|
||||
if ((!request->authenticate(WebBasicAuth.UserName.c_str(), WebBasicAuth.Password.c_str())) && (true == WebBasicAuth.EnableAuth)) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Unauthorized! Sending longin request");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Unauthorized! Sending longin request"));
|
||||
request->requestAuthentication();
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -236,7 +236,7 @@ size_t AsyncJpegStreamResponse::_content(uint8_t *buffer, size_t maxLen, size_t
|
|||
|
||||
/* check space for headers */
|
||||
if (maxLen < (strlen(STREAM_BOUNDARY) + strlen(STREAM_PART) + strlen(JPG_CONTENT_TYPE) + 8)) {
|
||||
log->AddEvent(LogLevel_Error, "Stream Not space for headers");
|
||||
log->AddEvent(LogLevel_Error, F("Stream Not space for headers"));
|
||||
return RESPONSE_TRY_AGAIN;
|
||||
}
|
||||
|
||||
|
|
@ -246,7 +246,7 @@ size_t AsyncJpegStreamResponse::_content(uint8_t *buffer, size_t maxLen, size_t
|
|||
_frame.fb = &_dframe;
|
||||
|
||||
if (_frame.fb == NULL) {
|
||||
log->AddEvent(LogLevel_Error, "Stream capture frame failed");
|
||||
log->AddEvent(LogLevel_Error, F("Stream capture frame failed"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
@return none
|
||||
*/
|
||||
void System_Init() {
|
||||
SystemLog.AddEvent(LogLevel_Info, "Init system lib");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("Init system lib"));
|
||||
/* show last reset status */
|
||||
String reason_simple = System_printMcuResetReasonSimple();
|
||||
SystemLog.AddEvent(LogLevel_Warning, "CPU reset reason: " + reason_simple);
|
||||
|
|
@ -51,21 +51,21 @@ void System_LoadCfg() {
|
|||
*/
|
||||
void System_CheckIfPsramIsUsed() {
|
||||
if (psramFound()) {
|
||||
SystemLog.AddEvent(LogLevel_Info, "PSRAM is used.");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("PSRAM is used."));
|
||||
void *ptr = malloc(100);
|
||||
|
||||
if (ptr != NULL) {
|
||||
if (esp_ptr_external_ram(ptr)) {
|
||||
SystemLog.AddEvent(LogLevel_Info, "malloc/new is using SPIRAM");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("malloc/new is using SPIRAM"));
|
||||
} else {
|
||||
SystemLog.AddEvent(LogLevel_Info, "malloc/new is not using SPIRAM");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("malloc/new is not using SPIRAM"));
|
||||
}
|
||||
free(ptr);
|
||||
} else {
|
||||
SystemLog.AddEvent(LogLevel_Info, "Failed to allocate memory");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("Failed to allocate memory"));
|
||||
}
|
||||
} else {
|
||||
SystemLog.AddEvent(LogLevel_Info, "PSRAM is not used.");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("PSRAM is not used."));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -95,9 +95,7 @@ void System_UpdateInit() {
|
|||
void System_Main() {
|
||||
/* check new FW version */
|
||||
if (false == FirmwareUpdate.CheckNewVersionAfterBoot) {
|
||||
Server_pause();
|
||||
System_CheckNewVersion();
|
||||
Server_resume();
|
||||
}
|
||||
|
||||
/* task for download and flash FW from server */
|
||||
|
|
@ -114,7 +112,7 @@ void System_Main() {
|
|||
*/
|
||||
void System_CheckNewVersion() {
|
||||
if (WL_CONNECTED == WiFi.status()) {
|
||||
SystemLog.AddEvent(LogLevel_Info, "Check new FW version from OTA");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("Check new FW version from OTA"));
|
||||
FirmwareUpdate.CheckNewVersionAfterBoot = true;
|
||||
WiFiClientSecure client;
|
||||
client.setCACert(root_CAs_ota);
|
||||
|
|
@ -130,7 +128,7 @@ void System_CheckNewVersion() {
|
|||
SystemLog.AddEvent(LogLevel_Info, FirmwareUpdate.CheckNewVersionFwStatus);
|
||||
|
||||
} else {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "Connected to server!");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Connected to server!"));
|
||||
client.println("GET https://" + String(OTA_UPDATE_API_SERVER) + String(OTA_UPDATE_API_URL) + " HTTP/1.0");
|
||||
client.println("Host: " + String(OTA_UPDATE_API_SERVER));
|
||||
client.println("User-Agent: " + String(DEVICE_HOSTNAME));
|
||||
|
|
@ -162,14 +160,14 @@ void System_CheckNewVersion() {
|
|||
DeserializationError error = deserializeJson(jsonDoc, Data);
|
||||
|
||||
if (error) {
|
||||
FirmwareUpdate.CheckNewVersionFwStatus = "Failed to parse JSON from OTA server!";
|
||||
FirmwareUpdate.CheckNewVersionFwStatus = F("Failed to parse JSON from OTA server!");
|
||||
SystemLog.AddEvent(LogLevel_Warning, FirmwareUpdate.CheckNewVersionFwStatus);
|
||||
SystemLog.AddEvent(LogLevel_Warning, Data);
|
||||
|
||||
} else {
|
||||
const char *firmwareVersion = jsonDoc["tag_name"];
|
||||
if (firmwareVersion) {
|
||||
FirmwareUpdate.CheckNewVersionFwStatus = "Download successful";
|
||||
FirmwareUpdate.CheckNewVersionFwStatus = F("Download successful");
|
||||
FirmwareUpdate.NewVersionFw = firmwareVersion;
|
||||
SystemLog.AddEvent(LogLevel_Info, "Available OTA firmware: " + FirmwareUpdate.NewVersionFw);
|
||||
|
||||
|
|
@ -192,7 +190,7 @@ void System_CheckNewVersion() {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
FirmwareUpdate.CheckNewVersionFwStatus = "JSON key 'tag_name' from OTA server not found!";
|
||||
FirmwareUpdate.CheckNewVersionFwStatus = F("JSON key 'tag_name' from OTA server not found!");
|
||||
SystemLog.AddEvent(LogLevel_Warning, FirmwareUpdate.CheckNewVersionFwStatus);
|
||||
}
|
||||
}
|
||||
|
|
@ -209,9 +207,9 @@ void System_OtaCloudUpdate() {
|
|||
if (true == FirmwareUpdate.StartOtaUpdate) {
|
||||
FirmwareUpdate.Processing = true;
|
||||
FirmwareUpdate.StartOtaUpdate = false;
|
||||
FirmwareUpdate.UpdatingStatus = "Sync NTP time...";
|
||||
FirmwareUpdate.UpdatingStatus = F("Sync NTP time...");
|
||||
SystemWifiMngt.SyncNtpTime();
|
||||
FirmwareUpdate.UpdatingStatus = "Start updating";
|
||||
FirmwareUpdate.UpdatingStatus = F("Start updating");
|
||||
System_OtaUpdateStart();
|
||||
}
|
||||
}
|
||||
|
|
@ -269,7 +267,7 @@ bool System_OtaUpdateStart() {
|
|||
break;
|
||||
|
||||
case HTTP_UPDATE_NO_UPDATES:
|
||||
FirmwareUpdate.UpdatingStatus = "No updates";
|
||||
FirmwareUpdate.UpdatingStatus = F("No updates");
|
||||
break;
|
||||
|
||||
case HTTP_UPDATE_OK:
|
||||
|
|
@ -303,7 +301,7 @@ void System_OtaUpdateProgressCB(int cur, int total) {
|
|||
@return none
|
||||
*/
|
||||
void System_OtaUpdateStartCB() {
|
||||
SystemLog.AddEvent(LogLevel_Info, "Start OTA update");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("Start OTA update"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -312,7 +310,7 @@ void System_OtaUpdateStartCB() {
|
|||
@return none
|
||||
*/
|
||||
void System_OtaUpdateEndCB() {
|
||||
SystemLog.AddEvent(LogLevel_Info, "OTA update done");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("OTA update done"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -333,52 +331,52 @@ String System_PrintMcuResetReason(int reason) {
|
|||
String ret = "";
|
||||
switch (reason) {
|
||||
case 1: /**<1, Vbat power on reset*/
|
||||
ret = "POWERON_RESET";
|
||||
ret = F("POWERON_RESET");
|
||||
break;
|
||||
case 3: /**<3, Software reset digital core*/
|
||||
ret = "SW_RESET";
|
||||
ret = F("SW_RESET");
|
||||
break;
|
||||
case 4: /**<4, Legacy watch dog reset digital core*/
|
||||
ret = "OWDT_RESET";
|
||||
ret = F("OWDT_RESET");
|
||||
break;
|
||||
case 5: /**<5, Deep Sleep reset digital core*/
|
||||
ret = "DEEPSLEEP_RESET";
|
||||
ret = F("DEEPSLEEP_RESET");
|
||||
break;
|
||||
case 6: /**<6, Reset by SLC module, reset digital core*/
|
||||
ret = "SDIO_RESET";
|
||||
ret = F("SDIO_RESET");
|
||||
break;
|
||||
case 7: /**<7, Timer Group0 Watch dog reset digital core*/
|
||||
ret = "TG0WDT_SYS_RESET";
|
||||
ret = F("TG0WDT_SYS_RESET");
|
||||
break;
|
||||
case 8: /**<8, Timer Group1 Watch dog reset digital core*/
|
||||
ret = "TG1WDT_SYS_RESET";
|
||||
ret = F("TG1WDT_SYS_RESET");
|
||||
break;
|
||||
case 9: /**<9, RTC Watch dog Reset digital core*/
|
||||
ret = "RTCWDT_SYS_RESET";
|
||||
ret = F("RTCWDT_SYS_RESET");
|
||||
break;
|
||||
case 10: /**<10, Instrusion tested to reset CPU*/
|
||||
ret = "INTRUSION_RESET";
|
||||
ret = F("INTRUSION_RESET");
|
||||
break;
|
||||
case 11: /**<11, Time Group reset CPU*/
|
||||
ret = "TGWDT_CPU_RESET";
|
||||
ret = F("TGWDT_CPU_RESET");
|
||||
break;
|
||||
case 12: /**<12, Software reset CPU*/
|
||||
ret = "SW_CPU_RESET";
|
||||
ret = F("SW_CPU_RESET");
|
||||
break;
|
||||
case 13: /**<13, RTC Watch dog Reset CPU*/
|
||||
ret = "RTCWDT_CPU_RESET";
|
||||
ret = F("RTCWDT_CPU_RESET");
|
||||
break;
|
||||
case 14: /**<14, for APP CPU, reseted by PRO CPU*/
|
||||
ret = "EXT_CPU_RESET";
|
||||
ret = F("EXT_CPU_RESET");
|
||||
break;
|
||||
case 15: /**<15, Reset when the vdd voltage is not stable*/
|
||||
ret = "RTCWDT_BROWN_OUT_RESET";
|
||||
ret = F("RTCWDT_BROWN_OUT_RESET");
|
||||
break;
|
||||
case 16: /**<16, RTC Watch dog reset digital core and rtc module*/
|
||||
ret = "RTCWDT_RTC_RESET";
|
||||
ret = F("RTCWDT_RTC_RESET");
|
||||
break;
|
||||
default:
|
||||
ret = "NO_MEAN";
|
||||
ret = F("NO_MEAN");
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
|
@ -395,40 +393,40 @@ String System_printMcuResetReasonSimple() {
|
|||
|
||||
switch (reason) {
|
||||
case ESP_RST_UNKNOWN:
|
||||
ret = "Reset reason can not be determined";
|
||||
ret = F("Reset reason can not be determined");
|
||||
break;
|
||||
case ESP_RST_POWERON:
|
||||
ret = "Reset due to power-on event";
|
||||
ret = F("Reset due to power-on event");
|
||||
break;
|
||||
case ESP_RST_EXT:
|
||||
ret = "Reset by external pin (not applicable for ESP32)";
|
||||
ret = F("Reset by external pin (not applicable for ESP32)");
|
||||
break;
|
||||
case ESP_RST_SW:
|
||||
ret = "Software reset via esp_restart";
|
||||
ret = F("Software reset via esp_restart");
|
||||
break;
|
||||
case ESP_RST_PANIC:
|
||||
ret = "Software reset due to exception/panic";
|
||||
ret = F("Software reset due to exception/panic");
|
||||
break;
|
||||
case ESP_RST_INT_WDT:
|
||||
ret = "Reset (software or hardware) due to interrupt watchdog";
|
||||
ret = F("Reset (software or hardware) due to interrupt watchdog");
|
||||
break;
|
||||
case ESP_RST_TASK_WDT:
|
||||
ret = "Reset due to task watchdog";
|
||||
ret = F("Reset due to task watchdog");
|
||||
break;
|
||||
case ESP_RST_WDT:
|
||||
ret = "Reset due to other watchdogs";
|
||||
ret = F("Reset due to other watchdogs");
|
||||
break;
|
||||
case ESP_RST_DEEPSLEEP:
|
||||
ret = "Reset after exiting deep sleep mode";
|
||||
ret = F("Reset after exiting deep sleep mode");
|
||||
break;
|
||||
case ESP_RST_BROWNOUT:
|
||||
ret = "Brownout reset (software or hardware)";
|
||||
ret = F("Brownout reset (software or hardware)");
|
||||
break;
|
||||
case ESP_RST_SDIO:
|
||||
ret = "Reset over SDIO";
|
||||
ret = F("Reset over SDIO");
|
||||
break;
|
||||
default:
|
||||
ret = "N/A";
|
||||
ret = F("N/A");
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -451,9 +449,6 @@ void System_TaskWifiManagement(void *pvParameters) {
|
|||
/* wifi reconnect after signal lost */
|
||||
SystemWifiMngt.WiFiReconnect();
|
||||
|
||||
SystemLog.AddEvent(LogLevel_Info, "Free RAM: " + String(ESP.getFreeHeap()) + " bytes");
|
||||
SystemLog.AddEvent(LogLevel_Info, "Free SPIRAM: " + String(ESP.getFreePsram()) + " bytes");
|
||||
SystemLog.AddEvent(LogLevel_Info, "Temperature: " + String(temperatureRead()) + " *C");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "WiFiManagement task. Stack free size: " + String(uxTaskGetStackHighWaterMark(NULL)) + " bytes");
|
||||
|
||||
/* reset wdg */
|
||||
|
|
@ -478,6 +473,9 @@ void System_TaskMain(void *pvParameters) {
|
|||
/* for ota update */
|
||||
esp_task_wdt_reset();
|
||||
System_Main();
|
||||
SystemLog.AddEvent(LogLevel_Info, "Free RAM: " + String(ESP.getFreeHeap()) + " bytes");
|
||||
SystemLog.AddEvent(LogLevel_Info, "Free SPIRAM: " + String(ESP.getFreePsram()) + " bytes");
|
||||
SystemLog.AddEvent(LogLevel_Info, "Temperature: " + String(temperatureRead()) + " *C");
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "System task. Stack free size: " + String(uxTaskGetStackHighWaterMark(NULL)) + " bytes");
|
||||
|
||||
/* reset wdg */
|
||||
|
|
@ -543,7 +541,7 @@ void System_TaskSdCardCheck(void *pvParameters) {
|
|||
/* check micro SD card */
|
||||
if ((true == SystemLog.GetCardDetectAfterBoot()) && (false == SystemLog.GetCardDetectedStatus())) {
|
||||
SystemLog.ReinitCard();
|
||||
SystemLog.AddEvent(LogLevel_Warning, "Reinit micro SD card done!");
|
||||
SystemLog.AddEvent(LogLevel_Warning, F("Reinit micro SD card done!"));
|
||||
}
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "MicroSdCard task. Stack free size: " + String(uxTaskGetStackHighWaterMark(NULL)) + " bytes");
|
||||
|
||||
|
|
@ -620,6 +618,7 @@ void System_TaskSysLed(void *pvParameters) {
|
|||
system_led.toggle();
|
||||
/* reset wdg */
|
||||
esp_task_wdt_reset();
|
||||
SystemLog.AddEvent(LogLevel_Verbose, "SystemLed task. Stack free size: " + String(uxTaskGetStackHighWaterMark(NULL)) + " bytes");
|
||||
|
||||
/* next start task */
|
||||
vTaskDelayUntil(&xLastWakeTime, system_led.getTimer() / portTICK_PERIOD_MS);
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ void WiFiMngt::Init() {
|
|||
/* Set Wi-Fi networks */
|
||||
SetWifiEvents();
|
||||
CreateApSsid();
|
||||
log->AddEvent(LogLevel_Warning, "Set WiFi AP mode");
|
||||
log->AddEvent(LogLevel_Warning, F("Set WiFi AP mode"));
|
||||
WiFi.mode(WIFI_AP_STA);
|
||||
esp_wifi_set_ps(WIFI_PS_NONE);
|
||||
WiFi.softAPConfig(Service_LocalIp, Service_Gateway, Service_Subnet);
|
||||
|
|
@ -96,9 +96,9 @@ void WiFiMngt::Init() {
|
|||
/* Init MDNS record */
|
||||
log->AddEvent(LogLevel_Info, "Starting mDNS record: http://" + mDNS_record + ".local");
|
||||
if (!MDNS.begin(mDNS_record)) {
|
||||
log->AddEvent(LogLevel_Error, "Error starting mDNS");
|
||||
log->AddEvent(LogLevel_Error, F("Error starting mDNS"));
|
||||
} else {
|
||||
log->AddEvent(LogLevel_Info, "Starting mDNS OK");
|
||||
log->AddEvent(LogLevel_Info, F("Starting mDNS OK"));
|
||||
}
|
||||
MDNS.addService("http", "tcp", 80);
|
||||
}
|
||||
|
|
@ -116,7 +116,7 @@ void WiFiMngt::WifiManagement() {
|
|||
if ((true == config->CheckActifeWifiCfgFlag()) && (true == ServiceMode) && (WL_CONNECTED == WiFi.status())
|
||||
&& (false == FirmwareUpdate.Processing) && (false == cam->GetStreamStatus())) {
|
||||
if (WiFi.softAPgetStationNum() == 0) {
|
||||
log->AddEvent(LogLevel_Info, "Disable service AP mode");
|
||||
log->AddEvent(LogLevel_Info, F("Disable service AP mode"));
|
||||
WiFi.mode(WIFI_STA);
|
||||
esp_wifi_set_ps(WIFI_PS_NONE);
|
||||
WiFiStaConnect();
|
||||
|
|
@ -151,11 +151,11 @@ void WiFiMngt::WifiManagement() {
|
|||
*/
|
||||
void WiFiMngt::WiFiReconnect() {
|
||||
if ((WiFi.status() != WL_CONNECTED) && (FirstConnected == true)) {
|
||||
log->AddEvent(LogLevel_Warning, "Reconnecting to WiFi. STA");
|
||||
log->AddEvent(LogLevel_Warning, F("Reconnecting to WiFi. STA"));
|
||||
WiFi.disconnect();
|
||||
log->AddEvent(LogLevel_Warning, "Disconnect from WiFi");
|
||||
log->AddEvent(LogLevel_Warning, F("Disconnect from WiFi"));
|
||||
WiFi.reconnect();
|
||||
log->AddEvent(LogLevel_Warning, "Reconnecting to WiFi. STA");
|
||||
log->AddEvent(LogLevel_Warning, F("Reconnecting to WiFi. STA"));
|
||||
} else if (WiFi.status() == WL_CONNECTED) {
|
||||
char cstr[150];
|
||||
sprintf(cstr, "Wifi connected. SSID: %s, BSSID: %s, RSSI: %d dBm, IP: %s, TX power: %s", WiFi.SSID().c_str(), WiFi.BSSIDstr().c_str(), WiFi.RSSI(), WiFi.localIP().toString().c_str(), TranslateTxPower(WiFi.getTxPower()).c_str()); //print 3 digits
|
||||
|
|
@ -163,7 +163,7 @@ void WiFiMngt::WiFiReconnect() {
|
|||
}
|
||||
|
||||
if (Connect.GetBackendAvailabilitStatus() == BackendUnavailable) {
|
||||
log->AddEvent(LogLevel_Warning, "Reconnecting to WiFi. STA. Problem with connecting to backend!");
|
||||
log->AddEvent(LogLevel_Warning, F("Reconnecting to WiFi. STA. Problem with connecting to backend!"));
|
||||
WiFi.disconnect();
|
||||
WiFi.reconnect();
|
||||
Connect.SetBackendAvailabilitStatus(WaitForFirstConnection);
|
||||
|
|
@ -202,10 +202,10 @@ void WiFiMngt::WiFiStaConnect() {
|
|||
system_led.setTimer(STATUS_LED_STA_CONNECTING);
|
||||
if (false == WiFiStaMultipleNetwork) {
|
||||
WiFi.begin(WifiSsid, WifiPassword);
|
||||
log->AddEvent(LogLevel_Info, "Connecting to STA SSID");
|
||||
log->AddEvent(LogLevel_Info, F("Connecting to STA SSID"));
|
||||
} else if (true == WiFiStaMultipleNetwork) {
|
||||
WiFi.begin(WifiSsid, WifiPassword, 0, WiFiStaNetworkBssid);
|
||||
log->AddEvent(LogLevel_Info, "Connecting to STA BSSID");
|
||||
log->AddEvent(LogLevel_Info, F("Connecting to STA BSSID"));
|
||||
}
|
||||
WiFi.setAutoReconnect(true);
|
||||
}
|
||||
|
|
@ -219,8 +219,8 @@ void WiFiMngt::WiFiStaConnect() {
|
|||
void WiFiMngt::SyncNtpTime() {
|
||||
if (WL_CONNECTED == WiFi.status()) {
|
||||
/* configure NTP server and timezone to UTC */
|
||||
configTime(0, 0, "pool.ntp.org", "time.nist.gov"); // UTC
|
||||
log->AddEvent(LogLevel_Info, "Waiting for NTP time sync: ");
|
||||
configTime(NTP_GTM_OFFSET_SEC, NTP_DAYLIGHT_OFFSET_SEC, NTP_SERVER_1, NTP_SERVER_2); // UTC
|
||||
log->AddEvent(LogLevel_Info, F("Waiting for NTP time sync: "));
|
||||
log->SetNtpTimeSynced(false);
|
||||
|
||||
/* wait maximum 10s for time sync */
|
||||
|
|
@ -237,10 +237,10 @@ void WiFiMngt::SyncNtpTime() {
|
|||
|
||||
/* report sync status */
|
||||
if (true == log->GetNtpTimeSynced()) {
|
||||
log->AddEvent(LogLevel_Info, "Sync NTP time done. Set UTC timezone");
|
||||
log->AddEvent(LogLevel_Info, F("Sync NTP time done. Set UTC timezone"));
|
||||
NtpFirstSync = true;
|
||||
} else {
|
||||
log->AddEvent(LogLevel_Info, "Sync NTP time fail");
|
||||
log->AddEvent(LogLevel_Info, F("Sync NTP time fail"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -260,7 +260,7 @@ void WiFiMngt::ScanWiFiNetwork() {
|
|||
@return uint8_t - count of found wifi networks with same SSID
|
||||
*/
|
||||
uint8_t WiFiMngt::ScanWifiNetwork(String ssid) {
|
||||
log->AddEvent(LogLevel_Info, "Scan WI-FI networks");
|
||||
log->AddEvent(LogLevel_Info, F("Scan WI-FI networks"));
|
||||
log->AddEvent(LogLevel_Info, "Check available WI-FI network: " + ssid);
|
||||
uint8_t ret = 0; ///< total wifi network count
|
||||
int bestSignal = -100; ///< wifi network with best signal (when is available multiple networks with same SSID)
|
||||
|
|
@ -268,17 +268,17 @@ uint8_t WiFiMngt::ScanWifiNetwork(String ssid) {
|
|||
|
||||
/* scan WI-FI networks */
|
||||
int n = WiFi.scanNetworks();
|
||||
log->AddEvent(LogLevel_Verbose, "Scan done");
|
||||
log->AddEvent(LogLevel_Verbose, F("Scan done"));
|
||||
JsonDocument doc_json;
|
||||
JsonArray wifiArray = doc_json.to<JsonArray>();
|
||||
WifiScanJson = "";
|
||||
|
||||
/* make json with each found WI-FI networks */
|
||||
if (n == 0) {
|
||||
log->AddEvent(LogLevel_Info, "No networks found!");
|
||||
log->AddEvent(LogLevel_Info, F("No networks found!"));
|
||||
} else {
|
||||
log->AddEvent(LogLevel_Info, String(n) + " networks found");
|
||||
log->AddEvent(LogLevel_Info, "Nr | SSID | RSSI | CH | BSSID | Encryption");
|
||||
log->AddEvent(LogLevel_Info, F("Nr | SSID | RSSI | CH | BSSID | Encryption"));
|
||||
|
||||
for (int i = 0; i < n; ++i) {
|
||||
/* check available wifi network */
|
||||
|
|
@ -375,24 +375,24 @@ void WiFiMngt::WiFiWatchdog() {
|
|||
|
||||
/* when is enabled wifi configuration, and is not connected to wifi network, and is available at least one wifi network */
|
||||
if ((true == config->CheckActifeWifiCfgFlag()) && (WL_CONNECTED != WiFi.status()) && (true == GetFirstConnection())) {
|
||||
log->AddEvent(LogLevel_Warning, "WiFi WDG. STA connection lost.");
|
||||
log->AddEvent(LogLevel_Warning, F("WiFi WDG. STA connection lost."));
|
||||
unsigned long currentMillis = millis();
|
||||
|
||||
if (false == StartStaWdg) {
|
||||
if (ScanWifiNetwork(WifiSsid) >= 1) {
|
||||
StartStaWdg = true;
|
||||
TaskWdg_previousMillis = currentMillis;
|
||||
log->AddEvent(LogLevel_Warning, "WiFi STA connection lost. Start watchdog timer!");
|
||||
log->AddEvent(LogLevel_Warning, F("WiFi STA connection lost. Start watchdog timer!"));
|
||||
}
|
||||
}
|
||||
|
||||
if ((true == StartStaWdg) && (currentMillis - TaskWdg_previousMillis >= WIFI_STA_WDG_TIMEOUT)) {
|
||||
log->AddEvent(LogLevel_Warning, "WiFi STA connection lost. WDG timer expired. Restart MCU!");
|
||||
log->AddEvent(LogLevel_Warning, F("WiFi STA connection lost. WDG timer expired. Restart MCU!"));
|
||||
/* restart MCU, or disconnect and connect to WiFi again ? From my point of view, and testing, restart MCU is better */
|
||||
ESP.restart();
|
||||
}
|
||||
} else if (true == StartStaWdg) {
|
||||
log->AddEvent(LogLevel_Info, "WiFi STA connection OK. Stop watchdog timer!");
|
||||
log->AddEvent(LogLevel_Info, F("WiFi STA connection OK. Stop watchdog timer!"));
|
||||
StartStaWdg = false;
|
||||
TaskWdg_previousMillis = millis();
|
||||
}
|
||||
|
|
@ -427,40 +427,40 @@ String WiFiMngt::TranslateTxPower(wifi_power_t data) {
|
|||
String ret = "";
|
||||
switch (data) {
|
||||
case WIFI_POWER_MINUS_1dBm:
|
||||
ret = "-1dBm";
|
||||
ret = F("-1dBm");
|
||||
break;
|
||||
case WIFI_POWER_2dBm:
|
||||
ret = "2dBm";
|
||||
ret = F("2dBm");
|
||||
break;
|
||||
case WIFI_POWER_5dBm:
|
||||
ret = "5dBm";
|
||||
ret = F("5dBm");
|
||||
break;
|
||||
case WIFI_POWER_7dBm:
|
||||
ret = "7dBm";
|
||||
ret = F("7dBm");
|
||||
break;
|
||||
case WIFI_POWER_8_5dBm:
|
||||
ret = "8.5dBm";
|
||||
ret = F("8.5dBm");
|
||||
break;
|
||||
case WIFI_POWER_11dBm:
|
||||
ret = "11dBm";
|
||||
ret = F("11dBm");
|
||||
break;
|
||||
case WIFI_POWER_13dBm:
|
||||
ret = "13dBm";
|
||||
ret = F("13dBm");
|
||||
break;
|
||||
case WIFI_POWER_15dBm:
|
||||
ret = "15dBm";
|
||||
ret = F("15dBm");
|
||||
break;
|
||||
case WIFI_POWER_17dBm:
|
||||
ret = "17dBm";
|
||||
ret = F("17dBm");
|
||||
break;
|
||||
case WIFI_POWER_18_5dBm:
|
||||
ret = "18.5dBm";
|
||||
ret = F("18.5dBm");
|
||||
break;
|
||||
case WIFI_POWER_19dBm:
|
||||
ret = "19dBm";
|
||||
ret = F("19dBm");
|
||||
break;
|
||||
case WIFI_POWER_19_5dBm:
|
||||
ret = "19.5dBm";
|
||||
ret = F("19.5dBm");
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -477,31 +477,31 @@ String WiFiMngt::TranslateWiFiStatus(wl_status_t i_wifi_status) {
|
|||
String ret = "";
|
||||
switch (i_wifi_status) {
|
||||
case WL_IDLE_STATUS:
|
||||
ret = "Idle";
|
||||
ret = F("Idle");
|
||||
break;
|
||||
case WL_NO_SSID_AVAIL:
|
||||
ret = "No SSID available";
|
||||
ret = F("No SSID available");
|
||||
break;
|
||||
case WL_SCAN_COMPLETED:
|
||||
ret = "Scan completed";
|
||||
ret = F("Scan completed");
|
||||
break;
|
||||
case WL_CONNECTED:
|
||||
ret = "Connected";
|
||||
ret = F("Connected");
|
||||
break;
|
||||
case WL_CONNECT_FAILED:
|
||||
ret = "Connect failed";
|
||||
ret = F("Connect failed");
|
||||
break;
|
||||
case WL_CONNECTION_LOST:
|
||||
ret = "Connection lost";
|
||||
ret = F("Connection lost");
|
||||
break;
|
||||
case WL_DISCONNECTED:
|
||||
ret = "Disconnected";
|
||||
ret = F("Disconnected");
|
||||
break;
|
||||
case WL_NO_SHIELD:
|
||||
ret = "No WiFi shield";
|
||||
ret = F("No WiFi shield");
|
||||
break;
|
||||
default:
|
||||
ret = "Unkcnown status";
|
||||
ret = F("Unkcnown status");
|
||||
ret += String(i_wifi_status);
|
||||
}
|
||||
return ret;
|
||||
|
|
@ -516,34 +516,34 @@ String WiFiMngt::TranslateWiFiEncrypion(wifi_auth_mode_t i_data) {
|
|||
String ret = "";
|
||||
switch (i_data) {
|
||||
case WIFI_AUTH_OPEN:
|
||||
ret = "open";
|
||||
ret = F("open");
|
||||
break;
|
||||
case WIFI_AUTH_WEP:
|
||||
ret = "WEP";
|
||||
ret = F("WEP");
|
||||
break;
|
||||
case WIFI_AUTH_WPA_PSK:
|
||||
ret = "WPA";
|
||||
ret = F("WPA");
|
||||
break;
|
||||
case WIFI_AUTH_WPA2_PSK:
|
||||
ret = "WPA2";
|
||||
ret = F("WPA2");
|
||||
break;
|
||||
case WIFI_AUTH_WPA_WPA2_PSK:
|
||||
ret = "WPA+WPA2";
|
||||
ret = F("WPA+WPA2");
|
||||
break;
|
||||
case WIFI_AUTH_WPA2_ENTERPRISE:
|
||||
ret = "WPA2-EAP";
|
||||
ret = F("WPA2-EAP");
|
||||
break;
|
||||
case WIFI_AUTH_WPA3_PSK:
|
||||
ret = "WPA3";
|
||||
ret = F("WPA3");
|
||||
break;
|
||||
case WIFI_AUTH_WPA2_WPA3_PSK:
|
||||
ret = "WPA2+WPA3";
|
||||
ret = F("WPA2+WPA3");
|
||||
break;
|
||||
case WIFI_AUTH_WAPI_PSK:
|
||||
ret = "WAPI";
|
||||
ret = F("WAPI");
|
||||
break;
|
||||
default:
|
||||
ret = "unknown";
|
||||
ret = F("unknown");
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
|
@ -739,7 +739,7 @@ void WiFiMngt::SetFirstConnection(bool i_data) {
|
|||
@return none
|
||||
*/
|
||||
void WiFiMngt_WiFiEventScanDone(WiFiEvent_t event, WiFiEventInfo_t info) {
|
||||
SystemLog.AddEvent(LogLevel_Info, "WiFi networks scan done");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("WiFi networks scan done"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -749,7 +749,7 @@ void WiFiMngt_WiFiEventScanDone(WiFiEvent_t event, WiFiEventInfo_t info) {
|
|||
@return none
|
||||
*/
|
||||
void WiFiMngt_WiFiEventStationStart(WiFiEvent_t event, WiFiEventInfo_t info) {
|
||||
SystemLog.AddEvent(LogLevel_Info, "WiFi STA start");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("WiFi STA start"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -759,7 +759,7 @@ void WiFiMngt_WiFiEventStationStart(WiFiEvent_t event, WiFiEventInfo_t info) {
|
|||
@return none
|
||||
*/
|
||||
void WiFiMngt_WiFiEventStationStop(WiFiEvent_t event, WiFiEventInfo_t info) {
|
||||
SystemLog.AddEvent(LogLevel_Info, "WiFi STA stop");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("WiFi STA stop"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -769,7 +769,7 @@ void WiFiMngt_WiFiEventStationStop(WiFiEvent_t event, WiFiEventInfo_t info) {
|
|||
@return none
|
||||
*/
|
||||
void WiFiMngt_WiFiEventStationConnected(WiFiEvent_t event, WiFiEventInfo_t info) {
|
||||
SystemLog.AddEvent(LogLevel_Info, "WiFi connected to STA");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("WiFi connected to STA"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -803,7 +803,7 @@ void WiFiMngt_WiFiEventGotIP(WiFiEvent_t event, WiFiEventInfo_t info) {
|
|||
@return none
|
||||
*/
|
||||
void WiFiMngt_WiFiEventLostIP(WiFiEvent_t event, WiFiEventInfo_t info) {
|
||||
SystemLog.AddEvent(LogLevel_Info, "WiFi lost IP address");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("WiFi lost IP address"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -855,7 +855,7 @@ void WiFiMngt_WiFiEventStationDisconnected(WiFiEvent_t event, WiFiEventInfo_t in
|
|||
@return none
|
||||
*/
|
||||
void WiFiMngt_WiFiEventApStart(WiFiEvent_t event, WiFiEventInfo_t info) {
|
||||
SystemLog.AddEvent(LogLevel_Info, "WiFi AP start");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("WiFi AP start"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -865,7 +865,7 @@ void WiFiMngt_WiFiEventApStart(WiFiEvent_t event, WiFiEventInfo_t info) {
|
|||
@return none
|
||||
*/
|
||||
void WiFiMngt_WiFiEventApStop(WiFiEvent_t event, WiFiEventInfo_t info) {
|
||||
SystemLog.AddEvent(LogLevel_Info, "WiFi AP stop");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("WiFi AP stop"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -915,7 +915,7 @@ void WiFiMngt_WiFiEventApStaIpAssigned(WiFiEvent_t event, WiFiEventInfo_t info)
|
|||
@return none
|
||||
*/
|
||||
void WiFiMngt_WiFiEventApStaProbeReqRecved(WiFiEvent_t event, WiFiEventInfo_t info) {
|
||||
SystemLog.AddEvent(LogLevel_Info, "WiFi AP STA receive probe request packet in soft-AP interface");
|
||||
SystemLog.AddEvent(LogLevel_Info, F("WiFi AP STA receive probe request packet in soft-AP interface"));
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
@ -4,7 +4,7 @@ This repository includes source code and firmware releases for the ESP32-cam mod
|
|||
|
||||
This project uses other libraries. It is necessary to install them in the Arduino IDE.
|
||||
- App [Arduino IDE 2.3.2](https://www.arduino.cc/en/software)
|
||||
- MCU support [ESP32 2.0.15](https://github.com/espressif/arduino-esp32)
|
||||
- MCU support [ESP32 2.0.16](https://github.com/espressif/arduino-esp32)
|
||||
- Library [ESPAsyncWebSrv 1.2.7](https://github.com/dvarrel/ESPAsyncWebSrv)
|
||||
- Library [AsyncTCP 1.1.4](https://github.com/dvarrel/AsyncTCP)
|
||||
- Library [ArduinoJson 7.0.4](https://github.com/bblanchon/ArduinoJson)
|
||||
|
|
|
|||
Loading…
Reference in New Issue