Browse Source

Merge pull request #1684 from dogmaphobic/autoUDP

Automatic UDP Link Configuration
QGC4.4
Don Gagne 10 years ago
parent
commit
cf4126bdd7
  1. 27
      src/comm/LinkManager.cc
  2. 3
      src/ui/QGCCommConfiguration.cc
  3. 7
      src/ui/QGCLinkConfiguration.cc
  4. 1
      src/ui/QGCUDPLinkConfiguration.cc

27
src/comm/LinkManager.cc

@ -357,6 +357,8 @@ void LinkManager::saveLinkConfigurationList() @@ -357,6 +357,8 @@ void LinkManager::saveLinkConfigurationList()
void LinkManager::loadLinkConfigurationList()
{
bool udpExists = false;
bool linksChanged = false;
QSettings settings;
// Is the group even there?
if(settings.contains(LinkConfiguration::settingsRoot() + "/count")) {
@ -402,6 +404,14 @@ void LinkManager::loadLinkConfigurationList() @@ -402,6 +404,14 @@ void LinkManager::loadLinkConfigurationList()
// Have the instance load its own values
pLink->loadSettings(settings, root);
addLinkConfiguration(pLink);
linksChanged = true;
// Check for UDP links
if(pLink->type() == LinkConfiguration::TypeUdp) {
UDPConfiguration* uLink = dynamic_cast<UDPConfiguration*>(pLink);
if(uLink && uLink->localPort() == QGC_UDP_LOCAL_PORT) {
udpExists = true;
}
}
}
} else {
qWarning() << "Link Configuration " << root << " has an empty name." ;
@ -416,7 +426,6 @@ void LinkManager::loadLinkConfigurationList() @@ -416,7 +426,6 @@ void LinkManager::loadLinkConfigurationList()
qWarning() << "Link Configuration " << root << " has no type." ;
}
}
emit linkConfigurationChanged();
}
// Debug buids always add MockLink automatically
@ -424,10 +433,22 @@ void LinkManager::loadLinkConfigurationList() @@ -424,10 +433,22 @@ void LinkManager::loadLinkConfigurationList()
MockConfiguration* pMock = new MockConfiguration("Mock Link");
pMock->setDynamic(true);
addLinkConfiguration(pMock);
emit linkConfigurationChanged();
linksChanged = true;
#endif
// Enable automatic PX4 hunting
//-- If we don't have a configured UDP link, create a default one
if(!udpExists) {
UDPConfiguration* uLink = new UDPConfiguration("Default UDP Link");
uLink->setLocalPort(QGC_UDP_LOCAL_PORT);
uLink->setDynamic();
addLinkConfiguration(uLink);
linksChanged = true;
}
if(linksChanged) {
emit linkConfigurationChanged();
}
// Enable automatic Serial PX4/3DR Radio hunting
_configurationsLoaded = true;
}

3
src/ui/QGCCommConfiguration.cc

@ -190,4 +190,7 @@ void QGCCommConfiguration::on_nameEdit_textEdited(const QString &arg1) @@ -190,4 +190,7 @@ void QGCCommConfiguration::on_nameEdit_textEdited(const QString &arg1)
{
Q_UNUSED(arg1);
_updateUI();
if(_config) {
_config->setDynamic(false);
}
}

7
src/ui/QGCLinkConfiguration.cc

@ -225,9 +225,14 @@ void QGCLinkConfiguration::_updateButtons() @@ -225,9 +225,14 @@ void QGCLinkConfiguration::_updateButtons()
LinkConfiguration* config = NULL;
QModelIndex index = _ui->linkView->currentIndex();
bool enabled = (index.row() >= 0);
bool deleteEnabled = true;
if(enabled) {
config = _viewModel->getConfiguration(index.row());
if(config) {
// Can't delete a dynamic link
if(config->isDynamic()) {
deleteEnabled = false;
}
LinkInterface* link = config->getLink();
if(link) {
_ui->connectLinkButton->setText("Disconnect");
@ -237,7 +242,7 @@ void QGCLinkConfiguration::_updateButtons() @@ -237,7 +242,7 @@ void QGCLinkConfiguration::_updateButtons()
}
}
_ui->connectLinkButton->setEnabled(enabled);
_ui->delLinkButton->setEnabled(config != NULL);
_ui->delLinkButton->setEnabled(config != NULL && deleteEnabled);
_ui->editLinkButton->setEnabled(config != NULL);
}

1
src/ui/QGCUDPLinkConfiguration.cc

@ -90,6 +90,7 @@ void QGCUDPLinkConfiguration::on_portNumber_valueChanged(int arg1) @@ -90,6 +90,7 @@ void QGCUDPLinkConfiguration::on_portNumber_valueChanged(int arg1)
{
if(!_inConstructor) {
_config->setLocalPort(arg1);
_config->setDynamic(false);
}
}

Loading…
Cancel
Save