Commit Graph

5948 Commits

Author SHA1 Message Date
Ganblejs
f97dda37c7 Bangle.js:actTrk: simplify timeout 2024-03-21 23:28:29 +00:00
Ganblejs
c250a70196 Bangle.js:actTrk: remove public modifier 2024-03-21 23:28:29 +00:00
Ganblejs
0c10edb9f2 Bangle.js:actTrk: small refactor of return 2024-03-21 23:28:29 +00:00
Ganblejs
49bd363d0f Bangle.js:actTrk: no timeout during data-parsing 2024-03-21 23:28:29 +00:00
Ganblejs
8ab77f148f Bangle.js:actTrk: speed determines activity type 2024-03-21 23:28:29 +00:00
Ganblejs
466349fbe7 Bangle.js:actTrk: refactor a name 2024-03-21 23:28:29 +00:00
Ganblejs
2683fd9495 Bangle.js:actTrk:add LOG.warn re interrupted fetch 2024-03-21 23:28:29 +00:00
Ganblejs
6a9c037926 Bangle.js:actTrk: notify on fetch interrupted 2024-03-21 23:28:29 +00:00
Ganblejs
af740d4dc3 Bangle.js:actTrk: fix timeout for interruptions 2024-03-21 23:28:29 +00:00
Ganblejs
4f04b61dbd Bangle.js:actTrk:unsuccessful try at fetch timeout 2024-03-21 23:28:29 +00:00
Ganblejs
49c4f34f42 Bangle.js:actTrk: refactor function names 2024-03-21 23:28:29 +00:00
Ganblejs
945a28c279 Bangle.js:actTrk: tweak start/stop messagaging 2024-03-21 23:28:29 +00:00
Ganblejs
40c3eade21 Bangle.js:actTrk:fix transfer notification 2024-03-21 23:28:29 +00:00
Ganblejs
bfa5d94587 Bangle.js:actTrk: Auto-reload when fetch done 2024-03-21 23:28:29 +00:00
Ganblejs
e492160531 Bangle.js:actTrk: fix packet counting 2024-03-21 23:28:29 +00:00
Ganblejs
8338b03b3b Bangle.js:actTrk:try at packet counting
... might not be necessary. Since I got the fetching to work with
intervals on the the Bangle.js side it's been stable.

Didn't manage to make packet counting work yet.
2024-03-21 23:28:29 +00:00
Ganblejs
ddc2d7a34a Bangle.js: remove imports marked as unused 2024-03-21 23:28:29 +00:00
Ganblejs
3ac3519f3e Bangle.js:break out to class BangleJSActivityTrack 2024-03-21 23:28:29 +00:00
Ganblejs
9919bb2d6f Bangle.js: actTrk- fix logic re requesting logs 2024-03-21 23:28:29 +00:00
Ganblejs
7146fce683 Bangle.js: actTrk- sync one log at a time 2024-03-21 23:28:29 +00:00
Ganblejs
ee274510ac Bangle.js:actTrk- check if HRM could be exported
... to GPX track file. But commented out to avoid error.
2024-03-21 23:28:29 +00:00
Ganblejs
64b3468671 Bangle.js:actTrk- don't export GPX if no such data 2024-03-21 23:28:29 +00:00
Ganblejs
19ec7344ca Bangle.js: comment out some LOG.info 2024-03-21 23:28:29 +00:00
Ganblejs
2c918f6a7c Bangle.js: actTrk receive multiple lines per UARTRX 2024-03-21 23:28:29 +00:00
Ganblejs
d3229dea96 Bangle.js: clear fetched csv if refetching 2024-03-21 23:28:29 +00:00
Ganblejs
6255ff615d Bangle.js: activity track logic tweak
... to make string sent from Bangle.js shorter. And some other changes.
2024-03-21 23:28:29 +00:00
Ganblejs
c572cae161 Bangle.js: use FileUtils to read/write files 2024-03-21 23:28:29 +00:00
Ganblejs
cba2cf38f6 Bangle.js:actTrck change stride unit to only meter 2024-03-21 23:28:29 +00:00
Ganblejs
2429f64412 Bangle.js: avoid infinities, cardiac arrest, etc. 2024-03-21 23:28:29 +00:00
Ganblejs
c2c53d5495 Bangle.js: actTrack reorder activity details 2024-03-21 23:28:29 +00:00
Ganblejs
e23c5f2dd4 Bangle.js: actTrack handle empty lines on analyze 2024-03-21 23:28:29 +00:00
Ganblejs
acdde68fab Bangle.js: handle if time was given with decimals 2024-03-21 23:28:29 +00:00
Ganblejs
e39e67100e Bangle.js: actTrk WIP 2024-03-21 23:28:29 +00:00
Ganblejs
bcd1fc8681 Bangle.js: more work on summary data 2024-03-21 23:28:29 +00:00
Ganblejs
e10fae00cf Bangle.js: activity tracks summary entries 2024-03-21 23:28:29 +00:00
Ganblejs
eec3d2b89a Bangle.js:don't show stride if not sufficient data 2024-03-21 23:28:29 +00:00
Ganblejs
6d82980cc3 Bangle.js: Activity tracks analytics 2024-03-21 23:28:29 +00:00
Ganblejs
70b9911153 Bangle.js: WIP adding summary data
Calculate distances from lat/long coordinates.
2024-03-21 23:28:29 +00:00
Ganblejs
b4879a92d9 Bangle.js: Activity tracks, addSummaryData 2024-03-21 23:28:29 +00:00
Ganblejs
517f9ac214 Bangle.js:Activity traks attempt (un-)setBusyTask 2024-03-21 23:28:29 +00:00
Ganblejs
6faa4452e2 Bangle.js:Act Tracks follow refactored code style 2024-03-21 23:28:29 +00:00
Ganblejs
c6cec7a0f8 Bangle.js:WIP add activity tracks support
Bangle.js: WIP add supportsActivityTracks

Bangle.js: testing flow of info

Bangle.js:WIP receive and store csv from Bangle.js

Bangle.js:store and transmit ID of last synced log

bangle.js:activity tracks, act on completed fetch

... of the recorder csv file.

Bangle.js: Activity tracks, now in database

... but not all data is persisted correctly I think. It's presented as
'Unknown activity'.

Bangle.js:Activity tracks, try to add gps info

I haven't tested with recordings where I have gps values, so far only
empty values. With empty values I currently get "This activity does not
contain GPX tracks" when trying to use the GPXExporter.

Bangle.js: Activity tracks, now adds GPS points

