scanAllDevices method

Future<List<NASDeviceInfo>> scanAllDevices({
  1. int timeout = 30,
  2. bool includeAllServices = true,
})

Implementation

Future<List<NASDeviceInfo>> scanAllDevices({
  int timeout = 30,
  bool includeAllServices = true,
}) async {
  final List<NASDeviceInfo> allDevices = [];
  final Completer<List<NASDeviceInfo>> completer = Completer();

  // 添加默认设备
  // try {
  //   final defaultDevice = await NasDeviceConfig.getCurrentNasDevice();
  //   allDevices.add(defaultDevice);
  //   print('已添加默认设备: ${defaultDevice.sn}');
  // } catch (e) {
  //   print('添加默认设备失败: $e');
  // }

  try {
    await start(
      (devices) {
        // 合并所有发现的设备,包括默认设备
        final uniqueDevices = devices.toSet().toList();
        if (!completer.isCompleted) {
          completer.complete(uniqueDevices);
        }
      },
      timeout: timeout,
    );
  } catch (e) {
    print('扫描失败: $e');
    if (!completer.isCompleted) {
      completer.complete(allDevices);
    }
  }

  return completer.future;
}