/* This file is part of ESP3DLib library for 3D printer. ESP3DLib library for Marlin 3D printer for 3D printer is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. ESP3DLib library for Marlin 3D printer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this Firmware. If not, see . Main author: luc lebosse */ // #define ESP_DEBUG_FEATURE DEBUG_OUTPUT_SERIAL0 #include "include/esp3d_config.h" #if defined(ESP3DLIB_ENV) #include "esp3dlib.h" // to make it work with Platformio library detection // TODO: remove as soon as Platformio library detection is fixed #if FILESYSTEM_FEATURE == ESP_LITTLEFS_FILESYSTEM #include #endif // FILESYSTEM_FEATURE #include "core/esp3d.h" #include "core/esp3d_commands.h" #include "core/esp3d_hal.h" #if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2 #include #endif // CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2 #ifdef SDSUPPORT #include "modules/filesystem/esp_sd.h" #endif // SDSUPPORT Esp3DLib esp3dlib; Esp3D myesp3d; void ESP3DLibTaskfn(void *parameter) { // Start esp3d myesp3d.begin(); // Main loop for (;;) { myesp3d.handle(); #if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2 rtc_wdt_feed(); #endif // #if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2 vTaskDelay(1 / portTICK_RATE_MS); } vTaskDelete(ESP3DHal::xHandle); } // Contructor Esp3DLib::Esp3DLib() { // nothing to do } // Begin which setup everything void Esp3DLib::init() {} // Parse command bool Esp3DLib::parse(char *cmd) { if (myesp3d.started() && esp3d_commands.is_esp_command((uint8_t *)cmd, strlen(cmd))) { // command come from other serial port ESP3DMessage *msg = esp3d_message_manager.newMsg( ESP3DClientType::echo_serial, ESP3DClientType::command, (uint8_t *)cmd, strlen(cmd), ESP3DAuthenticationLevel::admin); if (msg) { // process command esp3d_commands.process(msg); } else { esp3d_log_e("Cannot create message"); } return true; } return false; } bool Esp3DLib::isSdUsed() { #if defined(SDSUPPORT) && SD_DEVICE_CONNECTION == ESP_SHARED_SD return ESP_SD::isEnabled(); #else return false; #endif // SDSUPPORT } // Idletask when setup is done void Esp3DLib::idletask() { static uint8_t count = 0; if (count < 5) { count++; if (count == 4) { // Create esp3d task xTaskCreatePinnedToCore( ESP3DLibTaskfn, /* Task function. */ "ESP3DLib Task", /* name of task. */ 8192, /* Stack size of task */ NULL, /* parameter of the task */ ESP3DLIB_RUNNING_PRIORITY, /* priority of the task */ &(ESP3DHal::xHandle), /* Task handle to keep track of created task */ ESP3DLIB_RUNNING_CORE /* Core to run the task */ ); #ifdef DISABLE_WDT_ESP3DLIB_TASK if (esp_task_wdt_status(ESP3DHal::xHandle) == ESP_OK) { esp_task_wdt_delete(ESP3DHal::xHandle); } #endif // DISABLE_WDT_ESP3DLIB_TASK } } ESP3DHal::wait(0); // Yield to other tasks } #endif // ESP3DLIB_ENV