1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-11-30 22:12:55 +01:00
Commit Graph

10968 Commits

Author SHA1 Message Date
Me7c7
0745a374a5 Huawei: Continuous skin temperature measurement switch 2024-09-08 20:24:15 +00:00
José Rebelo
42def1cefb Update some manufacturers with brand names
Most users will not recognize the actual manufacturers, so let's replace
with the brand names.
2024-09-08 14:17:16 +01:00
Martin.JM
1315931ff8 Huawei: Chain initialize dynamic services requests
Also includes a bit of cleanup.

Thanks to José Rebelo for cleaning my code.
2024-09-08 01:05:16 +02:00
José Rebelo
098ab77cc6 Garmin Forerunner 165: Initial support 2024-09-07 23:26:07 +01:00
José Rebelo
c5c0d2a9d4 Update dependency com.android.tools:desugar_jdk_libs to v2.1.2 2024-09-07 21:41:19 +01:00
José Rebelo
fa9e111b6b Dashboard: Reload preferences on create view
Attempt to mitigate a crash when a device finishes fetching data
while the fragment is still being created.
2024-09-07 21:32:13 +01:00
José Rebelo
2212b244e6 Garmin: Fix NPE on call with privacy mode on 2024-09-07 14:29:55 +00:00
José Rebelo
3a778a9f2a Fix sleep charts for devices without REM sleep 2024-09-07 13:41:30 +01:00
Me7c7
fc450882cb Huawei: Contacts uploading support 2024-09-07 11:31:15 +00:00
dependency-bot
287fdd87d8 Update dependency androidx.fragment:fragment to v1.8.3 2024-09-07 12:29:33 +01:00
dependency-bot
b481860529 Update dependency androidx.activity:activity to v1.9.2 2024-09-07 11:28:55 +00:00
Johannes Krude
0282863573 Casio GW-B5600: bugfix for several watch settings 2024-09-07 08:22:12 +02:00
José Rebelo
42277fceb9 Casio: Truncate notification message to 250 bytes 2024-09-06 21:44:06 +01:00
Me7c7
1f5e9b52b8 Huawei: Quick fix issue with concatenated packets. 2024-09-06 20:12:56 +00:00
Patrick Rudolph
cde10a6dce Huawei: GetHiChainRequest: Add error handling
Parse the error code and throw an exception instead of doing strange
things due to invalid step ID being used.

