Merge pull request #2047 from iNavFlight/linux_filter_serial_names

Filter list of Linux devices to more sane set (front page and SITL)
pull/2043/head^2
Paweł Spychalski 5 months ago committed by GitHub
commit eca90fc2f1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -18,13 +18,13 @@ class ConnectionSerial extends Connection {
super._type = ConnectionType.Serial;
}
connectImplementation(path, options, callback) {
connectImplementation(path, options, callback) {
try {
this._serialport = new SerialPortStream({binding, path: path, baudRate: options.bitrate, autoOpen: true}, () => {
if (callback) {
callback({
connectionId: ++this._connectionId,
bitrate: options.bitrate
bitrate: options.bitrate
});
}
});
@ -50,12 +50,12 @@ class ConnectionSerial extends Connection {
this.abort();
console.log("Serial error: " + error);
this._onReceiveErrorListeners.forEach(listener => {
listener(error);
listener(error);
});
});
}
disconnectImplementation(callback) {
disconnectImplementation(callback) {
if (this._serialport && this._serialport.isOpen) {
this._serialport.close(error => {
if (error) {
@ -68,7 +68,7 @@ class ConnectionSerial extends Connection {
callback(true);
}
}
sendImplementation(data, callback) {
if (this._serialport && this._serialport.isOpen) {
this._serialport.write(Buffer.from(data), error => {
@ -105,14 +105,23 @@ class ConnectionSerial extends Connection {
this._onReceiveErrorListeners = this._onReceiveErrorListeners.filter(listener => listener !== callback);
}
static async getDevices(callback) {
static async getDevices(callback) {
SerialPort.list().then((ports, error) => {
var devices = [];
if (error) {
GUI.log("Unable to list serial ports.");
} else {
ports.forEach(port => {
devices.push(port.path);
if (GUI.operating_system == 'Linux') {
/* Limit to: USB serial, RFCOMM (BT), 6 legacy devices */
if (port.pnpId ||
port.path.match(/rfcomm\d*/) ||
port.path.match(/ttyS[0-5]$/)) {
devices.push(port.path);
}
} else {
devices.push(port.path);
}
});
}
if (callback)

@ -138,19 +138,20 @@ var Ser2TCP = {
var devices = [];
if (error) {
GUI.log("Unable to list serial ports.");
} else {
} else {
ports.forEach((device) => {
if (GUI.operating_system == 'Windows') {
var m = device.path.match(/COM\d?\d/g)
if (m)
devices.push(m[0]);
} else {
if (device.displayName != null) {
var m = device.path.match(/\/dev\/.*/)
if (m)
devices.push(m[0]);
/* Limit to: USB serial, RFCOMM (BT), 6 legacy devices */
if (device.pnpId ||
device.path.match(/rfcomm\d*/) ||
device.path.match(/ttyS[0-5]$/)) {
devices.push(device.path);
}
}
}
});
}
callback(devices);
@ -231,7 +232,7 @@ var SITLProcess = {
if (err)
console.log(err);
});
} else {
alert(GUI.operating_system);
return;

Loading…
Cancel
Save