Skip to content

Commit 652df2d

Browse files
Update NRF libraries 2.2.4 (#9)
* NRF BLE 2.2.4 * BRF Scanner 1.5.0
1 parent 53e66b6 commit 652df2d

File tree

6 files changed

+87
-7
lines changed

6 files changed

+87
-7
lines changed

beckon/build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ android {
6161
}
6262
}
6363
}
64+
compileOptions {
65+
targetCompatibility '1.8'
66+
sourceCompatibility '1.8'
67+
}
6468
kotlinOptions {
6569
jvmTarget = "1.8"
6670
}

beckon/src/main/java/com/technocreatives/beckon/internal/BeckonBleManager.kt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import arrow.core.Option
1111
import arrow.core.filterOption
1212
import arrow.core.left
1313
import arrow.core.right
14+
import com.lenguyenthanh.rxarrow.SingleZ
1415
import com.technocreatives.beckon.BleConnectionState
1516
import com.technocreatives.beckon.BondState
1617
import com.technocreatives.beckon.Change
@@ -49,7 +50,7 @@ internal class BeckonBleManager(
4950
context: Context,
5051
val device: BluetoothDevice,
5152
val descriptor: Descriptor
52-
) : BleManager<BeckonManagerCallbacks>(context) {
53+
) : BleManager(context) {
5354

5455
private var bluetoothGatt: BluetoothGatt? = null
5556

@@ -75,7 +76,10 @@ internal class BeckonBleManager(
7576
stateSubject.onNext(newState)
7677
}
7778

78-
mCallbacks = BeckonManagerCallbacks(bondSubject, onStateChange)
79+
// TODO
80+
// mCallbacks = BeckonManagerCallbacks(bondSubject, onStateChange)
81+
setConnectionObserver(BeckonConnectionObserver(onStateChange))
82+
setBondingObserver(BeckonBondingObserver(bondSubject))
7983
// TODO Fix disposable
8084
val statesDisposable = states.subscribe { Timber.d("New states of $device $it") }
8185
}
@@ -95,7 +99,10 @@ internal class BeckonBleManager(
9599
return devicesSubject.hide()
96100
}
97101

98-
fun connect(retryAttempts: Int = 3, retryDelay: Int = 100): Single<Either<ConnectionError, DeviceDetail>> {
102+
fun connect(
103+
retryAttempts: Int = 3,
104+
retryDelay: Int = 100
105+
): SingleZ<ConnectionError, DeviceDetail> {
99106
val request = connect(device)
100107
.retry(retryAttempts, retryDelay)
101108
.useAutoConnect(true)
@@ -242,7 +249,7 @@ internal class BeckonBleManager(
242249
fun doCreateBond(): Completable {
243250
bondSubject.onNext(BondState.CreatingBond)
244251
return Completable.create { emitter ->
245-
createBond()
252+
ensureBond()
246253
.done { emitter.onComplete() }
247254
.fail { device, status ->
248255
emitter.onError(
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.technocreatives.beckon.internal
2+
3+
import android.bluetooth.BluetoothDevice
4+
import com.technocreatives.beckon.BondState
5+
import com.technocreatives.beckon.util.debugInfo
6+
import io.reactivex.subjects.BehaviorSubject
7+
import no.nordicsemi.android.ble.observer.BondingObserver
8+
import timber.log.Timber
9+
10+
internal class BeckonBondingObserver(
11+
private val bondStateSubject: BehaviorSubject<BondState>,
12+
) : BondingObserver {
13+
override fun onBondingRequired(device: BluetoothDevice) {
14+
// todo do something
15+
Timber.i("onBondingRequired ${device.debugInfo()}")
16+
}
17+
18+
override fun onBonded(device: BluetoothDevice) {
19+
Timber.i("onBonded ${device.debugInfo()}")
20+
bondStateSubject.onNext(BondState.Bonded)
21+
}
22+
23+
override fun onBondingFailed(device: BluetoothDevice) {
24+
Timber.i("onBondingFailed ${device.debugInfo()}")
25+
bondStateSubject.onNext(BondState.NotBonded)
26+
}
27+
}

beckon/src/main/java/com/technocreatives/beckon/internal/BeckonClientImpl.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import arrow.core.Some
88
import arrow.core.flatMap
99
import arrow.core.left
1010
import arrow.core.right
11+
import com.lenguyenthanh.rxarrow.SingleZ
1112
import com.lenguyenthanh.rxarrow.fix
1213
import com.technocreatives.beckon.BeckonClient
1314
import com.technocreatives.beckon.BeckonDevice
@@ -176,7 +177,7 @@ internal class BeckonClientImpl(
176177
private fun connect(
177178
device: BluetoothDevice,
178179
descriptor: Descriptor
179-
): Single<Either<ConnectionError, BeckonDevice>> {
180+
): SingleZ<ConnectionError, BeckonDevice> {
180181
Timber.d("Connect BluetoothDevice: $device")
181182

182183
val manager = BeckonBleManager(context, device, descriptor)
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.technocreatives.beckon.internal
2+
3+
import android.bluetooth.BluetoothDevice
4+
import com.technocreatives.beckon.BleConnectionState
5+
import com.technocreatives.beckon.util.debugInfo
6+
import no.nordicsemi.android.ble.observer.ConnectionObserver
7+
import timber.log.Timber
8+
9+
internal class BeckonConnectionObserver(
10+
private val stateCallback: (BleConnectionState) -> Unit
11+
) : ConnectionObserver {
12+
override fun onDeviceConnecting(device: BluetoothDevice) {
13+
Timber.i("onDeviceConnecting ${device.debugInfo()}")
14+
stateCallback(BleConnectionState.Connecting)
15+
}
16+
17+
override fun onDeviceConnected(device: BluetoothDevice) {
18+
Timber.i("onDeviceConnected $device, debugInfo: ${device.debugInfo()}")
19+
stateCallback(BleConnectionState.Connected)
20+
}
21+
22+
override fun onDeviceFailedToConnect(device: BluetoothDevice, reason: Int) {
23+
Timber.w("onError Device: ${device.debugInfo()} Reason: $reason")
24+
stateCallback(BleConnectionState.Failed("NO Message", reason))
25+
}
26+
27+
override fun onDeviceReady(device: BluetoothDevice) {
28+
Timber.i("onDeviceReady ${device.debugInfo()}")
29+
stateCallback(BleConnectionState.Ready)
30+
}
31+
32+
override fun onDeviceDisconnecting(device: BluetoothDevice) {
33+
Timber.i("onDeviceDisconnecting $device")
34+
stateCallback(BleConnectionState.Disconnecting)
35+
}
36+
37+
override fun onDeviceDisconnected(device: BluetoothDevice, reason: Int) {
38+
Timber.i("onDeviceDisconnected $device")
39+
stateCallback(BleConnectionState.Disconnected)
40+
}
41+
}

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ buildscript {
1010
ext.timber = '4.7.1'
1111
ext.sharedPreferences = '1.1.0'
1212
ext.rxBindingVersion = '3.1.0'
13-
ext.nsScannerVersion = '1.4.3'
14-
ext.nsBleVersion = '2.1.1'
13+
ext.nsScannerVersion = '1.5.0'
14+
ext.nsBleVersion = '2.2.4'
1515
ext.nsDfuVersion = '1.9.0'
1616
ext.moshi = '1.12.0'
1717

0 commit comments

Comments
 (0)