# CLAUDE.md ## Project Summary This project uses an ESP32-S2 and a 240x240 round GC9A01 TFT display to indicate which of two systems is currently active. At startup, a logo is displayed for approximately 10 seconds. After the startup period, the display shows either "SYSTEM A" or "SYSTEM B" based on the state of a GPIO input. ## Development Goals * Keep firmware simple and maintainable. * Minimize memory usage. * Avoid unnecessary dependencies. * Ensure fast boot and reliable operation. * Use Arduino IDE compatibility. ## Hardware ### MCU ESP32-S2 ### Display * GC9A01 * 240x240 pixels * SPI interface ### Input Single GPIO input used to determine: * HIGH = System A * LOW = System B ## Preferred Libraries ### Display * TFT_eSPI ### Image Support * TFT_eSPI sprite functions * PROGMEM image storage ## Display Behaviour ### Startup * Initialize display. * Show startup logo. * Hold logo for approximately 10 seconds. ### Normal Operation Display one of: SYSTEM A or SYSTEM B The display should update immediately if the input state changes. ## Coding Standards * Use clear descriptive variable names. * Avoid dynamic memory allocation. * Store constant strings in flash where practical. * Keep functions small and focused. * Comment hardware-specific sections. ## File Structure src/ ├── main.ino ├── display.cpp ├── display.h ├── logo.h └── config.h ## Expected Features ### Required * Display initialization * Startup logo * GPIO monitoring * System A/B status display ### Optional * Screen dimming * Custom fonts * Status icons * Animated transitions ## Notes This is an embedded appliance-style device intended for continuous operation in a rack-mounted environment. Reliability and simplicity take priority over additional features.