#pragma once #include /** Max chars for hostname / CPU / GPU name shown on UI. */ static constexpr int HOST_NAME_MAX = 40; static constexpr int HOST_CPU_MAX = 48; static constexpr int HOST_GPU_MAX = 48; struct HostInfo { char host[HOST_NAME_MAX]; char cpu[HOST_CPU_MAX]; char gpu[HOST_GPU_MAX]; float cpu_pct; // 0..100 float gpu_pct; // 0..100, -1 if unknown float ram_used_gb; float ram_total_gb; float disk_used_gb; float disk_total_gb; bool valid; uint32_t updated_ms; }; void host_info_begin(); /** Poll USB Serial for SI|... lines; return true if a packet was applied. */ bool host_info_poll(); const HostInfo &host_info_get(); /** True if last packet is fresher than stale_ms. */ bool host_info_is_live(uint32_t stale_ms = 5000);