Commit 2732e9a5 authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #4289 from DonLakeFlyer/AndroidSerial

Android build stop serial probe after first connect
parents 7266bb3c 2135a25d
......@@ -490,7 +490,16 @@ void LinkManager::_updateAutoConnectLinks(void)
#ifndef NO_SERIAL_LINK
QStringList currentPorts;
QList<QGCSerialPortInfo> portList = QGCSerialPortInfo::availablePorts();
QList<QGCSerialPortInfo> portList;
#ifdef __android__
// Android builds only support a single serial connection. Repeatedly calling availablePorts after that one serial
// port is connected leaks file handles due to a bug somewhere in android serial code. In order to work around that
// bug after we connect the first serial port we stop probing for additional ports.
if (!_autoconnectConfigurations.count()) {
portList = QGCSerialPortInfo::availablePorts();
}
#endif
// Iterate Comm Ports
foreach (QGCSerialPortInfo portInfo, portList) {
......@@ -601,6 +610,13 @@ void LinkManager::_updateAutoConnectLinks(void)
}
}
#ifndef __android__
// Android builds only support a single serial connection. Repeatedly calling availablePorts after that one serial
// port is connected leaks file handles due to a bug somewhere in android serial code. In order to work around that
// bug after we connect the first serial port we stop probing for additional ports. The means we must rely on
// the port disconnecting itself when the radio is pulled to signal communication list as opposed to automatically
// closing the Link.
// Now we go through the current configuration list and make sure any dynamic config has gone away
QList<LinkConfiguration*> _confToDelete;
for (int i=0; i<_autoconnectConfigurations.count(); i++) {
......@@ -633,6 +649,7 @@ void LinkManager::_updateAutoConnectLinks(void)
}
delete pDeleteConfig;
}
#endif
#endif // NO_SERIAL_LINK
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment