1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-07-16 18:34:03 +02:00
Commit Graph

199 Commits

Author SHA1 Message Date
Andreas Shimokawa
a302b5509f Huami: re-enable setting the timezone correctly with included DST
This will trigger bugs, but also fix some.
We "just" need to fix the new bugs :/
2021-07-30 16:33:44 +02:00
Andreas Shimokawa
603050b7cc InfiniTime: support notification for battery level 2021-07-08 23:46:18 +02:00
Andreas Shimokawa
f32c4d6a43 Support timezones with half an our offset (like UTC+5:30)
Should help #2283
2021-06-04 13:07:42 +02:00
Robbert Gurdeep Singh
99aa59e7da Add friendly reminder of number of bytes to javadoc 2021-03-14 22:21:58 +01:00
Toby Murray
203176a01e Update GATT characteristic list
The current GATT characteristic list mentions it was up to date as of populated 2015-09-28. In the last 6 years, significantly more characteristics have been added to the Bluetooth spec. While it's not necessary to have all these constants available in Gadgetbridge, it's useful while implementing new features for a device or adding support for a new device

This was retrieved from https://btprodspecificationrefs.blob.core.windows.net/assigned-values/16-bit%20UUID%20Numbers%20Document.pdf. The GATT characteristics were parsed from that PDF and converted to constants with names via:

```
String description = uuid.description.trim().toUpperCase().replace(' ', '_').replace('-', '_');
System.out.println("public static final UUID UUID_CHARACTERISTIC_" + description + " = UUID.fromString((String.format(AbstractBTLEDeviceSupport.BASE_UUID, \"" + uuid.uuid + "\")));");
```
2021-01-18 19:38:16 -05:00
License Bot
1b5402dcb4 update license headers 2021-01-10 23:38:13 +01:00
Andreas Böhler
92986724ee Fix watch init (only do the bare minimum) and add basic
notification support. Reconnect is WiP.
2020-11-21 22:12:19 +01:00
Maxim Baz
e2a75d75d4 Add Wire messenger to the chat applications
This is a chat app that uses end-to-end encryption algorithm similar to Signal.
2020-10-26 23:29:58 +01:00
Bot
40852d3641 Fixed a bunch of misspellings and formatting 2020-08-26 14:37:40 +03:00
TaaviE
010785113b Fixed a few more warnings 2020-08-26 09:38:31 +02:00
TaaviE
7db3b68047 Fixed a bunch of warnings 2020-08-26 09:38:31 +02:00
License Bot
d6fa5d0dd5 Update license headers 2020-01-09 10:44:32 +01:00
Andreas Shimokawa
f0e8440e67 Try to fix race condition when re-connecting
(Count down latch only if services have been discovered)
2019-12-26 00:18:36 +01:00
License Bot
171f283ca8 Update license headers 2019-12-15 22:09:02 +01:00
License Bot
1dc8c26e2a Update license headers 2019-12-06 22:51:43 +01:00
dakhnod
f4a0f0ce8f Merge branch 'master' of github.com:Freeyourgadget/Gadgetbridge into fossil-q-hybrid 2019-12-04 00:48:26 +01:00
FYG_license_bot_ignore_me
8e5c4b4602 Update license headers 2019-11-23 21:53:22 +01:00
Andreas Shimokawa
c2db30274f Make reconnect logic more device agnostic and remove pebble reconnect logic 2019-11-20 10:53:25 +01:00
Andreas Shimokawa
c7053747cd Add active reconnection
Closes #1724
Closes #1632
Closes #1452
Closes #1271
Closes #564

