From 4d810783fc406d5611ec73392570949361c85348 Mon Sep 17 00:00:00 2001 From: Markus Ransberger Date: Sun, 21 Jul 2024 19:30:21 +0200 Subject: [PATCH] Add diagnosis module via HTTP. --- include/diagnosis.h | 26 ++++++++++ src/connectivity/diagnosis.cpp | 93 ++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 include/diagnosis.h create mode 100644 src/connectivity/diagnosis.cpp diff --git a/include/diagnosis.h b/include/diagnosis.h new file mode 100644 index 0000000..cd51dd4 --- /dev/null +++ b/include/diagnosis.h @@ -0,0 +1,26 @@ +#ifndef DIAGNOSIS_H +#define DIAGNOSIS_H + +#include +#include "led_matrix.h" +#include "udp_logger.h" + +class Diagnosis +{ +public: + Diagnosis(); // constructor + Diagnosis(UDPLogger *logger, LEDMatrix *matrix); // constructor + + String handle_command(const String &command); + String print_device_info(); + String print_sketch_info(); + String print_last_reset_details(); + String print_matrix_fps(); + +private: + UDPLogger *_logger; + LEDMatrix * _matrix; + void print(const String &s); +}; + +#endif // DIAGNOSIS_H \ No newline at end of file diff --git a/src/connectivity/diagnosis.cpp b/src/connectivity/diagnosis.cpp new file mode 100644 index 0000000..d7eb0ab --- /dev/null +++ b/src/connectivity/diagnosis.cpp @@ -0,0 +1,93 @@ +#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); + } +}