// ESP32-S3 CAN FD Logger with WiFi Real-time Display // Main entry point for Arduino IDE // Board: ESP32S3 Dev Module #include "config.h" #include "task_config.h" #include "can_handler.h" #include "sd_logger.h" #include "rtc_manager.h" #include "web_server.h" #include "dbc_parser.h" #include "signal_manager.h" #include "auto_trigger.h" #include "psram_buffer.h" #include "test_handler.h" void setup() { Serial.begin(115200); delay(1000); Serial.println("================================"); Serial.println("ESP32-S3 CAN FD Logger"); Serial.println("Version 2.0 - PSRAM Optimized"); Serial.println("================================"); if (psramFound()) { Serial.printf("PSRAM found: %d MB\n", ESP.getPsramSize() / (1024 * 1024)); } else { Serial.println("WARNING: PSRAM not found!"); } if (!initPSRAMBuffers()) { Serial.println("PSRAM buffer initialization failed!"); } initFreeRTOSResources(); initRTC(); initSDCard(); createLogDirectories(); initCAN(); initSignalManager(); initAutoTrigger(); initTestHandler(); createAllTasks(); printMemoryStatus(); Serial.println("System ready!"); Serial.printf("AP SSID: %s\n", WIFI_AP_SSID); } void loop() { static uint32_t lastCheck = 0; if (millis() - lastCheck > 30000) { lastCheck = millis(); Serial.printf("[Status] Heap: %d KB, PSRAM: %d KB, Buffer: %d/%d frames\n", ESP.getFreeHeap() / 1024, ESP.getFreePsram() / 1024, canFrameBuffer.available(), canFrameBuffer.capacity()); } vTaskDelay(pdMS_TO_TICKS(1000)); }