A library to talk to Pebble Smartwatches via Bluetooth Low Energy (BLE).
This library mimics the API syntax of the on-watch AppMessage API.
The backend currently uses the BlueZ v5.48+ D-Bus API (Linux).
See example/main.cpp for example usage.
libpebble-le is licensed under the MIT License.
Internally it uses Binc and SimpleBLE which are both licensed under the MIT License as well.
Credits also go to Gadgetbridge (AGPL-3.0), which provided major insights into the pebble communications protocol, pebble-proto.h uses some data structures from Gadgetbridge.
- Documentation
- Added docs generation via Doxygen
- New C API and Example pages in Sphinx format
- Documentation is now available at ReadTheDocs.org
- Bluetooth address now indicated in watch connectivity callback
- Fixed GATT server communication after watch reconnect
- Fixed crash upon watch disconnect in optimized build
- New: Support for sending/receiving large messages (packet chunking)
- [Breaking change] AppMessageInboxReceived: Pass UUID of the sending watch-app to the user
- AppMessageInboxReceived: Pass the bluetooth address of the sending watch to the user
- Internal rebase upon Binc
- Removed dbus_gatt dependency
- Internally handle PPoGATT v1 window negotiation
- Internally handle PING packets
- Several protocol fixes
- Stability improvements
- More documentation
Many thanks to the Rebble dev team for providing an excellent reference implementation, that was very useful during the development of this release!
- Initial version of the library
- Connect and disconnect to and from watch
- Scanning and pairing
- Send and receive AppMessages
- Pebble dict-implementation currently doesn't parse incoming dictionaries and only supports byte arrays for outgoing messages
- Callbacks for connectivity events and incoming AppMessages
- Optional communication logging (disabled by default)
- Basic example program to demonstrate the API usage
Created by Lesosoftware in 2023