Skip to content

Latest commit

 

History

History
315 lines (252 loc) · 22.4 KB

CHANGELOG.md

File metadata and controls

315 lines (252 loc) · 22.4 KB

Change Log

Version 1.18.1

  • Fixed CharacteristicLongWriteOperation defaults for API 33 (Android 13) (#847)

Version 1.18.0

  • Added RxBleConnection#readPhy and RxBleConnection#setPreferredPhy, thanks @JamesDougherty (#840)

Version 1.17.2

  • Fixed log tags generation on builds with Proguard enabled (#814)

Version 1.17.1

  • No changes over 1.17.0. Mistake release.

Version 1.17.0

  • Changed RxBleConnection.GATT_MTU_MAXIMUM to 515 to fix Android 13, thanks @marsounjan! (#808)

Version 1.16.0

  • Added ScanSettingsBuilder#setLegacy option, thanks @danielstuart14! (#801)

Version 1.15.2

  • Fixed RxBleDevice#toString crashing when runtime permission BLUETOOTH_CONNECT is not granted on API 31 (Android 12) (#800)
  • Added granted permissions cache (#802)
  • Updated RxBleClient#getBondedDevices Javadoc for usage on API 31 (Android 12) (#804)

Version 1.15.1

  • Fixed duplicate 'META-INF/com.google.dagger_dagger.version' file (regression) (#794)

Version 1.15.0

  • No functional changes. First release of RxAndroidBle based on RxJava 3. RxJava 2 version is still supported. (#793)

Version 1.14.1

  • Fixed duplicate 'META-INF/com.google.dagger_dagger.version' file (#790)

Version 1.14.0

  • Added RxBleClient#getConnectedPeripherals for retrieving all BLE peripherals connected to the device, thanks @DaBs! (#765)
  • Updated URL for native GATT statuses in BleGattException, thanks @ariccio! (#779)
  • Added BleScanResult#isConnectable for getting info if the scanned peripheral is connectable, thanks @MartinSadovy! (#781)
  • Added helper functions RxBleClient#isConnectRuntimePermissionGranted and RxBleClient#getRecommendedConnectRuntimePermissions (#787)

Version 1.13.1

  • Fixed 'BLUETOOTH_SCAN' permission entry in Android Manifest for apps that do not build using Android 12 target (#767)

Version 1.13.0

  • Changed behaviour of RxBleClient#getRecommendedScanRuntimePermissions (#762)
  • Adjusted checks for scanning in regards to API 31 (Android 12) (#762)
  • Adjusted readme for new BLE permission system introduced with API 31 (#762)

Version 1.12.1

  • Added a new location check for API 28+ (#747)
  • Fixed requirements for location services check (#748)

Version 1.12.0

  • Fixed a leak in ScanOperationApi21, thanks @seotrader (#708)
  • Added Service Solicitation UUIDs support, thanks @nrbrook! (#711)
  • [mockclient] Added builder for RxBleScanRecordMock, thanks @nrbrook! (#703)
  • [mockclient] Changed RxBleClientMock.DeviceBuilder() => RxBleDeviceMock.Builder. Structural changes to creating devices, thanks @nrbrook! (#706)
  • [mockclient] Added builder functions to provide callbacks for characteristic/descriptor writes/reads, thanks @nrbrook! (#707)
  • [mockclient] Added constructor for RxScanRecordMock, thanks @nrbrook! (#712)
  • [mockclient] Fixed behaviour of RxBleClientMock.observeStateChanges() (#744)

Version 1.11.1

  • Fixed NullPointerException when logging failed BluetoothGattCharacteristic initial reads (#679)
  • [mockclient] Added support for BluetoothDevice in RxBleDeviceMock (#676)

Version 1.11.0

  • Added workaround for scans with settings match found and/or lost but no filters (#612)
  • Fixed typo in BleCharacteristicNotFoundException (#625)
  • Added scan permission helper functions (#642)

Version 1.10.5

  • Fixed possibly incorrect order of notifications and operation completions (#639)
  • Fixed possibility of library being stalled on operation cancelling (#650)
  • Fixed a silenced IllegalStateException after a scan is stopped because BluetoothAdapter being disabled (#649)

Version 1.10.4

  • Fixed location permission check for Android 10 (#640)

Version 1.10.3

  • Fixed RxBleConnection.observeConnectionParametersUpdates() not working in obfuscated apps. Added consumer proguard-rules.pro Proguard config file. (#634)
  • Fixed log statement on reading RSSI of connection (#631)
  • Fixed log statement on setting CONNECTION_PRIORITY_HIGH (#623)

Version 1.10.2

  • Fixed possible UndeliverableException when scan subscription is quickly disposed (#609)
  • Minor allocation decrease in ScanSetupBuilderImplApi21 (#613)

Version 1.10.1

  • Fixed IllegalStateException in RxBleAdapterStateObservable (#596)

Version 1.10.0

  • Added possibility to disable logs of scanned peripherals via LogOptions.Builder.setShouldLogScannedPeripherals() (#579)
  • Added RxBleConnection.observeConnectionParametersUpdates() function (#565)
  • Minor allocation decrease in LocationServicesOkObservable (#574)
  • Fixed leaking RxBleAdapterStateObservable (#575)

Version 1.9.2

  • Fixed IllegalArgumentException in LocationServicesOkObservableApi23Factory (#573)

Version 1.9.1

  • Fixed RxBleClient.observeStateChanges() emissions (#556)
  • Fixed RxBleDevice.establishConnection(boolean, Timeout) Javadoc (#558)

Version 1.9.0

  • Added possibility to disable Location Services check before scan (#533)
  • Reworked library logging API and behaviour (#551)

Version 1.8.2

  • Fixed sporadic NullPointerException in DisconnectionRouter (#553)

Version 1.8.1

  • Added more GATT status descriptions (#543)

Version 1.8.0

  • Added NotificationSetupMode.QUICK_SETUP for devices which start notifying right after CCC descriptor write (#478)
  • Migrated to androidx usage (#497)

Version 1.7.2

  • Fixed stalled library (race condition) when trying to connect while BluetoothAdapter is OFF (#522)
  • Fixed logs in DisconnectionRouter (#523)

Version 1.7.1

  • Fixed possible IllegalArgumentException while parsing UUIDs from advertisements (#485)
  • Fixed NullPointerException when calling BackgroundScanner start / stop scan while BluetoothAdapter was not turned ON (#487)

Version 1.7.0

  • Introduced a new API that allows for background scanning in modern Android OS versions (#369)
  • Fixed LocationServicesOkObservable (#438)
  • Added GATT status code to BleDisconnectionException (#405)
  • Fixed possible concurrent access to DisconnectionRouter (#442)
  • Fixed race condition in CharacteristicLongWriteOperation (#465)

Version 1.6.0

  • Deprecated ConnectionSharingAdapter (#397)
  • Fixed unexpected behaviour of LocationServicesOkObservable if unsubscribed immediately after first emission (#430)
  • Added possibility to modify CustomOperation priority (#414)
  • Fixed stalled library if a just started operation was already unsubscribed (#428)

Version 1.5.0

  • Added possibility to change default operation timeout (#321)
  • Fixed Dagger2 compatibility (#342 #348)
  • Fixed DisconnectionRouter leaking subscription to RxBleAdapterStateObservable (#353)
  • Improved Location Services status check (#327)
  • Added logger that prints out GATT server structure on a successful discovery. The log is generated when the logger is in a VERBOSE level (#355)
  • Enhanced operation logger so it displays how long the operation performed. (#356)
  • Added retry strategies for long write operations (#357)
  • Introduced API in RxJava2
  • Removed deprecated establishConnection method
  • Removed deprecated writeCharacteristic method
  • Introduced BleDescriptorNotFoundException

Version 1.5.0 (RxJava1)

  • Added possibility to change default operation timeout (#321)
  • Fixed Dagger2 compatibility (#342 #348)
  • Fixed DisconnectionRouter leaking subscription to RxBleAdapterStateObservable (#353)
  • Improved Location Services status check (#327)
  • Added logger that prints out GATT server structure on a successful discovery. The log is generated when the logger is in a VERBOSE level (#355)
  • Enhanced operation logger so it displays how long the operation performed. (#356)
  • Added retry strategies for long write operations (#357)

Version 1.4.3 (RxJava1)

  • Log informing that the underlying semaphore in a QueueSemaphore has been interrupted will be printed only when the situation was unexpected.(#317)
  • Fixed possible race condition when calling .doOnSubscribe() and .doOnUnsubscribe() which lead to calling ConnectionOperationQueueImpl.onConnectionUnsubscribed() before the .onConnectionSubscribed() has returned. (#308)
  • Updated RxJava dependency (#312)
  • Updated to Gradle 3.0.0/Android Studio 3.0 (#302)
  • Nicer exception messages (#303)

Version 1.4.2 (RxJava1)

  • Fixed MTU value not being updated when changed by the peripheral (#293)
  • Added info logs regarding start/stop of scans (#295)
  • Fixed routing of the actual disconnection error to all queued operations (#297)

Version 1.4.1 (RxJava1)

  • Fixed issue hasObservers conditional for Output class (#283)

Version 1.4.0 (RxJava1)

  • Added native callback usage support in custom operations. You may consider this API if your implementation is performance critical. (#165)
  • Added pre-scan verification for excessive scan (undocumented Android 7.0 "feature") (#227)
  • Adjusted BleCannotSetCharacteristicNotificationException to contain the cause exception if available. RxBleConnection.setupNotification()/RxBleConnection.setupIndication() will now throw the cause of disconnection if subscribed after connection was disconnected. (#225)
  • Changed Behaviour of RxBleDevice.observeConnectionStateChanges() - does not emit initial state and reflects best BluetoothGatt state. (#50)
  • Added support for a custom Logger RxBleLog.setLogger(Logger) as alternative to Logcat (#248)
  • Added a warning log if user tries to use a characteristic against it's properties (#224)
  • Changed BehaviourBluetoothGatt is now called on a single background thread instead of the main thread (#255)
  • Decoupled command queues for different connections. (#250)

Version 1.3.4 (RxJava1)

  • Added @Nullable annotation to RxBleDevice.getName(). (#263)
  • Fixed connection not being disconnected when DeadObjectException was raised. (#275)

Version 1.3.3 (RxJava1)

  • Fixed scan filtering by name on API <21 (#243)
  • Fixed race condition (which would cause the library to hang) when using .first() on calls to RxBleConnection that emit a single result. (#244)

Version 1.3.2 (RxJava1)

  • Fixed completing the Observable<byte[]> emitted by RxBleConnection.setupNotification()/RxBleConnection.setupIndication() when unsubscribed (#231)

Version 1.3.1 (RxJava1)

  • Fixed unsubscribing from operations before onComplete()/onError() causing the library to hang. (#218)

Version 1.3.0 (RxJava1)

  • Changed Behaviour of RxBleConnection - connection is no longer closed on individual operation errors. (#26)
  • Added partial support for API 21 BLE scan in a backwards compatible manner. (#16)
  • Added support for filtering by Manufacturer Data (#127)
  • Added RxBleClient State observing for determining what functionality of the library may work (#55)
  • Added ValueInterpreter for interpreting standardized (Bluetooth Specification) int/float/String values from byte[] (#199)
  • Added support for requesting connection priority on API 21+ (#111)

Version 1.2.4 (RxJava1)

  • Lowered memory pressure caused by RxBleLog when logs are disabled (#212)

Version 1.2.3 (RxJava1)

  • Fixed scan when filter with 32-bit UUID was specified (#207)
  • Fixed memory leak of scan operation (and potentially any other that would emit an infinite stream of events) (#194)
  • Lowered memory pressure when using functions that accept UUID.
  • Changed RxBleConnectionState from a class to an enum for convenience.
  • Minor optimisations to RxBleRadio queue processing time.
  • Updated RxJava to 1.3.0

Version 1.2.2 (RxJava1)

  • Fixed visibility of UUIDUtil. Deprecated it. Introduced AdvertisedServiceUUIDExtractor helper, thanks @marciogranzotto! (#184)

Version 1.2.1 (RxJava1)

  • Added ByteArrayBatchObservable helper for splitting long byte arrays
  • Fixed behaviour in non-Bluetooth environments. (#158)
  • Fixed RxBleConnectionMock overwriting BluetoothCharacteristic value on setting notification. (#160)
  • Fixed default payload size of Long Write operation when non-standard MTU was negotiated (#161)
  • Added possibility to get the current MTU value of RxBleConnection (#166)
  • Fixed retrying of RxBleClient.scanBleDevices(UUID...), thanks @BharathMG! (#174)
  • Fixed connection not being noticed as established due to a race condition (#178)
  • Fixed BleBluetoothGattCallbackTimeout macAddress being null on connection (#178)
  • Fixed disconnect operation behaviour in an edge case situation (#178)

Version 1.2.0 (RxJava1)

  • Added Proguard rules for the library. (#104)
  • Added support for MTU negotiation, thanks @pregno!
  • Fixed connecting with autoConnect = true on Android 7.0.0+, thanks @JIUgia!
  • Fixed notifications for characteristics with the same UUID
  • Adjusted scan location services check for various scenarios (#106)
  • Fixed occasional out-of-order emissions from notifications (#75)
  • Fixed stalled operations by adding timeouts (#118)
  • Added LocationServicesOkObservable helper for observing if scan can be successfully started
  • Added Jack compatibility (#123)
  • Added compatibility mode for notifications on characteristic that do not contain a Client Characteristic Config descriptor
  • Fixed logic of UUID filtering during scan
  • Added long write support (#68)
  • Fixed issue with a stalled library when write operations were too quick (#135)
  • Optimised logging
  • Added support for custom BluetoothGatt operations (#137)
  • Updated RxJava to 1.2.9
  • Added support for scanning on Android Wear
  • Internal refactoring introducing Dagger2 support

Version 1.1.0 (RxJava1)

  • Fixed issue that sometimes happened where RxBleRadioOperationConnect was not yet subscribed while running. (#94)
  • Fixed issue with descriptor writing using parent characteristic write type. (#93)
  • Added BleScanException.toString() for a more descriptive stacktrace.
  • Added a workaround for a bug while discovering services. (#86)
  • Added a timeout for discovering services. (#86)
  • Fixed calling BluetoothGatt.disconnect() on a correct thread. (#84)
  • Fixed library stuck if disconnection happened during operation execution. (#81)
  • Removed reflection call to BluetoothGatt.connect() on Android 7.0.0+. (#83)
  • Removed android.support.v4 dependency.
  • Added cancelling of connection establishing process.
  • Reduced method count.
  • Fixed RejectedExecutionException when processing BluetoothGattCallback. (#25) (#75)

Version 1.0.2 (RxJava1)

  • Added Mock RxAndroidBle to the repository
  • Added indications handling on RxBleConnection
  • Fixed scan operation concurrency issue (#17)
  • Exposed android.bluetooth.BluetoothDevice in RxBleDevice (#23)
  • Fixed stale RxBleRadio on RxBleOperation unhandled throw (#18)
  • Fixed possible BluetoothCharacteristic value overwrites with multiple writes (#27)
  • Updated RxJava (1.1.0 -> 1.1.7) and RxAndroid (1.1.0 -> 1.2.1) libraries dependency
  • Added interface methods for usage with BluetoothCharacteristic object (#38)
  • Fixed lost connection when BluetoothAdapter disabled before the connection established (#45)
  • Added RxBleClient.getBondedDevices() method, thanks @fracturedpsyche! (#46)

Version 1.0.1 (RxJava1)

  • Fixed scan operation concurrency issue, thanks @artem-zinnatullin! (#5)
  • Fixed location permission requirement check (Android >=6.0)

Version 1.0.0 (RxJava1)

  • Changed RxBleClient factory method name.
  • After this version the public API will be maintained to avoid conflicts.

Version 0.0.4 (RxJava1)

  • Removed duplicated API for connection state from RxBleConnection
  • Renamed API for connection state observation in RxBleDevice
  • Renamed API for notification setup, not it is RxBleConnection#setupNotification(UUID)
  • Added convenience method to check current connection state
  • Added ability to filter scan results with one service more easily
  • Reject establishConnection calls if connection is already established
  • Added adapter for sharing connections

Version 0.0.3 (RxJava1)

  • Added location permission for APIs >=23
  • Check if location permission is granted and location services are enabled on Android 6.0
  • Fixed error callback notifying about disconnects

Version 0.0.2 (RxJava1)

  • Bugfixes
  • Changed API for instantiation of the client
  • Added caches in sensitive places

Version 0.0.1 (RxJava1)

Initial release

  • Support for main bluetooth operations (discovery, connection, read, write, notifications)