Commit Graph

5689 Commits

Author SHA1 Message Date
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
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
Daniele Gobbetti
7fa5cd1be5 Garmin: further work for auth negotiation
Add status message parsing and change the reply logic for watch-initiated Auth (in attempt to fix #3986): before this changeset the phone would reply with a generic ACK and then send a request to the watch for setting the auth (with all zeroes);
after this changeset the phone replies with a specific auth ack/status message but it ignores what the watch requested and acknowledges back all zeroes.

Blindly implemented based on the legacy vivomoveHR code, not tested against real devices.
2024-08-14 10:04:32 +02:00
Severin von Wnuck-Lipinski
d1b4e013d3 Add defaults and fix NPE for Soundcore Motion 300 2024-08-12 22:55:26 +02:00
José Rebelo
9ca561a30a Garmin: Fix weather temperature and speed units 2024-08-10 20:00:56 +01:00
a0z
82657febf8 Garmin body energy level (#3964)
Co-authored-by: a0z <a0z@tutamail.com>
Co-committed-by: a0z <a0z@tutamail.com>
2024-08-09 21:35:47 +00:00
Severin von Wnuck-Lipinski
69441a6a79 Use SoundcorePacket for Liberty 3 Pro 2024-08-09 18:18:47 +00:00
José Rebelo
c06e22b85e Huawei: Fix NPE when notification has no body 2024-08-08 23:30:52 +01:00
Severin von Wnuck-Lipinski
be3f8375f9 Add support for Soundcore Motion 300 2024-08-07 20:44:34 +00:00
Severin von Wnuck-Lipinski
1885b05168 Fix Soundcore Liberty package name 2024-08-07 20:44:34 +00:00
Severin von Wnuck-Lipinski
1a0ca0ce52 Move Soundcore Liberty code into subfolder 2024-08-07 20:44:34 +00:00
José Rebelo
2636dd85f1 Remove dynamic shortcut when deleting device 2024-08-07 20:48:43 +01:00
Daniele Gobbetti
1d4c85b732 Garmin: implement (some kind of) auth negotiation message
Blindly implemented based on the legacy vivomoveHR code, not tested against real devices.
2024-08-07 14:58:26 +02:00
José Rebelo
14478f89ac Fix typo in GLONASS 2024-08-06 20:54:53 +01:00
José Rebelo
a96432a8a3 Garmin Fenix 5 Plus: Experimental support 2024-08-06 19:36:37 +01:00
Martin.JM
f15f60542d Huawei: Fix for Huawei Band 9
Linked to #3784.
2024-08-06 18:28:09 +00:00
José Rebelo
dd93133168 Garmin Forerunner 965: Initial support 2024-08-05 23:25:56 +01:00
José Rebelo
7efeb14ca4 Test Device: Add HRV and body energy 2024-08-05 21:10:01 +01:00
José Rebelo
2ed6247658 Improve HR Y axis in sleep chart 2024-08-05 20:31:31 +01:00
José Rebelo
61e2411081 Garmin: Parse and persist body energy 2024-08-04 22:59:29 +01:00
José Rebelo
e19325fce9 Update HRV labels, use enum for status 2024-08-04 22:36:02 +01:00
a0z
f3b1a06d47 HRV Status (#3953)
Co-authored-by: a0z <a0z@tutamail.com>
Co-committed-by: a0z <a0z@tutamail.com>
2024-08-04 21:35:19 +00:00
José Rebelo
996d176cc2 Fix stress colors 2024-08-04 18:34:15 +01:00
a0z
a3e6d446d7 Sleep tabs refactor 2024-08-04 17:33:49 +00:00
José Rebelo
2f21c4bd9d Garmin: Fix sleep data if there is a gap in activity samples 2024-08-04 18:04:37 +01:00
José Rebelo
60d5a2ae70 Display warning on find phone without companion pairing 2024-08-04 14:10:11 +01:00
Vitaliy Tomin
bf6d0d0f83 [Huawei] Add Huawei Watch GT Runner gadget
* created new gadget classes
* make tag 0x01 in TimeRequest response optional. There is no
such tag on GT Runner, at least on HarmonyOS 2 firmware.
2024-08-03 14:49:05 +00:00
José Rebelo
b616cc8ff1 Garmin: Allow HRV summary status to be null
We may have the averages, but not the status.
2024-08-02 22:51:02 +01:00
José Rebelo
b33ab0b1c8 Garmin: Parse and persist HRV_STATUS 2024-08-02 21:43:54 +01:00
Me7c7
532c545093 Huawei: Correct processing of set time command during the pairing process. 2024-08-02 19:51:39 +03:00
José Rebelo
d6d956b748 Xiaomi: Dump fetched files to storage 2024-08-01 22:54:45 +01:00
José Rebelo
29f57758fa Huami/Xiaomi: Log session keys
It's otherwise impossible to troubleshoot issues from the logs, since
the communication is encrypted.
2024-08-01 22:54:45 +01:00
Martin.JM
b242ad1ec5 Huawei: Expand capabilities fix 2024-08-01 21:06:13 +02:00
Martin.JM
6f83fc815f Huawei: Simple TruSleep support
Only supports start and end time of sleep periods.
2024-07-30 22:34:05 +02:00
Martin.JM
fbe727644e Huawei: Add UV index support
Also adds "0.0 to 15.0" comment to the weatherSpec uvIndex.
2024-07-30 14:19:11 +02:00
Marc
af9eec3189 initial support for Garmin Forerunner 255 Music 2024-07-29 19:42:54 +00:00
José Rebelo
1c5e485bfe Prevent crash when pairing with BondAction 2024-07-29 20:33:39 +01:00
Peter Kannewitz
00d90f4b8b Garmin Forerunner 255S Music: Initial support (#3932)
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3932
Co-authored-by: Peter Kannewitz <peter.kannewitz@posteo.net>
Co-committed-by: Peter Kannewitz <peter.kannewitz@posteo.net>
2024-07-28 21:01:53 +00:00
Martin.JM
2dbf70cb77 Huawei: Fix for weather
- Also the sunrise/set cannot be zero
- We could send a single forecast more when exactly 7 are provided
- It seems like the watches may require exactly 8 days to be sent for
  the forecast - one of which is for today
2024-07-28 20:33:31 +02:00