Skip to content

Releases: OpenBluetoothToolbox/SimpleBLE

SimpleBLE v0.8.1

05 Nov 23:24
Compare
Choose a tag to compare

[0.8.1] - 2024-11-05

Added

  • (Android) Alpha preview of Android support.
  • (SimpleDBus) Added templated version of creation and getter functions for Holder class. (Thanks lorsi96!)

Changed

  • Implemented standalone ByteArray class derived from kvn::bytearray. (Thanks tlifschitz!)
  • API CHANGE: Notify and Indicate callback in C bindings now receive the peripheral handle as the first argument.

Fixed

  • (SimpleBluez) Fixed improper handling of non org.Bluez.Service1 objects within a org.bluez.Device1 object. (Thanks Kober Engineering!)
  • (MacOS) Fixed incorrect storage and retrieval with standard Bluetooth UUIDs inside the peripheral class. (Thanks TellowKrinkle!)
  • (Python) Fixed incorrect handling of the GIL in certain functions. (Thanks nomenquis and Medra AI!)

SimpleBLE v0.7.3

23 Mar 17:17
Compare
Choose a tag to compare

[0.7.3] - 2024-03-23

Updated the licensing documentation.

Ported over from v0.7.0

Added

  • Function to query the version of SimpleBLE at runtime.
  • (Python) Missing API from SimpleBLE::Characteristic.

Changed

  • (MacOS) Main adapter address is now hardcoded to allow caching based on adapter address. (Thanks BlissChapman!)
  • (Python) Release GIL when calling Peripheral.write_request and Peripheral.write_command.
  • (MacOS) Rewrote the entire backend.
  • (MacOS) OperationFailed exception now contains the error message provided by the OS.

Fixed

  • (MacOS) Remove unnecessary timeout during service discovery. (Thanks BlissChapman!)
  • (MacOS) Return correct list of devices when scanning. (Thanks roozmahdavian!)
  • (MacOS) Remove unnecessary timeout during characteristic notification. (Thanks BlissChapman!)
  • (MacOS) Remove unnecessary timeout during operations on characteristics.
  • (Windows) Failed connection attempt would not trigger an exception. (Thanks eriklins!)
  • (Linux) Use correct UUIDs for advertized services. (Thanks Symbitic!)

SimpleBLE v0.7.1

17 Feb 00:53
Compare
Choose a tag to compare

[0.7.1] - 2024-02-16

Bumped version to fix missing new license information in the Python and Rust packages.

Ported over from v0.7.0

Added

  • Function to query the version of SimpleBLE at runtime.
  • (Python) Missing API from SimpleBLE::Characteristic.

Changed

  • (MacOS) Main adapter address is now hardcoded to allow caching based on adapter address. (Thanks BlissChapman!)
  • (Python) Release GIL when calling Peripheral.write_request and Peripheral.write_command.
  • (MacOS) Rewrote the entire backend.
  • (MacOS) OperationFailed exception now contains the error message provided by the OS.

Fixed

  • (MacOS) Remove unnecessary timeout during service discovery. (Thanks BlissChapman!)
  • (MacOS) Return correct list of devices when scanning. (Thanks roozmahdavian!)
  • (MacOS) Remove unnecessary timeout during characteristic notification. (Thanks BlissChapman!)
  • (MacOS) Remove unnecessary timeout during operations on characteristics.
  • (Windows) Failed connection attempt would not trigger an exception. (Thanks eriklins!)
  • (Linux) Use correct UUIDs for advertized services. (Thanks Symbitic!)

SimpleBLE v0.7.0

16 Feb 19:46
Compare
Choose a tag to compare

[0.7.0] - 2024-02-15

IMPORTANT: LICENSE TERMS HAVE CHANGED.

Added

  • Function to query the version of SimpleBLE at runtime.
  • (Python) Missing API from SimpleBLE::Characteristic.

Changed

  • (MacOS) Main adapter address is now hardcoded to allow caching based on adapter address. (Thanks BlissChapman!)
  • (Python) Release GIL when calling Peripheral.write_request and Peripheral.write_command.
  • (MacOS) Rewrote the entire backend.
  • (MacOS) OperationFailed exception now contains the error message provided by the OS.

Fixed

  • (MacOS) Remove unnecessary timeout during service discovery. (Thanks BlissChapman!)
  • (MacOS) Return correct list of devices when scanning. (Thanks roozmahdavian!)
  • (MacOS) Remove unnecessary timeout during characteristic notification. (Thanks BlissChapman!)
  • (MacOS) Remove unnecessary timeout during operations on characteristics.
  • (Windows) Failed connection attempt would not trigger an exception. (Thanks eriklins!)
  • (Linux) Use correct UUIDs for advertized services. (Thanks Symbitic!)

SimpleBLE v0.6.1

14 Mar 17:12
Compare
Choose a tag to compare

[0.6.1] - 2023-03-14

Added

  • (Python) Generate source distribution packages.
  • (SimpleDBus) Proxy objects keep track of their existence on the DBus object tree.

