## 1.1.0 * Add readRssi method ## 1.0.1 * Enforce C++20 standard for Windows builds ## 1.0.0 * BREAKING CHANGE: `OnValueChange` callback also includes timestamp * BREAKING CHANGE: Bump minimum IOS version to 13.1 * BREAKING CHANGE: Bump minimum MacOS version to 10.15 * Fix Windows 11 crash on cancelling pairing * Unified error codes for all platforms * Add `isScanning` api * Add `hasPermissions` api * Add `requestPermissions` api and auto ask permission on `startScan` * `disconnect` now waits for disconnection confirmation before returning * Improve Windows disconnection event handling and cleanup * Add `withDescriptors` parameter in `discoverServices` API * Add `timestamp` in `BleDevice` * Add `setLogLevel` api for configuring logs ## 0.21.1 * Fix device name resolution on Windows * Add `exclusionFilters` to filter out devices from scan results ## 0.21.0 * BREAKING CHANGE: `connectionTimeout` argument from `connect`, `isPaired` and `pair` API renamed to `timeout` * Add `timeout` argument to all APIs * Add `clearQueue()` API ## 0.20.2 * Fix `BleCharacteristic.onValueReceived` ## 0.20.1 * Fix `writeWithoutResponse()` which was not properly waiting for completion on Android and Apple ## 0.20.0 * Add new high level API. Services are auto-discovered. the BleDevice class offers convenient member methods and properties. * BREAKING CHANGE: `bleDevice.isPaired` is now `bleDevice.paired` * Deprecate `readValue` in favor of `read` * Deprecate `writeValue` in favor of `write` * Deprecate `setNotifiable` in favor of `subscribeNotifications`, `subscribeIndications`, `unsubscribe` * Fix `getBluetoothAvailabilityState` reporting wrong Bluetooth status on browsers where Web Bluetooth can globally be disabled * `startScan` on web now throws a `WebBluetoothGloballyDisabled` exception if scanning cannot proceed due to Web Bluetooth being globally disabled * EXAMPLE APP: Migrate to the new high level API ## 0.19.0 * Get and prefer advertised name of scanned devices on Apple * Improve Android runtime permissions docs * Cache and return advertised name for system devices on Apple * Add app showcase in Readme * EXAMPLE APP: Don't disconnect on leaving the details page * EXAMPLE APP: Fix Android builds * EXAMPLE APP: Fix service filter warning on macOS * EXAMPLE APP: Add types to callbacks ## 0.18.0 * Add Streams: `scanStream`, `availabilityStream`, `connectionStream`, `characteristicValueStream`, `pairingStateStream` * Fix `connect` api bug to detect proper connection state * Fix `getSystemDevices()` on Linux * Improve docs for isPaired ## 0.17.0 * Fix Windows crash when calling pair APIs with an unknown deviceId * Fix Windows crash when calling startScan again after some time * Fix Windows warning `Unable to establish connection on channel` when hot restarting * Refactor native Windows code * Improve Android permission documentation ## 0.16.0 * BREAKING CHANGE: `payload` is now `payloadPrefix` * BREAKING CHANGE: `mask` is now `payloadMask` * Bump bluez to 0.8.3 * Do not normalize UUIDs on native side * Reverse _permissionStatus return values in example app * Improve readme * Improve ManufacturerDataFilter ## 0.15.0 * `getSystemDevices(withServices:)` now sets several generic services by default as filter * `getConnectionState` on Android will now return `BleConnectionState.disconnected` if device is connected to the system but not to the app * Improve callback error handling ## 0.14.0 * BREAKING CHANGE: `bleDevice.name` now filters out non-printable characters * Add `bleDevice.rawName` * Add `disableBluetooth` API * Fix Apple CBCentralManager lazy initialization on `startScan` * Fix Android error `scan too frequently` and auto retry scan once sufficient time has passed * Fix duplicate `onValueChanged` events on Android 11 or earlier * Fix Windows `withServices` filter * Fix Windows Bluetooth availability state in release builds * Throw error on Apple if Bluetooth permission is denied on `startScan` * Do not throw `Characteristic already notifying` error. Subscribing to characteristic notifications multiple times is now handled safely * Bump flutter_web_bluetooth to 1.0.0 ## 0.13.0 * BREAKING CHANGE: `scanFilter` filters are now in OR relation * BREAKING CHANGE: `manufacturerDataHead` is removed from `BleDevice` * BREAKING CHANGE: `WebConfig` is now `WebOptions` * BREAKING CHANGE: `ManufacturerDataFilter.data` is now `ManufacturerDataFilter.payload` * BREAKING CHANGE: `connect()` does not return a boolean anymore. It will throw error on connection failure * BREAKING CHANGE: `pair()` does not return a boolean anymore. It will throw error on connection failure * BREAKING CHANGE: `onConnectionChange` returns error as well * BREAKING CHANGE: rename in-app pairing capabilities * Deprecation: `manufacturerData` is deprecated in BleDevice and will be removed in the future * Improve `scanFilter` handling * Use `ManufacturerData` object instead of `Uint8List` for manufacturerData * Add `manufacturerDataList` as `List` in `BleDevice` * Auto convert all services passed to `getSystemDevices()` * Return false for receivesAdvertisements on Linux/Web * Add 1s delay in discoverServices on Linux * Add `connectionStream` API to get connection updates as stream ## 0.12.0 * BREAKING CHANGE: `unPair` is now `unpair` * BREAKING CHANGE: `onPairingStateChange` does not return error anymore * Add `pair()`, `isPaired` and `onPairingStateChange` support for Apple and web * `connect()` and `pair()` now return a bool result * Add `PlatformConfig` property in `StartScan` * Add `WebConfig` property in `PlatformConfig` * Fix notifications for characteristics without cccd on Android * Promote Linux to stable ## 0.11.1 * Trim spaces in UUIDs * Receive advertisement events on web * Improve cleanup after disconnection on web ## 0.11.0 * Unify UUID format across all platforms, 128-bit lowercase * Add BleUuidParser utility methods for UUID parsing ## 0.10.1 * Improve Android error handling * Fix Android disconnection events sometimes missed * Improve cleanup after disconnection on Apple and Android * Support pairing on Apple * Improve code level documentation ## 0.10.0 * BREAKING CHANGE: `ScanResult` is now `BleDevice` * BREAKING CHANGE: `getConnectedDevices` is now `getSystemDevices` * BREAKING CHANGE: `isPaired` is now nullable * BREAKING CHANGE: `onValueChanged` is now `onValueChange` * BREAKING CHANGE: `onConnectionChanged` is now `onConnectionChange` * Add `connectionState` property to BleDevice * Add `isSystemDevice` property to BleDevice * Add `.perDevice` queue * Support "ProvidePin" pairing on Windows 10/11 * Get RRSI updates on Apple platforms * Improve enum parsing performance * Improve code level documentation ## 0.9.11 * Add device name prefix filtering ## 0.9.10 * Fix Windows scan filter * Remove scan result caching on Windows * Improve service discovery on Linux * Use asynchronous callbacks for SetNotifiable * Remove dependency on `convert` * Remove dependency on `collection` * Update Android example app Gradle ## 0.9.9 * Improve service discovery on Apple * Improve reconnection on Apple * Persist long scan result name on Windows * Fix Android serviceUuids in scanResults * Example app improvements ## 0.9.8 * Improve manufacturer data discovery on Windows * Example app improvements ## 0.9.7 * Fix characteristic keying on linux allowing receiving data from multiple BLE devices at the same time ## 0.9.6 * Fix a Windows issue where characteristics of certain services would not be discovered * Improve readme ## 0.9.5 * Windows support has graduated from beta to stable * Support filtering by manufacturer data * Unify web's optionalServices API with filtering API * Implement requestMtu in Linux * Fix wrong manufacturer data in Windows release builds * Improve logging ## 0.9.4 * Fix Windows crash when no Bluetooth adapter is present ## 0.9.3 * Add scan filter (withServices:) in `startScan()` * Add service UUIDs from advertisements in `BleScanResult` * Fix Windows release build compilation ## 0.9.2 * Add command queue * Improve error handling on Android, iOS, macOS, Windows, Linux and web ## 0.9.1 * Improve logging ## 0.9.0 * Improve windows device name discovery * Improve linux implementation * Improve titles in example app ## 0.8.4 * Add `WebRequestOptionsBuilder.defaultServices` for convenience when setting `optionalServices` when scanning on web * Add "try online" URL in readme * Improve readme * Improve example app ## 0.8.3 * Rename onPairStateChange *> onPairingStateChange * Improve readme ## 0.8.2 * Improve readme ## 0.8.1 * Update supported platforms ## 0.8.0 * Initial release