13 Commits

Author SHA1 Message Date
Senape3000 0182f083df Bump versions to 1.1.3 and add verbose runner
Bump firmware (include/config.h) and mobile app (pubspec.yaml) versions to 1.1.3. Introduce run_command_verbose and related Tk-based GUI/CLI helpers in release_builder.py to show live command output, interactive timeout prompts and a Terminate action; replace several blocking subprocess.run calls (venv creation, pip install, PlatformIO build, Flutter pub/get/build, Android SDK setup) with this new runner. Add required imports and ensure Tk root is set in the GUI launcher to enable popups.
2026-02-21 15:59:29 +01:00
Senape3000 346c9c3b5e Add ProtoPirate module and app support
Introduce the ProtoPirate automotive key‑fob decoder and integrate it end‑to‑end across firmware and mobile app. Changes include: new binary message IDs for ProtoPirate (MSG_PP_*), config enable flag and firmware patch bump to 1.1.2, and a new ProtoPirateCommands BLE/serial handler that implements start/stop, history, file browsing (FATFS), emulate (TX) and save/list captures. Firmware updates: added ProtoPirate module headers/implementation, history support, FileCommands improvements (path handling, file streaming size guard, create /DATA/PROTOPIRATE directory), and safer ConfigManager aggregate initialization compatible with older GCC. Mobile app updates: new ProtoPirate UI screen, model (ProtoPirateResult), BLE provider wiring (reset state, imports) and localization strings (EN/RU) and generated localization stubs. Misc: increased BLE chunk timeouts and less aggressive chunk buffer cleanup, plus a helper script tools/generate_test_sub.py.
2026-02-21 15:26:22 +01:00
Senape3000 c0c13f7850 Refactor file handling, SD verify, bump versions
Multiple fixes and refactors to improve SD robustness and file path handling across the app:

- .gitignore: Ignore SDR build/dist/upx/spec artifacts.
- include/FileCommands.h: Improve SD format phase by verifying directory creation, logging failures, and marking overall format result when mkdir fails.
- include/config.h: Bump firmware version to 1.1.0 (minor/patch updated).
- mobile_app/lib/providers/ble_provider.dart: Refactor readFileContent to accept pathType (int) instead of basePath, centralize relative/absolute path extraction logic, and propagate effectivePathType in binary commands (breaking API change — callers updated).
- mobile_app/lib/screens/file_viewer_screen.dart: Updated to call readFileContent with pathType and let provider normalize paths.
- mobile_app/lib/screens/settings_screen.dart: Improve SD format progress dialog handling by tracking whether any progress response was received, adding a timeout to avoid indefinite blocking, and showing a timeout snackbar on no response.
- mobile_app/lib/services/update_service.dart: Change fetchChangelog to search release assets for changelog.json (newer approach) and fall back to the legacy raw URL if not found.
- mobile_app/pubspec.yaml: Bump mobile app version to 1.0.9+24.

Notes: The main breaking change is the BLE provider API signature change (basePath -> pathType); UI callers have been updated in this changeset. These changes improve reliability of SD formatting and make changelog fetching more robust.
2026-02-15 17:26:49 +01:00
Senape3000 ccc2334100 Add SD format progress and LittleFS handling
Report SD format progress over BLE and improve filesystem handling.

- FileCommands: send in-progress progress notifications (errorCode 0xFF) during SD format, report per-item delete/create messages, track deleted count and send final result.
- mobile app: add sdFormatProgress field, parse progress messages in BinaryFileActionResult JSON, update BLE provider to handle progress vs final result, and show progress text in settings UI dialog.
- binary_message_parser: include isProgress and progressMessage fields for in-progress messages.
- src/main.cpp: gracefully handle missing SD card (fallback to LittleFS-only), record sdCardMounted state, and ensure default DATA directories exist when SD is present.
- CC1101_Worker: add LittleFS support for pathType 4 (and root handling for pathType 5), choose fs object dynamically, and return an error for transmit attempts from LittleFS (unsupported).
- Bump mobile app version to 1.0.7+21.

These changes enable live feedback to the mobile app during long SD operations and improve robustness when the SD card is absent, while introducing limited LittleFS path support in the transmitter.
2026-02-15 12:40:22 +01:00
Senape3000 17683c22b7 Add SD format, clone resume & UI/localization
Several features and fixes across firmware and mobile app:

