Skip to content

Commit d70e7a4

Browse files
authored
Merge pull request #124 from squazaryu/feat/123-tumospectrum2
feat: add TumoSpectrum 2.0 capture-set inference
2 parents 5a4cb29 + e625116 commit d70e7a4

15 files changed

Lines changed: 1558 additions & 87 deletions

File tree

ReadMe.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ you find a tumoflip-specific issue, report it in this repository:
2525
## Current Build
2626

2727
- Base: Unleashed 089 with selected upstream dev updates
28-
- Firmware version: `t-dev-089-037-055`
28+
- Firmware version: `t-dev-089-037-056`
2929
- Firmware origin/fork: `tumoflip`
3030
- Firmware API: `88.0`
3131
- Target: Flipper Zero F7
3232
- Release channel: `dev experimental line`
33-
- Release package: `flipper-z-f7-update-t-dev-089-037-055.tgz`
33+
- Release package: `flipper-z-f7-update-t-dev-089-037-056.tgz`
3434
- Flash profile: JS Runner / MJS runtime excluded to preserve internal flash headroom.
3535

3636
API `88.0` is a deliberate breaking migration. External FAP/FAL binaries built
@@ -56,7 +56,7 @@ t-dev-<unleashed>-<build>-<iteration>
5656
- `t-dev`: Tumoflip development build prefix for unstable builds.
5757
- `089`: upstream Unleashed base version.
5858
- `037`: tumoflip internal build version.
59-
- `055`: development iteration inside the tumoflip internal build version.
59+
- `056`: development iteration inside the tumoflip internal build version.
6060

6161
`main` should only receive builds that are stable enough to publish as tagged
6262
releases. Active firmware work lands on `dev` first. When the Unleashed base
@@ -96,7 +96,7 @@ The four-page post-update splash screen is generated automatically from
9696
## tumoflip Changes
9797

9898
- Rebranded firmware origin to `tumoflip` and distribution/version suffix to
99-
`t-dev-089-037-055`.
99+
`t-dev-089-037-056`.
100100
- Added custom Desktop main menu styles inspired by Momentum-style layouts.
101101
- Added `RX Mode: AUTO/DUAL` and a direct Read-screen toggle to the system
102102
Sub-GHz app. With an external CC1101 connected, both radios decode
@@ -200,7 +200,7 @@ identity.
200200

201201
| Area | Unleashed | tumoflip |
202202
| --- | --- | --- |
203-
| Firmware identity | Reports itself as Unleashed. | Reports `firmware_version: t-dev-089-037-055` and `firmware_origin_fork: tumoflip`. |
203+
| Firmware identity | Reports itself as Unleashed. | Reports `firmware_version: t-dev-089-037-056` and `firmware_origin_fork: tumoflip`. |
204204
| Desktop layouts | Uses the default Unleashed Desktop style set. | Adds custom main menu styles, including Wii, DSi, Vertical, and Wii Vertical variants. |
205205
| Dummy Mode | Included and reachable from Desktop shortcuts. | Removed from firmware and removed from shortcuts. |
206206
| Short-Up quick menu | Includes the standard quick actions, including Dummy Mode in the original layout. | Replaces the removed Dummy Mode shortcut with Settings. |
@@ -213,7 +213,7 @@ identity.
213213
| Sub-GHz hopping | Frequency hopping only. | Adds preset and combined hopping plus an adaptive scan dwell, signal hold, post-signal grace period, and bounded hold time to system Sub-GHz. |
214214
| NFC additions | Uses the Unleashed 089 NFC feature set. | Shows captured MIFARE Ultralight/NTAG PWD and PACK and adds the Bambu Lab filament spool parser. |
215215
| User apps | External/local apps are not part of the base repository. | Vendors selected local apps into `applications_user` so the firmware builds reproducibly. |
216-
| Build metadata | Uses upstream build metadata conventions. | Uses `t-dev-089-037-055` for the installed firmware version and release artifact suffix, while keeping `tumoflip` as the fork origin. |
216+
| Build metadata | Uses upstream build metadata conventions. | Uses `t-dev-089-037-056` for the installed firmware version and release artifact suffix, while keeping `tumoflip` as the fork origin. |
217217

218218
## Notes on Custom UI
219219

