Commit Graph
13807 Commits
Author SHA1 Message Date
José Rebelo 453eaee4c1 Charts: Avoid crash if database fetch fails 2025-06-26 18:08:54 +01:00
Arjan Schrijver a291eb1205 Fossil/Skagen Hybrids: Add calendar sending preferences 2025-06-26 10:00:10 +02:00
Arjan Schrijver 61e31229d2 Fossil/Skagen Hybrids: Add sending calendar items 2025-06-26 10:00:10 +02:00
José Rebelo 73fc8971c8 Generic Headphones: Do not suggest unbind before pair 2025-06-24 18:41:34 +01:00
José Rebelo 94c01a9b95 Amazfit Balance 2: Experimental support 2025-06-24 13:20:23 +01:00
Thomas KuehneandJosé Rebelo 3d2ac05390 ble: fix BtLEQueue reconnection logic
Ensure that handleDisconnected uses a robust reconnection logic.
2025-06-24 14:12:28 +02:00
Thomas KuehneandJosé Rebelo ac56df52ac ble: fix DeviceCommunicationService disposes DeviceSupport
When a device goes out of range and then comes back into range DeviceCommunicationService disposes DeviceSupport while trying to re-establish a connection.
This causes race conditions as there are multiple for path for reconnections that can be executed in parallel.
The DeviceService.ACTION_CONNECT path kills everything abruptly potential leaving the gadget with a broken connection.

partial backport from PR #4916
2025-06-24 09:53:50 +02:00
Thomas KuehneandJosé Rebelo 7fcc879280 ble: fix BondingAction.getCurrentTarget 2025-06-24 00:09:30 +02:00
José Rebelo fa625597ad update changelog, bump version 2025-06-23 22:57:40 +01:00
José Rebelo 038e409d66 User ServiceCompat to start foreground services (#4994) 2025-06-23 22:23:16 +01:00
Arjan Schrijver c3f0a029cd Fossil/Skagen Hybrids: Fix NPE during connection setup 2025-06-23 23:07:05 +02:00
José Rebelo 9d4dca5d5b Bangle.js: Fix stack overflow on initialization
Fix regression introduced by 280f4fc61. We should never call
performInitialized in the initializeDevice function, as that can cause
race conditions or, in this case, a stack overflow due to the recursive
initialization.
2025-06-23 21:59:29 +01:00
José Rebelo a16d7a18fc Garmin Descent Mk3: Initial support 2025-06-23 08:40:53 +01:00
Thomas KuehneandJosé Rebelo 4c94bc5568 G1DeviceSupport: fix setUpdateState 2025-06-22 19:19:14 +02:00
Thomas KuehneandJosé Rebelo 8bf39e62d5 Huawei: fix setUpdateState 2025-06-22 19:19:00 +02:00
Thomas Kuehne 168fec3253 log: set distinct thread names to enhance logging of race conditions 2025-06-22 17:21:32 +02:00
Thomas KuehneandJosé Rebelo 2e8c38d255 miband: fix setUpdateState 2025-06-22 14:54:48 +02:00
Thomas KuehneandJosé Rebelo 161c89cfcf makibeshr3: fix setUpdateState 2025-06-22 14:50:32 +02:00
Thomas KuehneandJosé Rebelo bd48d299f7 qhybrid: fix setUpdateState 2025-06-22 14:50:10 +02:00
Thomas KuehneandJosé Rebelo cc41bcac2a jyou: fix setUpdateState 2025-06-22 14:49:27 +02:00
Thomas KuehneandJosé Rebelo d48bea3003 test: fix setUpdateState 2025-06-22 14:48:50 +02:00
Thomas KuehneandJosé Rebelo 906764ae2a no1f1: fix setUpdateState 2025-06-22 14:48:30 +02:00
Thomas KuehneandJosé Rebelo c700a4c71c waspos: fix setUpdateState 2025-06-22 14:47:51 +02:00
Thomas KuehneandJosé Rebelo 280f4fc61d BangleJSDeviceSupport: fix setUpdateState 2025-06-22 14:46:50 +02:00
Thomas KuehneandJosé Rebelo c9a9ae8ad0 ble: introduce getServiceDiscoveryDelay and apply BtLEQueue settings (2/2)
1/2:
- rename AbstractBTLEDeviceSupport to AbstractBTLESingleDeviceSupport
- apply all BtLEQueue settings before processing starts
- introduce getServiceDiscoveryDelay to support device specific delay between STATE_CONNECTED and getServices/discoverServices
2/2:
- add a new AbstractBTLEDeviceSupport as a common super class of AbstractBTLEMultiDeviceSupport and AbstractBTLESingleDeviceSupport
2025-06-22 13:47:33 +02:00
Thomas KuehneandJosé Rebelo 94ec64095a ble: introduce getServiceDiscoveryDelay and apply BtLEQueue settings (1/2)
1/2:
- rename AbstractBTLEDeviceSupport to AbstractBTLESingleDeviceSupport
- apply all BtLEQueue settings before processing starts
- introduce getServiceDiscoveryDelay to support device specific delay between STATE_CONNECTED and getServices/discoverServices
2/2:
- add a new AbstractBTLEDeviceSupport as a common super class of AbstractBTLEMultiDeviceSupport and AbstractBTLESingleDeviceSupport
2025-06-22 13:47:33 +02:00
Thomas KuehneandJosé Rebelo fcd4ac30be ble: introduce CompanionDeviceService to elevate process priority 2025-06-22 12:48:01 +02:00
Thomas Kuehne 485df6a021 ble+bt: replace setState with setUpdateState
code de-duplication: GBDevice.setState + sendDeviceUpdateIntent + DEVICE_STATE
1) add nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder.setUpdateState
2) add nodomain.freeyourgadget.gadgetbridge.service.btbr.TransactionBuilder.setUpdateState
3) add nodomain.freeyourgadget.gadgetbridge.impl.GBDevice.setUpdateState
4) use the new setUpdateState