Changed

  • Bluetooth enabled check was moved into the frontend modules. (Thanks felixdollack!)
  • (Windows) Use the standard C++ exception handling model. (Thanks TheFrankyJoe!)

Fixed

  • CI artifacts for non-standard architectures are now properly built.
  • (SimpleBluez) Fixed incorrect handling of invalidated children objects.

New Contributors

Full Changelog: v0.6.0...v0.6.1

SimpleBLE v0.6.0

23 Feb 04:19
Compare
Choose a tag to compare

[0.6.0] - 2023-02-23

Added

  • Option to build SimpleBLE plain-flavored (without any BLE code) for testing and debugging purposes.
  • Support for advertized services.
  • Support for GATT Characteristic properties.
  • Retrieve the MTU value of an established connection. (Thanks Marco Cruz!)
  • Peripheral addresses can now be queried for their type. (Thanks camm73!)
  • Tx Power is decoded from advertising data if available. (Thanks camm73!)
  • Logger now provides default functions to log to a file or to stdout.
  • Support for exposing advertized service data. (Thanks Symbitic!)
  • (Rust) Preliminary implementation of Rust bindings.
  • (Windows) Logging of WinRT initialization behavior.
  • (SimpleBluez) Support for GATT characteristic flags.
  • (SimpleBluez) Support for GATT characteristic MTUs. (Thanks Marco Cruz!)
  • (SimpleBluez) Support for advertized services.
  • (SimpleBluez) Mechanism to select the default DBus bus type during compilation-time. (Thanks MrMinos!)

Changed

  • Debug, MinSizeRel and RelWithDebInfo targets now contain their appropriate suffix. (Thanks kutij!)
  • API CHANGE: Log level convention changed from uppercase to capitalizing the first letter.
  • Updated libfmt dependency to version 9.1.0.
  • Unused libfmt targets removed from the build process.
  • (MacOS) More explicit exception messages.
  • (MacOS) 16-bit UUIDs are now presented in their 128-bit form.
  • (MacOS) Adapter address now swapped for a random UUID. (Thanks nothingisdead!)
  • (Windows) Reinitialize the WinRT backend if a single-threaded apartment is detected. (Thanks jferdelyi!)
  • (Windows) Callbacks for indications and notifications are now swapped if one already exists.

Fixed

  • Incorrect handling of services and characteristics in the Python examples. (Thanks Carl-CWX!)
  • Minor potential race condition in the safe callback.
  • Compilation-time log levels were not being set correctly. (Thanks chen3496!)
  • Missing function definition in C-bindings. (Thanks eriklins!)
  • (Linux) Peripheral would still issue callbacks after deletion.
  • (MacOS) Increased priority of the dispatch queue to prevent jitter in the incoming data.
  • (MacOS) Incorrect listing of advertized services. (Thanks eriklins & Symbitic!)
  • (Windows) Missing peripheral identifier data. (Thanks eriklins!)
  • (Windows) Multiple initializations of the WinRT backend.
  • (Windows) Incorrect initialization of the WinRT backend. (Thanks ChatGPT & Andrey1994!)
  • (Windows) Scan callbacks would continue after scan stopped.
  • (Windows) Disconnecting would prevent the user from connecting again. (Thanks klaff, felixdollack & lairdrt!)
  • (Windows) Uncleared callbacks when unsubscribe is called.
  • (Windows) Incorrect handling of non-english locale by MSVC. (Thanks felixdollack!)
  • (Windows) Disconnection callback would not be triggered on a manual disconnect. (Thanks crashtua!)
  • (Python) Type returned by simplepyble.get_operating_system() was not defined.
  • (SimpleBluez) Incorrect attempt to operate on an uninitialized DBus connection. (Thanks jacobbreen25!)

Full Changelog: v0.5.0...v0.6.0

SimpleBLE v0.5.0

25 Sep 18:13
Compare
Choose a tag to compare

[0.5.0] - 2022-09-25

Important:

  • From this version onwards, the CMake target that should be consumed by downstream projects is simpleble::simpleble.
  • This version includes a breaking API change in the enumeration of services and characteristics.
  • This version has brought in the files from SimpleBluez and SimpleDBus into the repository as subpackages.

Added

  • Multiple connection example.
  • Installation interface.
  • Logger level and callback can now be queried.
  • Characteristics can now list their descriptors. (Thanks Symbitic!)
  • Peripherals can now read and write characteristic descriptors. (Thanks Symbitic!)
  • Adapter object can now be queried to see if Bluetooth is enabled.
  • (Windows) WinRT exception handling.
  • (Windows) Accessor function to underlying OS objects of Adapter and Peripheral.
  • (MacOS) Failures will now throw corresponding exception.
  • (SimpleBluez) Support for characteristic descriptors. (Thanks Symbitic!)
  • (SimpleBluez) Full support for all discovery filters. (Thanks Symbitic!)

