# RC Ultimate — katalog funkcí TX a RX

Stav zdrojového průchodu: **9. září 2026**. Rozsah: aktivní TX a RX firmware v pracovním stromu, primárně `tx_lolin_s3_mini` a `rx_lolin_s3_mini_v2`, včetně napojeného světelného modulu STM8 0.8.

Tento dokument odpovídá na otázku **„Co celé rádio skutečně dělá, od otočení enkodérem až po vnitřní ochrany a přenosy?“** Vznikl kontrolou vstupů, menu, webových stránek, jejich obsluhy, RX výpočtů, transportu a provozních služeb. Nejde pouze o přepis dosavadního přehledu ani o seznam názvů C++ funkcí.

Popisuje současné zdrojáky včetně beta změn. Sám nepotvrzuje, že každý bod je v konkrétní právě nahrané binárce. Praktické ověření přebírá pouze tam, kde je zaznamenané v [WE_HAVE](../WE_HAVE.md); otevřené testy mají autoritativní seznam v [TODO](../TODO.md). Při tomto průchodu se neprováděl nový HW test, build, upload ani deploy.

## Obsah

1. [Celková mapa](#1-celková-mapa)
2. [Fyzické ovládání a zpracování vstupů](#2-fyzické-ovládání-a-zpracování-vstupů)
3. [TFT obrazovky a ovládání](#3-tft-obrazovky-a-ovládání)
4. [Rychlé Drive menu](#4-rychlé-drive-menu)
5. [Hlavní TFT menu](#5-hlavní-tft-menu)
6. [WebSetup a kalibrace](#6-websetup-a-kalibrace)
7. [TX profily a jízdní varianty](#7-tx-profily-a-jízdní-varianty)
8. [RX Profiler, výstupy a záloha](#8-rx-profiler-výstupy-a-záloha)
9. [Vnitřní jízdní funkce RX](#9-vnitřní-jízdní-funkce-rx)
10. [Světla a externí STM8](#10-světla-a-externí-stm8)
11. [Teploty a ventilátory](#11-teploty-a-ventilátory)
12. [Baterie a napájení](#12-baterie-a-napájení)
13. [Safety a failsafe](#13-safety-a-failsafe)
14. [Rádiový přenos a vyhledání RX](#14-rádiový-přenos-a-vyhledání-rx)
15. [Potvrzované servisní operace](#15-potvrzované-servisní-operace)
16. [Wi-Fi a komunikace webů](#16-wi-fi-a-komunikace-webů)
17. [OTA](#17-ota)
18. [Diagnostika a blackbox](#18-diagnostika-a-blackbox)
19. [Ukládání a vnitřní runtime](#19-ukládání-a-vnitřní-runtime)
20. [Rozhraní API](#20-rozhraní-api)
21. [Hranice, rezervy a rozdíly proti starším přehledům](#21-hranice-rezervy-a-rozdíly-proti-starším-přehledům)
22. [Mapa zdrojového pokrytí](#22-mapa-zdrojového-pokrytí)

## 1. Celková mapa

### Současný pinout a softwarová kapacita

| Oblast | Kapacita firmware | Aktivní přiřazení v současném pinoutu |
|---|---|---|
| TX analogové osy | A0–A3 | A0 a A1; A2/A3 mají pin −1 |
| TX digitální SV | SV1–SV8 | SV1 a SV2; SV3–SV8 mají pin −1 |
| TX analogové SV | Čtyři polohy SV9–SV12 | SVC vstup je zapnutý; skutečné polohy vyžadují odpovídající odporový ovladač |
| TX další ovládání | Enkodér, jeho tlačítko, TFT a měření baterie | Piny těchto částí jsou přiřazené |
| RX lokální OUT | 16 konfiguračních slotů | V2 má OUT1–OUT15; počet aktivovaných určuje profil |
| RX servo generátory V2 | 6 současně | 2 rychlé a 4 pomocné; nejde o 15 nezávislých servo generátorů |
| External světla | 16 persistentních pozic | STM8 0.8 poskytuje OUT0–OUT10 |

Tabulka dokládá kompilované přiřazení pinů, nikoli novou fyzickou kontrolu zapojení. TX má pro TFT a nRF oddělené SPI sběrnice. Buzzer je v aktuálním TX i RX V2 vypnutý (`−1`); zvukové nebo hlasové alarmy proto nejsou doloženou součástí současné obsluhy. RX V2 nemá zapnuté rychlostní/tacho vstupy.

### Funkční členění

```text
RC Ultimate
├─ TX: vysílač
│  ├─ analogové osy, přepínače, enkodér
│  ├─ kalibrace, mapování, trim, expo, D/R, endpointy
│  ├─ modelové profily a jízdní varianty
│  ├─ TFT: jízda, diagnostika, rychlé ovládání, nastavení
│  ├─ safety gate, tempo, dohled nad spojením a baterií
│  ├─ WebSetup, zprostředkování RX API, OTA koordinace
│  └─ incidentní a crash diagnostika
├─ RF: nRF24
│  ├─ průběžné řízení a zpětná telemetrie
│  ├─ potvrzovaný service kanál a Wi-Fi provisioning
│  ├─ scan, identita RX, adaptivní výkon
│  └─ měření kvality a lokální obnova rádia
├─ RX: přijímač
│  ├─ steering, throttle, diferenciály, převod, naviják
│  ├─ asistence řazení, volitelná pulzní brzda
│  ├─ světelná logika a mapování OUT
│  ├─ teploty, ventilátory, voltmetr
│  ├─ autonomní safety, battery guard, thermal guard
│  └─ profily, webové API, OTA, incidentní záznam
└─ STM8: externí světelný modul
   ├─ 11 skutečných světelných výstupů
   ├─ HW PWM a soft-PWM, blikání a přechody
   └─ atomická konfigurace, timeout, opětovné připojení
```

**Jak číst stav funkce:** „uživatelská“ má dostupné ovládání v TFT/webu; „automatická“ běží sama; „API“ je implementovaná obsluha bez nutně vykresleného tlačítka; „podmíněná“ závisí na HW nebo překladu; „rezerva/částečná“ nemá doloženou celou cestu až k účinku. Nastavená a skutečně provedená hodnota nejsou vždy totéž. Zejména ACK není měření fyzické polohy serva.

## 2. Fyzické ovládání a zpracování vstupů

### 2.1 Analogové vstupy

- Čtyři logické analogové vstupy **A0–A3**. Fyzicky nepřítomný pin se přeskočí.
- Přiřaditelné role **STEER, THROTTLE, AUX0, AUX1**, případně vypnutí role/zdroje. V protokolu se dvě pomocné osy jmenují `aux1` a `aux2`.
- Globální HW kalibrace každého vstupu: minimum, střed, maximum, invert a deadband.
- Přepočet obou polovin dráhy samostatně kolem kalibrovaného středu na rozsah −1000 až +1000.
- Potlačení drobného pohybu kolem středu a přepočet zbytku dráhy tak, aby zůstala dostupná plná výchylka.
- Další profilová inverze, trim, expo, dual rate a samostatné minimum/maximum výstupu.
- Kladné expo zjemňuje střed; záporné ho zostřuje. D/R zmenšuje celkový rozsah, endpointy omezují výslednou výchylku.
- Záporná větev THROTTLE má navíc pevné mírné nelineární zjemnění. Je to tvarování podle polohy páky, nikoli časově řízené pomalé rozjíždění. Nemá samostatný přepínač v UI.
- Safety dostává samostatnou kalibrovanou hodnotu s deadbandem. Profilový trim, expo a D/R se proto nemají zaměňovat s fyzickým zjištěním neutrálu.
- ADC sampler po přepnutí kanálu zahodí první převod, nechá ustálit vstup a použije EMA filtr. V jednom kroku měří jednu přítomnou osu; 1kHz task neznamená 1 kHz pro všechny čtyři osy současně.

### 2.2 Přepínače a tlačítka

- **SV1–SV8** jsou fyzické digitální vstupy.
- **SV9–SV12** vznikají dekódováním čtyř pásem pomocného ADC vstupu SVC, pokud ho deska má. Jsou to možnosti analogového ovladače; v jednom vzorku SVC vychází nejvýše jedna z těchto poloh.
- Rozlišuje se stav držení, krátký stisk a dlouhý stisk. SV krátký stisk používá interval přibližně 100–700 ms, dlouhý se vyvolá po 2 s.
- Model konfigurace má pro každý slot zvlášť `hold`, `click` a `long` vazbu. Web nabízí běžné chování **DIRECT, CLICK TOGGLE a LONG TOGGLE**; SMART akce mají vlastní význam krátkého a dlouhého stisku.
- Přiřaditelné akce zahrnují přední/zadní diferenciál, vysoký převod, hlavní světla, dálková, maják, rampu, SMART diferenciály, SMART světla a změnu jízdní varianty.
- `PBRAKE` je také nabízená akce, ale v současném RX nemá dohledaný účinek na výstup. Podrobnost je v kapitole 21.
- Pokud nejsou nakonfigurované žádné akce, existuje kompatibilní základní mapování prvních čtyř SV na přední diff, zadní diff, převod a světla.

### 2.3 Přesné chování SMART

| Akce | Krátký stisk | Dlouhý stisk |
|---|---|---|
| SMART DIFF | Z vypnuta zapne zadní diff; další stisky střídají zadní a oba diferenciály | Vypne oba |
| SMART BEAMS | Z vypnuta zapne hlavní světla; další stisky střídají hlavní a dálková | Vypne hlavní i dálková |
| DRIVE MODE | Posune jízdní variantu dopředu | Posune variantu zpět |

Zdroje: [tx_io.cpp](../lib/tx_io/src/tx_io.cpp), [tx_inputs.cpp](../lib/inputs/src/tx_inputs.cpp), [rc_math.h](../lib/common/include/rc_math.h), [configstore.h](../lib/configstore/include/configstore.h), [webový Profiler](../lib/webcore/src/webcore_profiler_page.cpp).

## 3. TFT obrazovky a ovládání

### 3.1 Enkodér

| Úkon | Výsledek |
|---|---|
| Otočení mimo menu | Přepíná CAR → ADC → TX-STATS → STATUS → STATS → CAR; opačně opačné pořadí |
| Jeden klik na CAR | Po skončení okna pro dvojklik otevře Drive menu |
| Otočení v menu | Výběr řádku nebo změna editované hodnoty |
| Klik v menu | Vstup do položky, editace nebo potvrzení podle konkrétní karty |
| Dvojklik | Hlavní menu; v kontextu otevřeného menu také návrat podle jeho úrovně |
| Držení přibližně 1,2 s v hlavním menu | Uložení rozpracovaných nastavení; u vzdálených karet čekání na potvrzení RX |
| Držení přibližně 5 s | Přepnutí Setup Wi-Fi, pokud stisk neblokuje safety/battery dialog; při držení v hlavním menu může nejprve v 1,2 s proběhnout save a poté v 5 s přepnutí setupu |

Jednotlivé kontexty si vstup přebírají: například klik na battery cutoff dialogu není zároveň klik do Drive menu. SCAN, SETUP a SETUP_WIFI jsou kontextové obrazovky, nikoli další tři položky běžného pětiobrazovkového kruhu.

### 3.2 Co jednotlivé obrazovky ukazují

| Obrazovka | Funkce |
|---|---|
| **CAR** | Schéma auta, diferenciály, převod LO/HI, světla, blinkry, maják/rampa, teploty ENG/ESC, jízdní varianta, baterie a link |
| **ADC** | Živá diagnostika analogu; raw/zpracovaná hodnota, pozorované minimum/maximum, zdroj řízení a jeho kalibrace, trim, invert, endpointy, D/R a expo |
| **TX-STATS / USRSTATS** | Vytížení jader a paměťové statistiky RAM/PSRAM podle dostupnosti HW |
| **STATUS** | Obsah průběžného TX paketu a ACK: osy, masky, flags, telemetrie, RF čas a diagnostika |
| **STATS** | Stav spojení, kvalita/čas RF, lokální a vzdálený PA, napětí a teploty |
| **SCAN** | Probíhající RF hledání, nalezené kanály a jména, výběr výsledku |
| **SETUP_WIFI** | Nakonfigurovaný a skutečný Wi-Fi režim, SSID, IP TX a dostupnost/IP RX |

### 3.3 Hlášení a zobrazení stavu

- `CONNECTED` s identitou skutečného RX; nový nepojmenovaný přijímač může hlásit `NEW`.
- Indikace rozdílu požadavku a RX aplikovaného stavu zejména u diff/gear.
- `SIGNAL LOST` se odvozuje od potvrzeného linkového stavu včetně grace, ne od jediného chybějícího ACK payloadu.
- Safety dialog ukazuje nevyhovující osy, možnost pokračovat, přejít na trim nebo do setupu a následnou připravenost.
- Cutoff dialog, odpočet, čekání na potvrzení uspání nebo vypnutí guardu a chyba servisní operace.
- Tepelné varování/trip a samostatné barevné či blikající zvýraznění teplot ENG/ESC.
- Menu rozlišuje editaci, neuložený stav, načítání, čekání na service a potvrzené uložení.
- TEMPO ukazuje požadovanou, fyzickou a výslednou hodnotu i důvod zrušení.

**Omezení indikace:** přijetí ACK ani `switches_act` nedokazuje, že servo mechanicky dojelo nebo že žárovka svítí. RX nemá v této cestě snímač polohy/proudu. Lokální TFT blinkrová animace je také odvozená indikace, nikoli přenos fáze každého světelného výstupu.

### 3.4 Vnitřní obsluha displeje

- Samostatný UI task a předávání posledního úplného modelu; běžná obnova modelu po 100 ms.
- Překreslování změněných oblastí a cachování obsahu.
- PWM řízení jasu podsvitu.
- Stavy displeje RUN/SLEEP/OFFLINE a interní požadavek na opětovnou inicializaci.
- Podpora boot obrázku a animace z LittleFS s náhradními cestami. Současný TX má vypnutou synchronní boot sekvenci; dostupnost konkrétního obrázku závisí na souborech ve flash.
- Před TX battery sleepem požadavek na skutečné vykreslení kritického hlášení, omezené čekání, čitelná prodleva a zhasnutí podsvitu.

Zdroje: [ui.cpp](../lib/ui/src/ui.cpp), [runtime obrazovky](../lib/ui/src/ui_tft_runtime_views.cpp), [CAR](../lib/ui/src/ui_tft_car_view.cpp), [setup obrazovky](../lib/ui/src/ui_tft_setup_views.cpp), [TX supervisor](../lib/supervisor/src/supervisor.cpp).

## 4. Rychlé Drive menu

### 4.1 LIGHTS

- Automatické blinkry ON/OFF.
- Ruční levý a pravý blinkr.
- Hazard.
- Hlavní světla, dálková, maják a světelná rampa.
- Ruční **brzdové světlo** a ruční zpátečkové světlo. Ruční brzdové světlo neznamená parkovací brzdu pohonu.
- Jas rampy **0–100 % po 5 %**. Při otevření editoru se skutečná RX hodnota znovu přečte.
- Běžné existující světelné bity se přenášejí v průběžném řízení. Ruční příspěvky a PWM se ovládají potvrzovanými service operacemi.
- Runtime PWM přepisuje společný aktuální jas rampy, ne její uložené `dim_duty`. Zaniká při restartu RX nebo novém apply konfigurace.

### 4.2 WINCH

- Otevření ovládání odjistí naviják potvrzenou operací při nulové rychlosti.
- Enkodér nastavuje **−100 až +100 % po 5 %**, záporně OUT, kladně IN.
- Klik odešle potvrzený **STOP**.
- Opuštění ovládání nejprve dokončí zastavení a následně disarm; výstup `WINCH_PWM` drží signál LOW.
- RX odmítne nenulovou rychlost bez armu nebo v setupu. Arm odmítne při failsafe/setupu.
- Při failsafe, setupu, restartu a apply konfigurace se naviják nuluje; příslušná disarm cesta ruší jeho odjištění. Při běžném link failsafe se nejprve uplatní bezpečná nulová rychlost a navazující servo disarm.
- Příkazy posílají absolutní rychlost, takže opakování stejného RF požadavku nepřidává další krok.
- Tato ovládací cesta vyžaduje nakonfigurovaný `WINCH_PWM`. Samotné `WINCH_IN/OUT` v nabídce OUT nejsou náhradou proporcionálního service ovládání.

### 4.3 TEMPO

- TX udržuje nastavený **povel plynu**, nikoli měřenou rychlost auta; není zde zpětná vazba rychloměrem.
- Aktivace při dopředném plynu zhruba **5–60 %**.
- Přechodová fáze požaduje uvolnění páky do **2 s**, poté převezme nastavenou hodnotu.
- Enkodér mění setpoint po **5 %**; vyšší fyzický plyn ho může dočasně překrýt.
- Zrušení brzdou, klikem/STOP, failsafem, změnou jízdní varianty, neúspěšným uvolněním plynu nebo vstupem do navijáku.
- TFT zobrazuje fázi a důvod ukončení.

Zdroje: [TX supervisor — car_menu a cruise](../lib/supervisor/src/supervisor.cpp), [RX supervisor — winch](../lib/supervisor/src/rx_supervisor.cpp), [service runtime](../lib/rx_service_runtime/src/rx_service_runtime.cpp).

## 5. Hlavní TFT menu

### 5.1 Adjust

| Karta | Nastavení | Použití a uložení |
|---|---|---|
| Steering / Throttle / Aux0 / Aux1 | Trim, minimum, maximum, expo; zobrazují se přiřazené role | Živá TX RAM editace, dlouhý stisk uloží |
| Front diff | OFF a ON poloha | RX přednačtení, potvrzený RAM zápis, samostatné potvrzené NVS uložení |
| Rear diff | OFF a ON poloha | Stejná cesta |
| Gear | LOW/OFF a HIGH/ON poloha | Stejná cesta |
| ABS brake | OFF/LINEAR/FIXED, frekvence, lineární duty min/max, pevné duty | Přednačtení pěti RX hodnot, RAM zápisy a jeden save celé RX konfigurace |

- Diff/gear pozice TFT vyjadřuje procenty kolem 1500 µs, rozsah −150 až +150 %, převod `1500 + procenta × 5 µs`.
- Vzdálená karta při otevření zneplatní starou kopii a sekvenčně načte skutečné RX hodnoty. Výběr již načteného řádku znovu neprovádí GET.
- První chyba přednačítání zastaví zbytek dávky. Neúspěšný zápis/uložení nepředstírá `SAVED` a zachová dirty stav.
- Trim steeringu se synchronizuje i do společného středu RX automatických blinkrů; potvrzení editace je RAM operace, dlouhé uložení persistentní.

### 5.2 Setup

- **Wi-Fi:** AP/CLIENT a stav synchronizace cíle RX. Karta režimu a samotné spuštění WebSetup jsou různé akce.
- **RF PA:** AUTO/MIN/LOW/HIGH/MAX. Jde o dočasný provozní override, ne uloženou vlastnost modelového profilu.
- **Display brightness:** 1–100 %, změna ihned, persistuje explicitním uložením.
- **Safety / idle failsafe:** Off, 15, 30, 60, 120 nebo 300 s.
- **Logs:** čtení a persistentní zapnutí/vypnutí TX a RX loggeru. RX stav se při vstupu potvrzeně načte.
- **Erase all:** nejprve úspěšně smaže RX, teprve potom TX failsafe a crash logy. Nedostupný/BUSY RX nezpůsobí smazání TX části.
- **OTA:** oddělené řádky stable a beta, TX/RX/TX+RX, CURRENT, PAIR WAIT a potvrzení/odložení instalace.
- **RF scan:** hledání a výběr dostupného RX/kanálu; podrobně kapitola 14.

Zdroj: [tx_menu_controller.cpp](../lib/supervisor/src/tx_menu_controller.cpp), [napojení menu v supervisoru](../lib/supervisor/src/supervisor.cpp).

## 6. WebSetup a kalibrace

### 6.1 Stránky

TX hostuje **Status** (`/`), **Calibration** (`/calib`) a **Profiler** (`/profiler`). WebSetup se používá v bezpečném setup režimu. RX poskytuje vlastní HTTP API; TX zprostředkovává jeho operace do společného rozhraní v prohlížeči.

### 6.2 Status

- Stav linku, kvalita spojení, stáří vstupu RX, uptime, setup/failsafe.
- Aktivní profil, jízdní varianta a UI/RF kanál.
- TX/RX baterie, teploty TX a RX ENG/ESC.
- Nakonfigurovaný/skutečný Wi-Fi režim, IP a online presence RX oddělená od RF linku.
- Výběr AP/CLIENT, SSID, heslo a cílový `TX host (client)` pro síťové spojení; výběr SSID ze scanu s RSSI a informací o zabezpečení.
- TX/RX bateriové profily, RX Battery Guard a kalibrace RX voltmetru.
- Seznam teplotních senzorů, role ENG/ESC, editor fan křivek a informace o přiřazeném OUT ventilátoru.
- Stav TX/RX blackboxu, zapnutí/vypnutí, zpřístupnění seznamu a stažení záznamů, oddělené mazání.
- Ukončení setupu.

### 6.3 Calibration

- Výběr A0–A3 a živé sledování raw i kalibrované hodnoty.
- Start relace, sběr krajních poloh, `Set center` s průměrováním vzorků.
- Zmrazení zjištěných mezí a kontrola výsledku před uložením.
- Změna/reset deadbandu v připravené relaci; náhled se propisuje do RAM.
- Inverze vstupu.
- `Save` uloží globální kalibraci, `Dismiss` bez předchozího save obnoví původní RAM kalibraci.
- Inverze mimo rozpracovanou relaci a úpravy po již úspěšném save mohou ukládat ihned. Neplatí proto obecné pravidlo „na kalibrační stránce se nic neuloží bez dalšího Save“.

Zdroje: [Status](../lib/webcore/src/webcore_status_page.cpp), [Calibration](../lib/webcore/src/webcore_calib_page.cpp), [calib.cpp](../lib/calib/src/calib.cpp), [webcore](../lib/webcore/src/webcore.cpp), [TX API adapter](../apps/tx_s3/src/app_web_api.cpp).

## 7. TX profily a jízdní varianty

- Až **10 TX profilů** pro modely, pojmenování, přidání, odstranění a aktivace.
- Každý profil určuje UI kanál 1–13 a tím RF kanál; UI 1 odpovídá RF 125, další klesají po 10 až na RF 5.
- Profil obsahuje **3 pojmenovatelné jízdní varianty** s vlastními osami a vazbami přepínačů.
- Volba aktivní varianty a přiřazení přepínače pro její změnu.
- Mapování zdrojů na role, inverze, trim, D/R, expo, endpointy.
- Editace SV vazeb a jejich chování.
- Nastavení idle failsafe. Runtime čte účinný timeout přes TX metadata; nelze bez rozlišení mluvit o druhé nezávislé safety politice pro každou variantu.
- **Apply TX** poskytuje RAM náhled upraveného aktivního profilu.
- **Save TX** ukládá profilová data a metadata; aktivní konfigurace se znovu aplikuje.
- **Revert** vrací rozpracovanou webovou editaci k načtenému základu.
- Backend má také **kopírování profilu** a **reset profilu** přes `/api/copy` a `/api/reset`. V prohlédnuté současné stránce pro ně není samostatné běžné tlačítko; jsou to API schopnosti.
- Scan může přizpůsobit aktivní TX profil nalezenému jménu/kanálu. To nenahrazuje RX konfiguraci fyzických výstupů.

Zdroje: [Profiler](../lib/webcore/src/webcore_profiler_page.cpp), [app_profiles.cpp](../apps/tx_s3/src/app_profiles.cpp), [app_web_api.cpp](../apps/tx_s3/src/app_web_api.cpp), [configstore.cpp](../lib/configstore/src/configstore.cpp).

## 8. RX Profiler, výstupy a záloha

### 8.1 Konfigurace přijímače

- Jméno RX, RF kanál, počet aktivních lokálních OUT a přiřazení funkce každému OUT.
- Logické OUT se překládají na GPIO podle vybrané desky. Profil se netvoří zadáváním libovolného fyzického GPIO.
- Datová kapacita lokální mapy je 16 slotů; RX V2 má 15 fyzicky přiřazených OUT, 2 rychlé a 4 pomocné servo kanály. Tabulky DOUT a běžného PWM mají po 16 runtime slotech, ale počet nezávislých výstupů stále omezuje počet dostupných GPIO. Metadata těchto kapacit publikuje RX.
- Nový RX začíná s **`out_count = 0`**, tedy bez automaticky aktivovaných lokálních výstupů.
- Kontrola parametrů, duplicit GPIO a dostupných prostředků výstupních driverů.
- `Fit RX to Active profile` sladí identitu/jméno a RF kanál s TX; nevygeneruje kompletní OUT mapu.
- **Apply RX** změní živou RAM konfiguraci. **Save RX** konfiguraci použije a uloží, web následně čte skutečný RX stav. **Reload** načte stav RX znovu.
- Změna funkce/pinu přestaví HW vazby. Běžná service editace pozice/duty drží stabilní identitu funkce a GPIO, takže zbytečně nepřiděluje nový HW kanál.

### 8.2 Nabídka lokálních OUT

| Funkce | Účinek / nastavení |
|---|---|
| NONE | Neaktivní slot |
| STEER | Servo řízení, střed pulzu a travel |
| THROTTLE | Servo signál pro ESC, střed pulzu a travel |
| FRONT_DIFF_SERVO | Přední diferenciál, OFF/ON poloha |
| REAR_DIFF_SERVO | Zadní diferenciál, OFF/ON poloha |
| GEAR_SHIFT_SERVO | Převod LOW/HIGH, OFF/ON poloha |
| WINCH_PWM | Proporcionální servo signál navijáku; střed a oba směrové endpointy |
| WINCH_IN, WINCH_OUT | Digitální výstupy podle příslušných wire bitů; omezení dostupného TX ovládání viz kapitola 21 |
| LIGHTS, HEADLIGHTS | Digitální hlavní světla |
| HIGH_BEAM | Digitální dálková světla |
| HEADLIGHTS_COMBINED | Jeden PWM kanál: tlumená hlavní / plná dálková |
| TAIL_BRAKE | Zadní a brzdové světlo, samostatná intenzita a čas přechodu |
| TAIL_LIGHTS_COMBINED | Tlumená zadní / plná brzdová |
| REVERSE_LIGHT | Zpátečkové světlo podle jízdní logiky nebo ručního příspěvku |
| BLINK_L, BLINK_R | Blinkry; společný střed, prahy zapnutí/vypnutí a rychlost |
| BEACON | Maják: trvalý svit nebo série 1/2/3 záblesků, čas záblesku, mezery, cooldown |
| LIGHTBAR | Zapínaná PWM rampa, konfigurovaný jas a runtime override |
| PWM_FAN_ENG, PWM_FAN_ESC | PWM ventilátory podle příslušné teplotní křivky |

Steering/throttle používají **200Hz servo signál**; pomocná serva diff/gear/winch **50 Hz**. `WINCH_PWM` je navzdory názvu servo pulzní řízení, nikoli běžný osmibitový LED PWM výstup. U steering/throttle RX dovoluje travel 0–200 % a konfigurovatelný střed, s konečným omezením pulzů ve výpočtu.

### 8.3 Servisní testování

- Webové tlačítko u předního diffu, zadního diffu a převodu zapíná **ON override** příslušného serva.
- Názvy JS `rxCycles`/`rxToggleRowCycle` neznamenají automatický cyklický pohyb: současná obsluha drží ON polohu.
- Setup brání pohonu plynem. Testovací override se týká jen zvolených cílů.
- Interní možnost steering testu existuje, ale jeho běžné vykreslení v Profileru je vypnuté.

### 8.4 Export a import

- Download uloží **JSON schema v6**. Upload přijímá schema **v1–v6**.
- Záloha obsahuje RX jméno/kanál, lokální OUT a parametry, External mapu a časování, bateriový profil a voltmetrovou kalibraci, senzory a fan křivky.
- Síťová hesla, API klíče, logy, telemetrie, testmode a OTA stav nejsou součástí tohoto formátu.
- Import dekóduje a validuje celý dokument před prvním zápisem a ověřuje možnosti cílové desky.
- Vyžaduje setup a potvrzený servo hard-disarm s omezenou platností požadavku.
- Provádí NVS save/readback; při chybě zápisu, ověření nebo apply se pokouší obnovit předchozí platnou konfiguraci. Nejde o záruku transakčního zápisu všech NVS bloků při libovolném výpadku napájení.
- Migrace starších profilů doplní ABS OFF a bezpečně vypnuté externí výstupy, pokud je starý formát neznal. Starší STM8 pořadí převádí podle fyzických výstupů do mapy s opraveným OUT2.

Zdroje: [RX web API](../lib/rx_web/src/rx_web_api.cpp), [RX profile codec](../lib/rx_profile_codec/src/rx_profile_codec.cpp), [rx_config.h](../lib/supervisor/include/rx_config.h), [rx_metahelper.cpp](../lib/supervisor/src/rx_metahelper.cpp), [rx_io.cpp](../lib/rx_io/src/rx_io.cpp), [servo_mcpwm.cpp](../lib/servo_mcpwm/src/servo_mcpwm.cpp).

## 9. Vnitřní jízdní funkce RX

### 9.1 Asistence diferenciálů a řazení

- Přední diff, zadní diff a převod oddělují **požadovaný** a **aplikovaný** stav.
- Nová změna čeká na malou absolutní výchylku plynu, přibližně do 5 %.
- Po přestavení serva následuje **100 ms usazení** a krátký **150ms povel dopředu na 10 %**, který pomáhá mechanickému zařazení.
- Během této sekvence je běžný plyn nahrazen neutrálem nebo uvedeným impulzem. Souběžné asistence se nesčítají; vybírá se nejvyšší požadovaný impulz.
- Aplikovaný diff/gear bit se změní až po dokončení sekvence a vrací se v ACK.
- Ve failsafe existuje dodatečná podmínka neutrálu odvozená od předchozí výchylky, až 5 s. Setup asistenci ruší a drží throttle na nule; konečný fyzický signál navíc podléhá servo disarmu.
- Jde o pevnou automatiku ve firmware, nikoli o uživatelsky nastavitelný „shift assist“ panel.

### 9.2 Rozpoznání brzdění a zpátečky pro světla

- Po dopředném plynu první výraznější tah do záporné strany znamená brzdovou fázi.
- Návrat do neutrálu otevře bránu zpátečky; další záporný povel může rozsvítit zpátečkové světlo.
- V režimu ABS OFF tato stavová logika rozhoduje o světlech; sama není další pulzní transformací throttle.
- Při aktivní ABS dodává informaci o brzdění/zpátečce přímo ABS automat, takže světla nevycházejí pouze z okamžité právě vypnuté PWM fáze brzdy.

### 9.3 Volitelná pulzní brzda „ABS“

- **OFF:** transparentní průchod RX throttle touto politikou.
- **LINEAR:** duty brzdových pulzů podle síly brzdového povelu mezi nastaveným minimem/maximem.
- **FIXED:** pevné duty při brzdění.
- Nastavitelná obálka **5–50 Hz**, duty **0–100 %**. Servo carrier pro ESC zůstává na 200 Hz.
- Střídá brzdný endpoint s neutrálem; je určená i pro ESC bez proporcionální brzdy.
- Skutečný neutrální vstup v toleranci ±20 z 1000 po alespoň 100 ms připraví přechod do zpátečky. Umělé neutrální mezery mezi brzdovými pulzy se za uvolnění páky nepovažují.
- Zpátečka je proporcionální a bez ABS pulzů.
- Apply nastavení, failsafe, setup a asistence řazení resetují/přerušují příslušný ABS stav.
- Frekvence a duty jsou omezené 5ms řídicím krokem; vysoká frekvence má hrubší dosažitelné rozlišení.
- Název ABS zde neznamená měření prokluzu kol. Jde o otevřenou pulzní brzdu bez snímačů rychlosti kol.

Zdroje: [rx_supervisor.cpp](../lib/supervisor/src/rx_supervisor.cpp), [rx_metahelper.cpp](../lib/supervisor/src/rx_metahelper.cpp), [policy_brake_abs.cpp](../lib/policy/src/policy_brake_abs.cpp).

## 10. Světla a externí STM8

### 10.1 Společná logika světel

- Automatické blinkry mají rozdílné prahy ON/OFF kolem nastavitelného středu, tedy hysterezi.
- Ruční levý/pravý příspěvek se kombinuje s automatickým požadavkem a hazardem.
- Hazard rozblikává obě strany společně. Failsafe na RX vynucuje hazard a aktivuje také požadavek majáku.
- Maják umí trvalý svit nebo 1/2/3 záblesky s nastavitelnými časovými mezerami.
- Hlavní a dálková světla mohou být oddělené digitální funkce nebo kombinovaný PWM kanál.
- Zadní/brzdová světla mají kombinované varianty, případně samostatné intenzity a náběh.
- Runtime jas rampy je společný pro odpovídající světelnou funkci.
- RX sestaví jeden logický stav pro lokální i externí světla. Externí modul nepřebírá rozhodování, zda auto právě brzdí či couvá.
- Když se stejná funkce používá lokálně i externě, její parametry se sjednocují; External blok zachovává vlastní data pro funkce používané jen externě a pro kompatibilitu profilu.

### 10.2 Skutečné schopnosti STM8 0.8

- **11 výstupů OUT0–OUT10**.
- **HW PWM:** OUT0, OUT1, OUT2, OUT9, OUT10.
- **Soft-PWM:** OUT3–OUT8.
- RX má **16 persistentních External pozic**; počet dostupných řádků stanoví skutečný počet kanálů v odpovědi modulu.
- Přiřazení FRONT/HEADLIGHTS_COMBINED, REAR/TAIL_LIGHTS_COMBINED, BLINK_L, BLINK_R, REVERSE, LIGHTBAR a BEACON.
- Kombinované FRONT/REAR vyžadují HW PWM; LIGHTBAR vyžaduje PWM. Nabídka respektuje capability a PWM masky.
- Protokol umí duty, fade, blink/beacon časování, komunikační timeout a failsafe duty. Web je prezentuje podle přiřazené funkce, ne nutně jako samostatný editor každého wire pole.
- Pro samostatnou externí funkci nabízí web podle capabilities primární/sekundární jas, failsafe jas a fade, u blinkrů rychlost/střed/prahy a u majáku režim a časování. Při odpovídající lokální funkci místo toho edituje její společné parametry. Digitální kanál má pevné 0/100 % bez fade.
- `WORK_LIGHT` je v protokolu i přiřazení, ale RX publikuje `work_on = false`; není to hotové samostatně ovladatelné pracovní světlo.

### 10.3 Připojení, přenos a obnova

1. RX zjistí dostupnost adresy světelného modulu **0x30**.
2. Načte `INFO` a ověří CRC, magic, verzi, schema, počet kanálů a velikosti.
3. Přenese konfiguraci po omezených blocích a požádá o commit.
4. Vyčká na potvrzení `CONFIGURED` se správnou generací.
5. Teprve pak posílá živý stav; běžný STATE interval je 150 ms, kontrola STATUS přibližně 1 s.

- Překonfigurování za běhu nejprve vyšle nulový stav a až po nové potvrzené generaci obnoví aktuální světla.
- Odpojení nesmaže profil. Po připojení se opakuje handshake a konfigurace.
- Neplatné přiřazení pro připojený modul zůstane v přenositelném profilu, ale modul ho dostane jako vypnuté.
- Offline nebo nekompatibilní modul ponechá External sekci viditelnou jen pro čtení.
- Napájený modul při ztrátě dat autonomně přejde po timeoutu na konfigurované failsafe duty.
- Neúplné čtení nebo chyba CRC automaticky neresetuje celou sdílenou I2C sběrnici.

### 10.4 I2C správce

- Samostatně hlídá známé adresy světelného modulu a MPU6050 na 0x68/0x69; nedělá plošný scan všech adres.
- Rozlišuje opakovaný address NACK a skutečnou poruchu sběrnice.
- Potvrzuje odpojení a zajišťuje opakované vyhledání bez restartu RX.
- Při bus error provede odložený bus-clear, uvolnění vodičů, nejvýše 9 pulzů SCL, STOP a novou inicializaci Wire.
- Publikuje snapshot dostupnosti a generaci obnovy; serial hlásí změnu ustáleného seznamu zařízení.
- **MPU6050 je zatím detekce adresy**, nikoli gyroskopické řízení, stabilizace nebo zpracování náklonu.

Zdroje: [rx_supervisor.cpp](../lib/supervisor/src/rx_supervisor.cpp), [rx_light_i2c.cpp](../lib/rx_light_i2c/src/rx_light_i2c.cpp), [I2C správce](../lib/i2c_devices/src/i2c_device_manager.cpp), [sdílený protokol](../i2c_light_module/lib/light_i2c_protocol/include/light_i2c_protocol.h), [STM8 projekt](../i2c_light_module/README.md).

## 11. Teploty a ventilátory

### 11.1 Měření ENG/ESC

- RX obsluhuje až **dva 1-Wire teplotní senzory** v samostatném tasku.
- Každý senzor má adresu, dostupnost, validitu, teplotu a čas posledního validního měření.
- Kontrola adresního CRC a podporované rodiny senzorů, diagnostika neplatného měření.
- Periodické znovuvyhledání přibližně po **5 s** umožňuje návrat odpojeného senzoru bez restartu.
- Asynchronní konverze s vyčkáním přibližně 750 ms; měření a čtení probíhá zhruba v sekundovém rytmu a neblokuje řídicí task RX.
- Vyhlazení platných teplot a přiřazení role **ENG** nebo **ESC** podle adresy; nelze jedním čidlem bez rozlišení obsadit obě role.
- Přenos ENG/ESC do ACK, zobrazení na TFT a detailnější údaje přes web.
- Hodnota v ACK je kompaktní celostupňová telemetrie. Detailní webový snapshot má bohatší informaci o platnosti/přítomnosti.

### 11.2 Regulace ventilátorů

- Každá role má vlastní křivku o **2–5 bodech**, teploty 0–100 °C a PWM 0–100 %.
- Mezi body se výkon lineárně interpoluje; PWM podél křivky nesmí klesat.
- Webový graf umožňuje editovat body, přidávat/odstraňovat je v dovoleném počtu a obnovit výchozí křivku.
- Funkci je nutné přiřadit na skutečný RX OUT jako `PWM_FAN_ENG` nebo `PWM_FAN_ESC`.
- Po startu se používá **2s rozběhový test na plný výkon**.
- Cílová hodnota se vyhodnocuje přibližně jednou za sekundu.
- Krátký výpadek již známého senzoru používá poslední platnou teplotu; po **10 s** bez ní se žádá plný výkon.
- Pokud není platný senzor vůbec k dispozici nebo role není přiřazena, aktivní fan výstup žádá plný výkon.
- Změna výkonu má rampu: nahoru rychleji, dolů pomaleji. Přechod cíle na 100 % tedy není totéž jako okamžité přeskočení výstupní rampy.
- Výpočet fanů pokračuje i při link failsafe; není podmíněn tím, že TX právě posílá dopředný plyn.

### 11.3 Tepelná ochrana samotného RX

- Thermal guard používá **interní teplotu jádra RX**, nikoli čidla ENG/ESC.
- V aktuální konfiguraci: warning od **85 °C po 5 s**, jeho zrušení pod **80 °C**; trip od **95 °C po 2 s** nebo bez čekání při validním vzorku **110 °C**.
- Trip je západka, která spustí safety sekvenci. Odkliknutí TFT popupu západku neruší.
- Důvod warning/trip se posílá diagnostickými bity ACK.
- Podpora zdroje interní teploty závisí na cílovém ESP32; nedostupné měření se neprezentuje jako platné.
- Fyzické odpojení napájení thermal power-cut GPIO ještě není hotové. Cílený HW test warning/trip je v TODO.

Zdroje: [rx_io.cpp](../lib/rx_io/src/rx_io.cpp), [fan_update v rx_supervisor.cpp](../lib/supervisor/src/rx_supervisor.cpp), [RX composition](../apps/rx_lolin32/src/main.cpp), [policy_thermal_guard](../lib/policy/src/policy_thermal_guard.cpp), [výchozí tepelné prahy](../lib/policy/include/policy_thermal_guard.h).

## 12. Baterie a napájení

### 12.1 Měření a nastavení

- TX i RX měří napětí baterie a používají vyhlazené hodnoty.
- Bateriový profil určuje počet článků a **full / nominal / cutoff na článek**. Web nabízí TX 1S/2S a RX 2S/3S.
- Procenta se odvozují z napětí a parametrů profilu; nominal odpovídá 35 %, cutoff 0 % a full 100 %, mezi body se interpoluje.
- Jde o odhad z napětí, nikoli coulomb counter, měření proudu nebo zbývající kapacita v mAh.
- RX používá automatickou volbu efektivního 2S/3S počtu článků v příslušné profilové větvi; zachycená 3S sada se při poklesu za běhu nepřepne na 2S. Účinný počet je společný pro procenta a ochranné prahy.
- TX má vlastní ADC přepočet z dříve změřené kalibrace. RX nabízí uživatelskou kalibraci voltmetru.

### 12.2 Kalibrace RX voltmetru

- Web zobrazuje raw/EMA ADC a přepočtené napětí.
- Uživatel zadává skutečné napětí z multimetru a přidává kalibrační vzorky; konfigurace má kapacitu **8 bodů**.
- Nastavení hodnot odporového děliče, výpočet kalibračního přepočtu a reset kalibrace.
- RX ukládá koeficienty a používá je při následném měření; kalibrace je také v exportu profilu.

### 12.3 Battery Guard

- Varovný práh se odvozuje z profilu pro přibližně **10 %**; cutoff z konfigurovaného cutoff napětí.
- Potvrzovací časy a hystereze tlumí reakce na krátké propady; standardní warning 1,5 s, cutoff 2 s.
- RX guard lze persistentně zapnout/vypnout z webu nebo příslušnou service operací.
- Potvrzený RX cutoff vynutí failsafe a nabídne na TFT **15s rozhodovací okno**.
- Klik žádá potvrzený `SLEEP`; držení 1,2 s žádá persistentní `GUARD OFF`.
- Bez rozhodnutí, při ztrátě servisního spojení nebo při dosažení nouzové spodní meze RX dokončí uspání autonomně.
- Service `SLEEP_NOW` je přijatelný jen při skutečně čekajícím cutoffu.
- Před uspáním je prostor pro odeslání diagnostiky/ACK a bezpečné odstavení výstupů.
- Vypnutí guardu ruší příslušný battery stav; neobchází ostatní nezávislé příčiny failsafe.

### 12.4 TX kritická baterie a sleep

- TX má lokální kontrolu baterie včetně kritického startu.
- Po potvrzení kritického podpětí zobrazí `TX BATTERY / CRITICAL` s napětím, vyčká na vykreslení s timeoutem, ponechá hlášku krátce čitelnou a zhasne TFT.
- Při deep sleepu se vypne Wi-Fi a Bluetooth; společná sleep cesta zakazuje wakeup zdroje. Nelze ji prezentovat jako běžné uspání, ze kterého se rádio samo probudí otočením enkodéru.
- Firmware neobsahuje nabíjení nebo balancování článků jako uživatelskou funkci.

Zdroje: [rc_battery.h](../lib/common/include/rc_battery.h), [policy_battery_guard.cpp](../lib/policy/src/policy_battery_guard.cpp), [TX supervisor](../lib/supervisor/src/supervisor.cpp), [RX main](../apps/rx_lolin32/src/main.cpp), [RX web](../lib/rx_web/src/rx_web_api.cpp), [powermgmt.cpp](../lib/powermgmt/src/powermgmt.cpp).

## 13. Safety a failsafe

### 13.1 TX safety gate

- Kontrola při prvním platném spojení, opětovné jištění po delší ztrátě linku a gate při nečinnosti.
- Rozpoznání neutrálu jen u relevantních/přítomných os a oddělené vyhodnocování aktivity.
- Ochrana proti drobnému šumu vstupu při rozhodování o nečinnosti.
- Hlášení konkrétních nevyhovujících os a možnost přejít k jejich trimu nebo do setupu.
- Výzva k vědomému pokračování podle fáze; vstup do bezpečného stavu nečeká na uživatelské potvrzení.
- Defaultní hranice dlouhé ztráty pro safety gate je 2,5 s; idle timeout je nastavitelný.

### 13.2 Obousměrný link a neutralizace

- Link politika kombinuje stáří lokálního příjmu a vzdálený příznak linku; ustavení/zánik mají potvrzovací intervaly.
- Rozlišuje aktuální platnost řídicího spojení a čerstvost telemetrického payloadu.
- Při ztrátě nebo vnějším safety hold vede osy směrem k neutrálu a spravuje failsafe flags a stav přepínačů.
- RX používá časově odvozenou rampu, protože se jeho aplikace probouzí událostí. Počet průchodů taskem proto sám neurčuje dobu rampy.
- TX má zvláštní omezenou RF grace větev pro podmínky vysokého výkonu; tato tolerance je součástí autoritativního `LinkFs` pro TFT.
- Zachování bezpečného stavu při restartu protistrany a opětovné ustavení spojení.

### 13.3 Servo hard-disarm

- Samostatná politika rozlišuje sledování linku, rampu, **neutral hold** a **SIGNAL_DISARMED**.
- Konfigurace RX používá 1 s detekce ztráty, 1 s rampy a 1 s neutral hold. Jde o jednotlivé části politiky; setup, TX FS a vynucené ochrany mají vlastní vstupy, takže to není univerzální třísekundový timeout každé situace.
- Po disarmu servo driver fyzicky drží signál **LOW**, nepřestane pouze měnit poslední puls.
- Opětovné odjištění je řízené stavem spojení a příslušných ochranných požadavků.
- Naviják má navíc svůj nezávislý signal arm/disarm.
- Import profilu a Wi-Fi megatransfer mají potvrzené vynucení disarmu před citlivou operací.

### 13.4 Setup a nezávislé ochrany

- Vstup do setupu vynucuje bezpečný řídicí stav; RX throttle je v setupu nulový.
- Povolené testování vybraného serva je výslovně oddělené od řízení plynu.
- Ztráta linku, požadavek FS z TX, battery cutoff a thermal trip zůstávají rozlišitelné příčiny.
- Chyba service transakce sama nezastaví periodické odesílání řízení; ovládaná funkce ale může zůstat v bezpečně odmítnutém stavu.
- Při failsafe RX ruší ruční světelné příspěvky, nuluje naviják, navazující disarm ruší jeho odjištění a světelná logika přidává výstražná světla.

Zdroje: [safety_gate](../lib/policy/src/policy_safety_gate.cpp), [linkfs](../lib/policy/src/policy_linkfs.cpp), [servo_disarm](../lib/policy/src/policy_servo_disarm.cpp), [rx_io](../lib/rx_io/src/rx_io.cpp), [TX supervisor](../lib/supervisor/src/supervisor.cpp), [RX main](../apps/rx_lolin32/src/main.cpp).

## 14. Rádiový přenos a vyhledání RX

### 14.1 Průběžné řízení a telemetrie

- nRF24 se současnou konfigurací **250 kbit/s**, HW ACK/retry a softwarovou kontrolou integrity payloadů.
- TX paket **18 B**: flags, sekvence, steering, throttle, dvě AUX osy, maska přepínačů, service request a CRC16.
- RX ACK **13 B**: ENG/ESC/core teplota, napětí baterie, service odpověď, aplikované switch bity, flags, diagnostika a CRC8.
- `RC_PROTO_VER = 13` je diagnostická konstanta; číslo verze se neposílá jako další pole každého řídicího paketu.
- RF vrstva doplňuje transportní sekvenci, PA flags a CRC. Sekvence TX je podle kontraktu vyloučena z aplikační CRC16.
- TX vysílá poslední celý snapshot z Pošťáka v samostatném rytmu, obvykle po 5 ms.
- RX vybere platná data z přijaté dávky a publikuje je aplikaci. Notifikace po dávce probíhá po uvolnění SPI.
- RX IRQ má záložní polling pro případ chybějícího přerušení.
- HW potvrzení přenosu a přítomnost ACK telemetrického payloadu se evidují odděleně.
- WELCOME rozšíření ACK může přidat 10bajtové jméno a jeho CRC; základní 13B struktura ACK se tím nemění.

### 14.2 Scan a identita

- Vyhledávání na 13 předvolených RF kanálech **125, 115, …, 5**.
- Přibližně 50 ms na kanál, pět průchodů, nominální okno 3,25 s.
- Zapamatuje nalezené kanály a validní jména RX, výsledky podrží pro výběr.
- Otočením se volí výsledek, klik vybere nalezený kanál, dvojklik scan opustí.
- Bez platného výsledku klik nepředstírá úspěšné připojení.
- Nalezené jméno může pomoci zvolit odpovídající TX profil; aktuální identita pro CONNECTED se obnovuje podle přijímače.
- Jde o discovery a výběr kanálu. Není zde doložené frekvenční hopping řízení, spektrální analyzátor ani individuální kryptografické párování modelu.

### 14.3 Adaptivní RF výkon

- Automatika pracuje s MIN/LOW/HIGH; **MAX je ruční** úroveň.
- Vyhodnocuje úspěšnost přenosu, chyby CRC, řadu selhání, dobu ticha a filtrované skóre linku.
- Při špatném spojení výkon zvyšuje, při dlouhodobě dobrém ho může snižovat.
- V paketech posílá stav PA i požadavek na změnu výkonu protistrany.
- Časová hystereze a cooldown omezují neustálé přepínání.
- Ruční MAX mění TX RF periodu na **10 ms**, po opuštění se vrací standardních 5 ms.
- Zobrazované link procento je odhad z přenosových statistik, nikoli analogové RSSI nRF nebo změřená vzdálenost.

### 14.4 Lokální obnova nRF

- Po přibližně **200 ms bez platného příjmu** kontrola dostupnosti čipu a jeho provozních registrů.
- Pokud je čip zdravý, samotná vypnutá protistrana nezpůsobuje zbytečný reinit.
- Při závadě úplná reinicializace a readback aktuální konfigurace; opakování nejdříve po 1 s.
- Obnova drží aktuální kanál/výkon a příslušný scan stav.
- Reinit nepředstírá nový validní paket, neomlazuje stará data a neruší tak failsafe.
- Počet kontrol, pokusů a úspěchů je součástí diagnostiky. Úspěšný readback místního čipu není sám důkazem obnoveného spojení s RX/TX.

Zdroje: [rc_protocol.h](../lib/common/include/rc_protocol.h), [rf_nrf24.cpp](../lib/rf/src/rf_nrf24.cpp), [rf_pa_control.cpp](../lib/rf/src/rf_pa_control.cpp), [rf_tx_scan.cpp](../lib/rf/src/rf_tx_scan.cpp), [tx_scan_ui.cpp](../lib/supervisor/src/tx_scan_ui.cpp).

## 15. Potvrzované servisní operace

### 15.1 Co service kanál umí

| Skupina | Operace |
|---|---|
| SYSTEM | Ping, volba TX AP jako cíle RX, volba sdíleného Wi-Fi klientského profilu |
| SMART_DRIVE | Auto blinkry a střed blinkrů od trimu; RAM nebo persistentní zápis |
| LIGHT_CONTROL | Ruční levý/pravý blinkr, brzdové a zpátečkové světlo, čtení/zápis jasu rampy |
| SERVO_SETUP | Čtení a RAM zápis šesti diff/gear poloh; explicitní save RX konfigurace |
| WINCH_CONTROL | Čtení/zápis rychlosti a vlastního arm/disarm |
| BATTERY_CONTROL | Čtení/persistentní zápis guardu, potvrzení uspání při cutoffu |
| BRAKE_ABS | Čtení/zápis pěti nastavení pulzní brzdy, explicitní save |
| LOG_CONTROL | Čtení/persistentní přepnutí RX loggeru a smazání RX logů |
| MEGATRANSFER | Přenos Wi-Fi klientského profilu přes RF |

### 15.2 Potvrzení, chyby a opakování

- Service má **4 B v každém směru** uvnitř běžného paketu/ACK.
- Jedna aktivní transakce, ID 1–15; kontrola shody ID, tasku a parametru.
- TX opakuje požadavek do konečného výsledku, timeoutu nebo limitu pokusů.
- Lokální mez standardní transakce je **1500 ms nebo 64 dokončených RF cyklů**, podle toho, co nastane dříve.
- RX si pamatuje výsledek dokončeného požadavku a na duplicity odpoví bez opakování účinku, například NVS zápisu.
- `BUSY` dovolí pokračování asynchronní práce; terminální chyba se odlišuje od úspěchu.
- Fronta TX dokáže slučovat čekající požadavky na tutéž hodnotu, například rychlé změny absolutní rychlosti navijáku.
- Explicitní CANCEL a automatická expirace relací umožňují obnovu i po restartu TX.
- RX rozlišuje nově publikovaný RF snapshot a opakované přečtení starého; starý request po výpadku nemá znovu založit relaci.
- Hodnoty až **4 B** se přenášejí po potvrzovaných fragmentech. Zápis se aplikuje až po úplném sestavení a kontrole.
- Širší diff/gear hodnoty používají tuto cestu například tam, kde již nestačí kompaktní znaménkový bajt.

### 15.3 Wi-Fi megatransfer

- SSID a heslo lze předat RX přímo po nRF, tedy ještě bez funkčního společného Wi-Fi spojení.
- Kontrolní service rámec řídí fáze BEGIN/DATA/END/CANCEL. Datový fragment využije 8 B jinak určených pro čtyři analogové osy.
- Pouze při FS: TX drží setup, nuluje přepínače a RX potvrdí READY až po fyzickém servo LOW.
- Payload má verzi, délky, SSID/heslo a CRC32, nejvýše 103 B ve 13 datových fragmentech.
- RX nejprve konfiguruje STA v RAM, čeká na skutečné připojení a IP; NVS commit provede až po úspěchu.
- Připojovací probe neběží jako plný RX setup webserver.
- Při chybě/cancelu před commitem obnoví předchozí RAM cíl a uvolní relaci. Již potvrzený commit se neruší.
- Celková lease 45 s, receive-progress timeout 3 s, připojovací pokus 20 s.
- Nově publikované ACK a hodnoty jednotlivých fází se kontrolují tak, aby staré OK nepotvrdilo následující krok.
- CRC poskytuje kontrolu přenosové integrity. Tento přenos **není šifrovaný**.

Zdroje: [rc_service.cpp](../lib/rc_service/src/rc_service.cpp), [rc_megatransfer.cpp](../lib/rc_service/src/rc_megatransfer.cpp), [RX service runtime](../lib/rx_service_runtime/src/rx_service_runtime.cpp), [TX fronta a provisioning](../lib/supervisor/src/supervisor.cpp).

## 16. Wi-Fi a komunikace webů

- Běžné RC řízení používá nRF. Wi-Fi se zapíná pro setup a příslušné servisní/provisioning operace.
- TX může vytvořit AP nebo se připojit jako klient k existující síti.
- RX se může připojit k TX AP nebo ke společné klientské síti podle svého uloženého/deferred cíle.
- Cílový TX host/IP umožňuje RX najít TX pro presence zprávy. Položka `TX host (client)` není sama důkazem přejmenování vlastního mDNS hostname TX.
- RX průběžně oznamuje IP/presence TX; tato dostupnost určuje, zda lze použít RX HTTP operace.
- TX funguje jako HTTP prostředník konfigurace, importu/exportu, baterií, teplot, logů a OTA stavu RX.
- Presence ping má vlastní task, takže odchozí síťové čekání neblokuje přijímání RX HTTP požadavků.
- RX web runtime má opakované připojení, při delší nedostupnosti restart Wi-Fi a ještě později recyklaci serveru; aktuální intervaly těchto stupňů jsou 5/45/180 s.
- Síťové apply může být odložené, aby se nejprve dokončila obsluha požadavku a konfigurace se měnila ve správném lifecycle.
- Opustit setup znamená také ukončit příslušnou webovou relaci/testování.

Zdroje: [webcore.cpp](../lib/webcore/src/webcore.cpp), [rx_web_runtime.cpp](../lib/rx_web_runtime/src/rx_web_runtime.cpp), [RX presence task](../apps/rx_lolin32/src/main.cpp), [app_web_api.cpp](../apps/tx_s3/src/app_web_api.cpp).

## 17. OTA

### 17.1 Nabídka a volba aktualizace

- TX v Setup Wi-Fi klientském režimu stáhne katalog a zjistí kandidáty pro sebe a dostupný typ RX.
- Podpora katalogu **stable a beta**, aktuálních verzí jednotlivých rolí a příznaku povinné dvojice.
- Volba **TX**, **RX** nebo koordinovaného **TX+RX** podle kandidáta.
- Katalogová řádka zůstává dostupná i pro vědomý downgrade nebo návrat mezi stable/beta.
- `CURRENT` označuje shodu s běžící verzí; `PAIR WAIT` neproveditelnou párovou nabídku.
- Automatický prompt se omezuje na novější/force nabídku; starší firmware se nevnucuje automaticky.
- Potvrzení nebo odložení na TFT.

### 17.2 Instalace

- HTTP/HTTPS streaming obrazu do OTA oddílu bez potřeby celé binárky v RAM.
- Kontrola deklarované velikosti a SHA-256, pokud je příslušná metadata poskytují v platném formátu; není správné tvrdit, že libovolný ručně zadaný obraz vždy musí mít hash.
- RX API kontroluje cílové zařízení požadavku a poskytuje busy/průběh/chybu.
- Při TX instalaci se koordinovaně pozastaví RF a runtime/helper tasky a uspí displej.
- Při chybě TX instalace se obnoví příslušné dříve běžící části a další perioda začne bez dohánění staré práce.
- RX má vlastní instalační task a během zápisu zastavuje příchozí webovou obsluhu.
- TX+RX se instaluje v pořadí **RX nejprve**, s kontrolou návratu/verze RX před pokračováním TX.
- Úspěch končí restartem do nového obrazu; očekávaný restart se odlišuje od běžné poruchy spojení v této relaci.
- Boot guard pro obraz `PENDING_VERIFY` po **10 s** doběhu validačního okna zavolá označení obrazu za validní. Jde o potvrzení běhu firmware, nikoli úplný HW autotest všech serv, senzorů a rádia.
- HTTPS klient používá `setInsecure()`. Přítomnost HTTPS a SHA-256 zde neznamená implementovaný podpis firmware nebo plné ověření certifikátu serveru.

**Známá hranice:** pozdní příchod RX do již běžícího Setup Wi-Fi nemusí po dokončené TX kontrole znovu přepočítat párovou nabídku. Oprava a její HW test zůstávají v TODO. OTA ESP32 také není vzdálená aktualizace STM8 světelného modulu.

Zdroje: [ota_check.cpp](../lib/ota/src/ota_check.cpp), [rx_ota.cpp](../lib/rx_ota/src/rx_ota.cpp), [RX OTA HTTP obsluha](../lib/rx_web/src/rx_web_api.cpp), [TX lifecycle](../apps/tx_s3/src/tx_app.cpp).

## 18. Diagnostika a blackbox

### 18.1 Živá diagnostika

- CPU obou jader, free/min heap, RAM/PSRAM podle HW.
- Doby práce a zpoždění tasků, maxima, vynechané periody, rozestupy RF pokusů, pause/resume počty.
- RF počty úspěšných/neúspěšných přenosů, ACK payloadů, chybných CRC, retry ARC, prodloužených write časů a fail streak.
- RX IRQ notifikace a timeout probuzení, prázdná probuzení, velikosti dávek, sekvenční mezery/duplicity a selhání fronty ACK.
- Místní a vzdálený PA, požadavky na změnu výkonu, ticho protistrany a link score.
- Registry rádia a čítače health check/reinit.
- ADC snapshoty, kalibrační stav, raw teploty, 1-Wire presence/CRC/family diagnostika.
- Stav servisní transakce včetně typu, parametru, hodnoty, stáří, výsledku a počtu RF pokusů.
- Serial logy boot/reset důvodu, OTA, přechodů safety, konfigurace, připojených I2C zařízení a stack high-water údajů.

### 18.2 TX failsafe/service blackbox

- Průběžný kruhový buffer v RAM a zachycení kontextu před incidentem i po něm.
- Spouštěče zahrnují přechod do logovatelného failsafe, zestárlé ACK a neúspěšnou service transakci.
- Běžný setup a úmyslný idle gate jsou rozlišené, aby samy netvořily falešné poruchové záznamy.
- Výchozí předincidentní vzorkování je 50 ms a 60 vzorků. Po triggeru se pořizují další vzorky; při capture se může vzorkovat rychleji, takže počet post-vzorků není automaticky pevná délka v sekundách.
- Oddělený writer zapisuje CSV do LittleFS, poslední záznam a číslované záznamy.
- Omezení počtu uložených incidentů a rezerva volného místa chrání prostor pro další diagnostiku.
- Není to nepřetržitý archiv každého RF paketu.

### 18.3 TX crash záznam

- RTC kruhový buffer uchovává předresetový kontext tam, kde ho daný reset zachová.
- Při příštím startu se rozlišuje crash-like reset, například watchdog/panic/brownout, a dostupná stopa se uloží do crash CSV.
- Vede poslední i číslované crash záznamy.
- Nejde o záruku uchování RAM při úplném odpojení napájení.

### 18.4 RX blackbox

- Jeden CSV obsahuje rychlé **F** řádky RF/link stavu a pomalé **S** řádky baterie, teploty, bezpečnostních západek, servo fáze a heapu.
- Rychlá stopa sleduje 5ms řídicí rytmus při RF událostech; za ticha pokračuje přes 20ms fallback. Širší RF statistiky mají 20ms obnovu.
- Pomalé snapshoty po 500 ms, při triggeru vynucený aktuální kontext.
- Kapacita rychlého prebufferu 240 vzorků, pomalého 20 vzorků; nominálně 1,2 s rychlého a 10 s pomalého kontextu, při tichu závisí skutečný časový rozsah rychlé stopy na kadenci.
- `fs_cause_mask` rozlišuje link, TX FS, thermal trip a battery cutoff.
- Oddělený writer, poslední i číslované soubory, omezený počet záznamů.
- Cílené ověření nového vícerychlostního CSV skutečným RF výpadkem je stále otevřený HW test.

### 18.5 Přístup k logům

- TFT Setup/Logs: persistentní přepnutí obou loggerů a potvrzené společné mazání.
- Web Status: seznam, stažení a samostatné mazání TX/RX záznamů.
- TX má navíc **podmíněný USB MSC read-only disk `RCLOGS`**, pokud překlad podporuje `CONFIG_TINYUSB_MSC_ENABLED`.
- Tento disk nabízí README, `FS_LAST.CSV`, číslované FS soubory, `CRASH.CSV` a číslované crash soubory; snapshot se obnovuje při vstupu do setupu.
- USB MSC není univerzální vlastnost všech RX desek ani důkaz, že disk bude vidět s libovolným USB režimem buildu.

Zdroje: [TX loggery a USB MSC](../lib/supervisor/src/supervisor.cpp), [RX logger](../apps/rx_lolin32/src/main.cpp), [RF statistiky](../lib/rf/include/rf_nrf24.h), [sysstats](../lib/sysstats/src/sysstats.cpp), [rc_debug](../lib/ui/src/rc_debug.cpp).

## 19. Ukládání a vnitřní runtime

### 19.1 Co přetrvává přes restart

| Oblast | Ukládaná data |
|---|---|
| TX globální | HW kalibrace, metadata aktivního profilu/počtu profilů, jas, účinný idle timeout, bateriové nastavení, Wi-Fi, přepínač loggeru |
| TX modelová | Jméno/kanál profilu, mapy os, přepínačové vazby, jízdní varianty a jejich metadata |
| RX modelová | Jméno/kanál, logická OUT mapa, parametry, auto blinkry, ABS, External konfigurace |
| RX další bloky | Síťový cíl, baterie/voltmetr, teplotní role/fany, povolení loggeru |
| LittleFS | Incidentní/crash CSV a podpůrné soubory, případně boot média |

- Verze konfigurací, kontrola velikosti/magic a CRC tam, kde příslušný formát CRC používá.
- Migrace starších dat a bezpečné výchozí hodnoty pro chybějící/neplatné bloky.
- RX NVS aktuálně **v11**, přenositelný JSON **v6**; čísla neoznačují stejný formát.
- Persistentní RX OUT identita se ukládá logicky a překládá přes cílový pinout.
- Živé ruční světelné příspěvky, rychlost/arm navijáku, tempo a PA override jsou provozní stav; není vhodné očekávat jejich obnovení jako uložených povelů po restartu.
- NVS TX a RX jsou samostatní vlastníci. Například uložit profil na TX neznamená automaticky uložit kompletní RX OUT mapu.

### 19.2 Časování a předávání dat

```text
TX: tx_io → kalibrace/mapování v inputs → supervisor/safety/menu
        → poslední úplný TX snapshot v Pošťáku → RF

RX: RF → poslední úplný RX snapshot v Pošťáku → safety + rx_supervisor
        → rx_io → DOUT / PWM / servo / externí světelný stav

Zpět: RX telemetrie + aplikovaný stav + service odpověď → Pošťák → RF ACK → TX
```

- TX HW sampler **1 ms na core 0**, supervisor **5 ms na core 1**, RF vlastní **5ms task na core 1**; kalibrace má samostatný pomalý helper z hlediska priority.
- Periodické tasky vlastní svůj čas; nezávisí na centrálním fázovaném spouštění ostatních tasků.
- Při zpoždění se přeskočí zmeškaný cyklus a čas se založí znovu, nedohání se fronta starých povelů.
- Pošťák je atomický ping-pong mailbox; raw snapshoty a UI/light snapshoty tvoří další hranice posledního úplného stavu.
- RX aplikaci budí validní RF batch, výstupy STEER/THROTTLE používají 5ms řízení. Bez událostí se probudí po 20 ms pro safety a další postup.
- Pomalé 1-Wire konverze, I2C, síťové čekání, OTA a zápis logů mají vlastní task/lifecycle.
- HW servo/PWM generátory zajišťují pulzy mezi průchody aplikačního tasku.
- Sdílený SPI guard koordinuje přístup tam, kde je sběrnice sdílená; aplikace neobchází transport přímými zápisy do rádia.
- Start načítá a validuje konfiguraci, sestaví moduly, připraví bezpečný počáteční stav a teprve pak spouští příslušné runtime části. OTA používá explicitní pozastavení/obnovu.

Zdroje: [configstore.cpp](../lib/configstore/src/configstore.cpp), [rx_nvs.cpp](../lib/supervisor/src/rx_nvs.cpp), [Postak.cpp](../lib/postak/src/Postak.cpp), [tx_app.cpp](../apps/tx_s3/src/tx_app.cpp), [RX main](../apps/rx_lolin32/src/main.cpp), [shared_spi_guard](../lib/shared_spi_guard/src/shared_spi_guard.cpp).

## 20. Rozhraní API

Toto je funkční mapa zaregistrovaných cest, nikoli kompletní specifikace metod, parametrů, validace a chybových návratů. Existence cesty také neznamená, že má vlastní tlačítko v UI.

### 20.1 TX lokální API

| Oblast | Cesty |
|---|---|
| Stav/setup | `/api/state`, `/api/setup` |
| Kalibrace | `/api/calib/live`, `/start`, `/center`, `/save`, `/dismiss`, `/dead`, `/resetdead`, `/invert` — posledních sedm pod prefixem `/api/calib` |
| Wi-Fi | `/api/wifi/mode`, `/api/wifi/scan`, `/api/wifi/mode/set` |
| RX presence | `/api/rx/present`, `/api/rx/presence` |
| Profily | `/api/profiles`, `/api/profile`, `/api/active`, `/api/profile_add`, `/api/profile_remove` |
| Profilová data | `/api/ax`, `/api/bn`, `/api/dm`, `/api/drive_mode_active` |
| Náhled/metadata | `/api/tx/preview`, `/api/tx/meta`, `/api/apply` |
| API kopie/reset | `/api/copy`, `/api/reset` |
| Baterie | `/api/battery` |
| TX logy | `/api/logs`, `/api/logs/file`, `/api/logs/erase`, `/api/logs/enabled` |

### 20.2 TX prostředník pro RX

Pod prefixem **`/api/rx`**:

- `/cfg`, `/cfg/apply`, `/cfg/save`;
- `/profile/export`, `/profile/import`;
- `/rf/channel/apply`, `/rf/channel/save`;
- `/testmode/set`;
- `/battery`, `/temps`, `/temps/raw`;
- `/ota/state`, `/ota/install`;
- `/logs`, `/logs/file`, `/logs/erase`, `/logs/enabled`.

### 20.3 Nativní API přijímače

RX poskytuje odpovídající cesty pod **`/rx`**: konfiguraci, import/export, kanál, testmode, baterii, teploty, OTA a logy. Navíc má **`/rx/net/get` a `/rx/net/set`** pro síťové nastavení.

Čtení RX konfigurace vrací i metadata funkcí, parametrů, fyzicky dostupných OUT a kapacit a informace externího modulu. Díky tomu se web přizpůsobuje konkrétnímu přijímači.

Zdroje: [registrace TX cest](../lib/webcore/src/webcore.cpp), [TX aplikační handlers](../apps/tx_s3/src/app_web_api.cpp), [registrace a handlers RX](../lib/rx_web/src/rx_web_api.cpp).

## 21. Hranice, rezervy a rozdíly proti starším přehledům

Při katalogizaci je nutné rozlišit nabízený název, skutečný runtime účinek a prakticky ověřený scénář. Následující rozdíly byly zjištěné kontrolou aktivního kódu; tento dokument je neopravuje změnou firmware.

| Položka | Přesný současný stav |
|---|---|
| **Počet ovladačů TX** | Čtyři analogové a osm digitálních slotů jsou kapacita firmware. Aktivní pinout zapíná A0/A1, SV1/SV2 a pomocný SVC; ne všech osm fyzických přepínačů a čtyři páky. |
| **PBRAKE / parkovací brzda** | TX akce a wire bit existují; RX ho načte do `ctx.pbrake_on`, ale ve výpočtech výstupů se toto pole nepoužívá. Hotový zásah do ESC/serva/brzdového světla touto cestou nebyl nalezen. Starší označení „máme parkovací brzdu“ je příliš silné. |
| **Ruční BRAKE v LIGHTS** | Funguje jako ruční brzdové světlo přes service. Není to chybějící implementace PBRAKE. |
| **WINCH_IN / WINCH_OUT** | Jsou v nabídce RX digitálních funkcí a čtou wire bity; současné TX bindingy je nenabízejí a Drive/WINCH posílá service rychlost pro `WINCH_PWM`. Plnohodnotné běžné ovládání samostatných digitálních směrů z aktuálního TX nebylo doloženo. |
| **AUX osy vs. RX AUX funkce** | Dvě proporcionální osy se mapují a přenášejí. Historické RX digitální FuncId AUX0/AUX1 ale vracejí nulu a nejsou v nabídce OUT. Rádio tím automaticky nemá dvě další uživatelsky přiřaditelná proporcionální serva. |
| **WORK_LIGHT** | Protokol/přiřazení existuje; `light_state.work_on` je v RX pevně false. Samostatné ovládání chybí. |
| **HAZARD OUT** | Interní FuncId a výpočet existují, ale současná nabídka RX OUT ho nezahrnuje. Uživatelský hazard funguje přes levý/pravý blinkr a světelnou logiku. |
| **MPU6050** | Dostupnost I2C adresy, nikoli čtení pohybu nebo stabilizace řízení. |
| **TEMPO** | Drží procento plynu, ne měřenou rychlost vozu. |
| **ABS** | Pulzní brzda bez snímačů prokluzu; označení není důkaz uzavřené regulace ABS. |
| **Thermal guard** | Chrání podle core teploty RX. ENG/ESC mají měření, indikaci a fan řízení, ne stejný automatický core trip. |
| **Thermal power-cut** | Softwarový trip a odstavení serv existují; fyzické vypnutí napájení je otevřená HW práce. |
| **ACT maska** | Aplikovaný stav logiky, zejména dokončené diff/gear sekvence; není fyzická zpětná vazba všech přepínačů a periferií. |
| **TFT SCAN/SETUP_WIFI** | Kontextové obrazovky; běžné otáčení přepíná jen pět provozních obrazovek. |
| **Web servo cycle** | Navzdory názvům JS jde o ON override; není zde spuštěný automatický cyklus OFF/ON. |
| **Kopie/reset TX profilu** | Implementované API, nikoli automaticky viditelná tlačítka současného Profileru. |
| **USB log disk** | Podmíněná TX TinyUSB MSC větev. Je nutné rozlišit podporovaný kód a skutečný USB režim překladu. |
| **OTA boot validace** | Časově odložené potvrzení běžící aplikace, ne univerzální test všech funkcí zařízení. |
| **OTA a Wi-Fi integrita** | CRC/hash nejsou podpis/autentizace. Megatransfer není šifrovaný a HTTPS instalátor neověřuje serverový certifikát. |
| **RX záloha** | Zahrnuje funkční konfiguraci, baterie, čidla/fany a External, ale ne síťová hesla, logy nebo OTA stav. |

Některé modulové README mají starší odstavec o neuzavřeném praktickém testu, přestože kořenové WE_HAVE již zaznamenává jeho dokončení (například import profilu nebo Wi-Fi chybové scénáře). Pro testovací stav má přednost současný kořenový přehled. Tento průchod nepřevádí dříve potvrzené funkce zpět mezi neověřené.

Aktuálně otevřené HW ověření se podle TODO týká zejména core thermal warning/trip a nového RX vícerychlostního blackboxu; otevřená oprava OTA se týká pozdního připojení RX. Výkonové dimenzování PCB světelného modulu a výběr thermal power-cut HW jsou další samostatné oblasti.

## 22. Mapa zdrojového pokrytí

| Oblast | Hlavní implementace použitá při průchodu |
|---|---|
| Aktivní role a desky | [platformio.ini](../platformio.ini), [rc_pins.h](../lib/common/include/rc_pins.h) |
| TX composition a profily | [tx_app.cpp](../apps/tx_s3/src/tx_app.cpp), [app_profiles.cpp](../apps/tx_s3/src/app_profiles.cpp), [app_web_api.cpp](../apps/tx_s3/src/app_web_api.cpp) |
| Fyzické vstupy | [tx_io.cpp](../lib/tx_io/src/tx_io.cpp), [tx_inputs.cpp](../lib/inputs/src/tx_inputs.cpp), [calib.cpp](../lib/calib/src/calib.cpp) |
| TX řízení, tempo, rychlé menu, battery UI | [supervisor.cpp](../lib/supervisor/src/supervisor.cpp) |
| Hlavní menu a scan UI | [tx_menu_controller.cpp](../lib/supervisor/src/tx_menu_controller.cpp), [tx_scan_ui.cpp](../lib/supervisor/src/tx_scan_ui.cpp) |
| TFT | [ui.cpp](../lib/ui/src/ui.cpp), [CAR](../lib/ui/src/ui_tft_car_view.cpp), [runtime](../lib/ui/src/ui_tft_runtime_views.cpp), [setup](../lib/ui/src/ui_tft_setup_views.cpp), [topbars](../lib/ui/src/ui_tft_topbars.cpp) |
| Webové stránky | [Status](../lib/webcore/src/webcore_status_page.cpp), [Calibration](../lib/webcore/src/webcore_calib_page.cpp), [Profiler](../lib/webcore/src/webcore_profiler_page.cpp) |
| RX aplikace a ochranná orchestrace | [main.cpp](../apps/rx_lolin32/src/main.cpp) |
| RX funkční výpočty a metadata | [rx_supervisor.cpp](../lib/supervisor/src/rx_supervisor.cpp), [rx_metahelper.cpp](../lib/supervisor/src/rx_metahelper.cpp) |
| Fyzické výstupy a senzory | [rx_io.cpp](../lib/rx_io/src/rx_io.cpp), [servo_mcpwm.cpp](../lib/servo_mcpwm/src/servo_mcpwm.cpp) |
| Čisté ochranné politiky | [safety gate](../lib/policy/src/policy_safety_gate.cpp), [link FS](../lib/policy/src/policy_linkfs.cpp), [servo disarm](../lib/policy/src/policy_servo_disarm.cpp), [battery](../lib/policy/src/policy_battery_guard.cpp), [thermal](../lib/policy/src/policy_thermal_guard.cpp), [brake ABS](../lib/policy/src/policy_brake_abs.cpp) |
| RF a mailbox | [rf_nrf24.cpp](../lib/rf/src/rf_nrf24.cpp), [PA](../lib/rf/src/rf_pa_control.cpp), [scan](../lib/rf/src/rf_tx_scan.cpp), [Postak](../lib/postak/src/Postak.cpp), [wire kontrakt](../lib/common/include/rc_protocol.h) |
| Service | [rc_service.cpp](../lib/rc_service/src/rc_service.cpp), [megatransfer](../lib/rc_service/src/rc_megatransfer.cpp), [RX runtime](../lib/rx_service_runtime/src/rx_service_runtime.cpp) |
| Konfigurace | [TX configstore](../lib/configstore/src/configstore.cpp), [RX NVS](../lib/supervisor/src/rx_nvs.cpp), [RX codec](../lib/rx_profile_codec/src/rx_profile_codec.cpp) |
| Síť | [webcore](../lib/webcore/src/webcore.cpp), [RX web](../lib/rx_web/src/rx_web_api.cpp), [RX web runtime](../lib/rx_web_runtime/src/rx_web_runtime.cpp) |
| OTA | [TX checker/installer a boot guard](../lib/ota/src/ota_check.cpp), [RX installer](../lib/rx_ota/src/rx_ota.cpp) |
| I2C světla | [správce sběrnice](../lib/i2c_devices/src/i2c_device_manager.cpp), [RX klient](../lib/rx_light_i2c/src/rx_light_i2c.cpp), [STM8 projekt/protokol](../i2c_light_module/README.md) |
| Napájení a diagnostika | [powermgmt](../lib/powermgmt/src/powermgmt.cpp), [sysstats](../lib/sysstats/src/sysstats.cpp), [rc_debug](../lib/ui/src/rc_debug.cpp), loggery v TX supervisoru a RX main |

Exportované reference `share_kamarad_sw/src_refs`, staré archivy a build cache nebyly považovány za aktivní zdroj funkcí. Samotná existence historické knihovny, enum hodnoty nebo pomocné API funkce nebyla automaticky označena za dostupné ovládání rádia.
