Die Abfrage erschien nicht, sobald der Cold-Extraction-Modus noch aktiv war — und
da er seit 5.3.1 persistent ist, war er das nach dem ersten kalten Bezug dauerhaft.
Damit erklärt sich, warum weder der Schalter- noch der Touch-Weg etwas zeigte.
Die Bedingung "Modus ist aus" war falsch gedacht ("sonst gibt es nichts zu fragen").
Die Auswahl muss in beide Richtungen gehen, also auch von kalt zurück auf Espresso.
Sonst hängt man nach dem ersten kalten Bezug im kalten Modus fest, ohne beim
Aufwecken je wieder gefragt zu werden.
- Bedingung aus beiden Öffnungspfaden entfernt (Standby-Übergang und Kaltstart).
- Das Fenster bleibt bei aktivem Modus offen; bisher schloss es sofort wieder.
- "wakeEspresso" beendet jetzt einen laufenden Modus, statt ihn nur nicht
einzuschalten — sonst wäre die Auswahl eine Einbahnstraße.
- Diagnose auf /Cold-Extraction listet den Modus nicht mehr als Voraussetzung,
sondern zeigt ihn als Ist-Zustand.
- P4: Der Cold-Knopf zeigt den Ist-Zustand ("aktiv lassen" und hervorgehoben, wenn
der Modus läuft).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
93 lines
4.9 KiB
C
93 lines
4.9 KiB
C
// =====================================================================================
|
|
// JC4880P443C-I-W - Touch-Display-Firmware fuer die Dual-PID-Siebtraegersteuerung
|
|
// config.h - zentrale Konfiguration (Pins, UART, Protokoll)
|
|
// =====================================================================================
|
|
//
|
|
// Ziel-Hardware: Guition JC4880P443C-I-W
|
|
// - MCU: ESP32-P4 (UI / LVGL)
|
|
// - WLAN: ESP32-C6 (hier NICHT genutzt - WLAN/Webinterface laufen auf der Hauptplatine)
|
|
// - Display: ST7701 (480 x 800 IPS, MIPI-DSI)
|
|
// - Touch: GT911 (kapazitiv, I2C)
|
|
// - Audio: ES8311 (optional)
|
|
//
|
|
// Diese Firmware ist ein reiner UART-Client. Quelle der Wahrheit ist die Hauptplatine
|
|
// (ESP32-S3, Dual_PID_FastHeatUp.ino). Siehe Doku/JC-Display_UART-Protokoll.md.
|
|
// =====================================================================================
|
|
|
|
#pragma once
|
|
|
|
// -------------------------------------------------------------------------------------
|
|
// Panel-Modus (C-sicher hier definiert, da auch board_bringup.c ihn liest)
|
|
// 0 = Stub-Modus (kein Display-Treiber; Protokoll/Logik-Test)
|
|
// 1 = echte Hardware (Hersteller-BSP; siehe README)
|
|
// -------------------------------------------------------------------------------------
|
|
#ifndef JC_USE_REAL_PANEL
|
|
#define JC_USE_REAL_PANEL 1
|
|
#endif
|
|
|
|
// -------------------------------------------------------------------------------------
|
|
// DIAGNOSE: interner UART-Loopback-Selbsttest
|
|
// 1 = TX wird chip-intern auf RX gelegt (kein Draht, keine Pin-Unsicherheit).
|
|
// -> Laeuft "RX byte" im Debug-Panel hoch, sind Firmware+UART ok und das
|
|
// Problem liegt definitiv an Pins/Verkabelung. Bleibt es 0, ist es die
|
|
// Firmware/UART-Seite. NACH dem Test wieder auf 0 setzen!
|
|
// -------------------------------------------------------------------------------------
|
|
#ifndef UART_SELFTEST_INTERNAL_LOOPBACK
|
|
#define UART_SELFTEST_INTERNAL_LOOPBACK 0
|
|
#endif
|
|
|
|
// -------------------------------------------------------------------------------------
|
|
// DIAGNOSE: gruenes On-Screen-Debug-Panel (UART-Zaehler/letzte Rohzeile)
|
|
// 0 = aus (normale UI). 1 = Panel unten einblenden (fuer UART-Fehlersuche).
|
|
// -------------------------------------------------------------------------------------
|
|
#ifndef SHOW_DEBUG_OVERLAY
|
|
#define SHOW_DEBUG_OVERLAY 0
|
|
#endif
|
|
|
|
// -------------------------------------------------------------------------------------
|
|
// UART zur Hauptplatine
|
|
// -------------------------------------------------------------------------------------
|
|
// Gegenseite (S3): Serial1, 230400 8N1, TX=GPIO43 / RX=GPIO44.
|
|
// Verkabelung gekreuzt: S3-TX(43) -> P4-RX, S3-RX(44) -> P4-TX, GND <-> GND.
|
|
//
|
|
// Pins laut Schaltplan "4_USB&IO.png" (Expand-IO-Header JP1). Frei herausgefuehrte
|
|
// P4-GPIOs dort: 52/51/50/49/35/34/33/32/31/30/29/28 (+ ES_I2C, +3V3/+5V/GND).
|
|
// Die rechte Header-Spalte (C6_U01TXD/C6_I10RXD/...) gehoert zum ESP32-C6 -> NICHT nutzen.
|
|
// Gewaehlt: P4-TX = GPIO33, P4-RX = GPIO31.
|
|
// JP1 GPIO33 (P4 TX) ----> S3 GPIO44 (RX)
|
|
// JP1 GPIO31 (P4 RX) <---- S3 GPIO43 (TX)
|
|
// JP1 GND ---- S3 GND
|
|
#define DISPLAY_UART_PORT Serial1
|
|
#define DISPLAY_UART_BAUDRATE 230400
|
|
#define DISPLAY_UART_TX_PIN 33
|
|
#define DISPLAY_UART_RX_PIN 31
|
|
|
|
// -------------------------------------------------------------------------------------
|
|
// Firmware
|
|
// -------------------------------------------------------------------------------------
|
|
#define DISPLAY_FW_VERSION "1.4.1" // Firmware-Stand der P4-Display-Steuerung (Info-Seite)
|
|
|
|
// -------------------------------------------------------------------------------------
|
|
// Protokoll
|
|
// -------------------------------------------------------------------------------------
|
|
#define PROTO_EXPECTED_VERSION 2 // muss zur S3-Firmware passen (TOUCH_UART_PROTOCOL_VERSION)
|
|
// Die State-Zeile der S3 kann mit langem Status-/Profil-/SSID-Text ueber 2 KB gehen. Wird
|
|
// das Limit erreicht, verwirft der Client die GANZE Zeile und das Display friert auf dem
|
|
// letzten Stand ein -> Reserve deutlich groesser als der reale Bedarf (~2,3 KB).
|
|
#define PROTO_RX_LINE_MAX 4096 // max. eingehende Zeilenlaenge (Bytes)
|
|
#define PROTO_HEARTBEAT_MS 5000 // Intervall fuer 'ping' (S3-Timeout = 15 s)
|
|
#define PROTO_HELLO_RETRY_MS 2000 // erneuter 'hello'-Versuch, solange nicht verbunden
|
|
#define PROTO_LINK_TIMEOUT_MS 8000 // ohne empfangene Nachricht -> Verbindung gilt als tot
|
|
|
|
// -------------------------------------------------------------------------------------
|
|
// Display / LVGL
|
|
// -------------------------------------------------------------------------------------
|
|
// Querformat: Panel ist physisch 480x800, per Rotation 90 (pins_config.h) -> 800x480.
|
|
#define DISP_HOR_RES 800
|
|
#define DISP_VER_RES 480
|
|
#define LVGL_TICK_MS 5
|
|
|
|
// Debug-Ausgaben ueber USB-CDC (nicht ueber den Display-UART!)
|
|
#define DBG_SERIAL Serial
|
|
#define DBG_BAUD 115200
|