(Probably more)
2019-11-19 14:40:20 +01:00
Daniel Dakhno
64b407da92 added mtu transactions 2019-11-14 04:53:19 +01:00
Cre3per
fdffe813f2 makibes hr3.
download progress notification (needs to be tested).
2019-10-12 12:44:38 +02:00
Andreas Shimokawa
16090f0e21 Move fake device offset to Mi Band 1 preferences, remove support for other devices
Reasons for removal:
- I doubt we honored the offset correctly for new features anyway that are available on newer devices
- Newer devices have a display always displaying the wrong time
2019-06-05 14:11:44 +02:00
License Bot
9aadb2f2fd Update license headers 2019-04-21 18:53:10 +02:00
Andreas Böhler
c091828205 Rename getActionSize() -> getActionCount() and make it abstract 2019-02-27 19:08:54 +01:00
Andreas Böhler
325add3f0a Remove duplicate queue
# Conflicts:
#	app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/BtLEQueue.java
2019-02-27 09:27:50 +01:00
Andreas Böhler
88ac816393 Fix queue handling if only server or client operation is present 2019-02-18 20:20:57 +01:00
Andreas Böhler
6577ad69b0 Add initial support for Gatt server in BtLEQueue 2019-02-18 20:20:57 +01:00
License Bot
beedb653e6 Update license headers 2019-02-13 20:43:31 +01:00
Daniele Gobbetti
75d3dffb14 Migrate to androidx support libraries and bump compile SDK version
"Optimize imports" has been run on all source files, there might be
unrelated changes, but these should be harmless.
2019-01-26 16:00:56 +01:00
cpfeiffer
fb85326939 performConnected() -> builder.qeueue(getQueue()) 2019-01-03 00:44:34 +01:00
cpfeiffer
60397c88c0 Avoid possible NPE 2018-09-23 11:27:35 +02:00
cpfeiffer
8c1a1861e4 Fix some static analysis warnings 2018-09-16 13:59:16 +02:00
cpfeiffer
87bee53ef3 Add a tiny bit of javadoc 2018-09-15 22:43:45 +02:00
cpfeiffer
d6f5e36e12 Huami devices: Fix seldom fetch failures (better support for app level ble feedback)
Fixes #1264
2018-09-15 22:24:27 +02:00
cpfeiffer
a2bd8212f6 Attempt to fix connection problems on Samsung devices 2018-09-06 18:25:41 +02:00
José Rebelo
cc6c57bd4c Add support for LED Color, FM Frequency 2018-08-31 14:03:39 +01:00
License Bot
696653eabf Update contributors list and license headers. 2018-08-29 21:30:23 +02:00
cpfeiffer
50295864f5 Use a custom IntentListener callback instead of LocalBroadcastManager for ble profiles
The issue here is the following:

- we used intents in the generic BleProfile classes to notify about the results of e.g. certain read requests
- we used to send these results asynchronously via LocalBroadcastManager.sendBroadcast(), which always used the main thread for sending
- however, we noticed that reconnecting to devices sometimes failed because the results arrived too late and the next action in the BLE queue lacked the necessary information
- the fix was to use LocalBroadcastManager.setBroadcastSync(), so that the results arrive in time
- this unfortunately meant that they were not sent in the main thread anymore, and especially, this would send all pending intents that were previously queued via sendBroadcast() also in the "wrong" thread (in order to keep the order of events)

The fix is to use a custom IntentListener callback interface for synchronous notifications of ble profile results
*without* also causing other, previously queued intents to be sent.

Fixes #1218
2018-08-18 00:39:14 +02:00
cpfeiffer
cc3c70b161 Send results of AbstractBleProfile synchronously
This should fix issues like a ConditionalWriteAction failing with an NPE when GBDevice.getFirmwareVersion() returns null even though the DeviceInfoProfile had already received the firmware version (but the intent notification has not been received yet).
2018-08-06 20:51:28 +02:00
Andreas Shimokawa
3d3cc1f40c Merge branch 'master' into bip-wip 2018-03-13 17:27:18 +01:00
License Bot
238bacde9f Update license headers 2018-02-26 14:27:33 +01:00
Daniele Gobbetti
4f246b3ed9 Add Antox to the chat applications.
Notifications coming from the chat.tox.antox package are treated as chat
messages. This closes #910
2018-02-17 17:39:15 +01:00
Daniele Gobbetti
48b89f1bd2 Add Kontalk to the chat applications.
Notifications coming from the org.kontalk package are treated as chat
messages. This closes #994
2018-02-17 17:33:34 +01:00
Andreas Shimokawa
6f68c8adde Merge branch 'master' into bip-wip 2018-01-04 12:09:57 +01:00
Lukas Veneziano
6b339a3013 Added notification type for threema app 2017-12-31 00:10:39 +01:00
cpfeiffer
da7de378d3 Back out the DST handling, since it causes problems with activity fetching
Details: when we ask to fetch activity samples from date:time:tz+dst, the band,
under certain conditions, will send us back date:time:tz (without the dst offset)