... to the activity to be shown when on the "Sport Activity Detail"
screen.
2024-03-21 23:28:29 +00:00
Ganblejs
fc9d18100d ActivitySummariesActivity:fix no fetch btn spinner 2024-03-21 23:28:29 +00:00
Ganblejs
a59b5de343 ActivitySummariesActivity:FIXME unreachable reload 2024-03-21 23:28:29 +00:00
Ganblejs
57c0c4dfcb FileUtils: refactor copyStringToFile
With the goal to hinder potential leak of file.
2024-03-21 23:28:29 +00:00
Ganblejs
758e9223d1 FileUtils:copyStringToFile: Try not to leak file. 2024-03-21 23:28:29 +00:00
Ganblejs
8907757674 FileUtils: add description for copyStringtoFile
... and remove commented out code
2024-03-21 23:28:29 +00:00
Ganblejs
3c32636089 FileUtils: Add copyStringToFile method 2024-03-21 23:28:29 +00:00
Damien 'Psolyca' Gaignon
717bc3035d
[Huawei] Add settings to new gadgets 2024-03-21 19:06:03 +01:00
Vitaliy Tomin
6167f3f781
[Huawei] Initial AcceptAgreement packet and request 2024-03-21 19:06:03 +01:00
Damien 'Psolyca' Gaignon
924088e5a3
[Huawei] Check pinCode and authType not BondState 2024-03-21 19:06:03 +01:00
Damien 'Psolyca' Gaignon
88043aa813
[Huawei] Add Huawei Watch Ultimate support 2024-03-21 19:06:02 +01:00
Vitaliy Tomin
014b453693
[Huawei] Add Huawei Watch GT4 support 2024-03-20 13:41:49 +01:00
Damien 'Psolyca' Gaignon
d59b7c7bfa
[Huawei] Add SendExtendedAccountRequest 2024-03-20 13:41:49 +01:00
José Rebelo
c79bb53f74 Xiaomi: Fix temperature sample range 2024-03-19 21:00:21 +00:00
Gordon Williams
d3c16a1d40 Bangle.js ensure we don't try and use base64 to encode something that is actually UTF8 2024-03-19 13:36:55 +00:00
José Rebelo
fa59dfe72e Bangle.js: Add saveFile javascript interface 2024-03-18 20:10:06 +00:00
José Rebelo
8aa3fa3689 Bangle.js: Fix crash when file save is cancelled 2024-03-18 20:10:06 +00:00
José Rebelo
b7ab61f233 Use existing string for temperature 2024-03-18 09:12:33 +00:00
José Rebelo
fc88a4ea9b Xiaomi: Fix temperature charts crash 2024-03-18 09:09:18 +00:00
José Rebelo
ee6340c848 Amazfit Bip 3: Initial support 2024-03-17 13:06:31 +00:00
José Rebelo
ae05f7fd42 Xiaomi Watch S1 Pro: Enable charts for body temperature 2024-03-16 21:44:11 +00:00
José Rebelo
9db60f16d1 Allow for device settings sub-screens (#3620)
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3620
Co-authored-by: José Rebelo <joserebelo@outlook.com>
Co-committed-by: José Rebelo <joserebelo@outlook.com>
2024-03-16 17:21:42 +00:00
José Rebelo
fcc930749e Sony LinkBuds: Initial support 2024-03-15 23:36:50 +00:00
José Rebelo
5798466e55 Sony Headphones: Fix protocol v2 2024-03-15 23:34:17 +00:00
José Rebelo
0301d0e9a8 Sony Headphones: Merge V3 protocol into V2
The protocols are not actually different - the different messages only
depended on whether the devices supports wind noise reduction or not.
2024-03-15 22:56:11 +00:00
Gordon Williams
f91156cd3e Bangle.js - fix issue where a newline right at the beginning of a received string could cause "String index out of range: -1" errors for all subsequent received data 2024-03-13 09:52:03 +00:00
José Rebelo
fe2a760891 Refactor language and Mi Band 6 preferences code 2024-03-09 14:24:50 +00:00
José Rebelo
99dc218cd1 Fix temperature preferences 2024-03-09 14:00:31 +00:00
ahormann
f5b46b295b Plotting Temperature (#3381)
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3381
Co-authored-by: ahormann <ahormann@gmx.net>
Co-committed-by: ahormann <ahormann@gmx.net>
2024-03-09 14:00:09 +00:00
Daniel Dakhno
ec6fa23176 Device settings: simplified array conversion 2024-03-09 13:58:20 +00:00
Daniel Dakhno
f1968f4103 Device settings: removed menu entry 2024-03-09 13:58:20 +00:00
Daniel Dakhno
b30b9083d0 Device settings: use ArrayList instead of rigid int[] 2024-03-09 13:58:20 +00:00
Daniel Dakhno
8e6571d354 Device settings: merged application and device settings 2024-03-09 13:58:20 +00:00
José Rebelo
f9917851ef Xiaomi: Fix NPE when notification lookup fails 2024-03-06 20:47:57 +00:00
José Rebelo
96668368c5 Xiaomi Smart Band 8 Active: Initial support 2024-03-06 20:45:13 +00:00
Daniel Dakhno
ee1c3e4db9 Device connection: classify more states as reconnecting 2024-03-05 00:11:32 +01:00
Daniel Dakhno
a75b3afc84 Code refactoring: introduced GBDevice.State.equalsOrHigherThan 2024-03-05 00:11:32 +01:00
Daniel Dakhno
7219bd377b Device connection: consider WAITING_FOR_SCAN as reconnecting state 2024-03-05 00:11:32 +01:00
Daniel Dakhno
07744331ac Device connection: removed duplicate strings entry 2024-03-05 00:11:32 +01:00
Daniel Dakhno
b1b5eada68 Device connection: added Scan service channel 2024-03-05 00:11:32 +01:00
Daniel Dakhno
281a087550 Device connection: refactoring, string extraction 2024-03-05 00:11:32 +01:00
Daniel Dakhno
d0f8eccd75 Device connection: removed references to ACTION_START 2024-03-05 00:11:32 +01:00
Daniel Dakhno
3ceba883dd Device connection: allow to disconnect from scanned devices 2024-03-05 00:11:32 +01:00
Daniel Dakhno
7816e131e9 Device connection: stop ScanService when quitting application 2024-03-05 00:11:32 +01:00
Daniel Dakhno
f5213f39f7 Device connection: dont try to scan for BT classic devices 2024-03-05 00:11:32 +01:00
Daniel Dakhno
00c0a8e897 Device connection: added device scan reconnection logic 2024-03-05 00:11:32 +01:00
José Rebelo
b8b8b5f681 Huami: Display unknown raw activity kind in the activity summary 2024-03-04 21:07:59 +00:00
Stefan Tomanek
e86912e681 Use TypeName for identifying non-LE device when pairing LE counterpart.
Previous changes deprecated the numeric Type property, making the
database query fail when pairing the BT-LE part of a Pebble device.
2024-02-27 20:40:54 +01:00
Arjan Schrijver
08a8b6a8fd Fossil/Skagen Hybrids: Remove activity fetching toasts and add finished signal 2024-02-27 14:36:28 +01:00
José Rebelo
ab41adbc7f Xiaomi: Fix sleep samples when sleep stages are not found
We can at least show light sleep now.
2024-02-25 22:53:15 +00:00
José Rebelo
dd952e335f Xiaomi: Implement complex activity details header parsing
This should improve activity parsing across all devices, as we now take
the header into account, which indicates what groups are actually
present.

Thanks to @opcode for figuring out the header structure and providing
the ImHex patterns for the activity data.
2024-02-25 22:27:20 +00:00
José Rebelo
0b0aedfb52 Revert Xiaomi steps and stress parsing fixes
- This reverts commit 789292d318.
- This reverts commit 641eb1bee7.

Further changes are required
2024-02-25 21:08:44 +00:00
José Rebelo
3902db5abd Huami: Keep track of last debug logs titmestamp 2024-02-25 13:25:12 +00:00
José Rebelo
58d4ebf509 Huami: Refactor activity data fetching
Activity data fetching on Huami devices was filled with duplicated code,
and the handleActivityFetchFinish was called from multiple places where
it did not make sense. This made us signal to the band that activity
fetch was finished when it sometimes was not, causing some race
condititions that would make activity fetch fail or get stuck.

This refactor defines a clear "processBufferedData" that is called
upstream, signaling to the fetch operation that we have received all
data and the buffer can be processed. All handling of metadata and ack
messages is also delegated to the upstream class.
2024-02-25 13:10:25 +00:00
José Rebelo
9b0229cdf0 Huami: Split fetch, init and update operations 2024-02-25 13:10:25 +00:00
José Rebelo
5e068ee4ca Huami: Extract activity fetch data types to enum 2024-02-25 13:10:25 +00:00
José Rebelo
789292d318 Xiaomi: Fix stress parsing 2024-02-25 00:04:03 +00:00
José Rebelo
641eb1bee7 Xiaomi: Fix steps and stress parsing for some devices 2024-02-25 00:02:52 +00:00
Martin.JM
facf87fc59 Limit smart alarm interval to 255 2024-02-24 09:56:56 +01:00
Martin.JM
5968a04cf7 Change colors 2024-02-24 09:56:56 +01:00
Martin.JM
0eb2bf7dfa Fix bugs, cleanup, test device
Implemented the TestDevice, which showed some bugs.
Solved these bugs and cleaned up a bit in the process.
2024-02-24 09:56:56 +01:00
Martin.JM
71ea39efde [Huawei] Hookup smart wakeup interval and update Coordinators 2024-02-24 09:56:56 +01:00
Martin.JM
51024f7b5e Add smart wakeup interval 2024-02-24 09:56:56 +01:00
Martin.JM
37b5d0404a Update alarm unused and enabled states
- Set alarm as used when enabled in the list
- Set alarm as disabled when set as unused in the list
2024-02-24 09:56:56 +01:00
Arjan Schrijver
0383169767 Fossil/Skagen Hybrids: While syncing, mark device busy and show transfer notification 2024-02-23 20:59:01 +01:00
Arjan Schrijver
28e0914330 Fossil/Skagen Hybrids: Use steps instead of calories for activity intensity 2024-02-23 20:54:49 +01:00
Gordon Williams
dd0dfb23ac Bangle.js: Ensure we request a higher MTU if it's been enabled in settings (otherwise Android just uses the default). Really improves communication speed. 2024-02-22 12:00:33 +00:00
Martin.JM
9a388ca386 Updated according to review
Thank you José Rebelo!
2024-02-18 20:54:59 +00:00
Martin.JM
c66051f580 Cleanup of Huawei weather implementation 2024-02-18 20:54:59 +00:00
Martin.JM
1c2516186d Small cleanup 2024-02-18 20:54:59 +00:00
Martin.JM
5ebfe9b39f Add weather settings to forecast 2024-02-18 20:54:59 +00:00
Martin.JM
b231104a88 Add moon phase support 2024-02-18 20:54:59 +00:00
Martin.JM
242f3c6dbc Add unit support and some cleanup 2024-02-18 20:54:59 +00:00
Martin.JM
043f839a4d Fix tomorrow appearing twice 2024-02-18 20:54:59 +00:00
Martin.JM
6a2186919c Always initialize weather before sending 2024-02-18 20:54:59 +00:00
Martin.JM
4b70f3fcdb Hookup Huawei GPS values 2024-02-18 20:54:59 +00:00
Vitaliy Tomin
d379b11535 Add HuaweiTLV put for double 2024-02-18 20:54:59 +00:00
Martin.JM
ee14b5d821 Small changes 2024-02-18 20:54:59 +00:00
Martin.JM
65aa5faec5 Implement Huawei weather icons 2024-02-18 20:54:59 +00:00
Martin.JM
f970b7482b Set wind values 2024-02-18 20:54:59 +00:00
Vitaliy Tomin
287b720350 Send gps and time before forecast 2024-02-18 20:54:59 +00:00
Martin.JM
14eaba858c Weather fix 2024-02-18 20:54:59 +00:00
Martin.JM
0b64408b33 Add outgoing parsing 2024-02-18 20:54:59 +00:00
Martin.JM
2b1c5b5819 Add weather forecast 2024-02-18 20:54:59 +00:00
Martin.JM
b2b176b65c Add weather support for Huawei 2024-02-18 20:54:59 +00:00
Davis Mosenkovs
7a79a1d0f5 Add wake lock and wakeup for time sync
Wake lock with around 10 second timeout is a quick and dirty solution,
however as the time sync should happen once per several days the 10
second wake time should not be an issue.
2024-02-18 19:12:30 +00:00
Davis Mosenkovs
cc5078332b TimeChangeReceiver: Ensure the alarm is set
Ensure TimeChangeReceiver alarm is scheduled when enabling
datetime_synconconnect and registering TimeChangeReceiver broadcast
receiver.

It is important to re-schedule the alarm after registering broadcast
receiver, because:
1. if broadcast receiver was unregistered while previous alarm arrived,
there is no alarm scheduled;
2. re-scheduling the alarm resets the periodic time sync timer when
first device is connected (which is desired).

It is important to re-schedule the alarm when datetime_synconconnect
gets enabled, because there might be no alarm scheduled.

Call onSetTime() when enabling datetime_synconconnect.
2024-02-18 19:12:30 +00:00
Davis Mosenkovs
31fc266f94 Periodically sync time on all connected devices
Sync time every 43 hours, 53 minutes and 23 seconds.
Interval is a bit smaller than 2 days.
Interval is a prime (in seconds) so time of sync will slide over time.

If next DST change is less than 48 hours in future, wait for it.
2024-02-18 19:12:30 +00:00
Martin.JM
22e51f841b Add additional smart wakeup functionality in test device
Code by José Rebelo:
https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3583#issuecomment-1571835
2024-02-18 19:01:19 +01:00
Martin.JM
275b662188 Always check smart wakeup if forced 2024-02-18 18:55:54 +01:00
Martin.JM
89b6ae9f24 Add more granular smart wakeup support
Specifically:
- Add position to smart wakeup support coordinator function
- Add interface to stop smart alarm checkbox from being changed
2024-02-18 17:24:29 +01:00
Martin.JM
01ef422812 Set alarm as used and enabled if time has changed 2024-02-18 16:33:50 +01:00
JdM
64c024a5ce Added support for xiaomi redmi watch 3 (#3582)
Co-authored-by: JdM <julien@rmbi.ch>
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3582
Co-authored-by: JdM <judemont@noreply.codeberg.org>
Co-committed-by: JdM <judemont@noreply.codeberg.org>
2024-02-18 13:55:14 +00:00
Arjan Schrijver
122ff5f7f4 Fossil/Skagen Hybrids: Fix crash on multi-byte unicode characters in menu
The FosslAppWriter was writing string length instead of the bytes length
into the wapp file, causing a crash when reading the file.

Fixes #3577
2024-02-17 21:25:25 +01:00
José Rebelo
ad256fade0 Test Device: Fix NPE when using the database 2024-02-16 23:09:46 +00:00
José Rebelo
a3bd7a297a Test Device: Add fake features and data 2024-02-16 22:56:27 +00:00
Damien 'Psolyca' Gaignon
6a576202a9
[Huawei] Add Huawei Watch Fit gadget 2024-02-13 14:12:23 +01:00
Arjan Schrijver
d637b9263c Fix linter errors 2024-02-13 10:54:12 +01:00
Damien 'Psolyca' Gaignon
874bb1a14e
[Huawei] Fix test 2024-02-13 00:18:48 +01:00
Daniel Dakhno
264b6470cd Revert "Device connection: added basic code for scan-reconnect"
This reverts commit adf55fea93.
2024-02-12 23:30:32 +01:00
Daniel Dakhno
adf55fea93 Device connection: added basic code for scan-reconnect 2024-02-12 23:28:10 +01:00
Andreas Shimokawa
8b9462f521 fix tests 2024-02-12 18:31:48 +01:00
Aleksandr Ivanov
2c316bfe9d Pebble: fix of pairing issue with Pebble 2 2024-02-10 16:01:45 +00:00
José Rebelo
983b7352cb Galaxy Buds2 Pro: Fix recognition of some versions
Not all earbuds use "Galaxy" in the name, apparently.

Fixes #3569
2024-02-10 12:46:55 +00:00
Damien 'Psolyca' Gaignon
88f3cc4fd0
[Huawei] Fix regression introduced with HiChainLite 2024-02-09 22:22:33 +01:00
Damien 'Psolyca' Gaignon
fc857b8adb
[Huawei] Fix attribut keyword 2024-02-09 12:03:04 +01:00
Damien 'Psolyca' Gaignon
21b97a9276
[Huawei] Fix BondParamsRequest stopChain 2024-02-09 12:03:03 +01:00
Damien 'Psolyca' Gaignon
510b8096ed
[Huawei] Fix transactions encryption 2024-02-09 12:03:02 +01:00
Damien 'Psolyca' Gaignon
d5cecc4a84
[Huawei] GT2 transaction crypted 2024-02-09 12:03:02 +01:00
Damien 'Psolyca' Gaignon
bb5fe00643
[Huawei] Change bond request behaviour 2024-02-09 12:03:02 +01:00
Damien 'Psolyca' Gaignon
05c11cbd14
[Huawei] Add HiChainLite firstKey handling 2024-02-09 12:03:01 +01:00
Damien 'Psolyca' Gaignon
270212a771
[Huawei] Rename authMode to deviceSupportType 2024-02-09 12:03:01 +01:00
Damien 'Psolyca' Gaignon
2880297c51
[Huawei] Fix pin code encoding 2024-02-09 12:02:53 +01:00
Arjan Schrijver
8aaa766dcd Fix crash when receiving empty music state 2024-02-04 20:35:40 +01:00
José Rebelo
145c2b8c6c Zepp OS: Recognize devices with a dash before mac address suffix 2024-02-02 20:58:00 +00:00
José Rebelo
944e0d92a7 Zepp OS: Fix AGPS uploads
Regression introduced by 34fd18885a - UIHH upload is needed for AGPS
updates on older devices.
2024-02-02 20:51:06 +00:00
Damien 'Psolyca' Gaignon
2a377ba5ab
[Huawei] Change bonding style for all BR gadgets 2024-02-01 22:14:45 +01:00
José Rebelo
3e08a754e0 Xiaomi: Fix indoor cycling recognition 2024-02-01 20:02:31 +00:00
Victor Kareh
b647631c07 pinetime: Fix weather forecast write
Fixes a typo in the weather forecast characteristic writer that causes
Gadgetbridge to send the current weather twice rather than sending the
forecast.
2024-02-01 18:59:06 +00:00
José Rebelo
dbfb8e5c38 Zepp OS: Improve logging
- Do not log characteristic changes handled by parent class
- Log discovered service names
- Request and log supported config groups
2024-02-01 18:48:15 +00:00
José Rebelo
aa4a7912ef Zepp OS: Match devices by exact bluetooth name
This attemts to reduce false positives, especially for devices that
present as two bluetooth devices such as the GTR 4.
2024-02-01 18:47:36 +00:00
José Rebelo
34fd18885a Zepp OS: Refactor firmware uploads
Zepp OS 3 firmware upgrades are big (200MB+). Gadgetbridge was crashing,
since the entire firmware file would be pulled into memory.

This commit unifies all the logic for Zepp OS firmware handling.

However, since the needed refactor was big, this commit duplicates some
of the code from Huami classes, namely:
- ZeppOsFirmwareUpdateOperation clones UpdateFirmwareOperation2020
- ZeppOsFwInstallHandler clones AbstractMiBandFWInstallHandler

This avoids changes to older device logic and introducing regressions.

Lost functionality:
- Repackaging firmwares as UIHH (does not seem to be needed, and was not
  used anyway). Code can be recovered from this commit if needed in the
  future
- Whitelisted firmwares by checksum (we do not have a lot of them at
  this point anyway)

Other misc changes:
- Rename ZipFile to GBZipFile not to clash with the java class

Tested by updating the Amazfit GTR 4 to Zepp OS 3.
2024-02-01 18:47:28 +00:00
Martin.JM
4b38a67a58 Fix Huawei exceptions related to early packets
Also adds more robust tag checks for Huawei packets
2024-01-30 12:15:46 +01:00
José Rebelo
773132c4e1 Make all Zepp OS classes explicit
There are still some actual "Huami 2021" classes that are used in
non-ZeppOS devices, but this refactor improves the distinction.
2024-01-29 23:30:28 +00:00
Damien 'Psolyca' Gaignon
86461ada1a
[Huawei] Add new Crypto and authMode 2024-01-29 21:51:45 +01:00
Damien 'Psolyca' Gaignon
f759072a7c
[Huawei] Add PBKDF2 crypto 2024-01-29 21:34:08 +01:00
Damien 'Psolyca' Gaignon
2b5a49641a
[Huawei] Fix clientNonce for HiChainLite 2024-01-29 21:21:20 +01:00
José Rebelo
c472f0ab9a Redmi Watch 2: Experimental support 2024-01-29 18:14:34 +00:00
opcode
cf0e8be816 Xiaomi: Further sleep parsing fix 2024-01-28 21:01:20 +00:00
José Rebelo
b0ff9eae88 MusicManager: Fix NPE when music not playing 2024-01-28 20:26:35 +00:00
Damien 'Psolyca' Gaignon
a53d59f907
Add AW for bond request 2024-01-28 20:46:47 +01:00
Damien 'Psolyca' Gaignon
b860ab116f
Add uncrypted transactions for TalkBand 6 2024-01-28 20:46:47 +01:00
Damien 'Psolyca' Gaignon
2a41b77ffc
Add uncrypted transactions for GT3 2024-01-28 20:46:46 +01:00
Damien 'Psolyca' Gaignon
a64317fe7a
Add uncrypted transactions for GT2 2024-01-28 20:46:46 +01:00
Damien 'Psolyca' Gaignon
e974d00104
Set transaction encryption to false 2024-01-28 20:46:45 +01:00
Damien 'Psolyca' Gaignon
0ed9e5b1a8
Fix normal mode connection 2024-01-28 20:46:45 +01:00
Damien 'Psolyca' Gaignon
0e5545191d
Add Honor Magic Watch 2 2024-01-28 20:46:27 +01:00
José Rebelo
5999eb01d0 Nothing CMF Watch Pro: Initial support 2024-01-28 18:46:13 +00:00
Denis Pitzalis
207a2a9b01 initial support for sony WI-SP600N (#3522)
Initial support for sony wi-sp600n reported working . minor difference with the inspiring wf-sp800n

Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3522
Co-authored-by: Denis Pitzalis <denics@free.fr>
Co-committed-by: Denis Pitzalis <denics@free.fr>
2024-01-27 23:21:11 +00:00
Aleksandr Ivanov
139e9cfb14 Pebble: fix of app configuration webview 2024-01-28 01:54:12 +03:00
opcode
4dbe5744da Xiaomi: Fix parsing sleep headers 2024-01-26 21:49:40 +01:00
MrYoranimo
8a7de15841 BtLEQueue: update device state on main looper
If the device connection state is updated from two threads simultaneously
(as in, from the main looper and from the thread that handles
BluetoothDevice.connectGatt), a second update may get overridden by the
first update if the broadcasts are handled out-of-order by the
LocalBroadcastManager.

By updating the device state through a handler on the main looper, the
broadcasts are sent in order as they are processed from the looper's
queue.

This may be a potential solve for issue #3524.
2024-01-21 01:56:34 +01:00
José Rebelo
7955bdfb6f Xiaomi: Improve sleep parsing
- Some devices send a random int 0, which would prevent sleep stage
  parsing
- Some devices send the details as a file of type summary, but same
  structure
- It is still not stable for all devices

Thanks to @opcode for the parsing logic
2024-01-20 23:16:36 +00:00
José Rebelo
6b2cb05027 Xiaomi: Fetch manual samples 2024-01-18 21:06:40 +00:00
José Rebelo
94c763ef99 Zepp OS: Ensure all communication respects service encryption flag
Not all communication was moved to services, and some might not be
respecting the encryption flag sent during initialization implemented
in 3a2b02df2. Some services are encrypted or not across different
watches - see #3308.
2024-01-17 20:43:17 +00:00
José Rebelo
0e56af4ce9 Xiaomi Watch S3: Experimental support 2024-01-17 20:29:06 +00:00
MrYoranimo
b395e889c3 Xiaomi: temporary fix for database errors when reconnecting 2024-01-17 20:16:38 +00:00
MrYoranimo
7f68dc5449 Set default year for date-of-birth to 1970
Prevent undefined behavior on devices that do not have a range check on
the year from the DOB before calculating someone's age
2024-01-17 20:16:38 +00:00
MrYoranimo
1185699c56 BtBRQueue: use Handler(Thread) for sending messages and connecting socket 2024-01-17 20:16:38 +00:00
MrYoranimo
ae97e961b9 Xiaomi: add potential service and characteristic UUIDs 2024-01-17 20:16:38 +00:00
MrYoranimo
339859c829 Xiaomi: change BLE max chunk size with MTU changes 2024-01-17 20:16:38 +00:00
MrYoranimo
53a7cc5b30 Xiaomi: run data upload service finalization on respective queue 2024-01-17 20:16:38 +00:00
MrYoranimo
d217a0b15f Xiaomi: fix only short-bytes from int nonce being used during encryption 2024-01-17 20:16:38 +00:00
MrYoranimo
b9cbd14ffe Xiaomi: fix logic for ability to select widget workout type 2024-01-17 20:16:38 +00:00
MrYoranimo
b31d98c7a0 Xiaomi: add support for data uploading over SPP 2024-01-17 20:16:38 +00:00
MrYoranimo
e5c2bd51c2 Xiaomi: refactor XiaomiCharacteristic to use callback per message 2024-01-17 20:16:38 +00:00
MrYoranimo
592a52054f Xiaomi: request battery level and charging state on an interval 2024-01-17 20:16:38 +00:00
MrYoranimo
429d717630 Xiaomi: recognize a full battery as a valid charger state 2024-01-17 20:16:38 +00:00
MrYoranimo
2ef461ab90 Add header to device-specific activity data settings 2024-01-17 20:16:38 +00:00
MrYoranimo
399248e22c Xiaomi: allow forcing the connection type from connection settings 2024-01-17 20:16:38 +00:00
MrYoranimo
2812ad1429 Xiaomi Watch S1 Active: disable find device and override connection type 2024-01-17 20:16:38 +00:00
MrYoranimo
815582354d Redmi Watch 3 Active: override connection type 2024-01-17 20:16:38 +00:00
MrYoranimo
c9d880456a Xiaomi Smart Band 8 Pro: add experimental support 2024-01-17 20:16:38 +00:00
MrYoranimo
1d1ef9fba6 Xiaomi Watch S1: add experimental support 2024-01-17 20:16:38 +00:00
MrYoranimo
04460fc3f4 Xiaomi Watch S1 Pro: add experimental support 2024-01-17 20:16:38 +00:00
MrYoranimo
ce179a29ae Xiaomi: introduce XiaomiSppSupport 2024-01-17 20:16:38 +00:00
MrYoranimo
ac1991104b BtLEQueue: add null check in onMtuChanged for mWaitForActionResultLatch 2024-01-17 20:16:38 +00:00
MrYoranimo
98e8ec2329 Xiaomi: Introduce XiaomiConnectionSupport
Co-Authored-By: José Rebelo <joserebelo@outlook.com>
2024-01-17 20:16:38 +00:00
José Rebelo
8574a41fe7 Xiaomi: Fix sleep sometimes extending past the wakeup time 2024-01-17 20:13:07 +00:00
José Rebelo
4231e97cff Sony Headphones: Allow choice of protocol version 2024-01-17 18:48:10 +00:00
Oleg Afanasyev
414cf5e472 Sport Activity Summary: fix group order instability
Previously group order was determined on the fly by available entries order or appearance.
This commit changes it to use group definition order.
2024-01-17 18:16:01 +00:00
José Rebelo
9095ffad8b Mijia MHO-C303: Initial support 2024-01-17 17:55:15 +00:00
Martin.JM
e6aa0afa7e Fix huawei debug request 2024-01-17 14:55:13 +01:00
José Rebelo
3b8428e795 Redmi Smart Band Pro: Fix password digits 2024-01-16 20:52:10 +00:00
José Rebelo
3a2b02df2a Zepp OS: Query supported services and encryption flag 2024-01-15 21:27:01 +00:00
foxstidious
ba59c62fa4 Add support for snooze alarm on CasioGBX100 devices 2024-01-14 20:29:30 +00:00
José Rebelo
0b7c53698a Xiaomi: Fix sleep stages extending past wakeup time 2024-01-14 17:02:42 +00:00
opcode
f5cf21bf05 Xiaomi: Parse SleepSummary 2024-01-14 17:02:42 +00:00
opcode
e06b2e1f95 Xiaomi: Implement sleep stage parsing
This allows sleep stage detection to work by parsing
some of the data sent in SleepDetails.

It's still missing parsing the summary contained inside SleepDetails.
and decoding the large amount of other mostly unknown data.
2024-01-14 17:02:42 +00:00
Damien 'Psolyca' Gaignon
1e1f0014c7
Huawei : Change method to get device name round 2 2024-01-13 17:27:09 +01:00
José Rebelo
8d7a6be7eb Xiaomi: Enable activity fetching for all devices 2024-01-10 22:39:04 +00:00
José Rebelo
823bd829ce Zepp OS: Add some missing control center items 2024-01-10 19:47:25 +00:00
Martin.JM
704875c3c2 Update license headers 2024-01-10 18:25:20 +00:00
FYG_license_bot_ignore_me
4c7476845b Update license headers and CONTRIBUTORS file 2024-01-10 19:01:48 +01:00
José Rebelo
d63db41f90 Huami: Display proper error when battery too low to install firmware 2024-01-09 19:12:03 +00:00
José Rebelo
aeec68aeef Huami: Fetch SpO2 on devices that support it 2024-01-09 17:43:43 +00:00
opcode
372aa88e6e Xiaomi: Weather fixes and Implement wind and AQI
Many fields were incorrectly being sent as uint32 instead of sint32. This caused issues with forecast icons.
2024-01-09 17:28:50 +00:00
Damien 'Psolyca' Gaignon
cb7121a32e Huawei : Change method to get device name 2024-01-09 17:27:37 +00:00
José Rebelo
9bfe3dcd5f Huawei: Fix tests
- Allow the calendar to be passed as parameter for tests
- Disable the setWearMessage test, for now, broken since 5b0736b751
2024-01-09 17:27:18 +00:00
Damien 'Psolyca' Gaignon
e489d0d811
Fix string comparison 2024-01-08 21:29:57 +01:00
Davis Mosenkovs
5bcebe9590 Disconnect all devices that are not NOT_CONNECTED
Disconnect devices in all states except GBDevice.State.NOT_CONNECTED.
This should fix devices getting stuck in GBDevice.State.CONNECTING state
when Bluetooth is switched off.
2024-01-08 17:11:33 +00:00
Davis Mosenkovs
9e10da062e Add "Reconnect only to connected devices" setting
* Add general_reconnectonlytoconnected setting.

* Replace last_device_address shared prefs string with
last_device_addresses shared prefs string set.
Bluetooth address of a device is added to last_device_addresses when
connecting to the device.
Bluetooth address of a device is removed from last_device_addresses only
when deleting the device or explicitly disconnecting from the device
(e.g. by selecting "Disconnect" in the device tile menu).

* Adjust ExternalPebbleJSActivity to better support multiple connected
devices.
2024-01-08 17:11:33 +00:00
Davis Mosenkovs
904a7807a8 Automatically connect to all devices
Automatically connect to all devices instead of connecting only to the
last connected device.
2024-01-08 17:11:33 +00:00
José Rebelo
705361ae3a Huawei: Fix linter
Math.multiplyExact is only available on SDK24 onward. We do not expect
an overflow to occur here, since the hashLength is fixed and the outputLength
is small (32 on all current calls).
2024-01-08 13:43:26 +00:00
Damien 'Psolyca' Gaignon
0c22ecdd51
Huawei: Add initial support for Huawei-Honor 2024-01-07 23:18:08 +01:00
José Rebelo
ab894ae433 Extract hardcoded activity summary entries to constants 2024-01-06 13:54:06 +00:00
José Rebelo
4e54f8137d Xiaomi: Improve walking v2 parsing 2024-01-05 21:29:12 +00:00
José Rebelo
a61f7d70d5 Xiaomi: Parse indoor cycling 2024-01-05 21:25:17 +00:00
José Rebelo
dd1843505e Xiaomi: Fix extreme hr zone parsing 2024-01-05 21:07:22 +00:00
José Rebelo
f7258034cc Xiaomi: Refactor workout summary parsing 2024-01-05 21:04:19 +00:00
José Rebelo
05d8f99312 Nothing Ear (Stick): Initial support
- Refactor common coordinator logic to AbstractEarCoordinator
- Increment message counter on the stick
- Make audio modes translatable
2024-01-05 09:35:03 +00:00
FintasticMan
ecd13b4d8e Update to new simple weather spec 2024-01-04 20:34:21 +00:00
FintasticMan
655d202512 Add simple weather condition
Co-authored-by: Victor Kareh <vkareh@redhat.com>
2024-01-04 20:34:21 +00:00
FintasticMan
127867441a Add support for InfiniTime's new simple weather
Co-authored-by: Jean-François Milants <jf@codingfield.com>
2024-01-04 20:34:21 +00:00
José Rebelo
4d5ce069aa Nothing Ear (2): Initial support 2024-01-04 19:15:07 +00:00
José Rebelo
932ec8336c Xiaomi: Fix persisting unknown workouts 2024-01-03 21:37:27 +00:00
José Rebelo
951d8f25b7 Xiaomi: Add indoor cycling 2024-01-03 21:35:18 +00:00
Jean-François Milants
73a3a4b603 Fix DFU MTU value for PineTime
Explicitely disable the request MTU feature from the NRF DFU library to ensure that it'll send 20 bytes packets (instead of 253B, which will crash InfiniTime).
2024-01-03 20:42:22 +00:00
Roberto P. Rubio
6cc57a15f5 Adds a specific Notifications Channel to Connection Status Notifications 2024-01-01 19:30:42 +00:00
José Rebelo
fa6489b300 Redmi Smart Band Pro: Experimental support 2024-01-01 12:18:36 +00:00
José Rebelo
70e1d852ba Xiaomi: Fix crash when parsing unknown workout summary 2023-12-30 18:37:22 +00:00
José Rebelo
1907912bd2 Xiaomi: Fix outdoor walking parsing on some watches 2023-12-29 19:54:43 +00:00
José Rebelo
e14b2fc382 Pixoo: Enable flashing 2023-12-26 22:12:22 +00:00
José Rebelo
c9fec4e33a Xiaomi: Identify strength training, elliptical and outdoor running 2023-12-26 22:07:35 +00:00
José Rebelo
aa7c2b1731 Xiaomi: Improve workout summary parsing
Outdoor walking on the Mi Band 8, but does not seem to match the summary
from the Mi Band 7 Pro.
2023-12-26 22:02:43 +00:00
Andreas Shimokawa
177fa56bb9 Pixoo: Quick hack to "install" any image on the pixoo 2023-12-26 20:38:13 +01:00
José Rebelo
b77ba8b74c Pebble: Attempt to fix app configuration webview
See #3373 and possibly #3424
2023-12-26 16:48:59 +00:00
Andreas Shimokawa
f4d7a6b490 Pixoo: implement sending bitmaps
Not really used right not - mapped to "test new functionality"
2023-12-26 01:14:16 +01:00
José Rebelo
09fbc2665b Redmi Watch 2 Lite: Experimental support 2023-12-24 16:38:11 +00:00
José Rebelo
1cfd00c924 Pixoo: Add setting to disable notifications 2023-12-23 21:51:54 +00:00
José Rebelo
4a7a201971 Pixoo: Support custom device name 2023-12-23 21:27:57 +00:00
Arjan Schrijver
7aeb0dd2ef Fossil/Skagen Hybrids: Update navigationApp to 1.1
Changes:
- Support locking (keep visible and let hands display time)
- Support merge navigation instruction
- Support wrist flick gesture to move hands
- Support GB-configurable foreground and vibration behaviour
2023-12-23 22:05:51 +01:00
José Rebelo
5ffed2aa62 Xiaomi: Fix crash if device does not provide full stress and spo2 data 2023-12-23 14:08:39 +00:00
José Rebelo
a62ff4eabb Xiaomi: Improve activity details parsing on some devices 2023-12-22 22:44:30 +00:00
José Rebelo
71b55902d0 Mi Band 7 Pro: Disable PAI
Reported not supported on matrix.
2023-12-22 22:42:27 +00:00
José Rebelo
fb803cbdda Xiaomi: Enable REM sleep 2023-12-22 22:21:51 +00:00
José Rebelo
b79f774e3e Xiaomi: Add debug function to parse all activity files from storage 2023-12-22 22:21:51 +00:00
José Rebelo
09c33b3541 Xiaomi: Persist and overlay sleep stages 2023-12-22 22:21:51 +00:00
José Rebelo
82863ff305 Xiaomi: Add sleep stages parser
From Alice
2023-12-22 19:19:56 +00:00
José Rebelo
b535784117 Mijia LYWSD03MMC: Initial support
Same protocol as LYWSD02, but does not support setting the time.
2023-12-22 12:35:35 +00:00
José Rebelo
149b6236a0 Mijia LYWSD: Make support class generic 2023-12-22 12:26:15 +00:00
Arjan Schrijver
4c0750e75a Add missing navigation actions to GMaps handler 2023-12-21 11:16:23 +01:00
LuK1337
0ca35ad935 Xiaomi: Handle find phone messages without system properly
After find phone is stopped, watch sends a `Command` message back
without `system` set, and because of missing hasSystem() check, we'd
wrongly go to condition that sets findPhoneEvent.event to START.
2023-12-20 19:32:17 +00:00
José Rebelo
cb66cd742a Xiaomi: Enable activity sync on debug and nightly builds 2023-12-20 19:09:49 +00:00
Andreas Shimokawa
81c9aa5faf Pixoo: support "clap hands to turn off screen" and "sleep after silence" settings
Also fix crc calculation :P
2023-12-19 21:08:25 +01:00
Andreas Shimokawa
198800e087 Pixoo: Decode alarms from device, support sending alarms
This is probably not quite right yet.

Also we need to properly chunk incoming protocol messages before decoding them
2023-12-19 10:58:49 +01:00
Andreas Shimokawa
ea0817f7b6 Use TextUtils.join intead of String.join, to make at least the linter happy
It is not clear to me if this would get desugarized anyway, but linter says needs API 26
2023-12-16 19:37:40 +01:00
José Rebelo
48e1bc1a8a ColaCao 2021 / 2023: Initial support
Reports in #3455 and #2955 mention that everything works, except HR,
which crashes the devices (they do not have an HR sensor), so we just
disable HR support.
2023-12-14 21:53:30 +00:00
Arjan Schrijver
730841e9a1 Convert last remaining Switches to MaterialSwitch
Fixes #3454
2023-12-14 13:24:04 +01:00
José Rebelo
9df3ae9c2e Amazfit T-Rex Pro: Add activate display on lift sensitivity 2023-12-13 20:45:37 +00:00
José Rebelo
1c7289edfa Xiaomi: Fix secondary goal config 2023-12-12 21:27:50 +00:00
José Rebelo
1028d2c0cd Xiaomi: Display widget id when names are repeated 2023-12-12 20:58:42 +00:00
José Rebelo
cb3e10f07a Xiaomi: Update stress ranges to match watch 2023-12-12 20:46:59 +00:00
José Rebelo
372cf563ea Xiaomi: Add Vitality Score (PAI-like metric) 2023-12-12 20:27:15 +00:00
José Rebelo
bddec00de1 Xiaomi: Persist daily summary 2023-12-12 20:26:55 +00:00
José Rebelo
2d89fdf11b Xiaomi: Fix widget set on some devices 2023-12-12 18:45:44 +00:00
José Rebelo
128aed005b Xiaomi: Parse daily summary and workout gps tracks 2023-12-12 14:12:00 +00:00
José Rebelo
820956ccdc Xiaomi: Disable activity fetching outside of Mi Band 8
It has a lot of issues, and should not be enabled to proceed with a
release.
2023-12-11 22:16:04 +00:00
José Rebelo
6de7af62e3 Xiaomi: Manage widgets 2023-12-11 22:00:16 +00:00
José Rebelo
108307c711 Redmi Smart Band 2: Experimental support
Characteristics taken from #3274
2023-12-11 13:58:00 +00:00
José Rebelo
095b9e42d3 Xiaomi: Toggle phone silent mode from band 2023-12-11 10:51:10 +00:00
José Rebelo
efc8752a66 Zepp OS: Toggle phone silent mode from band 2023-12-11 10:50:50 +00:00
José Rebelo
4dbf9bb8ac Huami: Toggle phone silent mode from band 2023-12-11 10:50:31 +00:00
José Rebelo
8f2924c873 Xiaomi: Reject call with SMS reply 2023-12-10 22:12:16 +00:00
José Rebelo
4051c7f7d4 Xiaomi: Add wear mode preference 2023-12-10 18:03:17 +00:00
José Rebelo
d28cff478c Delete notifications from connected devices only 2023-12-10 17:28:15 +00:00
José Rebelo
9babbf504e Xiaomi: Fix camera remote get typo 2023-12-10 13:30:14 +00:00
José Rebelo
bf9a5d90d4 Xiaomi: Add camera remote preference 2023-12-10 13:24:35 +00:00
José Rebelo
a3e2997f26 Xiaomi: Fix sleep mode schedule, spo2 and stress support detection 2023-12-10 12:31:19 +00:00
José Rebelo
8d1c243297 Xiaomi: Detect supported preferences 2023-12-10 12:24:59 +00:00
José Rebelo
c38d2044d8 Xiaomi: Add vitality score notification preferences 2023-12-10 11:19:01 +00:00
José Rebelo
dd0c9cf3e0 Xiaomi: Configure fitness goal notification and secondary goal 2023-12-10 11:02:22 +00:00
José Rebelo
4635bf018a Xiaomi: Enable autoremove dismissed notifications preference 2023-12-10 10:42:07 +00:00
José Rebelo
18686e98c5 Xiaomi: Delete notification from watch when dismissed from phone 2023-12-10 10:36:14 +00:00
José Rebelo
ef73ea1bd5 Make LimitedQueue generic 2023-12-10 10:30:27 +00:00
José Rebelo
4d12ac93e7 Allow multiple device actions to be triggered for the same event 2023-12-09 11:40:28 +00:00
José Rebelo
25196a932e Allow toggling DND through device actions 2023-12-09 11:01:55 +00:00
José Rebelo
577ee27c14 Intent API: Add debug action for test new function 2023-12-09 10:59:39 +00:00
MrYoranimo
0378f48798 Xiaomi: fix for invalid birthdate being sent in user info 2023-12-09 00:20:22 +01:00
MrYoranimo
435d41aca0 Huami/Xiaomi: centralize handling of device state events
Gadgetbridge can be configured to perform an action when a
Huami device is taken off or the user was detected to fall asleep or
wake up. This functionality was specific to Huami devices, but this
changeset moves this upstream to the AbstractDeviceSupport class in
combination with new GBDeviceEvents.

Now that the ADS has centralized support for this functionality, the
same logic can be used for other devices. In this case, an
implementation is added for supported Xiaomi devices.
2023-12-09 00:20:22 +01:00
José Rebelo
2ff92c73f8 Xiaomi: Re-enable screen on on notifications preference
- Disabled by accident on 2063bc2df
- Move preference to XiaomiNotificationService
- Get preference value on connection
2023-12-08 20:55:58 +00:00
José Rebelo
2063bc2dfd Xiaomi: Remove not-implemented preferences 2023-12-08 18:53:22 +00:00
José Rebelo
961e9f1bf9 Xiaomi: Fix sleep schedule preference 2023-12-08 18:53:11 +00:00
José Rebelo
6984572d33 Xiaomi: Allow notification open on phone 2023-12-08 12:12:35 +00:00
José Rebelo
2b8d8c2cb0 Xiaomi: Fix dismiss multiple notifications from watch 2023-12-08 11:49:47 +00:00
José Rebelo
6479cc3bb0 Xiaomi: Allow disabling app notifications per device 2023-12-08 11:39:53 +00:00
José Rebelo
f29995b571 Zepp OS: Allow disabling app notifications per device 2023-12-08 11:29:20 +00:00
José Rebelo
77329813b9 Use simple summary provider for vibration pattern counts 2023-12-08 10:45:07 +00:00
Andreas Shimokawa
b4aca410b4 Pixoo: implement some protocol for testing 2023-12-07 21:07:52 +01:00
Andreas Shimokawa
b44b0fec7e Divoom Pixoo: Initial experimental support
Works:
- notifications
- call notification
- set time
- setting brightness
- setting 24h/12h format
- sending weather

Note
- this is implemented using using the classic bluetooth serial protocol, the
  device can do BLE, but I don't know how to use it, as I did not have the
  offical app to sniff.
- The information about the protocol comes from here
  https://github.com/jfroehlich/node-p1x3lramen/blob/main/source/devices/pixoo.js

TODO:
- Enable beep? Possible? I heard it beep once at least when switching it on
- Getting out of factory mode? Why does it always play animations even when I
   switch to the clock?
- Implement switching modes (can be done with the button)
- Implement sending own images and animations
- Firmware update?
- ...
2023-12-06 15:56:18 +01:00
José Rebelo
130e2ab85c Xiaomi: Fix heart rate interval and sleep support 2023-12-06 11:51:01 +00:00
José Rebelo
03dbf7533f Xiaomi: Get canned messages from watch 2023-12-06 11:18:13 +00:00
MrYoranimo
b902ee96c3 Xiaomi: improve battery level and charger status processing
Because the reporting of battery state is inconsistent between different
models, the device's battery state was not correctly processed in GB.

For at least the firmware on the Xiaomi Watch S1 Active, the charger
state is broadcast through a separate message from the message
containing the battery level. Even though the battery level was
requested by GB upon receiving this broadcast, the charger state got
discarded as it was expected to also be included in the result of the
subsequent request.

This patch changes the name of the `Charger` message to `DeviceState`
and includes more fields that may be presented by some device models.
Furthemore, the broadcast is cached so that the charger state can be
processed from this cache instead of the battery level response message.
2023-12-06 11:56:13 +01:00
MrYoranimo
405596d960 Xiaomi: check for null values before encoding MusicSpec to proto 2023-12-05 20:27:33 +01:00
MrYoranimo
561dc16b28 DeviceCommunicationService: catch uncaught exceptions from handleActions
Exceptions raised while handling actions in the device's support class
may result in the DeviceCommunicationService crashing as a whole and not
being started again until the user forces GB to make a connection by
pressing the device from the list.

This change is made, because Xiaomi devices make use of proto2 messages,
where optional fields cannot be set to null values as that will make it
throw NPEs.
2023-12-05 20:19:12 +01:00
José Rebelo
7f7834c620 Xiaomi: Fix reconnect if characteristics are null
If a service was found, but characteristics are null, maybe we're just
connecting too early - set the device to reconnect.
2023-12-05 18:30:33 +00:00
José Rebelo
4de7cb3591 Xiaomi: Improve service auto-detection
Some watches have the encrypted service, even though they're plaintext,
but are missing the characteristics.
2023-12-05 18:28:39 +00:00
José Rebelo
1c68252255 Xiaomi: Fix settings display items code 2023-12-05 18:20:02 +00:00
Andreas Shimokawa
776346d311 Xiaomi: guard against null pointer crash 2023-12-05 18:20:02 +00:00
José Rebelo
9ddbcc0c8a Xiaomi: Use display items labels from watch 2023-12-05 18:20:02 +00:00
José Rebelo
3ab1ac26db Refactor known preference values code to be reusable 2023-12-05 18:20:02 +00:00
José Rebelo
2dacdcface Xiaomi: Log service 2023-12-05 18:17:50 +00:00
José Rebelo
95d3ff81fd Xiaomi: Fetch alarm and reminder slots from watch 2023-12-05 18:16:45 +00:00
MrYoranimo
5f9fda4f07 BtLEQueue: fix typo in onCharacteristicChange 2023-12-04 23:32:23 +01:00
MrYoranimo
b303da4e62 Xiaomi: wrap parsing of activity data in try block
This will prevent uncaught exceptions that occur during the
parsing of activity data from breaking up the activity fetching
chain and causing the task to never get completed.
2023-12-04 23:32:18 +01:00
MrYoranimo
0f83346d65 Xiaomi: check if binary parser result is null
The activity parser may return null pointers in case the version
of the data structure is not supported. Not checking for null here may
result in the activity fetching task may never complete and cause
further communication with the device to grind to a halt.
2023-12-04 22:03:59 +01:00
José Rebelo
376956bbe9 Xiaomi: Improve activity fetch logging 2023-12-04 09:46:49 +00:00
José Rebelo
e6cb15d9eb Mi Watch Color Sport: Experimental support 2023-12-02 11:56:23 +00:00
José Rebelo
ec050d7a4f Xiaomi: Unify encrypted and plaintext logic 2023-12-02 11:25:32 +00:00
José Rebelo
ba0ca1de75 Delegate auth key validation to coordinator 2023-12-02 10:59:34 +00:00
José Rebelo
216dc93986 Mi Band 8: Overlay sleep on activity data 2023-12-02 10:56:36 +00:00
José Rebelo
84692e5432 Mi Band 8: Persist bedtime and wakeup times to database 2023-12-01 21:35:29 +00:00
Andreas Shimokawa
1b2a9ac140 Xiaomi: When sending contacts, use correct command to replace the ones already on the watch 2023-12-01 20:07:32 +01:00
Andreas Shimokawa
81e24e53ed Xiaomi: WIP implementation for sending contacts
This is not useful yet because contacts just get added when sending them, instaed of replacing.
Should be fixed or disabled before the release
2023-12-01 12:40:53 +01:00
Andreas Shimokawa
6e5bedb365 Xiaomi: Implement Screen On on Notification setting
Works on Redmi Watch 3 Active
Does not work on Mi Watch Lite
2023-12-01 07:52:08 +01:00
MrYoranimo
b9b91db06f Xiaomi: implement phonebook service to respond to contact info requests 2023-11-30 22:54:41 +01:00
Gordon Williams
684d976bfc Bangle.js: Ensure SMS messages have src field set to "SMS Message" (it was previously left out) 2023-11-30 09:33:07 +00:00
José Rebelo
5be3543fa3 Xiaomi Smart Band 7 Pro: Experimental support 2023-11-29 21:18:52 +00:00
José Rebelo
0c4e2df075 Xiaomi: Fix crash when opening app manager
Regression introduced by e53c67e8bf
2023-11-29 21:11:54 +00:00
MrYoranimo
dd6d9bd271 Add device icon for Mi Watch, Xiaomi Watch S1 Active 2023-11-29 20:27:44 +01:00
MrYoranimo
6933b8a793 Add device coordinator for Xiaomi Watch S1 Active 2023-11-29 20:27:36 +01:00
Gordon Williams
8ef80a2565 Bangle.js: ensure GPS speed is reported correctly when the phone is providing it 2023-11-29 10:04:33 +00:00
mormegil
ec73b244ee Improve ASCII transliterator
We should use NFKD instead of NFD since we are flattening to US-ASCII
afterwards anyway. This allows various Unicode characters which would
end up as a question mark to be represented by their compatibility
decomposition. This applies to e.g. ligatures (e.g. U+FB01 LATIN SMALL
LIGATURE FI will now be replaced with plain fi instead of a question
mark), and also the U+00A0 NO-BREAK SPACE [NBSP] to be replaced by
a normal space instead of a question mark.

+Add Czech fancy quotes to the Czech transliterator
+Add a unit test for Multitransliterator
2023-11-28 18:24:42 +00:00
José Rebelo
99b3dc3226 Fix crash when pairing current device as companion 2023-11-28 18:12:12 +00:00
José Rebelo
ae75f82a63 Zepp OS: Improve activity fetch logging 2023-11-26 21:14:46 +00:00
José Rebelo
c5757ea478 Mi Band 8: Improve stress charts 2023-11-26 21:01:32 +00:00
José Rebelo
50cdcec846 Xiaomi: Delete device data when deleting device 2023-11-26 21:01:32 +00:00
José Rebelo
636f4adc8d Zepp OS: Delete device data when deleting device 2023-11-26 21:01:32 +00:00
José Rebelo
e53c67e8bf Xiaomi: Fix SpO2 2023-11-26 21:01:32 +00:00
Andreas Shimokawa
6f2876fa66 Mi Watch 3 Lite: Fix firmware update
(not enabled yet)
2023-11-26 00:22:37 +01:00
José Rebelo
34039094c1 Fix hungarian transliterator 2023-11-25 23:04:39 +00:00
Kornél Schmidt
58a8484322 added test, added to defaultLanguagesIfEnabled 2023-11-25 23:03:30 +00:00
ssilverr
ee3b4d4aa1 added HungarianTransliterator 2023-11-25 23:03:30 +00:00
foxstidious
deeaf28de4 Limit characters in heading and subheading to 32 (or else casio won't display the notification) 2023-11-25 22:52:26 +00:00
foxstidious
40af20a176 Removed call to start intent if no companion, defaulted companion preference to true, and reordered casio alert preferences to match watch order. 2023-11-25 22:52:26 +00:00
foxstidious
264ab14847 Fixed alert logic 2023-11-25 22:52:26 +00:00
foxstidious
85d0722ffe Updates to address findings on PR 2023-11-25 22:52:26 +00:00
foxstidious
4dc10d1d02 Implemented better message preview, added ability to specify high-level alert by category 2023-11-25 22:52:26 +00:00
foxstidious
11bf0acf32 Changed notification timestamp format to be implemented specifically for GBD-200 2023-11-25 22:52:26 +00:00
foxstidious
6be7f7c9cc Fixed find phone on, added preference to preview messages on Casio GDB-200 2023-11-25 22:52:26 +00:00
foxstidious
a1b59774d4 Fixed notification time stamp on Casio GDB-200 2023-11-25 22:52:26 +00:00
foxstidious
d9d6a8dc29 Categorized Google Voice messages as GENERIC_SMS, cleaned up some Casio support code, added portion of message text to notification title 2023-11-25 22:52:26 +00:00
Andreas Böhler
6ef6c9be43 Fix Bonding for the Casio GB5600/6900/STB-1000 series 2023-11-25 22:46:45 +00:00
José Rebelo
8bd7e103d0 Update changelog 2023-11-25 22:30:25 +00:00
José Rebelo
e91ad80d27 Xiaomi: Cleanup code and comments 2023-11-25 22:18:34 +00:00
José Rebelo
7416159ba2 Xiaomi: Mark new devices as experimental 2023-11-25 22:17:09 +00:00
José Rebelo
543c8b28d0 Rename org.bouncycastle package
Fixes roboelectric in unit tests.
2023-11-25 21:16:53 +00:00
Andreas Shimokawa
84cf8efb59 Redmi Watch 3 Lite: Initial support
This is just using mi band 8 code, some feature work
2023-11-25 21:16:53 +00:00
José Rebelo
0dcb316461 Mi Band 8: Basic workout summary parser (wip) 2023-11-25 21:16:53 +00:00
José Rebelo
fa20bf66c6 Mi Band 8: Fix send gps location during workout 2023-11-25 21:16:53 +00:00
José Rebelo
dad97f9e96 Xiaomi: Update weather AQI and warning proto 2023-11-25 21:16:53 +00:00
José Rebelo
516b3dbf1e Mi Band 8: Fix notification icons for long package names 2023-11-25 21:16:53 +00:00
José Rebelo
8192106fc0 Mi Band 8: Fix notification icons mirroring 2023-11-25 21:16:53 +00:00
José Rebelo
3948f95505 Xiaomi: Dismiss notification from phone when dismiss from watch 2023-11-25 21:16:53 +00:00
José Rebelo
ff2a26756f Mi Band 8: Fix weather (set current location) 2023-11-25 21:16:53 +00:00
Andreas Shimokawa
50f086b03a Xiaomi: Implement daily forecast
Works on Mi Watch Lite
2023-11-25 21:16:53 +00:00
Andreas Shimokawa
e2f60b38c9 Xiaomi: fix NPE when no air quality is available 2023-11-25 21:16:53 +00:00
Andreas Shimokawa
0e3e406320 Xiaomi: Send AQI
Todo: map to strings
2023-11-25 21:16:53 +00:00
José Rebelo
047cc71d28 Mi Band 8: Upload custom notification icons 2023-11-25 21:16:53 +00:00
Andreas Shimokawa
9749716c23 Xiaomi: add two more fields to current weather (seen on Mi Band 8) 2023-11-25 21:16:53 +00:00
Andreas Shimokawa
929ea7ae57 Xiaomi: Implement sending current weather
TODO: Support °F, find out about unknown values

Tested on Mi Watch Lite
2023-11-25 21:16:53 +00:00
José Rebelo
cab63b2c98 Mi Band 8: Fix watchface upload 2023-11-25 21:16:53 +00:00
Andreas Shimokawa
27fba50283 Xiaomi: move emoji conversion to base class
This works on Mi Watch Lite from FW 4.1.12
2023-11-25 21:16:53 +00:00
Andreas Shimokawa
cef4b62458 Mi Watch Lite: enable install handler
Does not work as is because we do not recognize watchfaces and firmware yet
2023-11-25 21:16:53 +00:00
José Rebelo
29c183b88a Xiaomi: Refactor to install firmware (untested) 2023-11-25 21:16:53 +00:00
José Rebelo
c47e830056 Xiaomi: Watchface upload (wip, does not work) 2023-11-25 21:16:53 +00:00
José Rebelo
82a264cd65 Xiaomi: Improve emoji mapping efficiency 2023-11-25 21:16:53 +00:00
José Rebelo
b0d3fe6a51 Xiaomi: Set device language 2023-11-25 21:16:53 +00:00
José Rebelo
48e149aefe Xiaomi: Refactor XiaomiCharacteristic to improve logging and ordering
Fixes a potential race condition on initialization, since the chunked
commands were being scheduled on a separate transaction builder, which
would be scheduled to be written before the initialization.
2023-11-25 21:16:53 +00:00
José Rebelo
1acd3ac5fd Xiaomi: Remove usage of TransactionBuilders 2023-11-25 21:16:53 +00:00
José Rebelo
e2d7798e36 Xiaomi: Refuse delete of active watchface 2023-11-25 21:16:53 +00:00
José Rebelo
1b645f44d7 Xiaomi: Keep only watchface tab in app management 2023-11-25 21:16:53 +00:00
José Rebelo
a895a6aae7 Xiaomi: Set and delete watchfaces 2023-11-25 21:16:53 +00:00
José Rebelo
7fb81b6e0d Xiaomi: Fix edge cases in chunked math 2023-11-25 21:16:53 +00:00
José Rebelo
fa72820e5a Mi Band 8: Map emoji (inefficient) 2023-11-25 21:16:53 +00:00
José Rebelo
81ca617601 Xiaomi: Prevent NPE when not yet connected 2023-11-25 21:16:53 +00:00
José Rebelo
ce1d095074 Xiaomi: Add encrypted and plaintext coordinators 2023-11-25 21:16:53 +00:00
José Rebelo
4e680cfcce Mi Band 8: List watchface in app management 2023-11-25 21:16:53 +00:00
Andreas Shimokawa
9ea7b48e0c Xiaomi: Add outdoor running subtype to enum. 2023-11-25 21:16:53 +00:00
Andreas Shimokawa
7a3139fce0 Xiaomi: remove call notification if call has been taken on the phone or rejected, ended.
For in-call notification if those exist, it would not work.
2023-11-25 21:16:53 +00:00
José Rebelo
acba91d3c5 Xiaomi: Refactor daily parser slightly 2023-11-25 21:16:53 +00:00
José Rebelo
d3eb69fcf7 Mi Band 8: Send gps to watch (wip) 2023-11-25 21:16:53 +00:00
José Rebelo
0c27772bb5 Xiaomi: Map elliptical workout 2023-11-25 21:16:52 +00:00
Andreas Shimokawa
fce2dfa0ca Xiaomi: fix incoming calls on Mi Watch lite (shoud not break Mi Band 8) 2023-11-25 21:16:52 +00:00
Andreas Shimokawa
b09879dd31 Mi Watch Lite: disable some features that do not exist on the watch 2023-11-25 21:16:52 +00:00
Andreas Shimokawa
9e1a6ca76a Xiaomi: change order of enabling notifications 2023-11-25 21:16:52 +00:00
José Rebelo
04434f4a55 Mi Watch Lite: Attempt to fix activity parsing 2023-11-25 21:16:52 +00:00
Andreas Shimokawa
cd2d7d144e Xiaomi: Fix unencrypted support again 2023-11-25 21:16:52 +00:00
José Rebelo
8333b8b8d8 Mi Band 8: Sleep details parser (very very wip) 2023-11-25 21:16:52 +00:00
José Rebelo
aead518e05 Xiaomi: Implement daily activity parsing 2023-11-25 21:16:52 +00:00
José Rebelo
5dd746f2d6 Xiaomi: Ack activity before parsing for now 2023-11-25 21:16:52 +00:00
José Rebelo
afaf0baa79 Xiaomi: Cache firmware version 2023-11-25 21:16:52 +00:00
José Rebelo
db57072dd3 Xiaomi: Make activity file ID types readable 2023-11-25 21:16:52 +00:00
José Rebelo
5316a7dcf8 Xiaomi: Send device update intent on activity fetch start and finish 2023-11-25 21:16:52 +00:00
José Rebelo
e40b703678 Xiaomi: Dump activity data to storage 2023-11-25 21:16:52 +00:00
José Rebelo
bcefc39ad8 Mi Band 8: Restore setting of firmware version before initializing 2023-11-25 21:16:52 +00:00
José Rebelo
1b6bb20890 Xiaomi: Move initialization logic to base class 2023-11-25 21:16:52 +00:00
José Rebelo
d35bcef406 Mi Band 8: Fix activity fetching 2023-11-25 21:16:52 +00:00
José Rebelo
d66de2f94f Xiaomi: Fix activity file id encoding 2023-11-25 21:16:52 +00:00
Andreas Shimokawa
01a552e0f7 Mi Watch Lite: Do not set firmware version to ... during connect 2023-11-25 21:16:52 +00:00
Andreas Shimokawa
7de94432d0 Mi Watch Lite: authenticate via use XiaomiAuthService, handle subtype 5 send user id reply
This makes device info and battery status work since AuthService calls phase2Initialize()
2023-11-25 21:16:52 +00:00
José Rebelo
f3d6be2f96 Xiaomi: Handle chunked nack 2023-11-25 21:16:52 +00:00
Andreas Shimokawa
a19318c5bd Mi Watch Lite: more small fixes for non-encrypted path 2023-11-25 21:16:52 +00:00
Andreas Shimokawa
b103b4f3e4 Mi Watch Lite: fix unencrypted support after refactoring common Xiaomi code 2023-11-25 21:16:52 +00:00
José Rebelo
1920968fba Mi Watch Lite: Attempt to fix plaintext support 2023-11-25 21:16:52 +00:00
José Rebelo
d953fd5b5b Mi Watch Lite: Refactor to use XiaomiCharacteristic 2023-11-25 21:16:52 +00:00
Andreas Shimokawa
84dff5b8df fix initialization 2023-11-25 21:16:52 +00:00
Andreas Shimokawa
cdef620700 Mi Watch Lite: use xiaomi protobuf for sending user id 2023-11-25 21:16:52 +00:00
Andreas Shimokawa
d3fa3e2c05 Xiaomi Protocol: Add userId auth command 2023-11-25 21:16:52 +00:00
Andreas Shimokawa
7803581922 Mi Watch Lite test based on miband 8 branch
very much wip
2023-11-25 21:16:52 +00:00
José Rebelo
b5a1846e49 Mi Band 8: Fix chunked encryption 2023-11-25 21:16:52 +00:00
José Rebelo
544909a970 Mi Band 8: Activity fetching basics 2023-11-25 21:16:52 +00:00
José Rebelo
4662da3b82 Mi Band 8: Fix chunked receive decryption 2023-11-25 21:16:52 +00:00
José Rebelo
57c7a083aa Mi Band 8: Set display items (wip, chunked is broken) 2023-11-25 21:16:52 +00:00
José Rebelo
0ed169c153 Xiaomi: Refactor characteristics (wip, chunked is broken) 2023-11-25 21:16:52 +00:00
José Rebelo
ae0a7bb806 Mi Band 8: Activity fetch base (wip) 2023-11-25 21:16:52 +00:00
José Rebelo
6c710d594d Zepp OS: Attempt to fix repeating fetch operation getting stuck 2023-11-25 21:16:52 +00:00
José Rebelo
7124d337e1 Mi Band 8: Implement reminders 2023-11-25 21:16:52 +00:00
José Rebelo
cca34af13b Mi Band 8: Fix alarms flakyness 2023-11-25 21:16:52 +00:00
José Rebelo
f56a4b9f0c Mi Band 8: Add MTU warn on sendCommand 2023-11-25 21:16:52 +00:00
José Rebelo
a9b481d72d Mi Band 8: Sync calendar events 2023-11-25 21:16:52 +00:00
José Rebelo
809a809082 Mi Band 8: Replace sleep time with sleep mode schedule (fix crash) 2023-11-25 21:16:51 +00:00
José Rebelo
76c2a18af5 Mi Band 8: Add realtime stats failsafe 2023-11-25 21:16:33 +00:00
José Rebelo
fcf680f799 Mi Band 8: Add find watch 2023-11-25 21:16:33 +00:00
José Rebelo
18fc29fae7 Mi Band 8: Save number of pending alarm acks (wip) 2023-11-25 21:16:33 +00:00
José Rebelo
29fe3bc6ae Mi Band 8: Sleep mode schedule 2023-11-25 21:16:33 +00:00
José Rebelo
d9c3a8de90 Mi Band 8: Fix music 2023-11-25 21:16:33 +00:00
José Rebelo
becb10e9f8 Mi Band 8: Handle user info ack 2023-11-25 21:16:33 +00:00
José Rebelo
44be081e86 Mi Band 8: Handle incoming chunked packets 2023-11-25 21:16:33 +00:00
José Rebelo
f0188f3499 Mi Band 8: Refactor cipher to auth service 2023-11-25 21:16:33 +00:00
José Rebelo
e21b35981b Mi Band 8: Weather temperature unit 2023-11-25 21:16:33 +00:00
José Rebelo
f978329711 Mi Band 8: Display items (wip, needs chunked) 2023-11-25 21:16:33 +00:00
José Rebelo
f286df9ecf Mi Band 8: Notification and calls (working, but wip) 2023-11-25 21:16:33 +00:00
José Rebelo
8f89acbb25 Mi Band 8: Fix crash due to preference type mismatch 2023-11-25 21:16:33 +00:00
José Rebelo
eb2a2ca742 Mi Band 8: Display items (wip) 2023-11-25 21:16:33 +00:00
José Rebelo
e8695a5792 Mi Band 8: Fix stress relaxation reminder 2023-11-25 21:16:33 +00:00
José Rebelo
54e31a1521 Mi Band 8: HR, SpO2, Stress settings (untested, wip) 2023-11-25 21:16:33 +00:00
José Rebelo
8a7e6649b7 Mi Band 8: Password (untested) 2023-11-25 21:16:33 +00:00
José Rebelo
8531cfb0a1 Mi Band 8: Start handling config changes 2023-11-25 21:16:33 +00:00
José Rebelo
e68d6dd7b7 Mi Band 8: Canned messages (wip) 2023-11-25 21:16:33 +00:00
José Rebelo
fd76c7b13b Mi Band 8: Find phone 2023-11-25 21:16:33 +00:00
José Rebelo
b27c75c09a Mi Band 8: World clocks (wip) 2023-11-25 21:16:33 +00:00
José Rebelo
28bd9eeed6 Mi Band 8: Fix heart rate one-shot measurements 2023-11-25 21:16:33 +00:00
José Rebelo
241486f7c3 Mi Band 8: Update to use getSupportedDeviceName 2023-11-25 21:16:33 +00:00
José Rebelo
08eb22b4cb Mi Band 8: Import Bouncy Castle 1.76 classes 2023-11-25 21:16:33 +00:00
José Rebelo
4ede29d1f1 Mi Band 8: Toggle realtime stats (wip) 2023-11-25 21:16:33 +00:00
José Rebelo
f23347c47d Mi Band 8: Add broken notifications 2023-11-25 21:16:33 +00:00
José Rebelo
290383627e Mi Band 8: Fix system service 2023-11-25 21:16:33 +00:00
José Rebelo
7af155281c Mi Band 8: Remove custom pairing activity
Does not seem to be needed (or work, actually)
2023-11-25 21:16:33 +00:00
José Rebelo
fda3b53657 Mi Band 8: Initial support (WIP) 2023-11-25 21:16:31 +00:00
Arjan Schrijver
fac566c7da Support selecting enabled navigation apps 2023-11-23 22:57:34 +01:00
Arjan Schrijver
70acf47a2e Make GMaps navigation handler follow the "navigation forwarding" setting 2023-11-23 22:37:24 +01:00
Arjan Schrijver
8add6c4da9 Autodetect OsmAnd package name and make it configurable 2023-11-23 22:33:12 +01:00
Davis Mosenkovs
2ef44e766e PineTime: Improve notification handling
* If setting enabled, add source application (or SMS)
* Fallback to using notification subject if body is unavailable
* Trim/cut sender or title at 25+ chars if necessary
* Better support for notifications without body or subject
2023-11-23 21:30:42 +00:00
Davis Mosenkovs
88d553771d PineTime: Honor Sync time setting on connect 2023-11-23 21:30:42 +00:00
Gordon Williams
66b36564ab Bangle.js: Attempt to fix some of the warnings generated by Android Studio - some addec null checks, and appending using StringBuilder 2023-11-20 11:42:41 +00:00
Gordon Williams
140c62ac55 Bangle.js: Fix #2996 - force a reconnect when rx/tx characteristics can't be found 2023-11-20 11:02:16 +00:00
Davis Mosenkovs
176e81f1c0 Display alias in low battery notification 2023-11-16 21:23:35 +00:00
Davis Mosenkovs
20850858d2 Mijia LYWSD02: Add low battery notification 2023-11-10 00:03:54 +02:00
José Rebelo
5abd46d7ba Amazfit T-Rex Ultra: Remove experimental 2023-11-09 21:52:14 +00:00
Gordon Williams
cb0962e0f6 Bangle.js: Ensure we split Chinese words every 2 chars when converting them to bitmaps to give us the opportunity to wrap text better
Also make sure we never create a bitmap >255 width/height as this wouldn't work on Espruino
2023-11-09 15:12:59 +00:00
Gordon Williams
f4707c15f4 Bangle.js - mention 'Android Integration' app for Bangle, not 'Gadgetbridge', add extra character conversions 2023-11-08 10:51:00 +00:00
Gordon Williams
1aadc04fd7 Bangle.js: add more non-ascii characters which can be converted to ASCII equivalents.
This helps for Chinese where words would normally break on these chars anyway - based on https://forum.espruino.com/conversations/391391
2023-11-06 14:42:24 +00:00
rany
340171e0bb Zepp OS: Fix sunrise and moon dates being off by local time + UTC offset
Fixes #3400

Signed-off-by: rany <ranygh@riseup.net>
2023-11-03 20:56:16 +00:00
José Rebelo
4c4e18560f Amazfit Bip 5: Remove experimental 2023-11-03 20:53:01 +00:00
Davis Mosenkovs
e6a0350197 Mijia LYWSD02: Fix battery drain on Mijia 2023-11-03 18:37:55 +00:00
Arjan Schrijver
3d543db24f Fossil/Skagen Hybrids: Update navigationApp to version 1.0 2023-11-02 16:33:21 +01:00
Martin.JM
c793453f16 Add blood oxygen graph 2023-10-29 20:43:46 +01:00
José Rebelo
0c47d12c0f Amazfit Active / Active Edge: Experimental support 2023-10-29 19:19:20 +00:00
Daniel Dakhno
eb0747b926 Device Management: centralized DeviceType resolution cache 2023-10-29 13:45:48 +00:00
José Rebelo
dc825c87e7 Extract device type migration to standalone function 2023-10-27 20:15:14 +01:00
Daniel Dakhno
c2a9f5d805 Device management: store deviceType name in DB 2023-10-27 19:14:49 +00:00
Daniele Gobbetti
0da552aa33 GenericWeatherReceiver: use forecast source for uvIndex and precipProbability 2023-10-27 19:01:10 +02:00
Arjan Schrijver
a0e6085324 Fossil/Skagen Hybrids: Allow configuring call rejection method 2023-10-20 10:50:25 +02:00
Arjan Schrijver
59dafc54b6 Fossil/Skagen Hybrids: Show device specific settings in more logical order 2023-10-18 22:39:13 +02:00
José Rebelo
f090898aef Zepp OS: Add statistics fetch operation
We do not know what they are or how to parse them, but syncing them
helps free up space from the band.
2023-10-18 16:17:41 +01:00
José Rebelo
5a65bbf8f4 Zepp OS: Add temperature fetch operation (no DB / UI) 2023-10-18 15:46:58 +01:00
José Rebelo
81501ef750 Mi Band 7: Whitelist firmware 2.1.0.1 2023-10-18 15:31:06 +01:00
Arjan Schrijver
88341c8b86 Fossil/Skagen Hybrids: Add new navigation app 2023-10-18 13:06:16 +00:00
Reiner Herrmann
4abde0766d Zepp OS: display swimming-related activity data 2023-10-16 23:35:10 +02:00
Maxime Reyrolle
1d3f9b6ec1 add items, shortcuts, cards and watchfaces from Amazfit Balance 2023-10-15 18:39:20 +02:00
Maxime Reyrolle
ff6d6f5e53 add initial support for Amazfit Balance 2023-10-15 13:41:53 +00:00
ahormann
28e673415f Support for Femometer Vinca 2 and HealthThermometerProfile (#3369)
Co-authored-by: ahormann <ahormann@gmx.net>
Co-committed-by: ahormann <ahormann@gmx.net>
2023-10-15 13:37:41 +00:00
José Rebelo
11de66f8e4 Fossil/Skagen Hybrids: Fix some preference crashes on the nightly 2023-10-14 21:33:24 +01:00
José Rebelo
7cbc6cb439 Do not flatten to ASCII if device supports unicode 2023-10-11 23:21:39 +01:00
Davis Mosenkovs
60f91a9f93 Support for COL Reminder notifications 2023-10-10 21:22:02 +00:00
TaaviE
6234359c69 Improved PineTime's weather support to reduce pathological memory usage 2023-10-10 20:46:17 +00:00
Davis Mosenkovs
03c25722b2 Improve Telegram notifications
* Display Telegram private chat notifications
* Display Telegram call notifications
2023-10-10 23:27:51 +03:00
Davis Mosenkovs
c4bc43d918 PineTime: Display app name for VoIP app calls 2023-10-10 20:03:44 +00:00
Davis Mosenkovs
5d15df0751 CallSpec: Add source app for VoIP app calls 2023-10-10 20:03:44 +00:00
José Rebelo
7f593bf5e4 Allow ignore notifications from work profile 2023-10-10 20:22:07 +01:00
Sebastian Reichel
a1607ef3ae Zepp OS: Map hiking, outdoor swimming, climbing and table tennis activity types 2023-10-10 19:04:15 +00:00
Sebastian Reichel
4feadc2932 Zepp OS: Add workout codes for hiking and outdoor swimming
I got these codes from the debug logs from my Amazfit GTS 4 Mini.
Apparently they have the same codes as the old types defined in
HuamiSportsActivityType.
2023-10-10 19:04:15 +00:00
Andreas Böhler
3dd2869283 Fix first connect on the Casio GBX100/GBD-200 series 2023-10-10 18:56:14 +00:00
Gordon Williams
a3f3bb212a Bangle.js: lower threshold for low battery warning 2023-10-10 11:15:05 +01:00
Gordon Williams
7f962912bb minor tweak - ensure we round wind speed so it's not to 12 decimal places 2023-10-10 11:11:23 +01:00
Arjan Schrijver
69fcec059d Replace old-style preference switch with Material 3 switch 2023-10-09 09:53:36 +02:00
José Rebelo
9dde497b07 Prevent GBDeviceCandidate from ever being null
Prevents other crashes such as dbb47351d
2023-10-08 21:45:08 +01:00
José Rebelo
ad42255ea1 Amazfit T-Rex: Fix activity summary parsing 2023-10-08 21:27:05 +01:00
Andreas Shimokawa
dbb47351dd Fix a crash (I have that with a device I am working on) 2023-10-08 21:27:19 +02:00
Davis Mosenkovs
77450efb99 Add Common Symbols transliteration 2023-10-07 17:42:52 +03:00
José Rebelo
dcf2629854 Remove scanning intensity preference and legacy discovery activity
The refactored DiscoveryActivityV2 does not freeze anymore, even under
maximum scanning intensity on older phones, and seems to not have
introduced any regressions.
2023-10-06 22:16:58 +01:00
José Rebelo
fe9b88df17 Zepp OS: Fix setting of unknown button press apps 2023-10-06 21:52:13 +01:00
Reiner Herrmann
be07545eca Amazfit Band 7: add alexa menu entries
as a display menu item value for alexa already existed (with a different hex value),
add an alexa2 value that maps to the same menuitem.
2023-10-06 20:45:42 +00:00
José Rebelo
99130eb472 Fix closeable file leak on weather cache 2023-10-06 21:38:35 +01:00
Daniel Dakhno
17a9aa3b20 VESC: added name matching for Coordinator#supports 2023-10-06 13:13:09 +02:00
José Rebelo
0854263233 Fix Bohemic Smart Bracelet recognition 2023-10-05 21:47:00 +01:00
Daniel Dakhno
ef1d38d9d3 Device Manager: replaced getSupportedType with supports method
Huami: introduced getSupportedDeviceName

Huami: implemented getSupportedDeviceName

Huami: fixed typo

Device manager: added error on empty getSupportedDeviceName and empty supports()

Device manager: migrated more devices to getSupportedDeviceName

Device manager: simplified default supports implementation

Device manager: added caching for getSupportedDeviceName pattern

Device manager: added caching DeviceType resolution

Device manager: changed pattern matching find()->matches()

Device manager: use Candidate as caching key

Device manager: more verbose variable initialization

Device manager: fixed typo

Device manager: removed device caching from DeviceHelper

Gradle: removed protoc binary

Device manager: moved more devices to getSupportedDeviceName

Device manager: reduced usages of String.format

Device Vesc: removed multiple device types

Device management: regex improvements

Makibes HR3: fixed device recognition regex
2023-10-05 20:34:53 +00:00
Noodlez
4919be9f6d Update AsteroidOS support
Fixed a few bugs.
1. Moved from the depreciated Date object for sending over the time
2. Fixed media info sending. (It would crash when info was missing)
3. Fixed notification dismissal (Typo in removal tag from remove->removed)
4. Fixed quite a few warnings that were being brought up.
5. Added more of the supported models for AsteroidOS.

There are still a few problems that exist. Screenshotting still doesn't work. I'm just not sure how it works in GB. The AsteroidOS service is still not being detected, even though the AsteroidOSSync application is detecting it just fine.
2023-10-05 20:26:58 +00:00
José Rebelo
d1dee47186 Fix tests 2023-10-04 21:58:45 +01:00
Ganblejs
2c5b687cef Bump main targetSdkVersion to 33 2023-10-04 11:12:17 +00:00
Davis Mosenkovs
98df2d1837 Add Latvian transliteration 2023-10-04 00:30:27 +03:00
Davis Mosenkovs
26e6d7469f Message privacy: Add mode Hide only body 2023-10-02 21:22:27 +03:00
José Rebelo
5f05a0d88f Sony WF-1000XM5: Experimental support 2023-09-28 23:53:58 +01:00
José Rebelo
25af69733f Add default methods to AbstractDeviceCoordinator 2023-09-28 23:32:57 +01:00
Daniel Dakhno
b97b26ce3a Device manager: moved device icons and name to Coordinator 2023-09-28 00:11:02 +03:00
akasaka
8b01426d57 [Wena3/BUG] Lint 2023-09-25 13:46:19 +09:00
akasaka
65102e26f4 [Wena3/BUG] Height and weight were swapped around 2023-09-25 13:39:49 +09:00
akasaka
1140e60a88 [Wena3/BUG] Don't hide music title when momentarily pausing and resuming 2023-09-25 13:32:03 +09:00
akasaka
488af72341 [Wena3/BUG] BodyPropertiesSetting: height then weight on the wire, not the other way around 2023-09-25 13:22:27 +09:00
Davis Mosenkovs
c884c5d075 Mijia LYWSD02: Set time in onSetTime() 2023-09-23 17:19:12 +03:00
Davis Mosenkovs
edce45dcc3 Mijia LYWSD02: Battery + setting temperature scale
Implement reading battery percentage.
Implement setting temperature scale used on clock display.

Communication protocol taken from: https://github.com/h4/lywsd02
2023-09-23 17:18:42 +03:00
Davis Mosenkovs
f4af55d622 Mijia LYWSD02: Add support for LYWSD02MMC 2023-09-23 17:11:39 +03:00
vladkorotnev
889a1db801 Sony Wena 3: Initial support (#3311)
Co-authored-by: vladkorotnev <vladkorotnev@noreply.codeberg.org>
Co-committed-by: vladkorotnev <vladkorotnev@noreply.codeberg.org>
2023-09-23 10:31:41 +00:00
José Rebelo
9fe5bc049f Remove stray character 2023-09-19 20:48:20 +01:00
José Rebelo
9230580a01 Display devices with unknown name during scan 2023-09-19 20:45:14 +01:00
José Rebelo
e078ceff0a Introduce DiscoveryActivityV2 2023-09-19 20:45:14 +01:00
José Rebelo
a85246c279 Use GBDeviceCandidate#getName on all coordinators 2023-09-19 20:45:13 +01:00
José Rebelo
6f7fb261e7 Move Discovery activities to standalone package 2023-09-19 20:44:42 +01:00
Gabriele Monaco
492119f7ee Passing BarcodeId as value if not null 2023-09-19 16:52:19 +02:00
Gabriele Monaco
89f57243cf Added loyalty cards support for the banglejs 2023-08-20 11:14:03 +02:00
Daniel Dakhno
8c48a49d3a Mi Band HRX: added DeviceType for Mi Band HRX
Mi Band HRX: changed DeviceType key for MIBAND_HRX

Mi Band HRX: added migration to MIBAND_HRX

Mi Band HRX: added devicetype string for MIBAND_HRX

Huami HRX: removed redundant null check

Huami HRX: removed redundant supports callback
2023-09-18 22:08:09 +00:00
Arjan Schrijver
b8912976f1 Fossil/Skagen Hybrids: Show some toasts only on debug builds 2023-09-18 22:32:02 +02:00
José Rebelo
ee3ce06899 Zepp OS: Fix health settings on older Zepp OS versions 2023-09-17 23:17:22 +01:00
José Rebelo
3f518364f2 Amazfit GTR 3 Pro: Fix firmware and watchface upload 2023-09-17 20:52:33 +01:00
José Rebelo
d56a42a424 Zepp OS: Prevent AGPS file upload under low MTU 2023-09-17 16:39:39 +01:00
José Rebelo
e855cfec08 Amazfit GTR Mini: Remove experimental, change AGPS updates to not use file transfer 2023-09-16 14:55:27 +01:00
José Rebelo
763ee10a6c Fix support classes for some Amazfit devices
Affected devices:
- Amazfit Bip Lite
- Amazfit Bip S Lite
- Amazfit GTS 2 Mini
- Amazfit Pop
- Amazfit Pop Pro
2023-09-14 22:05:27 +01:00
Gordon Williams
c647c2647f Bangle.js: Improve file downloads - we can now at least get files downloaded 2023-09-14 12:49:37 +01:00
Gordon Williams
e18a991b13 Bangle.js: ensure char code 255 is translated properly into a String - this can then be sent to the App Loader. Fixes https://github.com/espruino/EspruinoAppLoaderCore/issues/55 2023-09-14 11:07:05 +01:00
José Rebelo
2bd1cc332f Log error when bonding fails immediately 2023-09-13 20:19:19 +01:00
José Rebelo
9401b61a02 Allow text to be shared to devices 2023-09-11 13:28:37 +00:00
Arjan Schrijver
557bfea35c Add lint baseline, enable linting on CI, fix some reported errors (#3291)
This PR:
- fixes some errors reported by `gradlew lint` and the Android Studio "Code Inspection" tool
- adds a snapshot file `lint-baseline.xml` of the remaining lint errors and warnings to be used by the linter as baseline
- adds a job for CI to run `gradlew lint` on every build

Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3291
Reviewed-by: José Rebelo <joserebelo@noreply.codeberg.org>
Co-authored-by: Arjan Schrijver <a_gadgetbridge@anymore.nl>
Co-committed-by: Arjan Schrijver <a_gadgetbridge@anymore.nl>
2023-09-11 09:17:04 +00:00
José Rebelo
7359186cee Zepp OS: Fix Alexa initial connection 2023-09-10 22:57:23 +01:00
José Rebelo
43d02b9661 Zepp OS: Parse SPO2 sleep data
Matched against the Zepp spo2 database
2023-09-10 16:58:40 +01:00
José Rebelo
1ac6983cd3 Amazfit Bip 5: Add new deviceSource 2023-09-08 21:38:22 +01:00
José Rebelo
c912ea0378 Zepp OS: Send UV Index as integer 2023-09-04 21:25:12 +01:00
José Rebelo
50c474e9ef Fix crash when timezone has no next DST transition 2023-09-04 14:12:59 +01:00
José Rebelo
4c7cb1cadc Fix ACTION_DST_CHANGED action 2023-09-02 11:08:19 +01:00
José Rebelo
a4c79a9395 Attempt to fix DST changes 2023-09-02 10:13:14 +01:00
illis
56fd2f8430 Give a more accurate representation of gps speed when manually calculating.
Dividing early makes us lose alot of precision.
2023-08-31 08:19:36 +12:00
illis
fa5e91f966 Fix GPS getSpeed issue for devices that report hasSpeed as true, yet only return a 0 value for speed. 2023-08-31 08:19:36 +12:00
illis
600658d86b bangle.js: Use GPS location time, when reporting gps events, instead of the time at transmission. 2023-08-30 23:51:07 +12:00
José Rebelo
2051ce2055 WeatherSpec: Fix typo in getLocation 2023-08-29 00:14:35 +01:00
Arjan Schrijver
d10745b0b3 Add getLocation method to WeatherSpec and use it for Zepp OS and Fossil/Skagen 2023-08-27 20:19:15 +00:00
José Rebelo
6d828260d0 WeatherSpec: Add some docs for AirQuality 2023-08-27 19:51:44 +01:00
José Rebelo
200cfdf29a Revert "Amazfit Bip 3 Pro: Enable HR stats and sleep respiratory rate"
Per the feedback on #3249, this does not seem to be supported.

This reverts commit 42f35259fc.
2023-08-27 17:45:57 +01:00
José Rebelo
88b72d51c8 Zepp OS: Use WeatherSpec gps coordinates for sunset if available 2023-08-27 16:23:32 +01:00
José Rebelo
495a8dec89 Zepp OS: Map WeatherSpec v4 fields
- Map hourly values
- Fix sunset and sunrise location
- Add moon rise, set and phase
- Add air quality
- Add wind speed, wind direction, visibility, pressure
2023-08-27 15:13:57 +00:00
José Rebelo
564cb1bfcc Introduce WeatherSpec v4
New fields for current weather:

- dewPoint
- pressure
- cloudCover
- visibility
- sunRise
- sunSet
- moonRise
- moonSet
- moonPhase
- airQuality
- latitude
- longitude
- feelsLikeTemp
- isCurrentLocation

New fields for daily forecast:

Deprecate the old "Forecast" class, which was not versioned, but keep it for backwards compatibility with old apps. Old WeatherSpec forecasts are de-serialized into the new Daily class. New fields:

- windSpeed
- windDirection
- uvIndex
- precipProbability
- sunRise
- sunSet
- moonRise
- moonSet
- moonPhase
- airQuality

Add hourly values:
- timestamp
- temp
- conditionCode
- humidity
- windSpeed
- windDirection
- uvIndex
- precipProbability

Air Quality:
- aqi (plume)
- co
- no2
- o3
- pm10
- pm25
- so2
- coAqi
- no2Aqi
- o3Aqi
- pm10Aqi
- pm25Aqi
- so2Aqi
2023-08-27 15:13:57 +00:00
Patric Gruber
b7e6a39ec1 use proper Optional 2023-08-26 19:39:05 +00:00
Patric Gruber
d0c602d243 overwrite supportsManualHeartRateMeasurement 2023-08-26 19:39:05 +00:00
Patric Gruber
67eac90f69 merge new activity samples with samples from database on overlap 2023-08-26 19:39:05 +00:00
Patric Gruber
86f77e05a9 remove unnecessary type conversion 2023-08-26 19:39:05 +00:00
Patric Gruber
70a8ca5067 add heart rate measurment support for infinitime 2023-08-26 19:39:05 +00:00
José Rebelo
42f35259fc Amazfit Bip 3 Pro: Enable HR stats and sleep respiratory rate 2023-08-26 17:52:10 +01:00
José Rebelo
7e848d19fb Zepp OS: Handle watchface change 2023-08-26 15:47:04 +01:00
José Rebelo
55d0697c44 Huami: Display explicit error if there is not enough free space 2023-08-26 12:14:23 +01:00
Daniel Dakhno
e36bd2eae7 Core: replaced device initialization logic with class based decision
Core: cleaned up imports

Device management: try single-argument-constructor first

Device management: fixed wrong device support class

Device management: added missing initial flags for Mi band 2 HRX

Device management: removed unused import

Device management: removed unused import

Device management: improved exception handling

Device management: prevent constructors from being optimized out

Device management: added UnknownDeviceSupport
2023-08-26 08:14:06 +00:00
José Rebelo
c01a33077e Huami: Enforce a maximum of 16 items on the main screen 2023-08-25 13:58:32 +01:00
José Rebelo
20d0d61ed8 WeatherSpec: Add a note on forecasts list 2023-08-23 16:16:40 +01:00
José Rebelo
da779e9864 Zepp OS: Improve weather code mapping 2023-08-23 15:48:26 +01:00
José Rebelo
fe58d64192 Zepp OS: Fix weather 2023-08-23 15:08:16 +01:00
José Rebelo
2320043c00 Fix min temp in cached weather data debug popup 2023-08-22 17:38:33 +01:00
José Rebelo
74dc0f70a6 Contacts: Migrate to ActivityResultContracts 2023-08-21 21:48:03 +01:00
José Rebelo
36e357ba67 Zepp OS: Add Alexa shortcut card 2023-08-21 15:55:58 +01:00
Arjan Schrijver
7c55f5df86 Upgrade cached weather old style dialog to Material 3 dialog 2023-08-20 22:20:14 +02:00
José Rebelo
50f962c520 Show UV Index and precip probability for cached weather 2023-08-20 10:01:15 +01:00
Kamalei Zestri
a0424527d5 Fixed formatting and unneccessary code 2023-08-20 08:56:29 +00:00
Kamalei Zestri
ff19ceeae8 Add "Showed Cached Weather" function to Debug menu 2023-08-20 08:56:29 +00:00
Daniel Dakhno
73d67d4093 Fossil/Skagen Hybrids: Embed menu_structure in watchface apps (#3245)
This PR aims to optimize the method of synchronizing the menu_structure for the openSourceWatchface by making the menu_structure request from the watch obsolete.

Instead, when a new menu_structure is sent to GB via the Intent `nodomain.freeyourgadget.gadgetbridge.Q_SET_MENU_STRUCTURE`, GB remembers that JSON.

Next time a watchface is built, the JSON is embedded into that app package so the watch doesn't forget the structure.

This requires a full GB rebuild to work properky.

Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3245
Co-authored-by: Daniel Dakhno <dakhnod@gmail.com>
Co-committed-by: Daniel Dakhno <dakhnod@gmail.com>
2023-08-19 20:48:53 +00:00
José Rebelo
454d766e88 Zepp OS: Add all remaining devices as experimental 2023-08-18 12:16:36 +01:00
José Rebelo
e5faf518ea Add support for experimental devices 2023-08-18 12:16:36 +01:00
José Rebelo
0a19f88a3f Amazfit Bip 3 Pro: Fix device icon for square device 2023-08-18 12:16:36 +01:00
José Rebelo
3fae1accb1 Zepp OS: Send calendar event location 2023-08-18 08:54:07 +01:00
Raghd Hamzeh
c8e19a2466
feat: add initial support for Amazfit Cheetah Pro 2023-08-16 22:19:48 -04:00
Ascense
14df63854f Withings Steel HR: Support setting device language 2023-08-16 12:43:57 +00:00
José Rebelo
b1bedfaa56 Keep charts current date on config changes 2023-08-16 13:42:44 +01:00
José Rebelo
b297e767ad Amazfit Bip 3 Pro: Initial support 2023-08-16 12:27:00 +01:00
José Rebelo
515b9efce8 Zepp OS: Fix calendar sync for Zepp OS 2 2023-08-14 18:40:39 +01:00
José Rebelo
d6567e553f Zepp OS: Map barcode types for ITF, PDF_417 and DATA_MATRIX 2023-08-14 14:12:46 +01:00
José Rebelo
19e7003c95 Zepp OS: Query calendar service version 2023-08-14 10:16:40 +01:00
José Rebelo
0e06bde741 Zepp OS: Enable AGPS updates for all devices 2023-08-12 13:25:19 +01:00
José Rebelo
13af55bd2e Zepp OS: Add Zepp Coach display item and shortcut card 2023-08-12 13:18:20 +01:00
José Rebelo
ee5325418a Zepp OS: Fix shortcut cards setting on Zepp OS 2.1 2023-08-12 13:18:20 +01:00
Arjan Schrijver
c9bbc05674 Show warning when choosing dynamic theme but dynamic colors are not supported by Android 2023-08-12 10:52:12 +02:00
José Rebelo
3799c51dc3 Add preference to display changelog on startup 2023-08-09 20:00:47 +01:00
José Rebelo
7fb34eb262 Build nightly changelog from git 2023-08-09 20:00:47 +01:00
José Rebelo
942e853ca7 Prevent display of empty changelog 2023-08-09 19:37:27 +01:00
José Rebelo
180ed42ee1 Bangle.js: Handle fw and hw versions 2023-08-09 09:09:52 +01:00
José Rebelo
a95820d09e Bangle.js: Fetch activity data 2023-08-08 22:11:14 +01:00
José Rebelo
f97250d46b Upgrade ZeTime settings to androidx 2023-08-08 20:14:27 +01:00
José Rebelo
f0067ebeae Upgrade Mi Band preferences to androidx 2023-08-08 20:10:05 +01:00
José Rebelo
61a78c0ad8 Move user name to about user preferences
- Remove from Mi Band prefs
- Remove fitness goal from mi band prefs - it's also un the about user
  section
- During pairing, direct user to the about user if there is invalid data
2023-08-08 20:10:05 +01:00
José Rebelo
4688f7d43c Fix chart legend text color on dark theme 2023-08-08 08:47:26 +00:00
Arjan Schrijver
ee4f3fabcf Fix widget device choice dialog behaviour 2023-08-08 08:47:26 +00:00
José Rebelo
88ebbdad7a Fix changelog background color to match dialog 2023-08-08 08:47:26 +00:00
Arjan Schrijver
225d466a7b Make widgets configuration activities adhere to configured style 2023-08-08 08:47:26 +00:00
Arjan Schrijver
73f949fc8c Upgrade remaining CardViews to MaterialCardView 2023-08-08 08:47:26 +00:00
Arjan Schrijver
eb896dcd57 Fix preference input type enforcement 2023-08-08 08:47:26 +00:00
Arjan Schrijver
b6e252c4c1 Switch UI to Material 3 and support dynamic colors 2023-08-08 08:47:26 +00:00
Arjan Schrijver
5a1e56a81e Fossil/Skagen Hybrids: Fix unused alarms being pushed to the device 2023-08-07 15:27:25 +02:00
José Rebelo
2bda160fb5 Bangle.js: Allow enable/disable alarms 2023-08-06 00:23:05 +01:00
Daniele Gobbetti
063fb31931 Garmin VivoMoveHR: prevent app crash
Use a more robust cast approach to prevent application crashes in some corner cases (e.g. when writing Math.round()ed values)
Since I don't own a VivoMoveHR device I couldn't test for regressions on the watch.
2023-08-04 17:57:46 +02:00
Arjan Schrijver
e305a9133f Fossil/Skagen Hybrids: Add input types to watchface/widget settings 2023-07-31 21:31:42 +02:00
Simon Sievert
0ae14fb80a
Bangle.js: Put JSON keys in quotes
this allows the watch to work with gadgetbridge while 'programmable' is set to off
2023-07-29 15:03:47 +02:00
José Rebelo
2d7a6b80eb Migrate Loyalty Cards preferences to AbstractSettingsActivityV2 2023-07-28 22:47:39 +01:00
José Rebelo
fe95d9aaa8 Fix disable log preference if log file not initialized
Regression introduced by 01b457895
2023-07-28 21:31:48 +01:00
José Rebelo
f3c74267c5 Set OpenTracks selection spinner to current package 2023-07-28 20:21:53 +00:00
José Rebelo
47a757bd91 Set default name for database export file 2023-07-28 20:21:53 +00:00
José Rebelo
f9ef3f47ab Extract Pebble and HPlus settings to standalone activities 2023-07-28 20:21:53 +00:00
José Rebelo
e068bfdb75 Fix crash when acquiring location 2023-07-28 20:21:53 +00:00
José Rebelo
12b5ec8415 Upgrade Settings to androidx
- Extend AbstractSettingsActivityV2
- Replace all checkbox preferences with switch preferences
- Add app:useSimpleSummaryProvider to all preferences that were in getPreferenceKeysWithSummary
- Add null checks on all prefs to fix crashes in nested preference screens
- Replace listeners with lambdas to reduce code indentation
- Set input type to number where relevant
2023-07-28 20:21:53 +00:00
José Rebelo
f4b059f173 Introduce AbstractSettingsActivityV2
This class introduces some of the common logic across preference
screens, handling nested PreferenceScreens, as well as the back button
and action bar title setting.
2023-07-28 20:21:53 +00:00
José Rebelo
597373f126 Allow filtering notifications from work profile apps 2023-07-28 18:53:50 +01:00
José Rebelo
078d3e2a55 Make application list sorting case-insensitive 2023-07-28 18:50:02 +01:00
José Rebelo
48ee259d89 Bangle.js: Reorganize device settings 2023-07-27 18:38:15 +01:00
hrglpfrmpf
c1fd0b77ad Support for Withings Steel HR (#2831)
Co-authored-by: hrglpfrmpf <hrglpfrmpf@web.de>
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/2831
Co-authored-by: hrglpfrmpf <hrglpfrmpf@noreply.codeberg.org>
Co-committed-by: hrglpfrmpf <hrglpfrmpf@noreply.codeberg.org>
2023-07-26 17:20:43 +00:00
José Rebelo
606e20a065 Amazfit GTR/S 3: Enable AGPS Updates 2023-07-25 21:47:12 +01:00
José Rebelo
69ae0817cf Upgrade Q-Hybrid watchface settings to androidx 2023-07-25 20:52:39 +01:00
José Rebelo
bac1d35479 Upgrade notification settings to androidx 2023-07-25 19:52:12 +01:00
Daniele Gobbetti
53c06b8c31 Introduce native app shortcuts for android > 30 2023-07-25 18:28:35 +02:00
Daniele Gobbetti
540a4499f6 Miband 6: enable PAI and Stress support 2023-07-25 18:23:15 +02:00
José Rebelo
cac92fdc26 Upgrade discovery and pairing preferences to androidx 2023-07-25 12:24:42 +01:00
Gordon Williams
1b281c7c62 Fixing SecurityErrors on Android 12+ discovered via Play Store (after API31 update)...
* Check for bluetooth permissions in DiscoveryActivity
 * At startup we now pop up a dialog explaining why we want *any* permissions
 * Fixing ControlCenterv2 permissions requests for Android S and later (requesting background location stopped *any* dialog appearing)
 * Fixing all errors in DiscoveryActivity from Android Studio by catching errors
 * Move permission requests around to ensure that we only call RequestMultiplePermissions from onCreate
 * Only show dialog if we have permissions to request
 * Fix "LifecycleOwners must call register before they are STARTED" on some Android devices: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3192/files#issuecomment-967267
2023-07-25 11:50:53 +01:00
José Rebelo
f08c08005b Upgrade about user preferences to androidx 2023-07-25 09:22:45 +01:00
José Rebelo
cac41ea945 Upgrade charts preferences to androidx 2023-07-25 09:22:41 +01:00
José Rebelo
116703adff Pull reusable preferences logic to AbstractPreferenceFragment 2023-07-24 23:34:00 +01:00
José Rebelo
dd91716680 Amazfit GTR 4: Whitelist fw 3.23.3.1 diff from 3.21.0.1 2023-07-24 20:08:35 +01:00
José Rebelo
3b7f4f7238 Allow for gatt write request responses
Allow for support classes to send a write request response to the
device, fi requested. The standard actually expects this to happen, but
Gadgetbridge did not originally support it, so there are concerns that
enabling this globally will cause issues for devices that do not expect
the response.

See also: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/2831#issuecomment-941568
2023-07-24 18:16:23 +01:00
José Rebelo
a02a6cba14 Update device settings action bar title depending on current screen 2023-07-23 22:27:11 +01:00
José Rebelo
b1ceb96100 Fix notification filters by title if notification does not contain a body 2023-07-23 21:02:46 +01:00
José Rebelo
702651c119 Sony WH-1000XM3/WF-SP800N: Add volume setting 2023-07-23 19:40:11 +01:00
Damien 'Psolyca' Gaignon
916fb6b768 Add customize buffer size on BTBRQueue 2023-07-22 19:49:34 +00:00
José Rebelo
247a954920 Huami/Zepp OS: Improve reconnection
- Remove notification on unneeded characteristics for Zepp OS devices
- Reset MTU before initializing device, since the support class is
  reused when reconnecting, and keeping the previous high MTU before
  renegotiating again can make the initialization fail sometimes
  (band will never reply)
- If any of the chunked characteristics is null during initialization,
  mark the device as waiting for reconnect, which will make it retry the
  connection later with a backoff delay.
2023-07-22 20:31:26 +01:00
José Rebelo
aa87c5abeb Fix reconnect delay reset after all devices are initialized 2023-07-22 20:28:25 +01:00
José Rebelo
db4349bfc9 Huami: Display fetch operation description 2023-07-22 20:27:20 +01:00
José Rebelo
07ec8a095b Zepp OS: Handle fitness goals in Huami2021Support
HuamiSupport handles configurations with performInitialize, which may
trigger a device reinitialization if called while the device is already
initializing.

Handle fitness goals in Huami2021Support, which should be one of the
last settings still missing.
2023-07-22 14:35:54 +01:00
José Rebelo
76576af324 Huami 2021: Do not initialize device for chunked ack
Since we now handle chunked acks as of 74dac3f5c, these may happen
during device initialization. We must not use performInitialized, or
initializeDevice will be called twice, since the device will still not
be in INITIALIZING state.
2023-07-22 13:50:54 +01:00
Arjan Schrijver
f58c655449 Fossil/Skagen Hybrids: Strip unicode characters that the watch can't display 2023-07-22 12:13:25 +02:00
mormegil
8f5c32fbee Fix PineTime firmware upload for Android 12 target
Now that the target SDK was changed to 31, the `no.nordicsemi.android:dfu`
library needs to be updated, as the current version dies on Android 12+.

However, the fixed version (1.12.0) also fixed MTU handling: The previous
versions ignored the MTU settings completely for legacy DFU.
<https://github.com/NordicSemiconductor/Android-DFU-Library/pull/260>

And while our `PineTimeJFSupport` code always tried to set MTU to 517, it was
ignored. Which was good because PineTime does not support larger MTUs. So that
we need to set the correct low MTU now the library really applies it.

Note that the current version of the DFU library cannot be used right now, it
does not even compile because of androidx dependency mismatch.

Fixes #3203
2023-07-22 09:54:45 +00:00
Johannes Krude
9700fef111 Casio GMW-B5000: separate DeviceType, but still using the CasioGWB5600DeviceSupport 2023-07-22 09:39:56 +00:00
Johannes Krude
685ccfd1c9 Casio GW-B5600: setAutoReconnect(true) on first connection 2023-07-22 09:39:56 +00:00
Johannes Krude
7cb060c9fe Casio GW-B5600: initial support 2023-07-22 09:39:56 +00:00
Johannes Krude
91415e2500 Casio: Refactoring 2023-07-22 09:39:56 +00:00
José Rebelo
57ef0ded64 Sony WH-1000XM5: Fix speak-to-chat enable/disable 2023-07-22 10:24:33 +01:00
José Rebelo
5c78488e93 Fix emoji transliteration 2023-07-20 21:54:31 +01:00
mormegil
cc8a1dbdaa Added copyright header to all new Garmin Vivomove files 2023-07-20 20:30:14 +00:00
mormegil
a4ec3a62aa PR-related improvements
- rename service identifiers for clarity
- define BLE scan filter in the coordinator (even though GB does not use those currently)
- rename `DownloadedFitFile` to `GarminFitFile`
- bump DB schema version to 49
2023-07-20 20:30:14 +00:00
mormegil
dccb8ed1c4 Changes suggested in PR
- use `BLETypeConversions`, added the missing functions there (+ unit tests for all)
- change Java package of Protobuf definitions so that they are not discarded by Proguard
-- +add subpackages to the Proguard rules so we can subdivide the classes

+ disable device-specific settings for Vivomove (no settings yet)
2023-07-20 20:30:14 +00:00
Mormegil
3a58314db6 Garmin Vivomove HR support
- communication protocols
- device support implementation
- download FIT file storage

Features:
- basic connectivity: time sync, battery status, HW/FW version info
- real-time activity tracking
- fitness data sync
- find the device, find the phone
- factory reset

Features implemented but not working:
- notifications: fully implemented, seem to communicate correctly, but not shown on watch

Features implemented partially (not expected to work now):
- weather information (and in future possibly weather alerts)
- music info
- firmware update: only the initial file upload implemented, not used

Things to improve/change:
- Device name hardcoded in `VivomoveHrCoordinator.getSupportedType`, service UUIDs not available
- Download FIT file storage: Should be store (and offer the user to export?) the FIT data forever?
- Obviously, various code improvements, cleanup, etc.
2023-07-20 20:30:14 +00:00
Mormegil
114f6fcbf0 First piece of Garmin Vivomove HR support basics
- `DeviceType` definition
- Definition of activity sample table
- Coordinator and sample provider
2023-07-20 20:30:14 +00:00
José Rebelo
bdb904faf9 Fix character mark removal before flattening to ASCII 2023-07-17 22:42:53 +01:00
José Rebelo
12dd9651e7 Fix opening screenshots from notification on external apps 2023-07-17 00:09:10 +01:00
vanous
849337b447 Amazfit Neo: Enable PAI 2023-07-16 22:57:18 +02:00
José Rebelo
258023a05d Zepp OS: Fix reminder creation
Regression introduced by 9d3c480414
2023-07-12 23:27:15 +01:00
José Rebelo
525f1567c1 Huami: Prevent activity data fetch if there is no data to fetch
More information in #3201

Fixes #3196
2023-07-12 23:21:56 +01:00
José Rebelo
ccfc112e2b Huami: Persist workout raw details even if gpx has no points 2023-07-12 23:18:31 +01:00
Richard de Boer
8e270fcbf7
Bangle.js: refactoring
Extract handling of packet types with large code blocks.
Incidentally fixes "intent" packets launching a full calendar sync if
intents are disabled in GB settings.
2023-07-11 20:46:50 +02:00
José Rebelo
4c7920133b Amazfit GTS 2e: Add activate display on lift sensitivity 2023-07-11 18:19:43 +01:00
José Rebelo
226ccd9fad Remove duplicated media session handling code 2023-07-09 17:39:21 +01:00
José Rebelo
3da539be23 Bohemic Smart Bracelet: Initial support 2023-07-09 14:29:39 +00:00
José Rebelo
298dbbe777 LeFun: Broadcast when HR samples are received 2023-07-09 14:29:39 +00:00
José Rebelo
da5f91f05b Huami/Zepp OS: Improve music info stability 2023-07-09 15:16:37 +01:00
José Rebelo
ac89b1df9d Use package name for Catima permissions
The Catima permissions had to be split per package-name to avoid
conflicts between debug and release channels due to mismatching apk
signatures.

See https://github.com/CatimaLoyalty/Android/pull/1411
2023-07-09 14:29:30 +01:00
Benjamin Swartley
739bd1b5a8 Use AudioManager for Media Buttons
Switch from ACTION_MEDIA_BUTTON to all AudioManager

Add mb_intents pref for audioplayer
2023-07-08 23:13:04 +00:00
José Rebelo
665268c419 Fix Weather notification integration 2023-07-07 09:03:35 +01:00
José Rebelo
708cb0c617 Zepp OS: Attempt to parse raw sensor values 2023-07-05 17:47:19 +01:00
José Rebelo
3516099dc9 Fix crash if Catima is not installed 2023-07-04 09:43:35 +01:00
José Rebelo
fea3bf50a4 Zepp OS: Add loyalty cards integration with Catima 2023-07-03 23:19:19 +01:00
José Rebelo
e95c8a3775 Add PAI charts 2023-07-02 16:05:10 +01:00
Gordon Williams
88e0b9543d Bangle.js: HTTP request XPath can now return Arrays.
More robost toJSON that deals with unicode and null
Log messages when converting words to images so we can debug when words are being converted that shouldn't be
2023-06-30 11:34:53 +01:00
Gordon Williams
0e0f72410a Bangle.js: fix mixup of navigation left slight&sharp icons 2023-06-29 14:49:22 +01:00
Gordon Williams
d82ba7a04c Bangle.js: Send the timestamp of our last activity sample to the Bangle on connect, so that it can update us on missing activity samples 2023-06-26 11:39:29 +01:00
Gordon Williams
2aac797dec Remove some build warnings in BangleJSDeviceSupport 2023-06-26 11:20:50 +01:00
Gordon Williams
8e010bc6dd Stop BangleJSDeviceSupport repeatedly calling GBLocationManager.stop and spamming the log with "Stop location updates" 2023-06-26 11:15:54 +01:00
Gordon Williams
94cd7523db Ensure we now escape chars in the unicode start range. With Bangle.js ~2v18.20+ we added Unicode support, but if we're sending non-unicode chars in the unicode range it will confuse Espruino 2023-06-26 11:07:38 +01:00
Lukas
6e3ce89ae5 add attribute to set the source of the gps signal 2023-06-22 21:37:55 +00:00
Lukas
6da6baa5e6 Add switch to control if the GPS chip should be used to locate the location 2023-06-22 21:37:55 +00:00
Arjan Schrijver
7c5cd4c032 Fossil/Skagen Hybrids: Increase accuracy of workout distance calculation 2023-06-19 15:57:09 +02:00
Arjan Schrijver
2081463a4f Fossil/Skagen Hybrids: Add UV index and chance of rain widgets
Note: this needs support from weather apps, for example:
https://github.com/TylerWilliamson/QuickWeather/pull/69
2023-06-18 22:11:07 +02:00
Arjan Schrijver
ff563022f5 Fossil/Skagen Hybrids: Fix weather icons day/night status 2023-06-17 22:54:41 +02:00
José Rebelo
88b7cd5756 Add stress charts 2023-06-17 17:28:11 +01:00
José Rebelo
fec48c4340 Generalize charts logic for non-activity data
- Make ChartsHost independent from ChartsActivity
- Rename ChartsActivity to ActivityChartsActivity
- Rename AbstractChartFragment to AbstractActivityChartFragment
- Pull common charts logic to parent classes:
    - From ActivityChartsActivity to AbstractChartsActivity
    - From AbstractActivityChartFragment to AbstractChartsFragment
2023-06-16 23:53:28 +01:00
José Rebelo
9d3c480414 Zepp OS: Refactor config, display items, reminders and http to standalone services 2023-06-16 20:43:07 +01:00
José Rebelo
8f5bbec881 Zepp OS: Only cache apps and watchfaces 2023-06-15 22:07:08 +01:00
José Rebelo
fad7fa395b Zepp OS: Show watchfaces in app management 2023-06-15 22:04:01 +01:00
José Rebelo
5957f71110 App Manager: Fill out missing app info from cache 2023-06-15 22:01:16 +01:00
José Rebelo
9b7d5eee42 Zepp OS: Cache apps for app management 2023-06-15 21:59:16 +01:00
José Rebelo
853470a2bd Revert "Zepp OS: Unify support class and fw handling"
This reverts commit d59e8c3f62.

We need to refactor the Huami classes too, otherwise this needs a lot of
hacks to work properly.
2023-06-15 21:39:22 +01:00
José Rebelo
d59e8c3f62 Zepp OS: Unify support class and fw handling 2023-06-15 20:50:15 +01:00
José Rebelo
daec12e13b Amazfit GTR 3/GTS 3/GTR 3 Pro/T-Rex 2: Revert AGPS updates
Users reported that this is not actually working - further information
on the protocol is needed.

- Reverts 1898962e79 and 55cef71d3a
2023-06-15 13:09:29 +01:00
José Rebelo
1b44f3566e Prevent UI freeze when a folder has a lot of devices
Do not include the devices from collapsed folders in the array.
2023-06-14 21:24:26 +01:00
José Rebelo
5f0689d2e1 Make screenshot notification strings translatable 2023-06-14 21:02:27 +01:00
José Rebelo
5df25effba Make screenshot notifications high priority 2023-06-14 21:02:27 +01:00
José Rebelo
b3db9b7768 Zepp OS: Add screenshot support 2023-06-14 21:02:27 +01:00
José Rebelo
531aef61fd Move screenshot encoding to PebbleProtocol 2023-06-14 21:02:27 +01:00
José Rebelo
55cecceb38 Zepp OS: Add support for compressed file transfer 2023-06-14 21:02:27 +01:00
José Rebelo
d29e092ce7 Zepp OS: Fix file transfer service incoming file size parse 2023-06-14 21:02:27 +01:00
José Rebelo
3217e4a2dd Zepp OS: Add missing ack on file transfer service 2023-06-14 21:02:27 +01:00
José Rebelo
74dac3f5cd Huami 2021: Handle chunked ACKs 2023-06-14 15:45:49 +00:00
Andreas Shimokawa
f80b873866 Prefs: make allow high MTU default to true.
It is 2023, it should work, if not it can be turned off.

For newer devices with big firmwares and apps (like Mi Band 7), people just wonder how slow Gadgetbridge installs stuff...
2023-06-14 16:44:51 +02:00
José Rebelo
7262197a34 BTBR: Fix device update intent subject on connection change 2023-06-13 22:37:35 +01:00
Damien 'Psolyca' Gaignon
a3c0e10330
Add GBDevice argument to getAlarmSlotCount 2023-06-13 23:10:55 +02:00
Damien Gaignon
be575af314 Add BTBR service 2023-06-13 12:06:13 +00:00
Gordon Williams
b2aa61e182 Changed NavigationSpec's distance into a String.
Previously we used an integer (in meters) but when using
Google Maps navigation, Google Maps picks units based on locale *and*
the distance - it might report "100m" or "20km". Then we carefully undo
all that work, and for PineTime we just as "m" so you may well have "20000m"
or more displayed, which is not ideal.

I imagine at some point that will change, but we probably want to
be able to handle that in the OSMAnd side of Gadgetbridge so all watches
that implement navigation will benefit (and won't duplicate code).
2023-06-13 07:32:12 +00:00
José Rebelo
5c3b76b838 Add missing mutability flags to PendingIntents 2023-06-13 00:14:04 +01:00
José Rebelo
8899187ee4 Replace forEach with explicit for cycle
forEach with lambda is only available in SDK24+
2023-06-13 00:11:42 +01:00
José Rebelo
1898962e79 Amazfit GTR/S 3: Enable AGPS Updates 2023-06-12 20:56:55 +01:00