ports property
Set<SerialPort>
ports
Creates a set of available SerialPort
s 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();
}