Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
545fc1b
Add read() method to SerialDevice and BLESerialService
emericklaw Feb 28, 2026
e523f0b
feat(iButton): enhance UI/UX and add file save/load support
Mar 16, 2026
0b94414
Add new board nm-cyd-c5, tested with nm-rf-hat.
RockBase-iot Mar 18, 2026
6c3c921
Improvements
wcd6 Mar 22, 2026
3c6bd6d
Bigger Apps Icon
wcd6 Mar 22, 2026
e9f9078
Better NRF24 and RF
wcd6 Mar 23, 2026
eea886b
Better Icons TAB
wcd6 Mar 23, 2026
6978d09
Fixed Only Text WIFI UI
wcd6 Mar 23, 2026
87a6b2f
Change of Apps Icon
wcd6 Mar 23, 2026
7e47015
Upgraded App Store with config destination of files, chage Apps icon …
wcd6 Mar 23, 2026
37e0ee7
Organized menu sections & merged connect in files section
wcd6 Mar 23, 2026
1538a55
Changes in WebUI
wcd6 Mar 23, 2026
d3e579e
Delete icons.txt
wcd6 Mar 23, 2026
4c1921a
Delete build_out.txt
wcd6 Mar 23, 2026
566003e
Changed Ethernet Icon
wcd6 Mar 23, 2026
a942cf1
Changed Ethernet Icon
wcd6 Mar 23, 2026
0fb02d0
Refactor EthernetMenu::drawIcon for clarity and structure
wcd6 Mar 23, 2026
4f54a6f
Moved Ethernet Icon
wcd6 Mar 23, 2026
c92040c
Merge pull request #2290 from RockBase-iot/nm-cyd-c5
pr3y Mar 23, 2026
fa0c477
Merge pull request #2288 from delfer/ibutton-files
bmorcelli Mar 25, 2026
a4193bf
Update main_menu.h
wcd6 Mar 27, 2026
8586994
Remove appStoreMenu from main menu in non-lite builds
wcd6 Mar 27, 2026
618bf33
Delete src/core/menu_items/AppStoreMenu.cpp
wcd6 Mar 27, 2026
48faf16
Delete src/core/menu_items/AppStoreMenu.h
wcd6 Mar 27, 2026
33a944d
Add USB file transfer support
emericklaw Mar 27, 2026
a8c2cd5
add function that checks if folder exists
Gosheto1234 Mar 31, 2026
f91afa4
revert small spaces
Gosheto1234 Mar 31, 2026
d2ee2ff
Add folderExists function declaration
Gosheto1234 Mar 31, 2026
227c2f8
🫡 fix overloaded bulk upload
lshaf Apr 1, 2026
4f9680b
Merge pull request #2333 from lshaf/dev
pr3y Apr 1, 2026
1e8adac
Merge pull request #2324 from emericklaw/app-store-serial
pr3y Apr 1, 2026
5960b93
BUILD] Add -include Arduino.h and patch library conflicts for dev bui…
ninja-jr-2 Apr 4, 2026
2795ad2
Merge branch 'main' into dev
bmorcelli Apr 4, 2026
4115825
Made the keyboard more intuitive (#2352)
Epickitrolaz Apr 4, 2026
7d736d3
fix(ui): auto-scale title font and fix wifi recover layout on small s…
pfefferle Apr 4, 2026
8f41d9d
fix NimBLE version to 2.5
bmorcelli Apr 5, 2026
3f7a341
Merge pull request #2332 from Gosheto1234/patch-10
pr3y Apr 5, 2026
467a49a
feat: add WDGoWars upload support for wardriving CSV files
Apr 9, 2026
a4fd5f7
feat: add API key hint in bruce.conf and validate key length
Apr 9, 2026
8187af4
update README.md to use new wiki
WERKuPL Apr 11, 2026
79695b7
Merge pull request #2376 from WERKuPL/WERKuPL-patch-1
pr3y Apr 12, 2026
dbfc282
Merge pull request #2369 from LOCOSP/feat/wdgwars-upload
bmorcelli Apr 16, 2026
ca10c73
Fix/m5sticks3 psram audio gif button (#2374)
PavelKivy Apr 16, 2026
2bdbe3b
remove Launcher CPlus1.1 from build
bmorcelli Apr 16, 2026
4293ebd
Add nm-cyd-c5 environment to build workflow
bmorcelli Apr 16, 2026
2702f38
Merge pull request #2312 from wcd6/dev
pr3y May 1, 2026
0306b74
config pins add pn532
May 1, 2026
69c1d01
Merge pull request #2417 from WERKuPL/pn532
pr3y May 2, 2026
72e752d
Add NetCut ARP Module for device management
ryocuy May 3, 2026
533579d
Create netcut.h for ARP poisoning and management
ryocuy May 3, 2026
71870be
Add NetCut option to WifiMenu
ryocuy May 3, 2026
7766abc
Simplify device restoration logic on exit
ryocuy May 3, 2026
2d11be1
fix(netcut): optimize bulk restoration for instant recovery
ryocuy May 3, 2026
1ffcf67
Merge pull request #2421 from ryocuy/main
pr3y May 4, 2026
033bee0
flto build
bmorcelli May 12, 2026
136ba22
elecrow boards
pr3y May 12, 2026
770fa72
elecrow boards on envs
pr3y May 12, 2026
5f7827f
elecrow to build
pr3y May 12, 2026
d632b6b
Fix boot loop caused by no scripts being found
emericklaw May 15, 2026
5f78c7c
Reinstate App Store download
emericklaw May 15, 2026
4ff2cd3
Formatting
emericklaw May 15, 2026
cf8fe76
Remove Apps Menu - duplicate of the existing JS Interpreter menu
emericklaw May 15, 2026
ee0f2cd
Reorder LED Effects to menu selection works
emericklaw May 15, 2026
991985d
Reduce potential buffer overflow situations
paazmaya May 15, 2026
ed76b05
Merge pull request #2446 from paazmaya/main
pr3y May 20, 2026
c5a6b31
re-enable deactivated builds
bmorcelli May 21, 2026
f827825
Adds DinMeter and Arduino-Nesso-N1
bmorcelli May 22, 2026
0927228
TCA8418 keyboard response improve
bmorcelli May 22, 2026
0411520
Fixed encoder overpolling
bmorcelli May 22, 2026
a985be3
SSH Client
bmorcelli May 23, 2026
f26eea4
Logging
bmorcelli May 23, 2026
f1aeb04
isDelPressed
bmorcelli May 23, 2026
96bf8af
💥 NEW: Fluxo Rx e protocolos
sabbajohn May 23, 2026
2db0cbf
👌 IMPROVE: Advanced Engine
sabbajohn May 23, 2026
a11db23
fix build
bmorcelli May 23, 2026
319a4a4
SubGHz: add scan/copy, decoder UI, rolling UI and legacy decode enric…
sabbajohn May 23, 2026
34c5d4a
Merge origin/dev into subghz_improvements
sabbajohn May 23, 2026
58530a1
Add Allstar Firefly, KeyFinder, and Nord ICE SubGHz protocols
sabbajohn May 23, 2026
ec0dcc3
Fix autocomplete and log optout option
bmorcelli May 23, 2026
94bbe4d
Ajustes no novo modulo subghz
sabbajohn May 23, 2026
8e7121d
keyboard exit guards
bmorcelli May 23, 2026
a003a6b
🐛 FIX: Core fault
sabbajohn May 23, 2026
62e9350
shouldExtractDecoderString
sabbajohn May 23, 2026
92cde9f
Add IP Config for Evilportal
bmorcelli May 23, 2026
e9807ed
1.15
pr3y May 25, 2026
f439867
Add speed control to fire and disco
emericklaw May 25, 2026
65030e5
Merge pull request #2472 from emericklaw/misc-fixes
pr3y May 25, 2026
3518dae
Merge remote-tracking branch 'upstream/dev' into subghz_improvements
sabbajohn Jun 8, 2026
41ab80c
📖 DOC: Atualizaçoes de objetivos
sabbajohn Jun 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .codex_tmp/LilyGoLib
Submodule LilyGoLib added at a64fc6
1 change: 1 addition & 0 deletions .codex_tmp/NFC-RFAL-fork
Submodule NFC-RFAL-fork added at 7bde45
1 change: 1 addition & 0 deletions .codex_tmp/ST25R3916-fork
Submodule ST25R3916-fork added at 0c8e00
7 changes: 6 additions & 1 deletion .github/workflows/buil_parallel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ jobs:
fail-fast: false
matrix:
board:
- { env: "arduino-nesso-n1", family: "ESP32-C6",}
- { env: "m5stack-cardputer", family: "ESP32-S3",}
- { env: "m5stack-sticks3", family: "ESP32-S3",}
- { env: "m5stack-cplus2", family: "ESP32",}
Expand All @@ -26,9 +27,11 @@ jobs:
- { env: "m5stack-core16mb", family: "ESP32",}
- { env: "m5stack-core4mb", family: "ESP32",}
- { env: "m5stack-cores3", family: "ESP32-S3",}
- { env: "m5stack-dinmeter", family: "ESP32-S3",}
- { env: "esp32-s3-devkitc-1", family: "ESP32-S3",}
- { env: "esp32-c5", family: "ESP32-C5",}
- { env: "esp32-c5-tft", family: "ESP32-C5",}
- { env: "nm-cyd-c5", family: "ESP32-C5",}
- { env: "CYD-2432S028", family: "ESP32",}
- { env: "CYD-2USB", family: "ESP32",}
- { env: "CYD-2432W328C", family: "ESP32",}
Expand All @@ -41,7 +44,7 @@ jobs:
- { env: "LAUNCHER_CYD-2USB", family: "ESP32",}
- { env: "LAUNCHER_CYD-2432W328C", family: "ESP32",}
- { env: "LAUNCHER_CYD-3248S035R", family: "ESP32",}
# - { env: "LAUNCHER_CYD-3248S035C", family: "ESP32",}
- { env: "LAUNCHER_CYD-3248S035C", family: "ESP32",}
- { env: "lilygo-t-embed-cc1101", family: "ESP32-S3",}
- { env: "lilygo-t-embed", family: "ESP32-S3",}
- { env: "lilygo-t-deck", family: "ESP32-S3",}
Expand All @@ -55,6 +58,8 @@ jobs:
- { env: "lilygo-t-display-ttgo", family: "ESP32",}
- { env: "lilygo-t-hmi", family: "ESP32-S3",}
- { env: "lilygo-t-lora-pager", family: "ESP32-S3",}
- { env: "elecrow-24B", family: "ESP32",}
- { env: "elecrow-28B", family: "ESP32",}
- { env: "smoochiee-board", family: "ESP32-S3",}
- { env: "reaper", family: "ESP32-S3",}
- { env: "Phantom_S024R", family: "ESP32",}
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,5 @@ docker-logs
lib/mquickjs_headers/mqjs_stdlib_generator
lib/mquickjs_headers/mqjs_stdlib_generator.exe
.github/agents/Bruce-AI.agent.md
.idea
.ai
217 changes: 108 additions & 109 deletions README.md

Large diffs are not rendered by default.

133 changes: 133 additions & 0 deletions SUBGHZ_MIGRATION_ROADMAP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
# Roadmap de Migracao SubGHz (Bruce <- Unleashed)

Data de atualizacao: 2026-06-08
Branch de trabalho: `subghz_improvements`

## Objetivo

Integrar a stack `subghz` do Unleashed no Bruce sem alterar vendor, mantendo compatibilidade com fluxos legados (`rf,subghz`) e evoluindo identificacao de protocolo, analise de chave/counter e TX protocol-native.

## Direcionamento Tecnico do Orientador

- Otimizar a stack RF/SubGHz e reduzir o tamanho do firmware sempre que possivel.
- Separar responsabilidades do sistema RF atual, que mistura fluxos diferentes no mesmo modulo.
- Avaliar migracao da captura/recepcao SubGHz para RMT, driver nativo da Espressif para leitura desse tipo de sinal.
- Priorizar RMT como alternativa ao modelo do RC-Switch, que usa interrupcao direta e contagem manual de tempo, para melhorar performance e reduzir acoplamento.

## Status Geral

- [x] Base arquitetural da migracao concluida (vendor + compat + bridge + adapter).
- [x] Menu principal `SubGHz` avancado integrado e funcional.
- [x] RX avancado (scan/decode/analyze/recent/filter/profile) funcional.
- [x] TX avancado por `.sub` funcional com fallback seguro para legado.
- [~] Paridade de todas as cenas/fluxos do Unleashed em andamento.
- [ ] Fechamento formal da v1 (testes de hardware completos + docs finais).
- [x] Gap analysis baseado na documentacao oficial do Unleashed (`SUBGHZ_UNLEASHED_DOCS_GAP_ANALYSIS.md`).

## Implementado

### 1) Vendor, Compat e Bridge

- [x] Snapshot vendorizado em `lib/subghz_unleashed_vendor/`.
- [x] Politica de vendor imutavel aplicada (adaptacoes fora da pasta vendor).
- [x] Camada compat em `lib/subghz_unleashed_compat/` para subset de `furi`, `furi_hal`, `FuriString`, `FlipperFormat`, `level_duration` e keystore.
- [x] Bridge de build em `lib/subghz_unleashed_bridge/` com `environment`, `receiver`, `transmitter` e protocolos usados pelos perfis.
- [x] Suporte a novos protocolos trazidos do upstream atual: `allstar_firefly`, `keyfinder`, `nord_ice`, ajustes em `keeloq` e correlatos.

### 2) Modulo SubGHz Avancado

- [x] `SubGhzAdvancedEngine` criado com:
- [x] inicializacao e selecao de profile (`CORE`/`FULL`);
- [x] filtro de protocolo;
- [x] historico `Recent`;
- [x] analise online e offline de `.sub`;
- [x] TX com caminho avancado e fallback legado.
- [x] `SubGhzAdvancedDecoderAdapter` criado com:
- [x] decode de capturas RAW para protocolo real;
- [x] normalizacao de frame (`protocol_name`, `frequency_hz`, `bit_count`, `key_hex`, `counter`, `button`, `serial`, `raw_summary`);
- [x] exposicao de registry e validacao de protocolo habilitado por profile.
- [x] `SubGhzAdvancedTransmitterAdapter` criado com:
- [x] `subghz_transmitter_deserialize + yield`;
- [x] TX protocol-native sem alterar vendor;
- [x] mapeamento de preset/modulacao para hardware Bruce.
- [x] `SubGhzAdvancedSubFileCodec` criado para leitura Bruce + Flipper e enriquecimento com `Detected_*`.

### 3) UI, CLI e JS

- [x] Novo menu `SubGHz` no menu principal (sem remover `RF` legado).
- [x] Estrutura `SubGHz Unified` com coexistencia de fluxos avancados e legado otimizado.
- [x] Cenas implementadas no menu avancado:
- [x] RX (`Scan & Identify`, `Scan/Copy`, `Decoder UI`, `Rolling UI`);
- [x] TX (`Replay Last RX`, `Transmit .sub`, `Transmit Last`);
- [x] Analyze (`Analyze .sub`, `Analyze Last TX`);
- [x] `Recent` e `Settings` (`CORE/FULL`, filtro, frequencia, range).
- [x] Submenu `Legacy+ Tools` no `SubGHz` com funcionalidades herdadas do `RF`:
- [x] `Scan/copy`, `Record RAW`, `Custom SubGhz`, `Spectrum`, `RSSI Spectrum`, `SquareWave Spec`, `Spectogram`, `Listen`, `Bruteforce`, `Jammer`, `RF Config`.
- [x] CLI `subghz_adv` aditiva:
- [x] `rx`, `tx_file`, `analyze_file`, `protocols`, `profile`, `filter`.
- [x] JS aditivo em `subghzAdvanced`:
- [x] `read(timeoutSec?)`, `analyzeFile(path)`, `transmitFile(path, hideDefaultUI?)`.
- [x] Checklist de paridade legado->unificado em `SUBGHZ_PARITY_CHECKLIST.md`.

### 4) Otimizacoes no Legado (sem breaking changes)

- [x] Enriquecimento do legado com decode avancado em RX (`Detected_Protocol`, `Detected_Key`, `Detected_Serial`, `Detected_Button`, `Detected_Counter`).
- [x] Persistencia de metadados detectados em arquivos `.sub` salvos pelo legado.
- [x] `subghz tx_from_file` e `subghz tx_from_buffer` agora tentam TX avancado primeiro e fazem fallback para RcSwitch.
- [x] `sendCustomRF()` atualizado para aproveitar TX avancado quando o arquivo permitir.

### 5) Cobertura de Protocolo e Validacao

- [x] Script `tools/subghz_protocol_coverage_check.py` criado.
- [x] `FULL` sincronizado com vendor com exclusao intencional de `RAW`/`BinRAW`.
- [x] Matriz de validacao de amostras upstream gerada em `SUBGHZ_V1_SAMPLE_MATRIX.md`.
- [x] Cobertura de fixtures: `CORE 17/17`, `FULL 46/56` (10 protocolos sem fixture upstream).
- [x] Nota de release v1 gerada em `SUBGHZ_V1_RELEASE_NOTES.md`.
- [x] Build validado em:
- [x] `m5stack-cplus2`;
- [x] `lilygo-t-embed-cc1101`.

## Pendente

### P0 (necessario para fechar v1)

- [ ] Rodar validacao de hardware com sinais reais (minimo 3 capturas) e registrar resultados.
- [x] Rodar bateria de amostras `.sub` do upstream (minimo 10) e registrar matriz protocolo esperado vs detectado.
- [x] Consolidar nota de release da v1 para equipe (escopo, limites, comandos e menus).

### P1 (proxima iteracao recomendada)

- [ ] Mapear os fluxos RF/SubGHz misturados hoje (RC-Switch legado, SubGHz avancado/vendor e ferramentas auxiliares) e definir fronteiras claras entre captura, decode, TX e UI.
- [ ] Prototipar backend de RX baseado em RMT da Espressif para sinais SubGHz e comparar contra RC-Switch em uso de CPU, estabilidade de timing, RAM/flash e qualidade de decode.
- [ ] Criar uma interface comum de captura de pulsos para permitir coexistencia controlada entre RMT e RC-Switch durante a transicao.
- [ ] Medir tamanho de firmware por target antes/depois das mudancas e listar candidatos de reducao em RF/SubGHz.
- [ ] Paridade mais profunda de interface rolling (estado, incrementos e UX de emulacao) comparada ao fluxo da biblioteca de origem.
- [ ] Melhorar telas de `Scan/Copy` com mais contexto de key/counter e acao rapida por protocolo.
- [ ] Implementar cenas `Add manually (Advanced)` para protocolos rolling prioritarios (FAAC SLH, BFT Mitto, Somfy Telis, Nice FloR-S, CAME Atomo, Alutech AT-4N).
- [ ] Implementar editor de `CounterMode` por arquivo `.sub` (com validacao por protocolo).
- [ ] Implementar opcoes de save com nome por `protocol+timestamp`.
- [ ] Implementar suporte opcional a user frequencies/hopper (estilo `setting_user`).
- [ ] Expandir testes automatizados para parser/transcoder de `.sub` (Bruce/Flipper e `Detected_*`).
- [ ] Instrumentar comparativo de acuracia entre fluxo legado e avancado em cenarios selecionados.

### P2 (hardening e manutencao)

- [ ] Remover duplicacoes ou caminhos RF/SubGHz obsoletos depois que o backend RMT estiver validado em hardware.
- [ ] Documentar a arquitetura final de RF/SubGHz, incluindo limites entre driver de captura, decoder, encoder/TX, storage e UI.
- [ ] Opcional: habilitar `RAW`/`BinRAW` no profile `FULL` via shims faltantes no compat (`float_tools`, helpers de storage e ajustes adicionais de API Furi).
- [ ] Normalizar metadados de pin do vendor (`UPSTREAM_PIN.txt` e `README.md` do vendor apontam commits diferentes).
- [ ] Cobrir protocolos ainda sem suporte direto no runtime (`Prastel`, `Airforce`, `HCS101`, `ZKTeco`) via sync upstream ou implementacao dedicada.
- [ ] Documentar no wiki do projeto os novos fluxos `SubGHz` e comandos `subghz_adv`.

## Riscos Conhecidos

- Uso de protocolos que exigem recursos extras de compat pode requerer shims adicionais.
- Cenarios rolling dependem de qualidade da captura, sincronismo de counter e material de keystore.
- Sem bateria automatizada em hardware, regressao de campo ainda pode passar despercebida.

## Criterio de Conclusao da v1

- [ ] `SubGHz` avancado operacional no menu principal com RX/TX/Analyze/Recent/Settings.
- [ ] Legado `rf,subghz` sem quebra de comportamento e com fallback funcional.
- [ ] `subghz_adv` e `subghzAdvanced` estaveis nas rotas principais.
- [ ] Build verde nos targets definidos e evidencias de teste de protocolo/hardware anexadas.
41 changes: 41 additions & 0 deletions SUBGHZ_PARITY_CHECKLIST.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# SubGHz Legacy-to-Unified Parity Checklist

Last update: 2026-05-23

Goal: replace `RF` legacy module by `SubGHz` unified module without losing capabilities.

## Legacy RF features mapped into SubGHz unified

| Legacy RF feature | Unified location | Status |
| --- | --- | --- |
| Scan/copy | `SubGHz -> Legacy+ Tools -> Scan/copy (Legacy+)` | done |
| Record RAW | `SubGHz -> Legacy+ Tools -> Record RAW` | done (`!LITE_VERSION`) |
| Custom SubGhz | `SubGHz -> Legacy+ Tools -> Custom SubGhz` | done (`!LITE_VERSION`) |
| Spectrum | `SubGHz -> Legacy+ Tools -> Spectrum` | done |
| RSSI Spectrum | `SubGHz -> Legacy+ Tools -> RSSI Spectrum` | done (`!LITE_VERSION`) |
| SquareWave Spec | `SubGHz -> Legacy+ Tools -> SquareWave Spec` | done (`!LITE_VERSION`) |
| Spectogram | `SubGHz -> Legacy+ Tools -> Spectogram` | done (`!LITE_VERSION`) |
| Listen | `SubGHz -> Legacy+ Tools -> Listen` | done (board/audio dependent) |
| Bruteforce | `SubGHz -> Legacy+ Tools -> Bruteforce` | done (`!LITE_VERSION`) |
| Jammer | `SubGHz -> Legacy+ Tools -> Jammer` | done (`!LITE_VERSION`) |
| RF TX/RX pin + module/freq config | `SubGHz -> Legacy+ Tools -> RF Config` | done |

## New advanced features kept in Unified

| Advanced feature | Unified location | Status |
| --- | --- | --- |
| Protocol-native RX identify | `SubGHz -> RX (Advanced) -> Scan & Identify` | done |
| Scan/copy with decode + rolling actions | `SubGHz -> RX (Advanced) -> Scan/Copy` | done |
| Decoder registry and last decode UI | `SubGHz -> RX (Advanced) -> Decoder UI` | done |
| Rolling interface from decoded frames | `SubGHz -> RX (Advanced) -> Rolling UI` | done |
| Protocol-native TX from `.sub` with fallback | `SubGHz -> TX (Advanced)` | done |
| Analyze `.sub` Bruce + Flipper | `SubGHz -> Analyze (Advanced)` | done |
| Recent decoded frame history | `SubGHz -> Recent` | done |
| Runtime profile/filter/frequency/range | `SubGHz -> Settings` | done |

## Exit criteria to deprecate RF menu

1. Manual regression pass confirms each legacy RF feature above works from `SubGHz` unified menu.
2. CLI/JS legacy routes stay backward-compatible while unified routes remain stable.
3. Hardware validation completed on at least one CC1101 board for RX/TX/scan paths.
4. Team sign-off on removal plan for top-level `RF` menu entry.
117 changes: 117 additions & 0 deletions SUBGHZ_UNLEASHED_DOCS_GAP_ANALYSIS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# SubGHz Unleashed Docs Gap Analysis (Bruce)

Updated: 2026-05-23
Scope: mapear funcionalidades documentadas no Unleashed para plano de implementacao no Bruce.

## Fontes analisadas

- `ref/unleashed-firmware/documentation/SubGHzSupportedSystems.md`
- `ref/unleashed-firmware/documentation/SubGHzRemoteProg.md`
- `ref/unleashed-firmware/documentation/SubGHzCounterMode.md`
- `ref/unleashed-firmware/documentation/SubGHzSettings.md`
- `ref/unleashed-firmware/documentation/SubGHzRemotePlugin.md`
- `ref/unleashed-firmware/ReadMe.md` (secoes Sub-GHz Library/HAL e Sub-GHz Main App)

## Resumo executivo

- Protocolos/sistemas documentados no `SubGHzSupportedSystems.md`: `63`.
- Runtime `FULL` atual no Bruce (`SubGhzAdvancedDecoderAdapter`): `56` protocolos ativos (com `RAW/BinRAW` fora do profile FULL por decisao de v1).
- Mapeamento documentacao -> runtime:
- `59/63` cobertos diretamente ou via protocolo base equivalente.
- `4/63` ainda sem cobertura direta no runtime atual: `Prastel`, `Airforce`, `HCS101`, `ZKTeco`.
- Fluxo unificado ja cobre RX/TX/Analyze/Recent/Settings e coexistencia com legado.
- Paridade completa de cenas do app SubGHz do Unleashed ainda esta parcial (principalmente `Add manually`, `CounterMode` UI, e configuracoes de frequencias/hopper via arquivo de settings).

## Cobertura de protocolos (doc -> Bruce)

### Cobertos diretamente no runtime FULL

- CAME, CAME TWEE, CAME Atomo
- KeeLoq, FAAC SLH, Nice FLO, Nice FloR-S
- Somfy Telis, Somfy Keytis
- Gate TX, Princeton, Linear, Linear Delta3
- Security+ 1.0, Security+ 2.0
- Holtek, Holtek HT12X, SMC5326
- Doitrand, Dooya, Power Smart
- Marantec, Marantec24, Mastercode, MegaCode
- Honeywell, Honeywell WDB, Magellan, Legrand
- Ansonic, BETT, Clemsa, Dickert MAHS
- Alutech AT-4N, KingGates Stylo 4k
- Beninca ARC, Ditec GOL4, Phoenix V2
- Jarolift, KeyFinder, Nord ICE, Allstar Firefly
- Hollarm, GangQi, Feron, Roger, Revers RB2, Elplast, Treadmill37, iDO, Nero Sketch, Nero Radio, Hormann, Intertechno V3, Hay21

### Cobertos por equivalencia de protocolo base (nao protocolo dedicado)

- AN-Motors AT4 -> base `KeeLoq` / fluxo rolling.
- BFT Mitto -> base `KeeLoq` com seed/manufacturer.
- Erreka -> base `KeeLoq` com manufacturer.
- Nice One -> tratado hoje na familia `Nice FloR-S` (validar diferencas de campo/UX no roadmap).

### Nao cobertos no runtime atual

- Prastel
- Airforce
- HCS101
- ZKTeco

## Paridade de funcionalidades de app/UX (ReadMe + docs)

| Funcionalidade documentada no Unleashed | Estado no Bruce | Observacao |
| --- | --- | --- |
| Menu SubGHz dedicado | done | `SubGHz Unified` ativo no menu principal |
| RX avancado com identificacao de protocolo | done | `Scan & Identify`, `Scan/Copy`, `Decoder UI` |
| TX de `.sub` com encoder protocol-native | done | via `SubGhzAdvancedTransmitterAdapter` com fallback legado |
| Analyze `.sub` (Bruce + Flipper) | done | `Analyze (Advanced)` |
| Rolling tools/UI | partial | preview/send/emulate existentes; falta paridade de cenas/wizards por protocolo |
| Botoes custom por protocolo rolling (setas/hidden/prog) | partial | campo `Button` existe, mas falta UX dedicada estilo Unleashed |
| `Add manually` expandido com protocolos rolling | missing | nao ha cena avancada de criacao manual equivalente |
| CounterMode por protocolo rolling | partial | parse em `.sub` suportado no vendor; falta editor/UI no Bruce |
| Save last used settings (SubGHz app state) | partial | freq/range existem; profile/filter/estado de cenas sem persistencia completa |
| Naming com `protocol+timestamp` ao salvar | missing | fluxo atual salva por nome padrao |
| Received list com delete rapido | missing | nao ha gesto equivalente no fluxo atual |
| Ignore options por categoria/protocolo | missing | nao implementado no menu atual |
| User frequencies/hopper via `subghz/assets/setting_user` | missing | Bruce usa lista interna; nao carrega `setting_user` do Unleashed |
| SubGHz Remote (map de 5 botoes) | missing | funcionalidade/plugin ainda nao portada |

## Observacoes de estabilidade para rollout

- Existe incidente de reboot/panic em RX avancado com profile `FULL` no board `lilygo-t-embed-cc1101`, com stack apontando decode de `jarolift` em feed ao vivo.
- Isso bloqueia considerarmos o `FULL` como pronto para campo sem hardening adicional.

## Backlog recomendado (priorizado)

### P0 - Estabilidade e seguranca operacional

1. Reproduzir panic em build debug (`env:lilygo-t-embed-cc1101-debug`) e registrar stack simbolizado.
2. Introduzir modo de mitigacao no FULL:
- blacklist temporaria de protocolos instaveis em live RX, ou
- toggle de profile seguro (`FULL_SAFE`) para campo.
3. Adicionar guardrails no loop de decode ao vivo:
- limite de duracao/pulsos por frame,
- reset rigoroso da instancia receiver entre capturas.

### P1 - Paridade funcional com docs do Unleashed

1. Criar `Add manually (Advanced)` para protocolos prioritarios:
- FAAC SLH, BFT Mitto, Somfy Telis, Nice FloR-S, CAME Atomo, Alutech AT-4N.
2. Criar editor de `CounterMode` por arquivo `.sub` (com validacao por protocolo).
3. Criar UI de botoes custom por protocolo rolling (atalhos de setas por perfil).
4. Implementar naming opcional `protocol+timestamp` nos saves de capture.
5. Portar opcoes de ignore por categoria/protocolo no decoder avancado.
6. Implementar carregamento opcional de frequencias/hopper via arquivo estilo `setting_user`.

### P2 - Expansao de cobertura e consolidacao

1. Tratar os 4 protocolos ainda sem cobertura (`Prastel`, `Airforce`, `HCS101`, `ZKTeco`):
- checar se existem implementacoes upstream novas e sincronizar vendor,
- caso nao existam, manter como backlog de protocolo novo.
2. Empacotar keystore default de fabricantes para melhorar UX KeeLoq out-of-box.
3. Adicionar teste automatizado de conformidade doc->runtime em CI (lista de protocolos + aliases).

## Definicao de pronto para esta trilha

- `SubGHz Unified` cobre fluxos legado+avancado sem perda funcional.
- RX/TX avancado em hardware CC1101 sem reboot em bateria de sinais reais.
- Cenas prioritarias de rolling/manual (P1) entregues com UX consistente.
- Checklist de cobertura contra docs atualizado a cada sync de vendor.
Loading