1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-20 07:21:40 +02:00

delay Bluetooth connection to 50ms and set Bluetooth debug level on

This commit is contained in:
oliexdev
2019-02-02 08:40:12 +01:00
parent 3589ae80e4
commit bd021b75de
2 changed files with 9 additions and 0 deletions

View File

@@ -103,6 +103,7 @@ public class OpenScale {
fragmentList = new ArrayList<>(); fragmentList = new ArrayList<>();
bleClient = RxBleClient.create(context); bleClient = RxBleClient.create(context);
RxBleClient.setLogLevel(RxBleLog.DEBUG);
RxBleLog.setLogger((level, tag, msg) -> Timber.tag(tag).log(level, msg)); RxBleLog.setLogger((level, tag, msg) -> Timber.tag(tag).log(level, msg));
reopenDatabase(false); reopenDatabase(false);

View File

@@ -34,6 +34,7 @@ import java.net.SocketException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -65,6 +66,7 @@ public abstract class BluetoothCommunication {
} }
private final int BT_RETRY_TIMES_ON_ERROR = 3; private final int BT_RETRY_TIMES_ON_ERROR = 3;
private final int BT_DELAY = 50; // MS
protected Context context; protected Context context;
@@ -285,6 +287,7 @@ public abstract class BluetoothCommunication {
protected void writeBytes(UUID characteristic, byte[] bytes) { protected void writeBytes(UUID characteristic, byte[] bytes) {
if (isConnected()) { if (isConnected()) {
final Disposable disposable = connectionObservable final Disposable disposable = connectionObservable
.delay(BT_DELAY, TimeUnit.MILLISECONDS)
.flatMapSingle(rxBleConnection -> rxBleConnection.writeCharacteristic(characteristic, bytes)) .flatMapSingle(rxBleConnection -> rxBleConnection.writeCharacteristic(characteristic, bytes))
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.retry(BT_RETRY_TIMES_ON_ERROR) .retry(BT_RETRY_TIMES_ON_ERROR)
@@ -311,6 +314,7 @@ public abstract class BluetoothCommunication {
protected void readBytes(UUID characteristic) { protected void readBytes(UUID characteristic) {
if (isConnected()) { if (isConnected()) {
final Disposable disposable = connectionObservable final Disposable disposable = connectionObservable
.delay(BT_DELAY, TimeUnit.MILLISECONDS)
.firstOrError() .firstOrError()
.flatMap(rxBleConnection -> rxBleConnection.readCharacteristic(characteristic)) .flatMap(rxBleConnection -> rxBleConnection.readCharacteristic(characteristic))
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
@@ -334,6 +338,7 @@ public abstract class BluetoothCommunication {
protected void setIndicationOn(UUID characteristic) { protected void setIndicationOn(UUID characteristic) {
if (isConnected()) { if (isConnected()) {
final Disposable disposable = connectionObservable final Disposable disposable = connectionObservable
.delay(BT_DELAY, TimeUnit.MILLISECONDS)
.flatMap(rxBleConnection -> rxBleConnection.setupIndication(characteristic)) .flatMap(rxBleConnection -> rxBleConnection.setupIndication(characteristic))
.doOnNext(notificationObservable -> { .doOnNext(notificationObservable -> {
Timber.d("Successful set indication on for %s", BluetoothGattUuid.prettyPrint(characteristic)); Timber.d("Successful set indication on for %s", BluetoothGattUuid.prettyPrint(characteristic));
@@ -366,6 +371,7 @@ public abstract class BluetoothCommunication {
protected void setNotificationOn(UUID characteristic) { protected void setNotificationOn(UUID characteristic) {
if (isConnected()) { if (isConnected()) {
final Disposable disposable = connectionObservable final Disposable disposable = connectionObservable
.delay(BT_DELAY, TimeUnit.MILLISECONDS)
.flatMap(rxBleConnection -> rxBleConnection.setupNotification(characteristic)) .flatMap(rxBleConnection -> rxBleConnection.setupNotification(characteristic))
.doOnNext(notificationObservable -> { .doOnNext(notificationObservable -> {
Timber.d("Successful set notification on for %s", BluetoothGattUuid.prettyPrint(characteristic)); Timber.d("Successful set notification on for %s", BluetoothGattUuid.prettyPrint(characteristic));
@@ -466,6 +472,7 @@ public abstract class BluetoothCommunication {
connectionObservable = bleDevice connectionObservable = bleDevice
.establishConnection(false) .establishConnection(false)
.delay(BT_DELAY, TimeUnit.MILLISECONDS)
.takeUntil(disconnectTriggerSubject) .takeUntil(disconnectTriggerSubject)
.doOnError(throwable -> setBtStatus(BT_STATUS_CODE.BT_CONNECTION_RETRYING)) .doOnError(throwable -> setBtStatus(BT_STATUS_CODE.BT_CONNECTION_RETRYING))
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
@@ -475,6 +482,7 @@ public abstract class BluetoothCommunication {
disconnect(); disconnect();
} else { } else {
final Disposable connectionDisposable = connectionObservable final Disposable connectionDisposable = connectionObservable
.delay(BT_DELAY, TimeUnit.MILLISECONDS)
.flatMapSingle(RxBleConnection::discoverServices) .flatMapSingle(RxBleConnection::discoverServices)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.retry(BT_RETRY_TIMES_ON_ERROR) .retry(BT_RETRY_TIMES_ON_ERROR)