We're fine with that, so we start fetching. When it's done, we take the last sample's
timestamp (still without dst offset), convert it to a unix timestamp, create a Calendar
using current tz and apply the unix timestamp. Then we send that timestamp again to the
band in order to fetch activity samples from then, but we again add the dst offset to the tz,
so send as date:time:tz+dst without changing the timestamp. That way, we may end up at the
timestamp we began with, fetching the same activity data again and not progressing.

We first need to thorougly understand how the devices behave, before we can reenable and fix
this.
2017-11-07 21:24:48 +01:00
Andreas Shimokawa
9764e8e54e try to parse timezone that comes back from huami devices
(there are other places where something like this has to be done, probably also in the other direction)

related to #869

(cherry picked from commit a58e3f66ce)
2017-11-06 23:23:11 +01:00
Andreas Shimokawa
a58e3f66ce try to parse timezone that comes back from huami devices
(there are other places where something like this has to be done, probably also in the other direction)

related to #869
2017-11-05 22:35:28 +01:00
cpfeiffer
fd159b7603 Bip: improved logging, read expected number of bytes for progress monitoring during sync 2017-11-01 23:05:29 +01:00
cpfeiffer
f5318287c4 WIP: Bip GPS fetching, parsing, exporting
Also adjust Mi2 date/time sending wrt DST offsets
2017-10-31 23:16:39 +01:00
License Bot
3ea2ac6dd2 Update license headers 2017-10-25 09:29:36 +02:00
Andreas Shimokawa
f07b77f903 Mi Band 2: support app icons and textual notifications for more apps 2017-10-22 00:02:36 +02:00
Andreas Shimokawa
3301194e75 Consolidate duplicate Mi2 / Bip icon definition
Also handle some more recently added icons
2017-09-14 10:15:14 +02:00
License Bot
a10fc8ad4e Update license headers 2017-09-12 12:39:15 +02:00
cpfeiffer
c468e7f521 Mi Bands+Bip: when an operation finishes, unset the gatt callback on the BtLEQeue
Otherwise it will continue to receive events until another transaction is being executed.
2017-09-02 22:49:58 +02:00
Andreas Shimokawa
e839a2c6a3 Trim strings coming from DeviceInfoProfile (BLE).
On the Bip strings have trailing zeroes. Putting this in the Database results in a "BLOB"
2017-08-31 11:52:21 +02:00
License Bot
15f4ce2869 Update license headers 2017-08-25 11:25:01 +02:00
Andreas Shimokawa
ebc1cedf55 damn typo 2017-08-23 23:12:44 +02:00
Andreas Shimokawa
a398f33cb8 Mi Band2: do not misuse ALERT_LEVEL_ constants, use AlertCategory enum 2017-08-23 23:04:40 +02:00
Andreas Shimokawa
4c8728c78f Amazfit Bip: Support app icons in notifications 2017-08-21 23:47:47 +02:00
Andreas Shimokawa
fdcc51cb98 Amazfit Bip: Support sending notification body, not only title 2017-08-20 23:58:41 +02:00
License Bot
8af9054f2d Update license headers 2017-04-26 00:14:25 +02:00
cpfeiffer
696dc1f08d Attempt to fix reconnection not happening in some cases
Fixes #530
2017-04-20 23:01:32 +02:00
João Paulo Barraca
9f0d260e7a HPlus: Improve connection process (#651)
* Clean HPlus services and characteristics
* Improve connectivity
2017-04-18 10:47:28 +01:00
cpfeiffer
1a88858c6f Fix some findbugs findings 2017-04-09 01:09:43 +02:00
License Bot
6a842c52fa Update license header in all java files. 2017-03-16 17:36:15 +01:00
cpfeiffer
17ecee0cab Mi2: initial support for text notifications and icons
See #560
2017-03-14 00:45:54 +01:00
cpfeiffer
8fc6dfeca7 Improved AlertNotificationProfile
AlertLevel, AlertCategory, Control Point
2017-03-14 00:45:54 +01:00
License Bot
e392fbfd80 Add license header to all java files. 2017-03-10 14:53:19 +01:00
cpfeiffer
6282597790 Handle BT issues with discovered characteristics
It occurred to me that onServicesDiscovered() was called multiple times
whenever I connected to my Mi Band 2. Either the band actually sent the
characteristics in multiple chunks or Android itself notified multiple
times.

So we gracefully handle this by
- updating the list of characteristics
- *not* initializing the device again when it *is* already initialized
or at least initializing.
2017-03-09 22:49:13 +01:00
cpfeiffer
4419200624 Mi2: Initial support for textual notifications #560 2017-03-03 20:12:43 +01:00
cpfeiffer
6c269aa089 Generic characteristic names from field names 2017-01-08 21:37:43 +01:00
cpfeiffer
6dfc895303 Mi2: Initial work on firmware update #427 2016-12-11 02:11:58 +01:00
Andreas Shimokawa
17b581022b optimize imports 2016-12-09 20:14:17 +01:00
cpfeiffer
44f74270df Mi2: Experimental support for activity recognition 2016-12-02 00:22:06 +01:00
Uwe Hermann
0746aaa579 app: Random typo and consistency fixes. 2016-12-01 20:22:12 +01:00
Uwe Hermann
6dd74d04ac code/docs: Consistently use the "Gadgetbridge" spelling.
"Gadgetbridge" appears to be the common spelling as per most docs,
code comments, wiki, and so on. Thus avoid using "GadgetBridge".
2016-12-01 17:28:51 +01:00
cpfeiffer
09ff95eb34 Support for continuous hr readings (live activity) #323 2016-11-29 23:25:11 +01:00
cpfeiffer
82cd06f4c1 Mi2: WIP: initial support for activity data
(#323)
2016-11-22 00:05:41 +01:00
cpfeiffer
51fa31aa66 Fix BLE type conversions problems 2016-11-18 23:36:22 +01:00
cpfeiffer
ddaf51768d Improved logging 2016-11-13 20:24:25 +01:00
cpfeiffer
b20a9c9ccc Some initial hacky support for hr readings (Debug activity only)
My Mi2 stopped reporting hr values a while ago though, even on-device.
2016-10-23 23:53:48 +02:00
cpfeiffer
839da4f06a Shuffle some logging things around 2016-10-21 00:50:41 +02:00
cpfeiffer
8f36712342 WIP: A little more Alert Notification Profile
I think we should rather focus on a code generator, though.
2016-09-29 20:32:15 +02:00
cpfeiffer
c2f8037f07 WIP: Alert Notification Profile 2016-09-26 22:21:59 +02:00
Andreas Shimokawa
55a1248e8f compile fix 2016-09-26 21:43:10 +02:00
cpfeiffer
d4b134a490 WIP regarding heart rate profile 2016-09-26 11:44:57 +02:00
cpfeiffer
ccdb843b6e Improved Mi Band 2 support #323
- connecting works and is stable
- firmware and hardware version is displayed
- time is set
2016-09-20 23:12:17 +02:00
Andreas Shimokawa
da01a76594 fix BatteryInfoProfile NPE, show battery level for Vibratissimo 2016-09-19 16:37:45 +02:00
JohnnySun
53d4681763 Optimize Imports 2016-09-13 23:53:35 +08:00
cpfeiffer
fbf06c1fe3 Separate coordinator and support instances for Mi1 and Mi2 #323
+ Some more testing stuff for Mi2
2016-08-17 00:53:16 +02:00
cpfeiffer
9b7e8e06d6 Improved time conversion (0x2A0F)
- support for org.bluetooth.characteristic.local_time_information
- support for day of week in 0x2A2B

Unfortunately Mi Band 2 does not support 0x2A0F ;(
2016-08-15 00:40:35 +02:00
cpfeiffer
43d7566c0b some more microsteps #206 2016-08-01 22:18:57 +02:00
cpfeiffer
b43b7948b0 Let GallCallback return boolean values in order to mark an event as "consumed"
(to avoid dispatching the event to further listeners (ble profiles)
2016-07-28 23:04:37 +02:00
cpfeiffer
f5ba09ebe0 Some babysteps towards miband2 support #323
Start to implement standard BLE profiles/services.
2016-07-25 00:00:22 +02:00
cpfeiffer
1997a9b7fa some more service discovery logging 2016-07-18 23:55:44 +02:00
cpfeiffer
8154a887cb When there are cached services, skip service discovery 2016-07-08 22:15:36 +02:00
cpfeiffer
8549031c6f Only attempt to reconnect when we were previously initialized 2016-07-04 23:38:25 +02:00
cpfeiffer
f0da25c49b Fix activity fetching getting stuck when double tapping #333 2016-06-28 23:07:24 +02:00
cpfeiffer
2d49ce505a Set state to "Waiting for reconnect" for BTLE devices 2016-05-26 23:48:05 +02:00