manager.cancelDeviceConnection(device)
.then(() => {
setConnectedDeviceStatus(false)
})
.catch(error => {
console.log('Unable to disconnect from device', error);
})
}
//connect to select device
const connectToDevice = async(device) => {
console.log('ok process ongoing to connectToDevice');
console.log('device nme',device.name);
console.log('deviceId',device.id)
setDeviceId(device.id);
//check connection state of a device
/*if(manager.isDeviceConnected(deviceId) === true){
console.log("cancelling");
manager.cancelDeviceConnection(deviceId); // deconnexion
}*/
//setConnectedDeviceList([]);
//connexion au device
device.connect()
.then((connectedDevice) => {
console.log('device connected',connectedDevice)
//Add device to connectedDeviceList
// setConnectedDeviceList([...connectedDeviceList, device])
//processing double
var newConnectedDevice = true
//console.log('lenght device', deviceList.length)
for( let connectDevice of connectedDeviceList ) {
if( connectDevice.id === connectedDevice.id ) {
//console.log('connect device id',connectDevice.id)
//console.log('connected device id',connectedDevice.id)
//console.log("ok same devices")
newConnectedDevice = false
break;
} else {
console.log('break ?')
}
}
if( newConnectedDevice === true ) {
//console.log('device news')
setConnectedDeviceList([...connectedDeviceList, device])
}
setConnectedDeviceName(device.name);
setConnectedDeviceStatus(true);
setConnectedDevice(device);
//check deconnection
//listenerDeviceDisconnect(deviceId);
//store in AsyncStorage deviceId
//storeDeviceConnected(device.id)
//console.log('connectedDevice',connectedDevice)
console.log('Discovering services and characteristics');
device.discoverAllServicesAndCharacteristics()
.then(device=>{ console.log('device discover',device.name)})
.catch(c=>{console.log('error discover',c)})
})
.then((device) => {
console.log('Setting notifications');
//const services = device.services();
})
.catch(error => {
if(error) {
console.log('error connectToDevice',error)
}
})
}
Hi !
Recently I have some iOS phone that failed to keep the connection active. I can connect to my device, but after some delay (it looks like every time, 30s after connecting), it gets automatically disconnected.
When I check with onDeviceDisconnected
I have no error.
Any idea why ?
2021-02-18 22:45:41.863 18865-20061/com.datagarden.plantwaveandroid W/ReactNativeJS: Possible Unhandled Promise Rejection (id: 0):
BleError: Characteristic 6e400002-b5a3-f393-e0a9-e50e24dcca9e write failed for device FC:F5:C4:08:98:6A and service 6e400001-b5a3-f393-e0a9-e50e24dcca9
2021-02-18 23:17:19.443 28788-30924/com.datagarden.plantwaveandroid W/RxBle#ConnectionOperationQueue: Queue's awaitRelease() has been interrupted abruptly while it wasn't released by the release() method.
java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:442)
at java.lang.Object.wait(Object.java:568)
at com.polidea.rxandroidble.internal.serialization.QueueSemaphore.awaitRelease(QueueSemaphore.java:15)
at com.polidea.rxandroidble.internal.serialization.ConnectionOperationQueueImpl$1.run(ConnectionOperationQueueImpl.java:73)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
2021-02-18 23:17:19.597 28788-28788/com.datagarden.plantwaveandroid E/ViewRootImpl: sendUserActionEvent() mView returned.
2021-02-17 10:13:14.105 -0500 EST error RN Method.java:-2 java.lang.reflect.Method.invoke 20681_46fa990f-2e9b-5bc0-9823-5cbbdb28e927 4.15.15 1024605174 en 10 245213 106 Error while reading characteristic (service: 0000181c-0000-1000-8000-00805f9b34fb, characteristic: 00002B00-0000-1000-8000-00805f9b34fb): Error BleError: Characteristic 00002b00-0000-1000-8000-00805f9b34fb read failed for device 08:7C:BE:7F:1A:1F and service 0000181c-0000-1000-8000-00805f9b34fb
2021-02-17 10:13:14.111 -0500 EST error RN Method.java:-2 java.lang.reflect.Method.invoke 20681_46fa990f-2e9b-5bc0-9823-5cbbdb28e927 4.15.15 1024605174 en 10 245213 107 BleError: Characteristic 00002b00-0000-1000-8000-00805f9b34fb read failed for device 08:7C:BE:7F:1A:1F and service 0000181c-0000-1000-8000-00805f9b34fb
2021-02-17 10:13:14.118 -0500 EST error RN Method.java:-2 java.lang.reflect.Method.invoke 20681_46fa990f-2e9b-5bc0-9823-5cbbdb28e927 4.15.15 1024605174 en 10 245213 108 Error while reading characteristic (service: 0000181c-0000-1000-8000-00805f9b34fb, characteristic: 00002B03-0000-1000-8000-00805f9b34fb): Error BleError: Device 08:7C:BE:7F:1A:1F is not connected
2021-02-17 10:13:14.119 -0500 EST warning RN Method.java:-2 java.lang.reflect.Method.invoke 20681_46fa990f-2e9b-5bc0-9823-5cbbdb28e927 4.15.15 1024605174 en 10 245213 109 connection error: Device 08:7C:BE:7F:1A:1F is not connected, retry: 2
2021-02-17 10:13:14.131 -0500 EST warning RN Method.java:-2 java.lang.reflect.Method.invoke 20681_46fa990f-2e9b-5bc0-9823-5cbbdb28e927 4.15.15 1024605174 en 10 245213 110 BleError: Device 08:7C:BE:7F:1A:1F is not connected
2021-02-17 10:13:16.405 -0500 EST error RN Method.java:-2 java.lang.reflect.Method.invoke 20681_46fa990f-2e9b-5bc0-9823-5cbbdb28e927 4.15.15 1024605174 en 10 245213 122 Error while reading characteristic (service: 0000181c-0000-1000-8000-00805f9b34fb, characteristic: 00002B00-0000-1000-8000-00805f9b34fb): Error BleError: Device 08:7C:BE:7F:1A:1F was disconnected
2021-02-17 10:13:19.725 -0500 EST error RN Method.java:-2 java.lang.reflect.Method.invoke 20681_46fa990f-2e9b-5bc0-9823-5cbbdb28e927 4.15.15 1024605174 en 10 245213 133 Error while reading characteristic (service: 0000181c-0000-1000-8000-00805f9b34fb, characteristic: 00002B00-0000-1000-8000-00805f9b34fb): Error BleError: Characteristic 00002b00-0000-1000-8000-00805f9b34fb read failed for device 08:7C:BE:7F:1A:1F and service 0000181c-0000-1000-8000-00805f9b34fb
2021-02-17 10:13:19.726 -0500 EST error RN Method.java:-2 java.lang.reflect.Method.invoke 20681_46fa990f-2e9b-5bc0-9823-5cbbdb28e927 4.15.15 1024605174 en 10 245213 134 BleError: Characteristic 00002b00-0000-1000-8000-00805f9b34fb read failed for device 08:7C:BE:7F:1A:1F and service 0000181c-0000-1000-8000-00805f9b34fb
2021-02-17 10:13:19.733 -0500 EST error RN Method.java:-2 java.lang.reflect.Method.invoke 20681_46fa990f-2e9b-5bc0-9823-5cbbdb28e927 4.15.15 1024605174 en 10 245213 135 Error while reading characteristic (service: 0000181c-0000-1000-8000-00805f9b34fb, characteristic: 00002B03-0000-1000-8000-00805f9b34fb): Error BleError: Device 08:7C:BE:7F:1A:1F is not connected
2021-02-17 10:13:19.734 -0500 EST warning RN Method.java:-2 java.lang.reflect.Method.invoke 20681_46fa990f-2e9b-5bc0-9823-5cbbdb28e927 4.15.15 1024605174 en 10 245213 136 connection error: Device 08:7C:BE:7F:1A:1F is not connected, retry: 2
2021-02-17 10:13:19.746 -0500 EST warning RN Method.java:-2 java.lang.reflect.Method.invoke 20681_46fa990f-2e9b-5bc0-9823-5cbbdb28e927 4.15.15 1024605174 en 10 245213 137 BleError: Device 08:7C:BE:7F:1A:1F is not connected
2021-02-17 10:13:25.184 -0500 EST error RN Method.java:-2 java.lang.reflect.Method.invoke 20681_46fa990f-2e9b-5bc0-9823-5cbbdb28e927 4.15.15 1024605174 en 10 245213 159 Error while reading characteristic (service: 0000181c-0000-1000-8000-00805f9b34fb, characteristic: 00002B00-0000-1000-8000-00805f9b34fb): Error BleError: Characteristic 00002b00-0000-1000-8000-00805f9b34fb read failed for device 08:7C:BE:7F:1A:1F and service 0000181c-0000-1000-8000-00805f9b34fb
2021-02-17 10:13
Hi All,
I am writing an application where I am firing notifications on a characteristic at every 25ms. I am successfully reading them in my app for a while when suddenly I am getting the following error:
Warning: Please report: Excessive number of pending callbacks: 501. Some pending callbacks that might have leaked by never being called from native code: {"3067":{"module":"BleClientManager","method":"monitorCharacteristicForDevice"},"20750":{"module":"BleClientManager","method":"readCharacteristic"},"20767":{},"20793":{"module":"BleClientManager","method":"readCharacteristic"},"20799":{"module":"BleClientManager","method":"readCharacteristic"},"20826":{"module":"BleClientManager","method":"readCharacteristic"},"20848":{"module":"BleClientManager","method":"readCharacteristic"},"20859":{},"20875":{"module":"BleClientManager","method":"readCharacteristic"},"....... and this goes on.
I guess I am firing up events faster than react is capable of handling them.
Do you guys see any errors in my code? Or is it fine and my options are to switch to native or decrease the notification frequency?
device.monitorCharacteristicForService(service, characteristic, (error, characteristic) => {
if (error) {
console.log(`registerNotifyReadCallback; error ${error}`);
return;
}
const value = characteristic?.read().then(data => {
console.log("value")
const decodedResponse = base64.decode(data.value);
console.log(decodedResponse)
callback(decodedResponse);
});
});
callback in this case is just simply a set method of a hook state
(const [remoteVal, setRemoteVal] = useState<string>("");
)
BleClientManager
@ReactMethod
public void pairedDevices(final Promise promise) {
bleAdapter.getBondedDevices(
new OnSuccessCallback<Device[]>() {
@Override
public void onSuccess(Device[] data) {
WritableArray jsDevices = Arguments.createArray();
for (Device device : data) {
jsDevices.pushMap(deviceConverter.toJSObject(device));
}
promise.resolve(jsDevices);
}
}, new OnErrorCallback() {
@Override
public void onError(BleError error) {
promise.reject(null, errorConverter.toJs(error));
}
});
}
BleManager.js
/**
* Returns a list of paired devices.
* @returns {Promise < Array < Device >>} List of paired devices.
*/
async pairedDevices(): Promise<Array<Device>> {
const nativeDevices = await this._callPromise(BleModule.pairedDevices())
return nativeDevices.map((nativeDevice: NativeDevice) => {
return new Device(nativeDevice, this)
})
}
BleModule
/**
* Returns a list of paired peripherals by their identifiers.
* @returns {Promise<Array<NativeDevice>>} List of paired devices.
* @private
*/
pairedDevices(): Promise<Array<NativeDevice>>;
Could not determine artifacts for com.github.Polidea:MultiPlatformBleAdapter:b0272c0fae040cc90f790481c54e8f2d45304339: Skipped due to earlier error (2 m 58 s 299 ms)
dependencies {
implementation "com.facebook.react:react-native:+"
implementation 'com.github.Polidea:MultiPlatformBleAdapter:b0272c0fae040cc90f790481c54e8f2d45304339'
}