Commit Graph
15299 Commits
Author SHA1 Message Date
José Rebelo 22859347f8 Redmi Watch Move: Initial support 2026-05-15 18:23:24 +01:00
José Rebelo 4ad2284d5f Merge pull request 'Pebble: Include battery read in pull-to-refresh update' (#6110)
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/6110
2026-05-15 13:48:49 +02:00
Dany MestasandJosé Rebelo e0820f106f AlarmClockReceiver: populate spec so notifications render on Xiaomi
Previously sourceAppId, title, and body were left null and sourceName
was the literal "ALARMCLOCKRECEIVER", causing Xiaomi watches to drop
the alarm-fire notification (the watch falls back to Gadgetbridge's own
package id which is not on the app allowlist, and the spec has nothing
to display).

Plumb the captured clock-app package (com.android.deskclock or
com.google.android.deskclock) through sendAlarm so:
- sourceAppId carries the real clock package
- sourceName is the resolved application label (NotificationUtils.getApplicationLabel)
- title = "Alarm" (R.string.menuitem_alarm)
- body = current time formatted via DateFormat

Strict improvement for all device families; Huami/ZeppOs previously
also displayed the alarm with empty title/body.
2026-05-15 13:48:35 +02:00
MrYoranimo a16b90f6aa Xiaomi-protobuf: combine installed apps and watchface cache when reporting installed apps
Because the list of installed apps and the list of installed faces are
requested from Xiaomi devices separately, a race condition will occur if
the lists are not combined: when processing the AppInfo event, all
previously known installed apps are removed from the app manager cache, which
will cause either all apps or all faces to get forgotten.
2026-05-15 01:21:20 +02:00
José Rebelo d5643468b9 iGPSPORT: Update install notification progress 2026-05-14 23:49:03 +01:00
José Rebelo 81ab123c32 iGPSPORT: Improve upload progress 2026-05-14 23:46:29 +01:00
Benjamin Temple 12db34cf90 Pebble: Include battery read in pull-to-refresh update 2026-05-14 15:38:02 -07:00
José Rebelo cbd92ef6fe update changelog, bump version 2026-05-14 21:12:43 +01:00
Benjamin Temple 552547ec9e Pebble: Add support for pull to refresh for pebble health data
Only signalActivityDataFinish on error as datalog will invoke once health sync data finishes syncing
2026-05-13 23:24:41 -07:00
Vitaliy TominandJosé Rebelo 57154dff91 igpsport: Hide watchface tab 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 179e04beb1 igpsport: Fix endless loop when there is no route files 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 40401492fa igpsport: Handle null values in MusicSpec 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 519b17647b igpsport: Add BSC300 2026-05-13 23:33:24 +02:00
Thomas KuehneandJosé Rebelo 85543cb4c6 igpsport: Rebase to current master 2026-05-13 23:33:24 +02:00
Michael PlattnerandJosé Rebelo b52e2312b2 feat: add activity fetching
- activate supportsDataFetching and recorded activities, to download fit files from device
- sync fit files, but do it only from the last sync time that we do not always sync all the fit files
2026-05-13 23:33:24 +02:00
Michael PlattnerandJosé Rebelo bad96e4f75 feat: add binavi air 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 26e162ec68 igpsport: Rebase to current master
* Updated for new units preference logic
2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo ad1ff7250d igpsport: Split iGS630S to its own coordinator
* minor log fix
2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 6255057772 igpsport: Removed all RuntimeException from igpsport and minor fixes 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 5f9114c221 igpsport: Mark device names non-translatable 2026-05-13 23:33:24 +02:00
Thomas KuehneandJosé Rebelo 2d36bda559 igpsport: Update for current master rebase 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 5216752665 igpsport: Use GarminWorkoutParser 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo d3103400fc igpsport: Add missing return after download data 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 9a2b5a38ac igpsport: Use Garmin FitImporter and FitAsyncProcessor 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 77f4a99ed5 igpsport: Remove unused loggers and commented code 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 0046666f19 igpsport: update strings s/IGPSPORT/iGPSPORT/ 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo bab5311d7f igpsport: Copy FitAsyncProcessor from Garmin 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 4f56b6569b igpsport: Copy Fitimporter from Garmin
* remove garmin specific samples like stress, hrv and sleep, use only standard fit records
2026-05-13 23:33:24 +02:00
Richard NauberandJosé Rebelo 78494a6877 igpsport: add BCS200S support 2026-05-13 23:33:24 +02:00
Richard NauberandJosé Rebelo 6461a226fc igpsport: explicitly set MTU before communicating
This is necessary for the BCS200S to work.
2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo dacf0471ef igpsport: Swithc to GarminTimeUtils time converting method, set device busy
* use garmin time epoch as it is used by all fit files
* use Locale.ROOT for filename generation
* set/unset device busy while downloading fit files
2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo d4c2068aa4 igpsport: Implement Music info for igs800 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 0222175fb5 igpsport: Support media buttons (tested on iGS800) 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo faf0725951 igpsport: Fixes after rebase 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo f1004a663a igpsport: Fix file payload calculation and offsets for file data 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 3e2ca93f49 igpsport: Fix iGS630s typo 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo c0bcee6ba7 igpsport: Add iGS800 2026-05-13 23:33:24 +02:00
Thomas KuehneandJosé Rebelo 014b180a30 igsport: rebase device code to master ad34fec706 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 39cf720fdd igpsport: Use custom time epoch for fit files times
* turns out cycling_data_msg has timestamps with custom epoch,
adding this epoch to get standard timestamp.
2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 34581b8041 igpsport: Handle all routes files, update list on deletion 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 046c019bb5 igpsport: Fix double parsing of protobuf packets,fix typo in 02 packets parsing 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo a404586ef5 igpsport: Partial routes list fix
* now handles only single request with  up to fileListSupportNumMax
files, need to iterate it to handle remaining files
2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 93c1f78371 igpsport: Weather refactoring. Fixed hourly times and icons. 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 56e67e0761 igpsport: add hourly and daily forecast 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo e339ad876a iigpsport: Add igpsport IGS630s to supported devices 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 586f12e67f igpsport: Refactor incoming packets parsing
* support splited packets for protobuf packets
2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo 63d87b57bf igpsport: Fix User and Units config 2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo a8b160c654 igpsport: Hadnle device request for weather
* add DATA_HEADER_SIZE=20
2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo b193da7349 igpsport: download workouts
* now able to save all fit files from computed to phone
/sdcard/Android//data/nodomain.freeyourgadget.gadgetbridge/files/
* TODO parse fit files to workouts
2026-05-13 23:33:24 +02:00
Vitaliy TominandJosé Rebelo f6aa398316 igpsport: Get SN from device
* need to find way to use it as idintifier in DB since it is constant for each device,
but MAC changes on unpair
2026-05-13 23:33:24 +02:00