Merge pull request #117 from wel97459/dev-reconnection

This cures a race condition that was messing up the disconnection handler.
Before the bluetooth device was fully connected _handleDisconnection() was being called from the lisener.
This commit is contained in:
Winston Lowe 2026-01-31 22:28:35 -08:00 committed by GitHub
commit 4650584f9b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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<void> _requestDeviceInfo() async {
if (!isConnected || _awaitingSelfInfo) return;
_awaitingSelfInfo = true;
await sendFrame(buildDeviceQueryFrame());
await sendFrame(buildAppStartFrame());