ESPHome 2026.3.0-dev
Loading...
Searching...
No Matches
debug_libretiny.cpp
Go to the documentation of this file.
1#include "debug_component.h"
2#ifdef USE_LIBRETINY
3#include "esphome/core/log.h"
4
5namespace esphome {
6namespace debug {
7
8static const char *const TAG = "debug";
9
10const char *DebugComponent::get_reset_reason_(std::span<char, RESET_REASON_BUFFER_SIZE> buffer) {
11 // Return the static string directly
12 return lt_get_reboot_reason_name(lt_get_reboot_reason());
13}
14
15const char *DebugComponent::get_wakeup_cause_(std::span<char, RESET_REASON_BUFFER_SIZE> buffer) { return ""; }
16
17uint32_t DebugComponent::get_free_heap_() { return lt_heap_get_free(); }
18
19size_t DebugComponent::get_device_info_(std::span<char, DEVICE_INFO_BUFFER_SIZE> buffer, size_t pos) {
20 constexpr size_t size = DEVICE_INFO_BUFFER_SIZE;
21 char *buf = buffer.data();
22
23 char reason_buffer[RESET_REASON_BUFFER_SIZE];
24 const char *reset_reason = get_reset_reason_(std::span<char, RESET_REASON_BUFFER_SIZE>(reason_buffer));
25 uint32_t flash_kib = lt_flash_get_size() / 1024;
26 uint32_t ram_kib = lt_ram_get_size() / 1024;
27 uint32_t mac_id = lt_cpu_get_mac_id();
28
29 ESP_LOGD(TAG,
30 "LibreTiny debug info:\n"
31 " Version: %s\n"
32 " Chip: %s (%04x) @ %u MHz\n"
33 " Chip ID: 0x%06" PRIX32 "\n"
34 " Board: %s\n"
35 " Flash: %" PRIu32 " KiB\n"
36 " RAM: %" PRIu32 " KiB\n"
37 " Reset Reason: %s",
38 lt_get_version(), lt_cpu_get_model_name(), lt_cpu_get_model(), lt_cpu_get_freq_mhz(), mac_id,
39 lt_get_board_code(), flash_kib, ram_kib, reset_reason);
40
41 pos = buf_append_printf(buf, size, pos, "|Version: %s", LT_BANNER_STR + 10);
42 pos = buf_append_printf(buf, size, pos, "|Reset Reason: %s", reset_reason);
43 pos = buf_append_printf(buf, size, pos, "|Chip Name: %s", lt_cpu_get_model_name());
44 pos = buf_append_printf(buf, size, pos, "|Chip ID: 0x%06" PRIX32, mac_id);
45 pos = buf_append_printf(buf, size, pos, "|Flash: %" PRIu32 " KiB", flash_kib);
46 pos = buf_append_printf(buf, size, pos, "|RAM: %" PRIu32 " KiB", ram_kib);
47
48 return pos;
49}
50
52#ifdef USE_SENSOR
53 if (this->block_sensor_ != nullptr) {
54 this->block_sensor_->publish_state(lt_heap_get_max_alloc());
55 }
56 if (this->min_free_sensor_ != nullptr) {
57 this->min_free_sensor_->publish_state(lt_heap_get_min_free());
58 }
59#endif
60}
61
62} // namespace debug
63} // namespace esphome
64#endif
size_t get_device_info_(std::span< char, DEVICE_INFO_BUFFER_SIZE > buffer, size_t pos)
const char * get_wakeup_cause_(std::span< char, RESET_REASON_BUFFER_SIZE > buffer)
const char * get_reset_reason_(std::span< char, RESET_REASON_BUFFER_SIZE > buffer)
void publish_state(float state)
Publish a new state to the front-end.
Definition sensor.cpp:65
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
size_t size
Definition helpers.h:854
size_t size_t pos
Definition helpers.h:854