1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-11-11 20:49:25 +01:00
Commit Graph

5174 Commits

Author SHA1 Message Date
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