Changed

  • Clearer layout of examples. (Thanks Yohannfra!)
  • AdapterSafe and PeripheralSafe will now catch all exceptions.
  • Selection of build type is now based on the BUILD_SHARED_LIBS setting.
  • Consumable CMake target is now simpleble::simpleble.
  • API CHANGE: BluetoothService class was replaced by the Service class.
  • Updated CMake minimum version to 3.21
  • Symbols are now hidden by default and use proper export mechanics.
  • Logger will print to std::out by default.
  • (MacOS) Stop throwing exceptions if Bluetooth not enabled. Print warning and no-op instead.
  • (Linux) Default scanning behavior switched to all devices.

Fixed

  • Made user callback invocations exception-safe.
  • Attempting to scan while connected will erase references to all existing peripherals.
  • CMake target simpleble::simpleble was removed in favour of BUILD_SHARED_LIBS.
  • CMake target simpleble::simpleble-c was removed in favour of BUILD_SHARED_LIBS.
  • Using the correct CMake functionality to export headers for all targets.
  • Corrected maximum length of manufacturer data on the C-api to 27 bytes. (Thanks DrSegatron!)
  • (Windows) Peripheral reads are now uncached. (Thanks piotromt!)
  • (Linux) Failure to set agent would trigger a crash.
  • (Linux) Spurious disconnection events during connection retries have been fully removed.
  • (Linux) Exceptions thrown during the deletion phase of a peripheral would not be captured.
  • (Linux) Characteristic cleanup function has been made exception-safe.
  • (SimpleBluez) Accessing the Paired property of Device1 would only use the cached value.

SimpleBLE v0.4.0

13 Jun 05:51
2681ecb
Compare
Choose a tag to compare

[0.4.0] - 2022-06-12

Added

  • Expose RSSI as a property of SimpleBLE::Peripheral.
  • Utils function to identify the current platform.
  • (Linux) SimpleBLE::Peripheral::is_paired method to check if a peripheral is paired.
  • (Linux) SimpleBLE::Adapter::get_paired_peripherals method to list all paired peripherals.
  • Function to validate whether an SimpleBLE::Adapter or SimpleBLE::Peripheral object is initialized.
  • Logging hooks to capture logs from SimpleBLE and internal components.
  • Accessor function to underlying OS objects of SimpleBLE::Adapter and SimpleBLE::Peripheral.

Changed

  • Updated Linux implementation to use SimpleBluez v0.5.0.
  • Added support for Windows SDK 10.0.22000.0
  • Updated libfmt to version 8.1.1.
  • Cleaned up dependency management for libfmt and SimpleBluez.
  • SimpleBLE::Adapter::get_paired_peripherals will return an empty list on Windows and MacOS.
  • (Linux) (Experimental) Exceptions thrown inside the Bluez async thread are now caught to prevent lockups.
  • NotConnected exception will be thrown instead of OperationFailed when peripheral not connected.

Fixed

  • (MacOS) Known peripherals would not get cleared at the beginning of a scanning session.
  • (Windows) Known peripherals would not get cleared at the beginning of a scanning session.
  • Calling functions of uninitialized objects will now throw an exception instead of crashing.
  • (MacOS) Thread synchronization issues would cause certain peripheral actions to report failure.
  • (Windows) Behavior of write_request and write_command was flipped.
  • (MacOS) Behavior of write_request and write_command was flipped.
  • (Linux) on_connected callback was not being called.
  • (Linux) Spurious disconnection events during connection retries have been removed.
  • (Linux) Existing characteristic callbacks were not being cleared on disconnection.
  • (Linux) Characteristics are unsubscribed on disconnection.
  • (Linux) Missing agent registration that would prevent pairing from working.

SimpleBLE v0.3.0

04 Apr 05:46
Compare
Choose a tag to compare

[0.3.0] - 2021-04-03

Added

  • Pairing functionality has been validated on all supported operating systems.
    In the case of Windows and MacOS, the user will be required to interact with
    an operating system popup to pair the device, while on Linux all pairing
    requests will automatically be accepted, with passcodes abc123 or 123456.
  • Unpair command has been added, although the only working implementation
    will be the linux one. Both Windows and MacOS require the user to manually
    unpair a device from the corresponding OS settings page.

Changed

  • Updated Linux implementation to use SimpleBluez v0.3.1.
  • Migrated to using safe callbacks from external vendor (kvn::safe_callback).

SimpleBLE v0.2.0

13 Feb 20:08
Compare
Choose a tag to compare

[0.2.0] - 2021-02-13

Added

  • (Linux) Support for emulated battery service. (Thanks ptenbrock!)

Fixed

  • (Windows) Proper cleanup of callbacks during destruction.
  • (Windows) Async timeout reduced to 10 seconds.
  • (Linux) Returned characteristic value would be empty or outdated. (Thanks ptenbrock!)
  • (MacOS) Fixed a bunch of memory leaks and enabled automatic reference counting.
  • (MacOS) Fixed race condition.

Changed

  • Updated Linux implementation to use SimpleBluez v0.2.1.