@@ -398,7 +398,7 @@ Stable `main` update packages and `dev` prereleases are published on
398398
[GitHub Releases](https://github.com/squazaryu/tumoflip/releases). The currently
399399
selected branch build uses this artifact name:
400400

401-
- `flipper-z-f7-update-t-dev-089-037-055.tgz`
401+
- `flipper-z-f7-update-t-dev-089-037-056.tgz`
402402

403403
Before flashing, make a backup of important data:
404404

@@ -420,7 +420,7 @@ python3 tools/tumoflip/validate_release.py --write-manifest
420420
The update package is produced under:
421421

422422
```text
423-
dist/f7-C/flipper-z-f7-update-t-dev-089-037-055.tgz
423+
dist/f7-C/flipper-z-f7-update-t-dev-089-037-056.tgz
424424
```
425425

426426
## Upstream

applications/main/infrared/infrared_app.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -580,8 +580,9 @@ int32_t infrared_app(void* p) {
580580

581581
bool is_remote_loaded = false;
582582
bool is_rpc_mode = false;
583+
const bool open_capture_raw = p && strcmp(p, "tumospectrum_raw") == 0;
583584

584-
if(p && strlen(p)) {
585+
if(p && strlen(p) && !open_capture_raw) {
585586
uint32_t rpc_ctx = 0;
586587
if(sscanf(p, "RPC %lX", &rpc_ctx) == 1) {
587588
infrared->rpc_ctx = (void*)rpc_ctx;
@@ -617,7 +618,12 @@ int32_t infrared_app(void* p) {
617618
} else {
618619
view_dispatcher_attach_to_gui(
619620
infrared->view_dispatcher, infrared->gui, ViewDispatcherTypeFullscreen);
620-
if(is_remote_loaded) { //-V547
621+
if(open_capture_raw) {
622+
infrared_worker_rx_enable_signal_decoding(infrared->worker, false);
623+
infrared->app_state.is_learning_new_remote = true;
624+
scene_manager_next_scene(infrared->scene_manager, InfraredSceneStart);
625+
scene_manager_next_scene(infrared->scene_manager, InfraredSceneLearn);
626+
} else if(is_remote_loaded) { //-V547
621627
scene_manager_next_scene(infrared->scene_manager, InfraredSceneRemote);
622628
} else {
623629
scene_manager_next_scene(infrared->scene_manager, InfraredSceneStart);

applications/main/subghz/subghz.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,8 @@ void subghz_free(SubGhz* subghz, bool alloc_for_tx_only) {
357357

358358
int32_t subghz_app(void* p) {
359359
const bool open_receiver = p && strcmp(p, "receiver") == 0;
360-
const bool alloc_for_tx = p && strlen(p) && !open_receiver;
360+
const bool open_capture_raw = p && strcmp(p, "tumospectrum_raw") == 0;
361+
const bool alloc_for_tx = p && strlen(p) && !open_receiver && !open_capture_raw;
361362

362363
SubGhz* subghz = subghz_alloc(alloc_for_tx);
363364

@@ -371,13 +372,15 @@ int32_t subghz_app(void* p) {
371372
if(p && strlen(p)) {
372373
uint32_t rpc_ctx = 0;
373374

374-
if(open_receiver) {
375+
if(open_receiver || open_capture_raw) {
375376
view_dispatcher_attach_to_gui(
376377
subghz->view_dispatcher, subghz->gui, ViewDispatcherTypeFullscreen);
377378
furi_string_set(subghz->file_path, SUBGHZ_APP_FOLDER);
378379
if(subghz_txrx_is_database_loaded(subghz->txrx)) {
379380
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneStart);
380-
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneReceiver);
381+
scene_manager_next_scene(
382+
subghz->scene_manager,
383+
open_capture_raw ? SubGhzSceneReadRAW : SubGhzSceneReceiver);
381384
} else {
382385
scene_manager_set_scene_state(
383386
subghz->scene_manager, SubGhzSceneShowError, SubGhzCustomEventManagerSet);

applications_user/signal_workbench/application.fam

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ App(
1212
fap_icon_assets="icons",
1313
fap_category="Module One/Signals",
1414
fap_dist_path="apps/Module One/Signals/signal_workbench.fap",
15-
fap_version="1.0.2",
15+
fap_version="2.0.0",
1616
fap_author="squazaryu/tumoflip",
1717
fap_weburl="https://github.com/squazaryu/tumoflip",
18-
fap_description="Read-only signal research workspace with strict Sub-GHz, Infrared and TumoScope parsers, timing analysis, comparison, notebook reports and Companion visualization.",
18+
fap_description="Signal research workspace with stock-app RAW capture, bounded multi-capture timing inference, comparison, notebook reports and Companion visualization.",
1919
)

0 commit comments

Comments
 (0)