Skip to content

Commit 6096aa3

Browse files
committed
Cleanup and Improve QGCApplication
1 parent 95b4d5a commit 6096aa3

File tree

9 files changed

+969
-432
lines changed

9 files changed

+969
-432
lines changed

src/Comms/LinkManager.cc

Lines changed: 92 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -410,80 +410,6 @@ void LinkManager::_addMAVLinkForwardingLink()
410410
_createDynamicForwardLink(_mavlinkForwardingLinkName, hostName);
411411
}
412412

413-
#ifdef QGC_ZEROCONF_ENABLED
414-
void LinkManager::_addZeroConfAutoConnectLink()
415-
{
416-
if (!_autoConnectSettings->autoConnectZeroConf()->rawValue().toBool()) {
417-
return;
418-
}
419-
420-
static QSharedPointer<QMdnsEngine::Server> server;
421-
static QSharedPointer<QMdnsEngine::Browser> browser;
422-
server.reset(new QMdnsEngine::Server());
423-
browser.reset(new QMdnsEngine::Browser(server.get(), QMdnsEngine::MdnsBrowseType));
424-
425-
const auto checkIfConnectionLinkExist = [this](LinkConfiguration::LinkType linkType, const QString &linkName) {
426-
for (const SharedLinkInterfacePtr &link : std::as_const(_rgLinks)) {
427-
const SharedLinkConfigurationPtr linkConfig = link->linkConfiguration();
428-
if ((linkConfig->type() == linkType) && (linkConfig->name() == linkName)) {
429-
return true;
430-
}
431-
}
432-
433-
return false;
434-
};
435-
436-
(void) connect(browser.get(), &QMdnsEngine::Browser::serviceAdded, this, [checkIfConnectionLinkExist, this](const QMdnsEngine::Service &service) {
437-
qCDebug(LinkManagerLog) << "Found Zero-Conf:" << service.type() << service.name() << service.hostname() << service.port() << service.attributes();
438-
439-
if (!service.type().startsWith("_mavlink")) {
440-
qCWarning(LinkManagerLog) << "Invalid ZeroConf SericeType" << service.type();
441-
return;
442-
}
443-
444-
// Windows doesnt accept trailling dots in mdns
445-
// http://www.dns-sd.org/trailingdotsindomainnames.html
446-
QString hostname = service.hostname();
447-
if (hostname.endsWith('.')) {
448-
hostname.chop(1);
449-
}
450-
451-
if (service.type().startsWith("_mavlink._udp")) {
452-
static const QString udpName = QStringLiteral("ZeroConf UDP");
453-
if (checkIfConnectionLinkExist(LinkConfiguration::TypeUdp, udpName)) {
454-
qCDebug(LinkManagerLog) << "Connection already exist";
455-
return;
456-
}
457-
458-
UDPConfiguration *const link = new UDPConfiguration(udpName);
459-
link->addHost(hostname, service.port());
460-
link->setAutoConnect(true);
461-
link->setDynamic(true);
462-
SharedLinkConfigurationPtr config = addConfiguration(link);
463-
if (!createConnectedLink(config)) {
464-
qCWarning(LinkManagerLog) << "Failed to create" << udpName;
465-
}
466-
} else if (service.type().startsWith("_mavlink._tcp")) {
467-
static QString tcpName = QStringLiteral("ZeroConf TCP");
468-
if (checkIfConnectionLinkExist(LinkConfiguration::TypeTcp, tcpName)) {
469-
qCDebug(LinkManagerLog) << "Connection already exist";
470-
return;
471-
}
472-
473-
TCPConfiguration *const link = new TCPConfiguration(tcpName);
474-
link->setHost(hostname);
475-
link->setPort(service.port());
476-
link->setAutoConnect(true);
477-
link->setDynamic(true);
478-
SharedLinkConfigurationPtr config = addConfiguration(link);
479-
if (!createConnectedLink(config)) {
480-
qCWarning(LinkManagerLog) << "Failed to create" << tcpName;
481-
}
482-
}
483-
});
484-
}
485-
#endif
486-
487413
void LinkManager::_updateAutoConnectLinks()
488414
{
489415
if (_connectionsSuspended) {
@@ -744,6 +670,89 @@ void LinkManager::_createDynamicForwardLink(const char *linkName, const QString
744670
qCDebug(LinkManagerLog) << "New dynamic MAVLink forwarding port added:" << linkName << " hostname:" << hostName;
745671
}
746672

673+
void LinkManager::resetMavlinkSigning()
674+
{
675+
for (const SharedLinkInterfacePtr &sharedLink: _rgLinks) {
676+
sharedLink->initMavlinkSigning();
677+
}
678+
}
679+
680+
#ifdef QGC_ZEROCONF_ENABLED
681+
682+
void LinkManager::_addZeroConfAutoConnectLink()
683+
{
684+
if (!_autoConnectSettings->autoConnectZeroConf()->rawValue().toBool()) {
685+
return;
686+
}
687+
688+
static QSharedPointer<QMdnsEngine::Server> server;
689+
static QSharedPointer<QMdnsEngine::Browser> browser;
690+
server.reset(new QMdnsEngine::Server());
691+
browser.reset(new QMdnsEngine::Browser(server.get(), QMdnsEngine::MdnsBrowseType));
692+
693+
const auto checkIfConnectionLinkExist = [this](LinkConfiguration::LinkType linkType, const QString &linkName) {
694+
for (const SharedLinkInterfacePtr &link : std::as_const(_rgLinks)) {
695+
const SharedLinkConfigurationPtr linkConfig = link->linkConfiguration();
696+
if ((linkConfig->type() == linkType) && (linkConfig->name() == linkName)) {
697+
return true;
698+
}
699+
}
700+
701+
return false;
702+
};
703+
704+
(void) connect(browser.get(), &QMdnsEngine::Browser::serviceAdded, this, [checkIfConnectionLinkExist, this](const QMdnsEngine::Service &service) {
705+
qCDebug(LinkManagerLog) << "Found Zero-Conf:" << service.type() << service.name() << service.hostname() << service.port() << service.attributes();
706+
707+
if (!service.type().startsWith("_mavlink")) {
708+
qCWarning(LinkManagerLog) << "Invalid ZeroConf SericeType" << service.type();
709+
return;
710+
}
711+
712+
// Windows doesnt accept trailling dots in mdns
713+
// http://www.dns-sd.org/trailingdotsindomainnames.html
714+
QString hostname = service.hostname();
715+
if (hostname.endsWith('.')) {
716+
hostname.chop(1);
717+
}
718+
719+
if (service.type().startsWith("_mavlink._udp")) {
720+
static const QString udpName = QStringLiteral("ZeroConf UDP");
721+
if (checkIfConnectionLinkExist(LinkConfiguration::TypeUdp, udpName)) {
722+
qCDebug(LinkManagerLog) << "Connection already exist";
723+
return;
724+
}
725+
726+
UDPConfiguration *const link = new UDPConfiguration(udpName);
727+
link->addHost(hostname, service.port());
728+
link->setAutoConnect(true);
729+
link->setDynamic(true);
730+
SharedLinkConfigurationPtr config = addConfiguration(link);
731+
if (!createConnectedLink(config)) {
732+
qCWarning(LinkManagerLog) << "Failed to create" << udpName;
733+
}
734+
} else if (service.type().startsWith("_mavlink._tcp")) {
735+
static QString tcpName = QStringLiteral("ZeroConf TCP");
736+
if (checkIfConnectionLinkExist(LinkConfiguration::TypeTcp, tcpName)) {
737+
qCDebug(LinkManagerLog) << "Connection already exist";
738+
return;
739+
}
740+
741+
TCPConfiguration *const link = new TCPConfiguration(tcpName);
742+
link->setHost(hostname);
743+
link->setPort(service.port());
744+
link->setAutoConnect(true);
745+
link->setDynamic(true);
746+
SharedLinkConfigurationPtr config = addConfiguration(link);
747+
if (!createConnectedLink(config)) {
748+
qCWarning(LinkManagerLog) << "Failed to create" << tcpName;
749+
}
750+
}
751+
});
752+
}
753+
754+
#endif // QGC_ZEROCONF_ENABLED
755+
747756
bool LinkManager::isLinkUSBDirect(const LinkInterface *link)
748757
{
749758
#ifndef QGC_NO_SERIAL_LINK
@@ -766,14 +775,18 @@ bool LinkManager::isLinkUSBDirect(const LinkInterface *link)
766775
return false;
767776
}
768777

769-
void LinkManager::resetMavlinkSigning()
778+
#ifndef QGC_NO_SERIAL_LINK // Serial Only Functions
779+
780+
bool LinkManager::_isSerialPortConnected() const
770781
{
771-
for (const SharedLinkInterfacePtr &sharedLink: _rgLinks) {
772-
sharedLink->initMavlinkSigning();
782+
for (const SharedLinkInterfacePtr &link: _rgLinks) {
783+
if (qobject_cast<const SerialLink*>(link.get())) {
784+
return true;
785+
}
773786
}
774-
}
775787

776-
#ifndef QGC_NO_SERIAL_LINK // Serial Only Functions
788+
return false;
789+
}
777790

778791
void LinkManager::_filterCompositePorts(QList<QGCSerialPortInfo> &portList)
779792
{
@@ -997,15 +1010,4 @@ QStringList LinkManager::serialBaudRates()
9971010
return SerialConfiguration::supportedBaudRates();
9981011
}
9991012

1000-
bool LinkManager::_isSerialPortConnected() const
1001-
{
1002-
for (const SharedLinkInterfacePtr &link: _rgLinks) {
1003-
if (qobject_cast<const SerialLink*>(link.get())) {
1004-
return true;
1005-
}
1006-
}
1007-
1008-
return false;
1009-
}
1010-
10111013
#endif // QGC_NO_SERIAL_LINK

src/Comms/LinkManager.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ class SerialLink;
3434
class UDPConfiguration;
3535
class UdpIODevice;
3636

37-
/// @brief Manage communication links
38-
/// The Link Manager organizes the physical Links. It can manage arbitrary
39-
/// links and takes care of connecting them as well assigning the correct
40-
/// protocol instance to transport the link data into the application.
37+
/// Manage communication links
38+
/// The Link Manager organizes the physical Links. It can manage arbitrary
39+
/// links and takes care of connecting them as well assigning the correct
40+
/// protocol instance to transport the link data into the application.
4141
class LinkManager : public QObject
4242
{
4343
Q_OBJECT
@@ -175,9 +175,9 @@ private slots:
175175
Q_PROPERTY(QStringList serialPorts READ serialPorts NOTIFY commPortsChanged)
176176

177177
public:
178-
static QStringList serialBaudRates();
179178
QStringList serialPortStrings();
180179
QStringList serialPorts();
180+
static QStringList serialBaudRates();
181181

182182
signals:
183183
void commPortStringsChanged();

src/Comms/TCPLink.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
#include <QtNetwork/QHostInfo>
1717
#include <QtNetwork/QTcpSocket>
1818

19-
QGC_LOGGING_CATEGORY(TCPLinkLog, "test.comms.tcplink")
19+
QGC_LOGGING_CATEGORY(TCPLinkLog, "qgc.comms.tcplink")
2020

2121
namespace {
2222
constexpr int CONNECT_TIMEOUT_MS = 5000;

src/FactSystem/ParameterManager.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -812,7 +812,8 @@ void ParameterManager::_writeLocalParamCache(int vehicleId, int componentId)
812812
QDir ParameterManager::parameterCacheDir()
813813
{
814814
const QString spath(QFileInfo(QSettings().fileName()).dir().absolutePath());
815-
return (spath + QDir::separator() + QStringLiteral("ParamCache"));
815+
const QDir cacheDir(spath + QDir::separator() + QStringLiteral("ParamCache"));
816+
return cacheDir;
816817
}
817818

818819
QString ParameterManager::parameterCacheFile(int vehicleId, int componentId)

0 commit comments

Comments
 (0)