import type { Hardware } from '@/shared/contracts/hardware.ts'; import { formatBytes } from '@/client/ui/format.ts'; export function HardwareDetails({ hardware, radioStack, analysisStack, }: { hardware?: Hardware | null; radioStack?: number; analysisStack?: number; }) { return (

CPU bars show non-idle task time over one second. Temperature is measured inside the chip.

{hardware ? ( <> {( [ ['Internal', hardware.internal], ['PSRAM', hardware.psram], ] as const ).map(([label, memory]) => ( ))}
Memory Free Minimum Largest block
{label} {formatBytes(memory.free)} {formatBytes(memory.minimumFree)} {formatBytes(memory.largestBlock)}

Stack headroom: radio {formatBytes(radioStack)}, analysis {formatBytes(analysisStack)}, sampler {formatBytes(hardware.samplerStackFree)}. These are minima since boot.

Last sampling cost: {(hardware.sampleCostUs / 1000).toFixed(2)} ms.

) : null}
); }