The status logic in following classes require a deeper analysis. They were thus not updated:
- AbstractBTBRDeviceSupport
- BFH16DeviceSupport
- BangleJSDeviceSupport
- DeviceCommunicationService
- FossilWatchAdapter
- G1DeviceSupport
- GenericHeadphonesSupport
- HuaweiSupportProvider
- JYouSupport
- MakibesHR3DeviceSupport
- MiBandSupport
- MisfitWatchAdapter
- No1F1Support
- TestDeviceSupport
- WaspOSDeviceSupport
2025-06-22 11:12:19 +02:00
José Rebelo 8beec7a893 Update coordinators to extend BLE or BLClassic 2025-06-21 20:22:16 +01:00
José Rebelo 2b16683adc Renovate: Pin freemarker version 2025-06-21 20:22:16 +01:00
José Rebelo b989e937e3 Add default simplified deleteDevice implementation 2025-06-21 20:22:16 +01:00
José Rebelo 1b1137d4b8 Replace disabled device icons with color filter 2025-06-21 20:22:16 +01:00
Thomas Kuehne 79a6ee2c92 use StandardCharsets.UTF_8 instead of name based charset lookups
eliminates the need to handle UnsupportedEncodingException and improves performance
2025-06-21 20:51:22 +02:00
Thomas KuehneandJosé Rebelo 5c439be493 add @Override annotations to device specific code
@Override is helpful to ensure that factoring can't cause "orphaned" methods
2025-06-21 18:35:48 +02:00
José Rebelo 0dd1abdb13 AAWireless: Add car device icon 0.86.0 2025-06-21 10:05:15 +01:00
José Rebelo 816f909805 update changelog, bump version 2025-06-21 08:43:20 +01:00
Саша ПетровићandHosted Weblate 3db1640a2d Translated using Weblate (Serbian)
Currently translated at 58.4% (2314 of 3957 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/sr/
2025-06-21 09:36:10 +02:00
Christian ThieleandHosted Weblate 8c31719842 Translated using Weblate (German)
Currently translated at 100.0% (3957 of 3957 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/de/
2025-06-21 09:36:10 +02:00
Poesty LiandHosted Weblate 6a94d9510c Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (3957 of 3957 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hans/
2025-06-21 09:36:10 +02:00
Poesty LiandHosted Weblate f87c09d93b Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.5% (3941 of 3957 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hans/
2025-06-21 09:36:10 +02:00
Christian ThieleandHosted Weblate 215b47f772 Translated using Weblate (German)
Currently translated at 100.0% (3957 of 3957 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/de/
2025-06-21 09:36:10 +02:00
FjuroandHosted Weblate 4bb99d9666 Translated using Weblate (Czech)
Currently translated at 100.0% (3957 of 3957 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/cs/
2025-06-21 09:36:10 +02:00
arjan-sandHosted Weblate 3c88e30a3c Translated using Weblate (Dutch)
Currently translated at 100.0% (3 of 3 strings)

Translation: Freeyourgadget/fastlane metadata
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/fastlane-metadata/nl/
2025-06-21 09:36:10 +02:00
DanieleandHosted Weblate 4029713f02 Translated using Weblate (Italian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Freeyourgadget/fastlane metadata
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/fastlane-metadata/it/
2025-06-21 09:36:10 +02:00
Thomas KuehneandJosé Rebelo e00261cac6 fix and annotate null handling in some core classes 2025-06-21 09:36:05 +02:00
dependency-bot 7f5b672504 fix(deps): update dependency org.robolectric:robolectric to v4.15 2025-06-21 01:01:44 +00:00
Gordon Williams 849997b145 Fixes for NullPointerException spotted on Play Store
These are probably edge cases but they do appear to happen occasionally

Fixes Exception java.lang.NullPointerException: Attempt to invoke virtual method 'int android.bluetooth.BluetoothClass.getDeviceClass()' on a null object reference
  at nodomain.freeyourgadget.gadgetbridge.devices.generic_headphones.GenericHeadphonesCoordinator.supports (GenericHeadphonesCoordinator.java:45)
  at nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper.resolveDeviceType (DeviceHelper.java:140)
  at nodomain.freeyourgadget.gadgetbridge.activities.discovery.GBScanEventProcessor.processCandidate (GBScanEventProcessor.java:175)
  at nodomain.freeyourgadget.gadgetbridge.activities.discovery.GBScanEventProcessor.processAllScanEvents (GBScanEventProcessor.java:237)
  at nodomain.freeyourgadget.gadgetbridge.activities.discovery.GBScanEventProcessor.run (GBScanEventProcessor.java:81)
  at nodomain.freeyourgadget.gadgetbridge.activities.discovery.GBScanEventProcessor$1.run (GBScanEventProcessor.java:103)

Fixes Exception java.lang.NullPointerException: Attempt to invoke virtual method 'int java.io.InputStream.read(byte[], int, int)' on a null object reference
  at android.bluetooth.BluetoothSocket.read (BluetoothSocket.java:692)
  at android.bluetooth.BluetoothInputStream.read (BluetoothInputStream.java:88)
  at java.io.InputStream.read (InputStream.java:218)
  at nodomain.freeyourgadget.gadgetbridge.service.btbr.BtBRQueue$1.run (BtBRQueue.java:73)
2025-06-20 10:48:34 +01:00
Thomas KuehneandJosé Rebelo 52d3b20430 ble: log detailed companion bonding error 2025-06-19 21:54:17 +02:00
Thomas Kuehne ba48c39426 ble: fix BondingInterface.getMacAddress null pointer issues 2025-06-19 20:53:58 +02:00
José Rebelo e0fa950bfe Restore jitpack repository 2025-06-19 13:42:43 +01:00