#include "diagnosis.h" Diagnosis::Diagnosis() { _logger = nullptr; } Diagnosis::Diagnosis(UDPLogger *logger, LEDMatrix *matrix) // constructor { _logger = logger; _matrix = matrix; } String Diagnosis::handle_command(const String &command) { if (command == "device_info") { return print_device_info(); } else if (command == "sketch_info") { return print_sketch_info(); } else if (command == "reset_info") { return print_last_reset_details(); } else if (command == "matrix_fps") { return print_matrix_fps(); } else { // Handle unknown command String unknown_command = "Diagnosis: Unknown command!\n"; print(unknown_command); return unknown_command; } } String Diagnosis::print_device_info() { // Retrieve and print device information String device_info = "Device Information:\n"; device_info += "Chip ID: " + String(ESP.getChipId()) + "\n"; device_info += "Flash Chip ID: " + String(ESP.getFlashChipId()) + "\n"; device_info += "Flash Chip Size: " + String(ESP.getFlashChipSize()) + " bytes\n"; device_info += "Free Heap Size: " + String(ESP.getFreeHeap()) + " bytes\n"; device_info += "Free Sketch Space: " + String(ESP.getFreeSketchSpace()) + " bytes\n"; device_info += "SDK Version: " + String(ESP.getSdkVersion()) + "\n"; print(device_info); return device_info; } String Diagnosis::print_sketch_info() { // Retrieve and print sketch information String sketch_info = "Sketch Information:\n"; sketch_info += "Sketch Size: " + String(ESP.getSketchSize()) + " bytes\n"; sketch_info += "Sketch MD5: " + String(ESP.getSketchMD5()) + "\n"; print(sketch_info); return sketch_info; } String Diagnosis::print_last_reset_details() { // Retrieve and print last reset details String reset_info = "Last Reset Details:\n"; reset_info += "Reset Reason: " + String(ESP.getResetReason()) + "\n"; reset_info += "Reset Info: " + String(ESP.getResetInfo()) + "\n"; print(reset_info); return reset_info; } String Diagnosis::print_matrix_fps() { // Retrieve and print matrix FPS String matrix_fps = "Matrix FPS: " + String(_matrix->get_fps()) + "\n"; print(matrix_fps); return matrix_fps; } void Diagnosis::print(const String &s) { if (_logger != nullptr) { _logger->log_string(s); } else { Serial.println(s); } }