Skip to content

Background scanning: honour "Update interval" as the Android scan cadence#133

Merged
1technophile merged 1 commit into
developmentfrom
feat/background-scan-interval
May 25, 2026
Merged

Background scanning: honour "Update interval" as the Android scan cadence#133
1technophile merged 1 commit into
developmentfrom
feat/background-scan-interval

Conversation

@1technophile

Copy link
Copy Markdown
Member

Description:

The background "Update interval" setting (updateIntervalBackground, 5-360 min) was exposed in the UI as if it governed how often sensor values refresh, but it only drove the AndroidService work-timer's DeviceManager rebuild + MQTT reconnect. Actual background scanning ran on a self-restarting 60s listen loop (deviceDiscoveryFinished -> listenDevices_start), so the setting had no effect on scan/publish frequency (device-measured: continuous ~60s regardless).

Make the setting real on Android: in the background service (daemon mode) stop self-restarting the listen loop; AndroidService::gotowork() already fires every updateIntervalBackground minutes and starts one ~60s listen window, so the radio now idles between windows. The foreground UI manager (m_daemonMode == false, on mobile and desktop) keeps re-arming, so the live view and continuous system-tray scanning are unchanged. HIL_BENCH_MODE keeps its continuous active scan.

Desktop never reads this value (it scans continuously on mains power), so hide the interval picker on desktop and reword the desktop legend to stop implying an interval.

Checklist:

  • The pull request is done against the latest development branch
  • Only one feature/fix was added per PR and the code change compiles without warnings
  • I accept the DCO.

…ence

The background "Update interval" setting (updateIntervalBackground, 5-360 min)
was exposed in the UI as if it governed how often sensor values refresh, but it
only drove the AndroidService work-timer's DeviceManager rebuild + MQTT
reconnect. Actual background scanning ran on a self-restarting 60s listen loop
(deviceDiscoveryFinished -> listenDevices_start), so the setting had no effect
on scan/publish frequency (device-measured: continuous ~60s regardless).

Make the setting real on Android: in the background service (daemon mode) stop
self-restarting the listen loop; AndroidService::gotowork() already fires every
updateIntervalBackground minutes and starts one ~60s listen window, so the radio
now idles between windows. The foreground UI manager (m_daemonMode == false, on
mobile and desktop) keeps re-arming, so the live view and continuous system-tray
scanning are unchanged. HIL_BENCH_MODE keeps its continuous active scan.

Desktop never reads this value (it scans continuously on mains power), so hide
the interval picker on desktop and reword the desktop legend to stop implying an
interval.

Device-verified (LG V30 / Android 9 and S10e / Android 12): background scanning
is one ~60s window per interval (5 min -> ~4 min idle; 10 min -> ~9 min idle),
foreground stays continuous.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@1technophile 1technophile merged commit b4e2dbd into development May 25, 2026
11 of 12 checks passed
@1technophile 1technophile deleted the feat/background-scan-interval branch May 25, 2026 03:09
1technophile added a commit that referenced this pull request Jun 2, 2026
Documentation fell behind the 1.5.0 release train after PR #130. Fold the
four user-facing PRs that landed since into the existing 1.5.0 section
of the changelog and refresh the affected pages on the doc site.

- use.md: note the new MQTT-down banner in the device list; replace the
  manual "Permissions/Battery/Unrestricted" walkthrough with the
  consolidated in-app Background updates screen (background location +
  exact alarms + battery-optimisation rows); document that the "Update
  interval" setting now actually drives the Android background scan
  cadence (one ~60 s window per interval, idle in between).
- build.md: require libsecret-1-dev on Linux; add the new
  ENABLE_SECURE_STORAGE CMake option for QtKeychain-backed credential
  storage.
- privacy.md: bump the last-updated date; note that broker credentials
  are persisted in the OS-managed secure store rather than plaintext
  settings.
- CHANGELOG.md: under the existing [1.5.0] entry, add the MQTT-down
  banner, consolidated Background updates page, and AllowWhileIdle
  exact-alarm scheduler to Added; the scan-cadence fix and the
  ENABLE_MBEDTLS=OFF guard to Fixed; and credential storage to Security.

PRs covered: #131 (MQTT sentinels), #132 (credential secure storage),
#133 (background scan cadence), #135 (background-alarm-doze train,
including the consolidated Background updates page and the exact
AllowWhileIdle scheduler).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1technophile added a commit that referenced this pull request Jun 6, 2026
Bump the 1.5.0 release date to 2026-06-06 and fold in the user-facing
changes that landed between #130 and the cut: TheengsDecoder v2.3.0
(#137), MQTT sentinels + sampling caption (#131), credential secure
storage (#132), background-update scheduling and consolidated
permissions UI (#133, #135), the About-screen decoder version and
build number (#139), the iOS mbedTLS static-link fix (#138), and the
device_bm26 ENABLE_MBEDTLS guard (#134).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1technophile added a commit that referenced this pull request Jun 6, 2026
Bump the 1.5.0 release date to 2026-06-06 and fold in the user-facing
changes that landed between #130 and the cut: TheengsDecoder v2.3.0
(#137), MQTT sentinels + sampling caption (#131), credential secure
storage (#132), background-update scheduling and consolidated
permissions UI (#133, #135), the About-screen decoder version and
build number (#139), the iOS mbedTLS static-link fix (#138), and the
device_bm26 ENABLE_MBEDTLS guard (#134).

Co-authored-by: Florian <1technophile@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant