Skip to content

A library to talk to Pebble Smartwatches via Bluetooth Low Energy (BLE).

License

Notifications You must be signed in to change notification settings

leso-kn/pebble-le

Repository files navigation

latest packaged version(s) License

libpebble-le

Banner

A library to talk to Pebble Smartwatches via Bluetooth Low Energy (BLE).

Packaging status

Design

This library mimics the API syntax of the on-watch AppMessage API.

The backend currently uses the BlueZ v5.48+ D-Bus API (Linux).

Usage

See example/main.cpp for example usage.

License

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.

Changelog

v0.3.0

  • 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

v0.2.2

  • Fixed GATT server communication after watch reconnect

v0.2.1

  • Fixed crash upon watch disconnect in optimized build

v0.2.0

  • 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!

v0.1.0

  • 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