Fix web OTA upload and isolate OTA sessions across firmware and goTool.
Split ESP-NOW into core/master/slave modules, block non-OTA UART traffic during updates, and hold the host serial port exclusively so dashboard polling cannot interleave with firmware uploads. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -140,8 +140,9 @@ Implementierung: `uart.c` — `parse_uart_byte()`, `uart_send_framed()`.
|
||||
1. `uart_read_task` parst Frames → `uart_enqueue_packet`
|
||||
2. `generic_msg_t` → `cmd_queue`
|
||||
3. `vCmdDispatcherTask` → registrierter `msg_callback_t`
|
||||
4. Handler: `uart_cmd_decode(data, len, &msg)` — `data` ist **nur** protobuf-Teil
|
||||
5. Antwort: `uart_cmd_init_response()` + Felder setzen + `uart_cmd_send()`
|
||||
4. Handler: `uart_cmd_decode(data, len, &msg)` — `data` ist **nur** protobuf-Teil; bei `len > 0` strikt (Decode/`which_payload`-Fehler → Fehlerantwort)
|
||||
5. `ota_session_uart_cmd_allowed()` — während OTA nur OTA-Befehle
|
||||
6. Antwort: `uart_cmd_init_response()` + Felder setzen + `uart_cmd_send()`
|
||||
|
||||
Hilfsmakro für Request-Felder:
|
||||
|
||||
@@ -404,7 +405,10 @@ Includes in generierten `.pb.c` müssen `"uart_messages.pb.h"` heißen (nicht `m
|
||||
|
||||
| Datei | Rolle |
|
||||
|-------|--------|
|
||||
| `esp_now_comm.c` | WiFi, ESP-NOW, alle Rollen-Tasks |
|
||||
| `esp_now_comm.c` | Init, recv-Router |
|
||||
| `esp_now_core.c` | WiFi, Peer, gemeinsamer Send |
|
||||
| `esp_now_master.c` | Master-Tasks, Registry, Unicast send |
|
||||
| `esp_now_slave.c` | Join, Heartbeat, Accel/Tap send |
|
||||
| `esp_now_proto.c` | nanopb für EspNowMessage |
|
||||
| `client_registry.c` | Slave-Tabelle + Telemetrie-Cache |
|
||||
|
||||
@@ -436,7 +440,8 @@ Includes in generierten `.pb.c` müssen `"uart_messages.pb.h"` heißen (nicht `m
|
||||
| `pod_settings.c` | NVS |
|
||||
| `pod_reboot.c` | Verzögerter Restart |
|
||||
| `ota_uart.c` | Flash-Puffer UART-OTA |
|
||||
| `ota_espnow.c` | OTA an Slaves |
|
||||
| `ota_espnow.c` | OTA Master/Slave; Slave-Work-Queue |
|
||||
| `ota_session.c` | OTA-Sperre für UART-Dispatcher |
|
||||
|
||||
### 14.5 Protobuf
|
||||
|
||||
|
||||
Reference in New Issue
Block a user