- FileCommands.h: make recursive directory/file removal more robust — copy child.path() into a local buffer before close, log failures, continue deleting other entries instead of aborting, yield (vTaskDelay) to avoid watchdog timeouts, and return aggregate success.
- Binary parser: add 'format-sd' action code.
- BleProvider: add isFormattingSD/sdFormatSuccess flags, set/reset them when sending/receiving format commands and notify listeners.
- SettingsScreen: improved scanner settings UI (moved into Consumer), added non-dismissible SD format progress dialog that auto-closes on firmware result, and handle command send failures.
- FlipperSubDbService: add pause/resume support for cloning — cache downloaded ZIP, persist per-file progress, APIs to save/load progress and cached ZIP, extractFromBytes for resuming, and related helper functions; tweak extraction path handling.
- SubGhz clone dialog: implement resume/start-fresh flow, pause/resume controls, progress persistence, caching usage, and related UI/logic changes.
- QuickConnectWidget: fallback to show all scan results when no supported devices found and new localization message for that case.
- Localization: add new string noSupportedDevicesShowAll in en/ru ARB and generated localization classes.
- SignalScanner & RecordScreen: remove WaterfallWidget usage and refactor view mode/animation handling; delete waterfall_widget.dart.

These changes improve reliability for long-running SD operations (format and large SubGHz clone), add user-facing progress/resume behavior, and update UI/localization accordingly.
2026-02-15 11:43:46 +01:00
Senape3000 533bcb4ea0 Auto-send nRF/settings, i18n & version bumps
Add automatic sending of nRF and button config changes (debounced 500ms for sliders) and remove manual send flows. Introduces a Timer-based debounce, cancels on dispose, triggers _sendNrfSettings on choice/slider changes and _sendButtonConfig after picking/changing replay/button actions. Add new localization key rfSettingsSubtitle (EN/RU ARB and generated files) and use it in Settings UI. Bump firmware version to 1.0.4 and mobile app version to 1.0.3+16; update iOS Flutter generated path and build name/number in Generated.xcconfig and flutter_export_environment.sh. Misc UI tweaks: show only filename for .sub paths, increase status bar maxHeight, and change waterfall border to use AppColors.borderDefault.
2026-02-14 19:07:47 +01:00
Senape3000 03a0bcc66d Add SD format, custom DeBruijn & waterfall UI
Implements SD card formatting and per-protocol De Bruijn support and adds a realtime waterfall display. Firmware: new MSG_FORMAT_SD (0x18) and handler to recursively delete/recreate SD directories; added removeDirectoryRecursive helper and integrated into remove handling. App: firmware protocol factories for format and custom DeBruijn (sub-cmd 0xFD), BleProvider methods to send format and custom DeBruijn commands, and BruteScreen/BruterProtocol extended with te/ratio fields and logic to send per-protocol De Bruijn parameters. UI: Settings screen gets a guarded "Format SD Card" control with confirmation dialog; Record screen integrates a new WaterfallWidget and syncs detected signals; new widget mobile_app/lib/widgets/waterfall_widget.dart implements the spectrogram painter. Other fixes: avoid double-slash when composing upload paths for LittleFS/SD in BleAdapter, and increase SendNotifications task stack to 4KB in main.cpp.
2026-02-14 18:30:11 +01:00
Senape3000 b7e220a6c8 Fix filesystem mkdir, CC1101, BLE & app updates
Add recursive directory creation and SD root handling: implement non-recursive mkdir walk in include/FileCommands.h and src/core/ble/BleAdapter.cpp, create base dir if needed, and support pathType 5 (SD root) for uploads. Ensure single-chunk upload handling always returns to avoid falling through to command handler.

CC1101 radio fixes: use stored MHz[] instead of getFrequency() in setPA() and Calibrate() to avoid band-edge truncation; on jamming resume apply full OOK preset via setTxWithPreset(), re-calibrate, re-apply PA mapping and reset pin/fifo init flags to restore RF output.

Bruter fixes: reset cached current_mhz in setupCC1101(), and ensure frequency changes write FREQ regs from IDLE then trigger PLL calibration (setSidle, setMHZ, SetTx, delay). Re-initialize CC1101 before each attack to guarantee TX configuration.

Mobile app changes: remove createDirectory BLE helper, keep screen awake during cloning with wakelock_plus (enable/disable), bump app version to 1.0.2+15, and display temperature with 0 decimals in status bar.

Also bump firmware patch to 1.0.3. These changes address failed mkdirs/uploads on SD/LittleFS, incorrect PA/band handling, PLL/calibration race conditions, and improve UX during cloning.
2026-02-14 17:51:44 +01:00
Senape3000 390f49be40 Add bruter module selection and SubGHz DB cloning
Add end-to-end support for selecting which CC1101 module the bruter uses and a new Flipper SubGHz DB cloning workflow.

Firmware:
- Add sub-command (0xF8) to set bruter module from BruterCommands.
- Implement BruterModule::setModule and updatePinsForModule; use selected module in setup and frequency operations.
- Fix CC1101 driver setModul to update currentModule before configuring GDO pins to avoid misconfiguration.

