Commit Graph
15819 Commits
Author SHA1 Message Date
José Rebelo 932745187a PebbleContentProvider: Use connected pebble device 2026-03-24 18:05:08 +00:00
Gideon ZenzandJosé Rebelo 539031b4b1 SleepAnalysis: Fix awake duration overflow when gap is not bridged
Only commit gap time to awakeSleepDuration when sleep actually resumes
(bridge confirmed), instead of speculatively counting all non-sleep
time as awake. Fixes total duration exceeding session span.
2026-03-24 18:58:24 +01:00
Gideon ZenzandJosé Rebelo 4c966bf232 SleepAnalysis: Bridge non-sleep gaps with no activity as awake sleep
Fix dead code bug where MAX_WAKE_PHASE_LENGTH could never trigger
because Block A unconditionally nulled sleepStart before Block B
could check it. Non-sleep samples now only break a session if the
user has step activity or the gap exceeds 1 hour. Bridged gaps are
counted as awake sleep duration.

See: #5757
2026-03-24 18:58:24 +01:00
iNeedADoctor 2ac3556310 Redmi Buds 6 Active: add (almost all) the missing features 2026-03-24 00:56:37 +01:00
Edoardo Vacchi 36e23fe08c Xiaomi: Fix RPK install/delete and enable App Manager UI
- Enable supportsInstalledAppManagement() to show the Apps tab in App Manager
- Fix RPK install protocol: include versionCode (field 2 of RpkInfo) in the
  install request; the band silently ignores requests with versionCode=0
- Fix CMD_RPK_INSTALLED (subtype=2): handle band's post-install notification
  to refresh the app list at the right time
- Fix deleteRpk() UUID comparison: use .equals() instead of ==
- Refresh app list after delete (band sends no explicit delete response)
- Read versionCode from RPK manifest.json in XiaomiFWHelper
- Fix various wrong proto field reads (watchface fields used for RPK responses)
2026-03-23 23:20:42 +01:00
Sky233mlandEdoardo Vacchi 21f719851b Xiaomi: Fixed detail of Rpk 2026-03-23 23:20:42 +01:00
Sky233mlandEdoardo Vacchi 6c5f5f992c Xiaomi: Add support for upload with resumePosition 2026-03-23 23:20:42 +01:00
Sky233mlandEdoardo Vacchi 0554fee3b9 Xiaomi: Add support for parse firmware 2026-03-23 23:20:42 +01:00
Sky233mlandEdoardo Vacchi 08d9b6cac8 Xiaomi: Add support for Rpk 2026-03-23 23:20:42 +01:00
Sky233mlandEdoardo Vacchi 74cc172ada Xiaomi: Add Rpk on xiaomi.proto 2026-03-23 23:20:41 +01:00
José Rebelo 03dd47a5c5 Fix gpx filename sanitization 2026-03-23 21:15:58 +00:00
José Rebelo df495d779c Xiaomi-protobuf: Enable awake sleep 2026-03-22 23:46:14 +00:00
Gideon ZenzandJosé Rebelo d7c1022926 Xiaomi: Map sleep stage 5 (awake) to AWAKE_SLEEP
getActivityKindForSample was written before AWAKE_SLEEP existed in
ActivityKind (April 2024 vs August 2024), so decoded stage 5 (awake
during sleep) fell through to UNKNOWN. This caused the sleep overlay
to skip awake periods, which may fragment sleep sessions in
SleepAnalysis and result in missing or truncated Health Connect
sleep records.

See: https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/5920
2026-03-23 00:35:32 +01:00
José Rebelo ed2156c090 Add Intent to change global settings 2026-03-22 23:16:03 +00:00
José Rebelo 27a6396c70 DeviceSettingsReceiver: Only broadcast changed setting to affected device 2026-03-22 23:00:18 +00:00
José Rebelo 7c1324bec9 Zepp OS: Add Floorball activity 2026-03-22 19:21:46 +00:00
José Rebelo dce0534838 Pebble: Fix PebbleKit toggle in content provider 2026-03-22 19:05:25 +00:00
José Rebelo b0c23b82e3 iTECH Active 3: Initial support 2026-03-22 18:24:33 +00:00
Daniele Gobbetti 3d0e3216f3 Pebble: add toggle for PebbleKit support
The device setting was conflated with "third_party_apps_set_settings" in c3d76477ec, but after reviewing PebbleKitSupport class, the allowed PebbleKit actions are not capable of changing settings on the android device as all of them are just piping data to and from the Pebble device.
PebbleKit messages can change settings on a Pebble device, though, this is possibly the source of the original confusion.
2026-03-22 18:38:00 +01:00
José Rebelo 3ccd231a54 Navigation: Add warning about supported devices 2026-03-22 15:19:18 +00:00
Daniele Gobbetti 27cad55c48 SBM67: change the persisting logic
It looks like the 'NOT_CONNECTED' state does not get intercepted, change it to 'CONNECTING' as Gadgetbridge will attempt a reconnection immediately after disconnect
2026-03-22 16:13:37 +01:00
Daniele Gobbetti 1c3c6c8ce9 Blood pressure profile: prevent persisting duplicate samples
Explicitly clear the GregorianCalendar Instance, as calling "set" only does not set the milliseconds and causes duplicate samples.
2026-03-22 16:10:28 +01:00
Daniele Gobbetti cf244cd1b4 Garmin: use COORDINATE base field for Weather coordinate fields (untested)
Use the standard field encoding for coordinates. Untested as my watch does not show the contents of the coordinate fields, but verified that they used to be invalid in the test cases and are now properly populated.

