From ecf99f666cc160588973d8016f6692221bf3c372 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Tue, 12 Jan 2016 13:05:47 -0800 Subject: [PATCH] Keep track of USB direct connection links --- src/comm/LinkManager.cc | 2 ++ src/comm/SerialLink.cc | 10 ++++++++++ src/comm/SerialLink.h | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/src/comm/LinkManager.cc b/src/comm/LinkManager.cc index a3a5b5d14..870c67e15 100644 --- a/src/comm/LinkManager.cc +++ b/src/comm/LinkManager.cc @@ -508,11 +508,13 @@ void LinkManager::_updateAutoConnectLinks(void) case QGCSerialPortInfo::BoardTypePX4FMUV4: if (_autoconnectPixhawk) { pSerialConfig = new SerialConfiguration(QString("Pixhawk on %1").arg(portInfo.portName().trimmed())); + pSerialConfig->setUsbDirect(true); } break; case QGCSerialPortInfo::BoardTypeAeroCore: if (_autoconnectPixhawk) { pSerialConfig = new SerialConfiguration(QString("AeroCore on %1").arg(portInfo.portName().trimmed())); + pSerialConfig->setUsbDirect(true); } break; case QGCSerialPortInfo::BoardTypePX4Flow: diff --git a/src/comm/SerialLink.cc b/src/comm/SerialLink.cc index 506d988aa..524683ff8 100644 --- a/src/comm/SerialLink.cc +++ b/src/comm/SerialLink.cc @@ -388,6 +388,7 @@ SerialConfiguration::SerialConfiguration(const QString& name) : LinkConfiguratio _parity = QSerialPort::NoParity; _dataBits = 8; _stopBits = 1; + _usbDirect = false; } SerialConfiguration::SerialConfiguration(SerialConfiguration* copy) : LinkConfiguration(copy) @@ -399,6 +400,7 @@ SerialConfiguration::SerialConfiguration(SerialConfiguration* copy) : LinkConfig _stopBits = copy->stopBits(); _portName = copy->portName(); _portDisplayName = copy->portDisplayName(); + _usbDirect = copy->_usbDirect; } void SerialConfiguration::copyFrom(LinkConfiguration *source) @@ -413,6 +415,7 @@ void SerialConfiguration::copyFrom(LinkConfiguration *source) _stopBits = ssource->stopBits(); _portName = ssource->portName(); _portDisplayName = ssource->portDisplayName(); + _usbDirect = ssource->_usbDirect; } void SerialConfiguration::updateSettings() @@ -554,3 +557,10 @@ void SerialConfiguration::_initBaudRates() kSupportedBaudRates << "921600"; } +void SerialConfiguration::setUsbDirect(bool usbDirect) +{ + if (_usbDirect != usbDirect) { + _usbDirect = usbDirect; + emit usbDirectChanged(_usbDirect); + } +} diff --git a/src/comm/SerialLink.h b/src/comm/SerialLink.h index 7f43d62aa..225536fc5 100644 --- a/src/comm/SerialLink.h +++ b/src/comm/SerialLink.h @@ -73,12 +73,14 @@ public: Q_PROPERTY(int parity READ parity WRITE setParity NOTIFY parityChanged) Q_PROPERTY(QString portName READ portName WRITE setPortName NOTIFY portNameChanged) Q_PROPERTY(QString portDisplayName READ portDisplayName NOTIFY portDisplayNameChanged) + Q_PROPERTY(bool usbDirect READ usbDirect WRITE setUsbDirect NOTIFY usbDirectChanged) ///< true: direct usb connection to board int baud() { return _baud; } int dataBits() { return _dataBits; } int flowControl() { return _flowControl; } ///< QSerialPort Enums int stopBits() { return _stopBits; } int parity() { return _parity; } ///< QSerialPort Enums + bool usbDirect() { return _usbDirect; } const QString portName () { return _portName; } const QString portDisplayName () { return _portDisplayName; } @@ -89,6 +91,7 @@ public: void setStopBits (int stopBits); void setParity (int parity); ///< QSerialPort Enums void setPortName (const QString& portName); + void setUsbDirect (bool usbDirect); static QStringList supportedBaudRates(); static QString cleanPortDisplayname(const QString name); @@ -109,6 +112,7 @@ signals: void parityChanged (); void portNameChanged (); void portDisplayNameChanged (); + void usbDirectChanged (bool usbDirect); private: static void _initBaudRates(); @@ -121,6 +125,7 @@ private: int _parity; QString _portName; QString _portDisplayName; + bool _usbDirect; }; /** -- 2.22.0