The boundaries are enforced on the stored value when decoding, before applying the adjustments for scale and offset.
Also add some tests for the BaseTypes
Introduce new FieldDefinition for Temperature and WeatherCondition (removing the static class)
Add accessors for field data in the containing RecordData, thus keeping the FieldData private
note: only weather message definition and data tested so far
also enable weather support for Instinct 2S and vivomove style
also cleanup some unused constants that have been migrated to new enums in GFDIMessage
additionally switch to new local implementation of GarminTimeUtils with needed methods
- fix DEVICE_SETTINGS message ID
- put all status messages in own package
- allow protobuf handler to change the returned status message to signal unsupported requests
- fix various bugs
This commit takes aims to bring many new garmin devices up to a working status, with basic functionalities such as:
- garmin protocol initialization
- basic message exchange
- support for some messages in Garmin own format
- support for some messages in protobuf format
Because the previous implementation of determining the time the user
falls asleep in a given time range would take the 24 hours in advance
into account, graphs displaying sleep data would erroneously indicate
that the user has been asleep since the start of the timeframe if
the user was asleep during the rollover of the time frame 24 hours
before.
This commit change the algorithm to only fetch the last sleep stage
sample and sleep range sample from the database that occurred before
the given time range. This saves having to process 24 hours worth of
samples before the time range in both cases, and prevents taking into
account irrelevant sleep ranges.
Not all packets use the payload length byte/short for the payload
length. Instead, some packets do not carry a payload, in which case
the payload length bytes are assumed to represent some state or flag.
Therefore, for packets with a type known not to carry a payload, the
payload extraction is skipped, allowing other packets to get
successfully parsed again.
Even if the activity card was disabled, all devices would be queried for
data. This slows down the UI when there are a lot of devices, especially
if multiple of them have data and only a few have the card enabled.
Currently translated at 94.8% (2592 of 2734 strings)
Translated using Weblate (Russian)
Currently translated at 94.8% (2589 of 2731 strings)
Co-authored-by: 0que <0que@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ru/
Translation: Freeyourgadget/Gadgetbridge
Currently translated at 54.6% (1494 of 2735 strings)
Translated using Weblate (Japanese)
Currently translated at 45.8% (1255 of 2735 strings)
Translated using Weblate (Japanese)
Currently translated at 44.3% (1213 of 2735 strings)
Translated using Weblate (Japanese)
Currently translated at 42.3% (1157 of 2734 strings)
Translated using Weblate (Japanese)
Currently translated at 41.5% (1136 of 2734 strings)
Translated using Weblate (Japanese)
Currently translated at 41.5% (1135 of 2734 strings)
Translated using Weblate (Japanese)
Currently translated at 41.5% (1134 of 2731 strings)
Translated using Weblate (Japanese)
Currently translated at 41.4% (1131 of 2731 strings)
Translated using Weblate (Japanese)
Currently translated at 41.1% (1124 of 2731 strings)
Translated using Weblate (Japanese)
Currently translated at 39.3% (1069 of 2716 strings)
Translated using Weblate (Japanese)
Currently translated at 38.3% (1042 of 2714 strings)
Translated using Weblate (Japanese)
Currently translated at 36.8% (1000 of 2711 strings)
Co-authored-by: Nyatsuki <Odamaki@yandex.ru>
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ja/
Translation: Freeyourgadget/Gadgetbridge
Currently translated at 90.8% (2482 of 2731 strings)
Translated using Weblate (Italian)
Currently translated at 89.1% (2435 of 2731 strings)
Translated using Weblate (Italian)
Currently translated at 85.3% (2299 of 2694 strings)
Co-authored-by: glemco <glemco@posteo.net>
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/it/
Translation: Freeyourgadget/Gadgetbridge
Currently translated at 98.1% (2681 of 2731 strings)
Translated using Weblate (Hebrew)
Currently translated at 98.5% (2673 of 2711 strings)
Translated using Weblate (Hebrew)
Currently translated at 97.4% (2642 of 2711 strings)
Translated using Weblate (Hebrew)
Currently translated at 95.5% (2590 of 2711 strings)
Translated using Weblate (Hebrew)
Currently translated at 95.7% (2587 of 2702 strings)
Translated using Weblate (Hebrew)
Currently translated at 95.5% (2581 of 2700 strings)
Translated using Weblate (Hebrew)
Currently translated at 95.3% (2575 of 2700 strings)
Translated using Weblate (Hebrew)
Currently translated at 95.4% (2574 of 2698 strings)
Translated using Weblate (Hebrew)
Currently translated at 96.2% (2569 of 2668 strings)
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/he/
Translation: Freeyourgadget/Gadgetbridge
Currently translated at 95.1% (2568 of 2698 strings)
Translated using Weblate (Russian)
Currently translated at 95.1% (2563 of 2694 strings)
Translated using Weblate (Russian)
Currently translated at 96.0% (2562 of 2668 strings)
Co-authored-by: 0que <0que@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ru/
Translation: Freeyourgadget/Gadgetbridge
Currently translated at 4.0% (110 of 2710 strings)
Translated using Weblate (Thai)
Currently translated at 3.2% (89 of 2702 strings)
Translated using Weblate (Thai)
Currently translated at 3.0% (82 of 2702 strings)
Translated using Weblate (Thai)
Currently translated at 3.3% (90 of 2664 strings)
Co-authored-by: bowornsin <bowornsin@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/th/
Translation: Freeyourgadget/Gadgetbridge
Currently translated at 100.0% (2735 of 2735 strings)
Translated using Weblate (Indonesian)
Currently translated at 100.0% (2734 of 2734 strings)
Translated using Weblate (Indonesian)
Currently translated at 99.3% (2712 of 2731 strings)
Translated using Weblate (Indonesian)
Currently translated at 100.0% (2711 of 2711 strings)
Translated using Weblate (Indonesian)
Currently translated at 100.0% (2710 of 2710 strings)
Translated using Weblate (Indonesian)
Currently translated at 100.0% (2702 of 2702 strings)
Translated using Weblate (Indonesian)
Currently translated at 100.0% (2700 of 2700 strings)
Translated using Weblate (Indonesian)
Currently translated at 100.0% (2698 of 2698 strings)
Translated using Weblate (Indonesian)
Currently translated at 100.0% (2694 of 2694 strings)
Translated using Weblate (Indonesian)
Currently translated at 100.0% (2668 of 2668 strings)
Translated using Weblate (Indonesian)
Currently translated at 100.0% (2664 of 2664 strings)
Translated using Weblate (Indonesian)
Currently translated at 100.0% (2639 of 2639 strings)
Translated using Weblate (Indonesian)
Currently translated at 100.0% (2631 of 2631 strings)
Co-authored-by: Linerly <linerly@proton.me>
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/id/
Translation: Freeyourgadget/Gadgetbridge
Currently translated at 100.0% (2738 of 2738 strings)
Translated using Weblate (Arabic)
Currently translated at 100.0% (2735 of 2735 strings)
Translated using Weblate (Arabic)
Currently translated at 100.0% (2734 of 2734 strings)
Translated using Weblate (Arabic)
Currently translated at 100.0% (2731 of 2731 strings)
Translated using Weblate (Arabic)
Currently translated at 100.0% (2716 of 2716 strings)
Translated using Weblate (Arabic)
Currently translated at 100.0% (2711 of 2711 strings)
Translated using Weblate (Arabic)
Currently translated at 100.0% (2710 of 2710 strings)
Translated using Weblate (Arabic)
Currently translated at 100.0% (2709 of 2709 strings)
Translated using Weblate (Arabic)
Currently translated at 100.0% (2702 of 2702 strings)
Translated using Weblate (Arabic)
Currently translated at 100.0% (2700 of 2700 strings)
Translated using Weblate (Arabic)
Currently translated at 99.7% (2691 of 2698 strings)
Translated using Weblate (Arabic)
Currently translated at 99.0% (2672 of 2698 strings)
Translated using Weblate (Arabic)
Currently translated at 100.0% (2668 of 2668 strings)
Translated using Weblate (Arabic)
Currently translated at 100.0% (2664 of 2664 strings)
Translated using Weblate (Arabic)
Currently translated at 99.3% (2646 of 2664 strings)
Translated using Weblate (Arabic)
Currently translated at 100.0% (2639 of 2639 strings)
Translated using Weblate (Arabic)
Currently translated at 100.0% (2631 of 2631 strings)
Co-authored-by: Rex_sa <rex.sa@pm.me>
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ar/
Translation: Freeyourgadget/Gadgetbridge
Currently translated at 100.0% (2739 of 2739 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2738 of 2738 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2735 of 2735 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2734 of 2734 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (2730 of 2731 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2716 of 2716 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2714 of 2714 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2710 of 2710 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 99.8% (2706 of 2709 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2702 of 2702 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2700 of 2700 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2698 of 2698 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2694 of 2694 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2668 of 2668 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2664 of 2664 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2639 of 2639 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2631 of 2631 strings)
Co-authored-by: 陈少举 <oshirisu.red@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hans/
Translation: Freeyourgadget/Gadgetbridge
Currently translated at 100.0% (2735 of 2735 strings)
Translated using Weblate (Dutch)
Currently translated at 100.0% (2734 of 2734 strings)
Translated using Weblate (Dutch)
Currently translated at 100.0% (2731 of 2731 strings)
Translated using Weblate (Dutch)
Currently translated at 100.0% (2710 of 2710 strings)
Translated using Weblate (Dutch)
Currently translated at 100.0% (2698 of 2698 strings)
Translated using Weblate (Dutch)
Currently translated at 100.0% (2639 of 2639 strings)
Translated using Weblate (Dutch)
Currently translated at 100.0% (2631 of 2631 strings)
Co-authored-by: arjan-s <a_gitlab@anymore.nl>
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/nl/
Translation: Freeyourgadget/Gadgetbridge
Currently translated at 100.0% (2739 of 2739 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2738 of 2738 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2735 of 2735 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2734 of 2734 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2733 of 2733 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2731 of 2731 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2716 of 2716 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2714 of 2714 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2711 of 2711 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2710 of 2710 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2709 of 2709 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2704 of 2704 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2702 of 2702 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2700 of 2700 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2698 of 2698 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2694 of 2694 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2668 of 2668 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2664 of 2664 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2639 of 2639 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2631 of 2631 strings)
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/tr/
Translation: Freeyourgadget/Gadgetbridge
Currently translated at 100.0% (2739 of 2739 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (2735 of 2735 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (2734 of 2734 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (2733 of 2733 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (2731 of 2731 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (2714 of 2714 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (2702 of 2702 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (2700 of 2700 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (2698 of 2698 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (2668 of 2668 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (2664 of 2664 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (2639 of 2639 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (2631 of 2631 strings)
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/es/
Translation: Freeyourgadget/Gadgetbridge
Currently translated at 100.0% (2739 of 2739 strings)
Translated using Weblate (German)
Currently translated at 100.0% (2738 of 2738 strings)
Translated using Weblate (German)
Currently translated at 100.0% (2735 of 2735 strings)
Translated using Weblate (German)
Currently translated at 100.0% (2734 of 2734 strings)
Translated using Weblate (German)
Currently translated at 100.0% (2733 of 2733 strings)
Translated using Weblate (German)
Currently translated at 100.0% (2731 of 2731 strings)
Translated using Weblate (German)
Currently translated at 100.0% (2716 of 2716 strings)
Translated using Weblate (German)
Currently translated at 100.0% (2714 of 2714 strings)
Translated using Weblate (German)
Currently translated at 100.0% (2711 of 2711 strings)
Translated using Weblate (German)
Currently translated at 100.0% (2702 of 2702 strings)
Translated using Weblate (German)
Currently translated at 99.8% (2695 of 2700 strings)
Translated using Weblate (German)
Currently translated at 99.8% (2693 of 2698 strings)
Translated using Weblate (German)
Currently translated at 99.7% (2691 of 2698 strings)
Translated using Weblate (German)
Currently translated at 99.7% (2687 of 2694 strings)
Translated using Weblate (German)
Currently translated at 99.7% (2661 of 2668 strings)
Translated using Weblate (German)
Currently translated at 99.7% (2657 of 2664 strings)
Translated using Weblate (German)
Currently translated at 99.5% (2652 of 2664 strings)
Translated using Weblate (German)
Currently translated at 100.0% (2639 of 2639 strings)
Translated using Weblate (German)
Currently translated at 100.0% (2631 of 2631 strings)
Co-authored-by: skdubg <skdubg@autistici.org>
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/de/
Translation: Freeyourgadget/Gadgetbridge
- Refactor the code from a static global instance to a lifecycle-aware
service instantiated in the DeviceCommunicationService
- Fix number of devices reported in the notification
- Prevents leaks and properly stops when devices get disconnected
* this feature allows to pair HarmonyOS devices without factory reset to
GB and Huawei Health.
* huawei account has form of 17 digit string and could be retrived from
logcat filtering by huid=
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3721
Co-authored-by: Vitaliy Tomin <highwaystar.ru@gmail.com>
Co-committed-by: Vitaliy Tomin <highwaystar.ru@gmail.com>
Also use the named column indexes instead of numeric ids when retrieving the contents to make it more clear and more robust in case further fields are added later.
Reminders are set as absolute timestamp.
Implement support for Sleep As Android with an usable example for ZeppOs
devices
Sleep as Android documentation:
https://docs.sleep.urbandroid.org/devs/wearable_api.html
Signed-off-by: Marcel Alexandru Nitan <nitan.marcel@protonmail.com>
The DeviceCommunicationService calls `#setAutoReconnect` on new device
supports before it calls the connect method. Since this method did not
get relayed to the connection-specific support classes, Xiaomi devices
using a BLE connection did not automatically reconnect because the
`mAutoReconnect` field in `AbstractBTLEDeviceSupport` never got set.
Earlier Xiaomi devices would send either 0 or 100 for the requested
volume to indicate whether the app should increase or decrease the
phone's volume. Newer devices send the volume to change to, based on the
known current volume. We therefore need to check whether the device
increased or decreased the volume based on the current volume ourselves
in order to determine which event we want to fire.
The Xiaomi Smart Band 8 Pro shows widgets in a two by three grid.
Previously, opening the widget configuration for such a device from the
device-specific preferences would crash Gadgetbridge because the layouts
in such a grid was not supported.
This commit adds definitions for layouts in a 2x3 grid to the
WidgetLayout enum, adds a definition for a full screen widget to the
WidgetType enum, defines rendering definitions for the new layouts to
WidgetScreenDetailsActivity, and defines translations for the new
layouts and type to XiaomiWidgetManager.
The Redmi Watch 4 reports both an unsupported widget type and layout
style:
- The firmware supports a screen layout for a single full screens
widget, which is defined by layout ID 128;
- A full screen widget is a single 2x2 part, which is not supported.
This commit adds support for both the new layout and the new widget
type.
Furthermore, this commit refactors the XiaomiWidgetManager. Previously,
the supported layouts were determined by the types of parts supported by
the device. However, the supported layouts are reported by the device
through a bitfield in the widget capabilities message of which the purpose
was unknown, which is now used to determine the supported layouts.