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:
@@ -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);
|
||||||
|
@@ -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)
|
||||||
|
Reference in New Issue
Block a user