#ifndef V2X_DISPLAY_H #define V2X_DISPLAY_H #include /* ST7735 Display: 80x160 Pixel, SPI */ #define DISP_W 80 #define DISP_H 160 /* Display-Pins (T-Dongle-C5 ST7735) */ #define DISP_GPIO_CS 10 #define DISP_GPIO_RST 1 #define DISP_GPIO_BL 0 #define DISP_GPIO_SDA 2 /* MOSI */ #define DISP_GPIO_SCK 6 /* Farben */ #define DISP_COLOR_BLACK 0x0000 #define DISP_COLOR_WHITE 0xFFFF #define DISP_COLOR_RED 0xF800 #define DISP_COLOR_GREEN 0x04E0 #define DISP_COLOR_BLUE 0x001F #define DISP_COLOR_CYAN 0x07FF #define DISP_COLOR_YELLOW 0xFFE0 #define DISP_COLOR_MAGENTA 0xF81F #define DISP_COLOR_GRAY 0x6B4D /* Zeichenmodus */ typedef enum { DISP_MODE_OVERWRITE, DISP_MODE_XOR, } disp_draw_mode_t; /* Schriftgrößen */ typedef enum { FONT_6x8 = 0, /* 6x8 Pixel pro Zeichen */ FONT_8x16 = 1, /* 8x16 Pixel pro Zeichen */ } disp_font_t; /* Initialisierung */ esp_err_t v2x_display_init(void); /* Display ausschalten (Energiesparen) */ esp_err_t v2x_display_off(void); /* Screen löschen */ esp_err_t v2x_display_clear(uint16_t color); /* Rechteck zeichnen */ esp_err_t v2x_display_rect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color, bool filled); /* Text zeichnen */ esp_err_t v2x_display_text(int16_t x, int16_t y, const char *text, uint16_t color, disp_font_t font); /* Linie zeichnen */ esp_err_t v2x_display_line(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color); /* Fortschrittsbalken */ esp_err_t v2x_display_progress_bar(int16_t x, int16_t y, int16_t w, int16_t h, float progress, uint16_t fg_color, uint16_t bg_color); /* Frame-Counter (großes rotes Nummernfeld) */ esp_err_t v2x_display_frame_count(uint32_t count); /* RSSI-Grafik (Balken) */ esp_err_t v2x_display_rssi_gauge(int8_t rssi); /* Frame-Info als Zeile (wird im Scroller verwendet) */ typedef struct { uint8_t msg_type; int8_t rssi; uint8_t channel; uint8_t bssid_last3[3]; /* nur letztes Drittel der BSSID für Anzeige */ } disp_frame_info_t; /* Ein Frame als Zeile rendern (wird an Scroller übergeben) */ esp_err_t v2x_display_render_frame_line(int16_t x, int16_t y, const disp_frame_info_t *info, uint16_t bg_color); /* === Frame-Scroller === */ void scroller_add_entry(uint8_t msg_type, int8_t rssi, uint8_t ch, const uint8_t *bssid); void scroller_redraw(void); void scroller_redraw_line(uint32_t entry_idx); /* === Display UI Task === */ void v2x_display_ui_task(void *pvParameters); /* === Globale Display-Variablen (extern für andere Module) === */ extern esp_lcd_panel_handle_t g_disp_panel; extern bool g_disp_initialized; #endif /* V2X_DISPLAY_H */