- Deserialize BDAddr from non-borrowed strings
- Thanks icewind1991, ekuinox!
- Add support for Extended Advertising on Android
- Thanks Jakouf!
- Call GetDefaultAdapter() instead of GetAdapter() on Android
- Use BluetoothCacheMode::Uncached for services fetching on windows
- This may cause issues with connection times, we'll see how it works out
- Characteristics with duplicate UUIDs (but differing handles) no longer overwrite each other
- Thanks blackspherefollower!
- CoreBluetooth now fulfills all open characteristic futures on disconnect
- Thanks szymonlesisz!
- Move from objc to objc2
- Now using an actually updated/maintained coreAPI library! Thanks madsmtm!
- Implement CentralState for mac/linux/windows to tell when bluetooth is on/off
- Thanks szymonlesisz!
- Still needs Android impl.
- Make local_name on CoreBluetooth match that of Windows/Linux returns when possible.
- Thanks yuyoyuppe!
- Fix descriptor reading on CoreBluetooth
- Thanks kovapatrik!
- Fix one of the many, many NullPointerException issues in droidplug
- Thanks blackspherefollower!
- There are so many more though, esp when we don't have correct permissions on Android.
- Fix issue with Windows failing to read characteristic descriptors
- Fix issue with manufacturer data not being consistently found on windows
- Fix UUID used for finding characteristics on windows
- Peripheral connection failure now returns an error
- Peripheral service discovery failure now returns an error
- CoreBluetooth: Fix missing include
- Android: Fix advertisements with invalid UTF-8 strings not appearing
- All Platforms: Fix clippy warnings
- Windows/UWP: Internally held BTLE services now automatically disconnect when device disconnect is called.
- Add scan filtering for android and windows
- Implement serde Serialize/Deserliaze for PeripheralProperties, ScannFilter (#310, #314)
- Add device class to properties (#319)
- Add descriptor discovery and read/write across all platforms (#316)
- Update RSSI w/ advertisements on CoreBluetooth (#306)
- Fix issues with various unhandled exceptions on Android (#311)
- Add RSSI readings for Android
- Link conditionally against macOS AppKit based on platform
- Improve error propagation on Windows
- Reset connected state to false on disconnect on windows
- Set DuplicateData = true for bluez
- Change common CoreBluetooth log message from error to info level
- Add PeripheralId Display implementation for Android PeripheralId
- Implement Display on PeripheralId
- Fix issues with panics on device disconnect on macOS
- Add ability to disconnect devices on macOS/iOS
- Add Android Support
- Update to Uuid v1, which is incompatible with Uuid v0.x. This may cause issues in upgrades.
- UWP (Windows) devices now disconnect on drop or calls to disconnect
- Improve characteristic finding resilience on UWP (Windows)
- Update to windows-rs 0.33
- Should fix issues with COM casting panics in older versions of windows
- Fix panic when multiple discovery calls are made on corebluetooth (macOS)
- Update Dashmap version to resolve RUSTSEC-2022-0002
BDAddr
andPeripheralId
are now guaranteed to implementHash
,Ord
andPartialOrd
on all platforms.
- Linux implementation will now synthesise
DeviceConnected
events at the start of the event stream for all peripherals which were already connected at the point that the event stream was requested. Central
methods on Linux will now correctly only affect the correct Bluetooth adapter, rather than all adapters on the system.- Filters are now supported for macOS, allowing the library to work on macOS >= 12.
- Added Received Signal Strength Indicator (RSSI) peripheral property.
- Peripheral
notifications()
streams can now be queried before any connection and remain valid independent of any re-connections. - Characteristics are now grouped by service, and infomation about services is available. The old API to access characteristics without specifying a service UUIDs is retained for backwards compatibility.
- Better logging and other minor improvements in examples.
- Added method to get adapter information. For now it only works on Linux.
- Removed
CentralEvent::DeviceLost
. It wasn't emitted anywhere. - Changed tx_power_level type from i8 to i16.
- Removed
PeripheralProperties::discovery_count
. - New
PeripheralId
type is used as an opaque ID for peripherals, as the MAC address is not available on all platforms. - Added optional
ScanFilter
parameter toCentral::start_scan
to filter by service UUIDs.
Peripheral::is_connected
now works on Mac OS, and works better on Windows.- Fixed bug on Windows where RSSI was reported as TX power.
- Report address type on Windows.
- Report all advertised service UUIDs on Windows, rather than only those in the most recent advertisement.
- Fixed bug with service caching on Windows.
- Fixed bug with concurrent streams not working on Linux.
- Errors now Sync/Send (usable with Anyhow)
- Characteristic properties now properly reported on windows
- Overhaul API, moving to async based system
- Pretty much everything? The whole API got rewritten. All hail the new flesh.
- Fix issue with characteristic array not updating on Win10
- #172: Fix setting local_name in macOS
- Windows UWP characteristic methods now return errors instead of unwrapping everything.
- Fixed commit/merge issues with 0.7.0 that ended up with incorrect dependencies being brought in.
- Move to using Uuid crate instead of having an internal type.
- Remove discover_characteristics_in_range (unused or duplicated elsewhere)
- write() commands are now passed a WriteType for specifying WriteWith/WithoutResponse
- Variants added to CentralEvent enum, may break exhaustive checks
- Add capabilities for service and manufacturer advertisements
- Lots of CoreBluetooth cleanup
- Update to using windows library (instead of winrt)
- Replace usage of async_std for channels in macOS with futures crate
- De-escalate log message levels, so there are less message spams at the info level.
- Removed many _async methods that were unimplemented
- Stopped returning write values when not needed.
- Complete rewrite of Bluez core
- Now uses DBus API instead of raw socket access
- Windows support moved to WinRT library
- Move from failure to thiserror for error handling
- failure was deprecated a while ago
- Windows UWP no longer panics on scan when radio not connected.
- Fix dependency issue with async-std channels
- Fix issue where library panics whenever a characteristic is read instead of notified on macOS.
- Fix issue where library panics whenever a characteristic is written without response on macOS.
- UUID now takes simplified inputs for from_str()
- Read/Write added for CoreBluetooth
- Example improvements
- Windows UWP characteristics now actually reads on read(), instead of just returning []
- Fixed issue with peripheral updates in adapter manager wiping out peripherals completely (#64)
- Ran rustfmt (misformatted code is a bug ok?)
- Moved events from callbacks to channels (currently using std::channel, will change to future::Stream once we go async).
- Moved from using Arc<Mutex<HashMap<K,V>>> to Arc<DashMap<K,V>>. Slightly cleaner, less locking boilerplate.
- Centralized peripheral management into the AdapterManager class, which should clean up a bunch of bugs both filed and not.
- Fix peripheral connect panic caused by uuid length on macOS (#43)
- Windows/macOS devices now emit events on device disconnect (#54)
- Allow notification handlers to be FnMut
- Added new examples
- Update dependencies
- Fix local_name on macOS 10.15
- Some types now capable of serde de/serialization, using "serde" feature
- Added new examples
- Adapters functions now return vectors of some kind of adapter on all platforms.
- Bluez notification handlers now live with the peripheral.
- Bluez defaults to active scan.
- Remove all println statements in library (mostly in the windows library), replace with log macros.
- Get BDAddr and UUID from String
- More examples
- Update dependencies
- Added CoreBluetooth Support, using async-std with most of the async parts wrapped in block_on calls for now. Library now supports Win10/MacOS/Linux/Maybe iOS.
- Brought code up to Rust 2018 standard
- Added Characteristic UUID to ValueNotification struct, since only linux deals with Start/End/Value handles
- Initial fork from rumble
- Brought in winrt patch, as well as other PRs on that project.