scanForAomucDevices method
Implementation
Future<List<NASDeviceInfo>> scanForAomucDevices({
int timeout = 20,
int retryCount = 2,
}) async {
final List<NASDeviceInfo> foundDevices = [];
final Completer<List<NASDeviceInfo>> completer = Completer();
int attempts = 0;
while (attempts < retryCount && foundDevices.isEmpty) {
attempts++;
print('开始第 $attempts 次扫描尝试...');
try {
await start(
(devices) {
foundDevices.clear();
foundDevices.addAll(devices);
// 过滤出_amc-connect相关的设备
final aomucDevices = devices.where((device) =>
device.serviceType.contains('_amc-connect') ||
device.serviceName.toLowerCase().contains('aomuc')
).toList();
if (aomucDevices.isNotEmpty && !completer.isCompleted) {
completer.complete(aomucDevices);
}
},
timeout: timeout,
);
if (!completer.isCompleted) {
await Future.delayed(Duration(seconds: 1));
}
} catch (e) {
print('第 $attempts 次扫描失败: $e');
}
}
if (!completer.isCompleted) {
completer.complete(foundDevices);
}
return completer.future;
}