To investigate issue #4061.

Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
2024-09-06 20:06:34 +00:00
José Rebelo
e51b55a38a Garmin: Infer sleep time for devices that do not send sleep stages
See #4048 for more information
2024-09-05 21:27:29 +01:00
José Rebelo
bd5b54c3b4 Garmin: Fix daily weather missing current day 2024-09-03 23:03:46 +01:00
José Rebelo
c04d3adf7c Casio: Truncate notifications with long messages (#4063) 2024-09-02 23:04:02 +01:00
José Rebelo
168c0e126e Huami: Move device actions to generic preferences section 2024-09-02 22:49:36 +01:00
Arjan Schrijver
b5104dd9ca Dashboard: Fix worn in Today widget when devices measure HR less than every minute 2024-09-02 20:38:49 +02:00
José Rebelo
d4e34c5982 Garmin: Remove music state timer 2024-09-01 15:07:54 +01:00
José Rebelo
4f7fb8117e BtLEQueue: Log MTU changes 2024-09-01 13:41:37 +01:00
José Rebelo
593d6d6b25 Garmin: Map some unknown realtime settings 2024-09-01 12:05:32 +01:00
José Rebelo
834c773dec Fix getLocalDate month off-by-1 2024-08-31 21:33:24 +01:00
José Rebelo
e676f7c6b0 Add safeguard against invalid year of birth values 2024-08-31 21:29:47 +01:00
mormegil
72e8028ad6 Update Nordic DFU library to fix Pinetime firmware upgrade on Android 14
Since we raised `targetSdkVersion` to 34 in fad092b6f8,
attempt to upgrade Pinetime firmware on Android 14+ causes Gadgetbridge
to die with "One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be
specified when a receiver isn't being registered exclusively for system
broadcasts" unhandled java.lang.SecurityException.

This was caused by the Nordic Semi DFU library not supporting A14 until
version 2.3.2 (see https://github.com/NordicSemiconductor/Android-DFU-Library/issues/412
and https://github.com/NordicSemiconductor/Android-DFU-Library/pull/413).

So, upgraded the library to the current release 2.5.0.
2024-08-31 16:52:27 +02:00
José Rebelo
4da02fa851 Add month and day to date of birth 2024-08-31 14:40:39 +01:00
José Rebelo
b59ba76803 Refactor preferences screen 2024-08-31 13:33:25 +00:00
José Rebelo
64887a5adf Prevent dashboard menu from showing on device list 2024-08-31 12:20:40 +01:00
dependency-bot
977ab9d03e Update dependency com.android.tools:desugar_jdk_libs to v2.1.1 2024-08-31 10:50:11 +00:00
Johannes Krude
76fb19a1b9 Reminders without time use UTC and do so also when changing the date 2024-08-30 22:03:34 +00:00
Johannes Krude
8a4aca06e6 DevicePrefs gets the GBDevice since it it device specific 2024-08-30 22:03:34 +00:00
Johannes Krude
80fea5b916 move some device specific preferences from GBPrefs to DevicePrefs
addresses https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/4049#issuecomment-2270266
2024-08-30 22:03:34 +00:00
Johannes Krude
b64841b48e GBReminderListAdapter gets remindersHaveTime through constructor
addresses https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/4049#issuecomment-2270261
2024-08-30 22:03:34 +00:00
Johannes Krude
e0741d4a13 Casio2C2D: Reminders have no hour or minute 2024-08-30 22:03:34 +00:00
Johannes Krude
e92baf69d1 Casio GW-B5600: Reminders 2024-08-30 22:03:34 +00:00
Johannes Krude
ec0a38c7c0 Casio2C2DSupport: refactor DeviceSetting for better reusability 2024-08-30 22:03:34 +00:00
Johannes Krude
e5438a856e fix reserved Reminder slots for non-Huami Devices 2024-08-30 22:03:34 +00:00
José Rebelo
21aff699a7 Limit logcat tags to 80 characters
Avoids them being sometimes not properly recognized in Android Studio
logcat.
2024-08-30 22:38:22 +01:00
Me7c7
1c19283192 Huawei: Improved error handling for bin file parsing. 2024-08-30 19:26:12 +00:00
Me7c7
2aafad46eb Huawei: Check TLVs before access. Not present in some watches 2024-08-30 19:26:12 +00:00
Me7c7
4989334ff4 Huawei: Instalattion of apps fixed. Correct bin files support 2024-08-30 19:26:12 +00:00
Me7c7
74b9298a6b Huawei: added measurement units for altitude #4044 2024-08-30 21:40:31 +03:00
Me7c7
f983060cb2 Huawei: Fixed min and max attitude values in workouts #4044 2024-08-30 18:59:40 +03:00
José Rebelo
95fdee3cbe Use MediaController for media buttons 2024-08-30 11:03:20 +00:00
José Rebelo
c7bb47d6bd Data Management: Fix keyboard focus on search 2024-08-29 22:02:29 +01:00
José Rebelo
d033c5e33e Data Management: Add basic search to file manager 2024-08-29 22:00:18 +01:00
José Rebelo
c9e4379346 Soundcore Liberty: Unify support classes 2024-08-29 20:40:26 +01:00
flipsa
648212bdc1 Initial support for Anker Soundcore Liberty 4 NC earbuds 2024-08-29 19:39:38 +00:00
José Rebelo
227f0a9d80 Mi Composition Scale: Add alternative bluetooth name 2024-08-29 15:17:19 +00:00
José Rebelo
7579ba11b1 Mi Composition Scale: Persist weight samples 2024-08-29 15:17:19 +00:00
José Rebelo
f746ef42f3 Dashboard: Prevent crash on draw after onSaveInstanceState (#4007) 2024-08-29 16:09:13 +01:00
José Rebelo
bfde77fb3a Prevent crash on unknown activity charts tab 2024-08-29 16:09:13 +01:00
José Rebelo
f76180c4bd Dashboard: Add new widgets, make them clickable
Add 3 new widget types:
- Body energy
- Stress (simple, segmented, breakdown)
- HRV

Make widgets clickable, opening the corresponding charts page.
2024-08-29 16:09:13 +01:00
Daniele Gobbetti
d4df00ccbf Garmin: send blocks that are smaller than MaxPacketSize
Fixes 4047
2024-08-29 16:52:50 +02:00
Me7c7
e54fd95a8b Huawei: Basic support for the installation of the applications 2024-08-29 17:23:42 +03:00
José Rebelo
d75ae6b54d Bangle.js: Fix calendar sync setting 2024-08-29 12:07:02 +01:00
José Rebelo
7eb1fcdb52 DeviceInfoProfile/BtLEQueue: Improve logging and fix warnings 2024-08-29 11:46:42 +01:00
José Rebelo
49ef8c9f40 Garmin: View and share gpx files 2024-08-28 19:18:08 +01:00
José Rebelo
12ecfa0c4e Garmin: Parse strength training workout sets 2024-08-28 13:43:12 +01:00
Me7c7
9321e470d7 Huawei: Use proper file type for sleep files 2024-08-27 22:06:01 +00:00
a0z
88c8629ec0 Steps/Sleep activties: update lines and offsets 2024-08-27 22:03:04 +00:00
José Rebelo
39707a52da Huami: Migrate all device settings to sub-screens 2024-08-27 22:48:00 +01:00
José Rebelo
63a6f07de0 Garmin: Do not generate fake samples into the future 2024-08-27 19:38:23 +01:00
José Rebelo
8e3f010629 Add daily steps progress chart 2024-08-27 19:38:10 +01:00
José Rebelo
f487bc7876 Garmin: Re-parse workout summary when opening details page
Ensures that new fields and other fixes get displayed properly.
2024-08-26 10:46:46 +01:00
José Rebelo
ae1cc16a12 Garmin Fenix 5X Plus: Experimental support 2024-08-26 08:49:31 +01:00
José Rebelo
f4551e7cba Fix step analysis for some devices 2024-08-25 23:49:52 +01:00
José Rebelo
a1170e7333 Dashboard: Fix awake sleep color 2024-08-25 23:02:12 +01:00
José Rebelo
42dfb6ad4a Garmin: Parse workout physiological metrics 2024-08-25 22:49:47 +01:00
a0z
21de228204 Garmin: Awake time 2024-08-25 21:19:00 +00:00
José Rebelo
b6e2ce1d9c Garmin: Awake time (WIP) 2024-08-25 21:19:00 +00:00
pacjo
cae6f5d73e Fix crash when nearby devices (BLUETOOTH_SCAN) permission is missing 2024-08-25 21:05:34 +00:00
Severin von Wnuck-Lipinski
6bfd3dcd06 Add weight chart 2024-08-25 20:46:52 +00:00
José Rebelo
249c2bc237 Improve preference migration error logging 2024-08-25 21:29:56 +01:00
José Rebelo
2db88c63db Reduce stutters on device changes / data fetch 2024-08-25 20:21:45 +00:00
Daniele Gobbetti
7d9f8704c9 Remove device_specific_settings category from main preferences
All devices are now handled by their device specific preferences
2024-08-25 20:20:52 +00:00
Daniele Gobbetti
e74f9c2a3d Pebble: migrate legacy global preferences to all pebble devices 2024-08-25 20:20:52 +00:00
Daniele Gobbetti
bea6c6a00c Pebble: enforce numeric input for mtu_limit preference 2024-08-25 20:20:52 +00:00
Daniele Gobbetti
6b38d5b283 Pebble: split the pebble device specific settings in the existing root screens 2024-08-25 20:20:52 +00:00
Daniele Gobbetti
13be343392 Pebble: remove last global settings
In order to add an emulated device it is sufficient to use the "Add test device" functionality choosing pebble as device and entering IP:PORT in the mac address field.

The pebble setting to force BLE is moved to discovery_pairing_preferences.xml

Also delete the pebble_preferences file and update general preferences.
2024-08-25 20:20:52 +00:00
Daniele Gobbetti
8e876c8a92 Remove preference pebble_reconnect_attempts
Its usage was removed with
c2db30274f
2024-08-25 20:20:52 +00:00
Daniele Gobbetti
54cf421295 Bind sunrise/sunset alarm receiver to specific device support
Only register it for Pebble devices which enable the relative setting.

Also move the preference to device specific.
2024-08-25 20:20:52 +00:00
Daniele Gobbetti
795ffde0e1 Pebble: move a bunch of preferences to device specific settings 2024-08-25 20:20:52 +00:00
Daniele Gobbetti
c3d76477ec Pebble: remove pebble_enable_pebblekit global preference.
Use device specific third_party_apps_set_settings preference instead.
2024-08-25 20:20:52 +00:00
Severin von Wnuck-Lipinski
96a8b9aeae Add support for Mijia XMWSDJ04MMC 2024-08-25 19:43:55 +00:00
Vitaliy Tomin
8ded52a0d1 huawei: Add honor watch gs 3 gadget 2024-08-25 15:34:32 +00:00
José Rebelo
fbfbae808f Charts: Add button to pick date 2024-08-24 22:04:17 +01:00
a0z
b43c109903 Stress fragment redesign 2024-08-24 17:44:18 +02:00
José Rebelo
bb50796d0a Fix HR charts when min is set to 0 2024-08-24 12:15:15 +01:00
Arjan Schrijver
e23caa3ee6 Add support for Colmi R02/R03/R06 smart rings 2024-08-23 23:47:34 +02:00
José Rebelo
d8266b3d6b ZeTime: Migrate global preferences to device-specific 2024-08-23 20:22:20 +01:00
Johannes Krude
141ff623c7 remove no longer needed ConfigureAlarms.createDefaultAlarm 2024-08-23 14:05:11 +00:00
Johannes Krude
7e08144e0c CasioGWB5600DeviceCoordinator: removed empty methods 2024-08-23 14:05:11 +00:00
Johannes Krude
a885e0eb93 Casio GW-B5600: Alarms 2024-08-23 14:05:11 +00:00
Johannes Krude
21bfc81b35 Casio GW-B5600: watch settings 2024-08-23 14:05:11 +00:00
Johannes Krude
b155a13d17 Casio GW-B5600: find phone 2024-08-23 14:05:11 +00:00
Johannes Krude
4a9fd49461 Casio GW-B5600: response handlers 2024-08-23 14:05:11 +00:00
Johannes Krude
b6ba421a62 Casio2C2D: refactor CasioConstants.characteristicToByte 2024-08-23 14:05:11 +00:00
Johannes Krude
ad7b50793a BATTERY_UNKNOWN icon 2024-08-23 14:05:11 +00:00
José Rebelo
2b9987d3e5 Mi Band: Migrate global preferences to device-specific 2024-08-23 14:02:28 +00:00
José Rebelo
1161fc70c5 Mi Band 8 Pro: Fix speed unit 2024-08-23 14:40:22 +01:00
José Rebelo
bc2bce3719 Mi Band 8 Pro: Fix walk workout parsing 2024-08-23 14:38:50 +01:00
José Rebelo
3ca9e59fd7 Fix pull-down to refresh for some devices 2024-08-22 23:03:05 +01:00
Daniel Dakhno
f19782ef55 Core: handle null-body notifications 2024-08-22 20:42:17 +02:00
José Rebelo
701aa99fa1 Draw body energy gauge matching device resolution 2024-08-22 18:39:58 +01:00
a0z
4ea933b53d Add nested tabs to sleep and steps + steps refactor 2024-08-22 19:31:51 +02:00
a0z
b01169a307 HRV Status - fix missing linechart datasets when gap in data 2024-08-22 18:16:28 +02:00
Severin von Wnuck-Lipinski
ef1d7171e8 Add support for Mi Smart Scale 2 2024-08-22 09:02:08 +00:00
Severin von Wnuck-Lipinski
3be6ec0007 Add weight measurement support for MiScale 2024-08-22 09:02:08 +00:00
Severin von Wnuck-Lipinski
9ef8bc0d67 Fix references to MiScale2 2024-08-22 09:02:08 +00:00
Severin von Wnuck-Lipinski
5b98ae737e Rename MiScale2 to MiCompositionScale 2024-08-22 09:02:08 +00:00
José Rebelo
aa9071e34e Zepp OS 4: Fix shortcuts 2024-08-22 00:28:48 +01:00
José Rebelo
8577c5d546 Zepp OS 4: Fix shortcut cards 2024-08-22 00:03:25 +01:00
José Rebelo
10e27c88c6 Garmin: Parse HR time in zone, sweat loss, avg and max HR 2024-08-21 15:03:30 +01:00
José Rebelo
880c85abcf Garmin Venu 2S: Initial support 2024-08-20 19:08:07 +01:00
José Rebelo
3bb969dc43 Data Management: Allow browse folders, open and share files 2024-08-20 17:18:35 +01:00
José Rebelo
09865f3943 Garmin: Store pending files for processing in the database 2024-08-20 15:34:48 +01:00
Daniele Gobbetti
d0b525f420 Garmin: minor fixes to some messages.
Prevent sending double status messages / ACKs if the actual outgoing message is also a status message.
Prevent sending ACKs for incoming ACK messages.
2024-08-20 15:59:32 +02:00
José Rebelo
f95d85d7e8 Redmi Smart Band Pro: Fix crash on connection
Requesting alarms crashes the device - #3766
2024-08-20 13:10:57 +01:00
José Rebelo
d3957ddf9a Redmi Smart Band Pro: Ignore MAC during decryption
https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/3766#issuecomment-2182676
2024-08-20 13:10:51 +01:00
José Rebelo
2fe53ee563 Dashboard: Draw widgets matching device resolution 2024-08-19 23:58:15 +01:00
José Rebelo
cc5eadbc62 CMF Watch Pro 2: Negotiate authentication key 2024-08-19 10:15:13 +01:00
José Rebelo
7514b50d19 Garmin: Avoid NPE if parts of HRV data are missing 2024-08-18 23:42:36 +01:00
Daniele Gobbetti
1d496b5ce5 Merge branch 'refs/heads/dg-garmin-fit-fixes' 2024-08-18 22:18:35 +02:00
Daniele Gobbetti
fd1e81ff66 Garmin: fix basetype handling and truncation
Numeric BaseTypes now return fractional part if a scale is set, the return type for numeric values is unboxed from Number class so that existing comparisons and checks keep working, but values are not truncated at nearest integer value.

The codegen class has been updated and some of the messages are re-generated with the new code, with the exception of Hrv* messages, since updating those needs updating the related sample types.

Test cases expected values have been adjusted to keep into account the fractional part of some fields.

Garmin: Fix HRV value and summary types
2024-08-18 22:15:06 +02:00
José Rebelo
2277c62cd2 Garmin Venu: Initial support 2024-08-18 18:21:55 +01:00
Daniele Gobbetti
51a0745b06 Garmin: add GENERIC activity and use it for imported GPX files 2024-08-18 12:40:16 +02:00
CaptKentish
8a72bf8895 Adding activity kind snorkeling to garmin devices (#4002)
Co-authored-by: CaptKentish <captkentish@noreply.codeberg.org>
Co-committed-by: CaptKentish <captkentish@noreply.codeberg.org>
2024-08-18 10:26:03 +00:00
Martin.JM
10403a375b Huawei: Implement new activity types 2024-08-18 11:06:43 +02:00
José Rebelo
f0825d1ab6 Garmin: Enable fit re-processing in non-debug builds
- Make workout summary persisting idempotent
- Do not delete any data from the database during re-processing, since
  the entire process is idempotent now
- Improve feedback during re-processing using toasts
- Prevent re-processing from being started multiple times in parallel
2024-08-17 20:57:11 +01:00
José Rebelo
94fae05b02 Mark getActivitySamples as deprecated and disable tests
Test regression introduced by the refactor in 34378a4a1

The function is not used a lot, and it's currently misleading alongside
getAllActivitySamples, so it could eventually be removed and the logic
simplified.
2024-08-17 19:56:17 +01:00
José Rebelo
b9940c510b Garmin: Fix crash on decoding null gps coordinates 2024-08-17 19:47:34 +01:00
José Rebelo
0e985d5461 Garmin: Fix crash on large gpx import 2024-08-17 14:41:30 +01:00
José Rebelo
79c2fc21a4 Garmin: Enable flashing 2024-08-17 12:13:08 +01:00
José Rebelo
efc6144a28 Prevent overlap of connection status for big font sizes 2024-08-17 11:37:37 +01:00
José Rebelo
90e36e0065 Push implicit callback modify and write request response to subclasses
Push the legacy values as overrides to all subclasses, ensuring that new
devices start with the expected correct behavior.

Overrides can be removed from the subclasses if devices are confirmed to
work without them / not rely on the erroneous behavior.
2024-08-17 10:12:57 +01:00
Vitaliy Tomin
1940db7204 huawei: Handle some watchface install errors
* handle too many watchface installed
* handle insufficient space
* sort related code while at it
2024-08-17 08:30:46 +00:00
dependency-bot
cea51e6ef8 Update dependency org.slf4j:slf4j-api to v2.0.16 2024-08-17 08:29:27 +00:00
Daniele Gobbetti
0a51598204 Fixup: Garmin: fix major issue with field encoding/decoding
Temperature offset must have its sign flipped.
2024-08-17 08:00:26 +02:00
Martin.JM
75047ecdea Huawei: Send OK when starting GPS
I hope this will solve #3990.
2024-08-16 23:26:48 +02:00
Daniele Gobbetti
cd46e24819 Garmin: Mimic auth negotiation requested byte and flags.
The previous attempt to send all zeroes (in 7fa5cd1be5) didn't yield actionable progress, hence we try sending back what the watch sent to us.

Blindly implemented based on the legacy vivomoveHR code, not tested against real devices.
2024-08-16 19:26:44 +02:00
Daniele Gobbetti
3f8eeebc5a Garmin: simplify handling canned replies and only send error if no reply is set at all 2024-08-16 19:18:50 +02:00
Daniele Gobbetti
29787d0c9b Garmin: add gpx import functionality for models that support it
Add a Field definition for GPS coordinates and remove the corresponding method from GarminUtils.
Add a new message COURSE and some fields to other known messages.

Also centralize some utility methods in GpxParser and GpxTrack, adapting ZeppOsGpxRouteFile.

Be aware that the capability used to identify the supported watches might be the wrong one.
2024-08-16 18:52:13 +02:00
Daniele Gobbetti
f2f6536ea8 Garmin: fix major issue with field encoding/decoding
Our implementation of scale and offset was backwards: we were adding offset and then dividing by scale when decoding fields, but the publicly available protocol description dictates otherwise ( http://web.archive.org/web/20240519102659/https://developer.garmin.com/fit/protocol/#scaleoffset ):  "the binary quantity is divided by the scale factor and then the offset is subtracted".
For this reason the sign of GARMIN_TIME_EPOCH in Timestamp field definition must be flipped as well.
2024-08-16 13:57:00 +02:00
José Rebelo
404e432adf Map activity kinds for Garmin, CMF and Zepp OS 2024-08-15 16:36:07 +01:00
José Rebelo
9354765d34 Garmin: Fix typo on TRAINING subtype code 2024-08-14 23:19:01 +01:00
José Rebelo
34378a4a11 Refactor ActivityKind into an enum 2024-08-14 23:13:12 +01:00
CaptKentish
8c7cc98d36 Garmin : map more activities (#3848)
Co-authored-by: CaptKentish <captkentish@noreply.codeberg.org>
Co-committed-by: CaptKentish <captkentish@noreply.codeberg.org>
2024-08-14 22:11:31 +00:00
José Rebelo
7c9016b5a4 Fossil: Fix exception when support class is terminated 2024-08-14 21:58:39 +02:00