ports property

Set<SerialPort> ports

Creates a set of available SerialPorts on your system and returns it.

Implementation

static Set<SerialPort> get ports {
  if (!Platform.isLinux && !Platform.isAndroid) {
    throw StateError("This package only works on linux / android.");
  }

  return Directory(
    "/sys/dev/char",
  ).listSync(followLinks: false).map((element) {
    final match = RegExp("^([0-9]*):([0-9]*)\$").allMatches(basename(element.path)).single;
    final major = int.parse(match.group(1)!);
    final minor = int.parse(match.group(2)!);
    final name = basename(element.resolveSymbolicLinksSync());

    return Tuple3<String, int, int>(name, major, minor);
  }).where((tuple) {
    final major = tuple.item2;
    final minor = tuple.item3;

    if (major == 4 && minor >= 64) {
      return true;
    } else if (_pureSerialMajorNrs.contains(major)) {
      return true;
    } else {
      return false;
    }
  }).map((e) {
    final name = e.item1;
    final major = e.item2;
    final minor = e.item3;

    return SerialPort("/dev/$name", major, minor, _getDescriptionForMagicNumbers(major, minor) ?? "");
  }).toSet();
}