Mobile app:
- Settings UI: add TX Module selector, persist bruterModule, and call BLE command when changed.
- Add FirmwareBinaryProtocol.createBruterSetModuleCommand and BleProvider.setBruterModule API.
- Add BleProvider helpers: uploadFileFromBytes and createDirectory to support file uploads to device storage.
- New FlipperSubDbService: download/extract Zero-Sploit FlipperZero SubGHz repo ZIP and return .sub files.
- Add a Settings workflow/UI (and dialog) to clone the SubGHz DB to the device by creating folders and uploading files via BLE.
- File/Update behavior tweaks: fallback to public Downloads for file saves and APK updates.
- Add archive dependency and related UI/service plumbing.
- Minor UI/branding tweaks (Android package rename, Windows product metadata) and small widget cleanup.

Overall: implements module selection end-to-end (firmware + app), plus a new feature to download and push Flipper .sub files to the device over BLE.
2026-02-14 15:55:54 +01:00
Senape3000 a236d4c3e7 Add device status sync & nRF improvements
Introduce new device-state binary messages (HW button config, SD card status, nRF24 status) and wire them through firmware, BLE backend, and mobile UI so the app can sync state on connect. Firmware: add BinaryMessages structs, StateCommands helpers to send statuses, SD and nRF checks, and bump firmware version to 1.0.2. Mobile app: parse new messages, persist/sync HW button settings, display SD and nRF status in Device Status, and bump app version. MouseJack (nRF) updates: tuning constants, improved scanning (CE toggle, dwell retries), retransmit helpers for reliability, DuckyScript enhancements (DEFAULT_DELAY, REPEAT, STRINGLN, typing helpers), protocol fixes for MS/Logitech transmissions. NrfJammer: adjust mode configs and comments to refine flood vs CW behavior.
2026-02-14 11:34:19 +01:00
Senape3000 e63dd4a344 Add CPU temp offset, button replay & SD root
Introduce CPU telemetry and configurable CPU temperature offset, add hardware-button replay support and SD root pathType, and update app/firmware plumbing.

Key changes:
- Added schematics PDFs to docs.
- Protocol/firmware: BinaryStatus extended with cpuTempDeciC, core0Mhz, core1Mhz; settings payload and sync now include cpuTempOffsetDeciC. HwButton config command supports an extended payload for replay file (pathType + path).
- ConfigManager: persist button replay path/type and cpuTempOffsetDeciC, clamp/range checks, build/save logic and default values updated.
- ButtonCommands: executeAction now receives buttonId; handleButtonConfig accepts optional replay file info; ReplayLast implemented to queue CC1101 transmissions using configured path/type.
- FileCommands: support pathType 5 (SD root) and treat root-based storages appropriately; only create SD directories for dedicated SD folders.
- StateCommands: sendSettingsSync updated to 10-byte payload and include cpu temp offset in logs.
- Mobile app (Flutter): localization for CPU temp offset; BLE provider persists and exposes cpuTempOffsetDeciC and device telemetry (cpuTempC, coreMHz); supports pathType 5 (SD root) and loads temp offset preference; settings provider persists button replay paths/types and exposes setters; firmware protocol helper builds extended hw button command; FilesScreen supports pickMode, SD root selection and enforces allowed extensions when picking; Debug screen adds slider/card to adjust CPU temp offset; NrfScreen uses nrfNotify() for targeted UI updates and visual tweaks; spectrum painter maxLevel adjusted to 100.

These changes enable local replay-from-file via hardware buttons, expose CPU temperature telemetry and offset tuning to the mobile app, and add SD root handling across firmware and app.
2026-02-13 14:31:56 +01:00
Senape3000 31e52ddf8c Add per-mode nRF jammer configs and UI
Implements per-mode jammer configuration and info round-trip between firmware and app. Firmware: new binary message types (MSG_NRF_JAM_MODE_CONFIG 0xD6, MSG_NRF_JAM_MODE_INFO 0xD7) and new commands (0x42..0x45) with handlers to set live dwell, get/set mode config, get mode info, and reset configs; Binary parser updated and NrfJammer loads saved configs on startup. Mobile app: adds NrfJamMode models, protocol command factories, BLE provider caches for mode configs/infos and dwell handling, UI for mode list with settings/info dialogs, live dwell slider, and Reset Defaults action. Also migrates BatteryModule to ESP-IDF 5.x ADC oneshot + calibration API and updates readVoltage accordingly. Backwards-compatible jam-status parsing added (old/new payloads supported).
2026-02-12 23:31:27 +01:00
Senape3000 cde0faf128 Source Code first commit
First FW code commit.
2026-02-12 11:57:58 +01:00