diff --git a/lib/connector/meshcore_connector.dart b/lib/connector/meshcore_connector.dart index 1bab130..3a36a92 100644 --- a/lib/connector/meshcore_connector.dart +++ b/lib/connector/meshcore_connector.dart @@ -706,7 +706,7 @@ class MeshCoreConnector extends ChangeNotifier { try { _connectionSubscription = device.connectionState.listen((state) { - if (state == BluetoothConnectionState.disconnected) { + if (state == BluetoothConnectionState.disconnected && isConnected) { _handleDisconnection(); } }); @@ -959,12 +959,7 @@ class MeshCoreConnector extends ChangeNotifier { if (!isConnected) return; if (_batteryRequested && !force) return; _batteryRequested = true; - try { - await sendFrame(buildGetBattAndStorageFrame()); - } catch (e) { - // Connection likely lost - trigger disconnection handling - _handleDisconnection(); - } + await sendFrame(buildGetBattAndStorageFrame()); } void _startBatteryPolling() { @@ -995,6 +990,7 @@ class MeshCoreConnector extends ChangeNotifier { } Future _requestDeviceInfo() async { + if (!isConnected || _awaitingSelfInfo) return; _awaitingSelfInfo = true; await sendFrame(buildDeviceQueryFrame()); await sendFrame(buildAppStartFrame());