mirror of
https://github.com/OpenEPaperLink/OpenEPaperLink.git
synced 2026-03-21 15:06:38 +01:00
115 lines
3.0 KiB
C++
115 lines
3.0 KiB
C++
#include "system.h"
|
|
|
|
#include <Arduino.h>
|
|
#include <FS.h>
|
|
#include <Preferences.h>
|
|
#include <esp_sntp.h>
|
|
|
|
#include "storage.h"
|
|
#include "tag_db.h"
|
|
#include "wifimanager.h"
|
|
|
|
void timeSyncCallback(struct timeval* tv) {
|
|
Serial.println("time succesfully synced");
|
|
}
|
|
|
|
void initTime(void* parameter) {
|
|
if (WiFi.status() != WL_CONNECTED) {
|
|
vTaskDelay(500 / portTICK_PERIOD_MS);
|
|
}
|
|
sntp_set_time_sync_notification_cb(timeSyncCallback);
|
|
sntp_set_sync_interval(300 * 1000);
|
|
configTzTime(config.timeZone, "time.cloudflare.com", "pool.ntp.org", "time.nist.gov");
|
|
logStartUp();
|
|
struct tm timeinfo;
|
|
while (millis() < 30000) {
|
|
if (!getLocalTime(&timeinfo)) {
|
|
Serial.println("Waiting for valid time from NTP-server");
|
|
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
if (config.runStatus == RUNSTATUS_INIT) {
|
|
config.runStatus = RUNSTATUS_RUN;
|
|
}
|
|
vTaskDelay(10 / portTICK_PERIOD_MS);
|
|
vTaskDelete(NULL);
|
|
}
|
|
|
|
void logLine(const char* buffer) {
|
|
logLine(String(buffer));
|
|
}
|
|
|
|
void logLine(const String& text) {
|
|
time_t now;
|
|
time(&now);
|
|
|
|
char timeStr[24];
|
|
const char* format = (now < (time_t)1672531200) ? " %H:%M:%S " : "%Y-%m-%d %H:%M:%S ";
|
|
strftime(timeStr, sizeof(timeStr), format, localtime(&now));
|
|
|
|
xSemaphoreTake(fsMutex, portMAX_DELAY);
|
|
File logFile = contentFS->open("/log.txt", "a");
|
|
if (logFile) {
|
|
if (logFile.size() >= 10 * 1024) {
|
|
logFile.close();
|
|
contentFS->remove("/logold.txt");
|
|
contentFS->rename("/log.txt", "/logold.txt");
|
|
logFile = contentFS->open("/log.txt", "a");
|
|
if (!logFile) {
|
|
xSemaphoreGive(fsMutex);
|
|
return;
|
|
}
|
|
}
|
|
|
|
logFile.print(timeStr);
|
|
logFile.println(text);
|
|
logFile.close();
|
|
}
|
|
xSemaphoreGive(fsMutex);
|
|
}
|
|
|
|
void logStartUp() {
|
|
esp_reset_reason_t resetReason = esp_reset_reason();
|
|
|
|
String logEntry = "Reboot. Reason: ";
|
|
switch (resetReason) {
|
|
case ESP_RST_POWERON:
|
|
logEntry += "Power-on";
|
|
break;
|
|
case ESP_RST_EXT:
|
|
logEntry += "External";
|
|
break;
|
|
case ESP_RST_SW:
|
|
logEntry += "Software";
|
|
break;
|
|
case ESP_RST_PANIC:
|
|
logEntry += "Panic";
|
|
break;
|
|
case ESP_RST_INT_WDT:
|
|
logEntry += "Watchdog";
|
|
break;
|
|
case ESP_RST_TASK_WDT:
|
|
logEntry += "Task Watchdog";
|
|
break;
|
|
case ESP_RST_WDT:
|
|
logEntry += "Other Watchdog";
|
|
break;
|
|
case ESP_RST_DEEPSLEEP:
|
|
logEntry += "Deep Sleep";
|
|
break;
|
|
case ESP_RST_BROWNOUT:
|
|
logEntry += "Brownout";
|
|
break;
|
|
case ESP_RST_SDIO:
|
|
logEntry += "SDIO";
|
|
break;
|
|
default:
|
|
logEntry += "Unknown";
|
|
break;
|
|
}
|
|
|
|
logLine(logEntry);
|
|
}
|