Unverified Commit 5db0b39b authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #8900 from DonLakeFlyer/CherryPickCompositeUSB

Serial number based composite usb check
parents a75e0fb5 d127d07c
......@@ -294,35 +294,17 @@ QString QGCSerialPortInfo::_boardTypeToString(BoardType_t boardType)
QList<QGCSerialPortInfo> QGCSerialPortInfo::availablePorts(void)
{
// Cube Orange/Yellow are composite devices which expose two usb ports over a single usb connection.
// The first port is the mavlink connection, the second is the SLCAN connection by default.
// We don't expose the second port as being available to QGC.
static const int hexCubeVID = 11694;
static const int hexCubeOrangePID = 4118;
static const int hexCubeYellowPID = 4114;
bool cubeOrangeAlreadySeen = false;
bool cubeYellowAlreadySeen = false;
QList<QGCSerialPortInfo> list;
QStringList seenSerialNumbers;
for(QSerialPortInfo portInfo: QSerialPortInfo::availablePorts()) {
if (!isSystemPort(&portInfo)) {
if (portInfo.vendorIdentifier() == hexCubeVID && portInfo.productIdentifier() == hexCubeOrangePID) {
if (cubeOrangeAlreadySeen) {
continue;
}
qCDebug(QGCSerialPortInfoLog) << "Skipping secondary port on Cube Orange" << portInfo.portName();
cubeOrangeAlreadySeen = true;
}
if (portInfo.vendorIdentifier() == hexCubeVID && portInfo.productIdentifier() == hexCubeYellowPID) {
if (cubeYellowAlreadySeen) {
continue;
}
qCDebug(QGCSerialPortInfoLog) << "Skipping secondary port on Cube Yellow" << portInfo.portName();
cubeYellowAlreadySeen = true;
if (seenSerialNumbers.contains(portInfo.serialNumber())) {
// Some boards are a composite USB device, with the first port being mavlink and the second something else
qCDebug(QGCSerialPortInfoLog) << "Skipping secondary port on same device" << portInfo.portName() << portInfo.serialNumber();
continue;
}
seenSerialNumbers.append(portInfo.serialNumber());
list << *((QGCSerialPortInfo*)&portInfo);
}
}
......
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