@@ -5,6 +5,7 @@ import 'dart:async';
55import 'package:logger/logger.dart' ;
66import 'package:meta/meta.dart' ;
77import 'package:open_earable_flutter/src/managers/exg/exg_factory.dart' ;
8+ import 'package:open_earable_flutter/src/exceptions/device_exception.dart' ;
89import 'package:open_earable_flutter/src/models/devices/cosinuss_one_factory.dart' ;
910import 'package:open_earable_flutter/src/models/devices/esense_factory.dart' ;
1011import 'package:open_earable_flutter/src/models/devices/open_earable_factory.dart' ;
@@ -195,7 +196,7 @@ class WearableManager {
195196 }) async {
196197 if (_connectedIds.contains (device.id)) {
197198 logger.w ('Device ${device .id } is already connected' );
198- throw Exception ( 'Device is already connected' );
199+ throw AlreadyConnectedException ( );
199200 }
200201 _connectingStreamController.add (device);
201202
@@ -228,9 +229,9 @@ class WearableManager {
228229 }
229230 _connectedIds.remove (device.id);
230231 await _bleManager.disconnect (device.id);
231- throw Exception ( 'Device is currently not supported' );
232+ throw UnsupportedDeviceException ( );
232233 } else {
233- throw Exception ( 'Failed to connect to device' );
234+ throw ConnectionFailedException ( );
234235 }
235236 }
236237
@@ -254,12 +255,25 @@ class WearableManager {
254255 );
255256 connectedWearables.add (wearable);
256257 } catch (e) {
257- logger.e ('Failed to connect to system device ${device .id }: $e ' );
258+ logger.e (
259+ 'Failed to connect to system device ${device .id }: ${deviceErrorMessage (e , device .name )}' ,
260+ );
258261 }
259262 }
260263 return connectedWearables;
261264 }
262265
266+ String deviceErrorMessage (dynamic e, String deviceName) {
267+ return switch (e) {
268+ UnsupportedDeviceException _ => 'Device "$deviceName " is not supported.' ,
269+ AlreadyConnectedException _ =>
270+ 'Device "$deviceName " is already connected.' ,
271+ ConnectionFailedException _ =>
272+ 'Failed to connect to device "$deviceName ". Please try again.' ,
273+ _ => e.toString (),
274+ };
275+ }
276+
263277 void addPairingRule (PairingRule rule) {
264278 _pairingManager.addRule (rule);
265279 }
@@ -294,7 +308,9 @@ class WearableManager {
294308 try {
295309 await connectToDevice (discoveredDevice);
296310 } catch (e) {
297- logger.e ('Error auto connecting device ${discoveredDevice .id }: $e ' );
311+ logger.e (
312+ 'Error auto connecting device ${discoveredDevice .id }: ${deviceErrorMessage (e , discoveredDevice .name )}' ,
313+ );
298314 }
299315 }
300316 });
0 commit comments