Also update test cases to match.
2026-03-22 13:26:14 +01:00
Daniele Gobbetti 93df9e94e6 Garmin: re-enable FitWeather tests and make the Weather Message reproducible
Change the order of the calls to the various setters in GarminSupport to reproduce the former fields' ordering in definition and data messages.
Update the tests in FitWeather to incorporate the new logic for local messages.
Add a new test that uses the legacy "setFieldByName" methods to ensure the serialization is equal.
2026-03-22 09:55:02 +01:00
José Rebelo d9e024700f Resolve human-readable auto gpx export path 2026-03-21 23:21:16 +00:00
José Rebelo f6455f777c CMF Watch Pro 3: Workout sync 2026-03-21 22:43:17 +00:00
José Rebelo cb435e067a Garmin: Add auto-export to gpx 2026-03-21 21:55:04 +00:00
José Rebelo b9094f4d06 Xiaomi: Fix re-processing of some wrongly written files 2026-03-21 21:55:04 +00:00
José Rebelo 8890aafa44 Make auto gpx export configurable 2026-03-21 21:55:04 +00:00
José Rebelo de01e6ed14 CMF Watch Pro: Add ActivityTrackProvider 2026-03-21 21:55:04 +00:00
José Rebelo 32d5bbc1c6 Huawei: Add ActivityTrackProvider 2026-03-21 21:55:04 +00:00
José Rebelo a7b432c4b0 Xiaomi: Add ActivityTrackProvider 2026-03-21 21:55:04 +00:00
José Rebelo 9ddb4895df Bangle.js: Add ActivityTrackProvider 2026-03-21 21:55:04 +00:00
José Rebelo 4b1abace72 Huami / Zepp OS: Add ActivityTrackProvider 2026-03-21 21:55:04 +00:00
José Rebelo 58d6d670f7 Introduce ActivityTrackProvider 2026-03-21 21:55:03 +00:00
José Rebelo 4c81beed00 Garmin: Fix activity sync stuck when keep activity data on device is enabled 2026-03-21 21:22:50 +00:00
dependency-botandJosé Rebelo 349e3516dd Update kotlin monorepo to v2.3.20 2026-03-21 18:53:30 +01:00
dependency-botandJosé Rebelo a0a70b759c Update dependency gradle to v9.4.1 2026-03-21 18:24:47 +01:00
dependency-botandJosé Rebelo 215c660528 Update protobuf to v4.34.1 2026-03-21 18:24:33 +01:00
Christian Breiteneder 6a1ef81a05 Add Braun iCheck 7 BPW4500 blood pressure monitor support
Add full Gadgetbridge integration for the Braun iCheck 7 BPW4500
blood pressure monitor using its proprietary BLE protocol (Kaz USA).

New files:
- BraunBPW4500DeviceCoordinator: device detection via BLE name "BPW4500",
  WHO blood pressure classification, GenericBloodPressureSampleProvider
- BraunBPW4500DeviceSupport: BLE communication, 19-byte measurement
  packet parsing (systolic, diastolic), RTC sync
- DashboardBloodPressureWidget: dashboard gauge with WHO color coding
- BloodPressureChartFragment: line chart, measurement list,
  PDF and CSV export with user profile info

Modified files:
- DeviceType: register BRAUN_BPW4500
- DashboardFragment: register bloodpressure widget
- DefaultChartsProvider: register BloodPressureChartFragment
- arrays.xml: add blood pressure to dashboard and charts tab lists
- strings.xml: add device name, bp_systolic, bp_diastolic strings
- shared_paths.xml: add pdf/csv cache paths for FileProvider export

Known limitation: offline stored measurements cannot be retrieved
reliably as the device transmits history data before GATT service
discovery completes in Gadgetbridge.

fixed chart monthly/weekly view

remodeled blood pressure fragments

fix remaining review comments
2026-03-21 17:34:40 +01:00
José Rebelo 47b2412663 ZL02D: Initial support 2026-03-21 16:04:52 +00:00
José Rebelo 49ac9467a5 Garmin Descent G1: Initial support 2026-03-21 13:09:05 +00:00
076a85d762 Garmin: fix CobsCoDec.encode
Co-authored-by: José Rebelo <joserebelo@outlook.com>
2026-03-21 00:16:35 +01:00
Thomas KuehneandJosé Rebelo 165cd803a0 Garmin: fuzzy test for CobsCoDec 2026-03-21 00:16:35 +01:00
José Rebelo 4cb5a9e34d Add workaround for crash when DST rules are unknown (#5914) 2026-03-20 21:41:08 +00:00
José Rebelo b92985fc3b Zepp OS: Add support for TGA_RGB565_MHS002SNEMAP 2026-03-20 20:38:40 +00:00
José Rebelo 9313c43ec9 Add gradle distributionSha256Sum 2026-03-19 23:12:54 +00:00
José RebeloandHosted Weblate e6f8a2087d Translated using Weblate (Serbian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Freeyourgadget/fastlane metadata
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/fastlane-metadata/sr/
0.90.0
2026-03-19 22:50:45 +01:00
José RebeloandHosted Weblate 7c42ed6125 Translated using Weblate (Tamil)
Currently translated at 100.0% (3 of 3 strings)

Translation: Freeyourgadget/fastlane metadata
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/fastlane-metadata/ta/
2026-03-19 22:50:45 +01:00
José Rebelo 61eaaf81a3 Fix linter 2026-03-19 21:41:43 +00:00