Commit cf4126bd authored by Don Gagne's avatar Don Gagne

Merge pull request #1684 from dogmaphobic/autoUDP

Automatic UDP Link Configuration
parents ddfd87b6 c2cd1ce7
...@@ -357,6 +357,8 @@ void LinkManager::saveLinkConfigurationList() ...@@ -357,6 +357,8 @@ void LinkManager::saveLinkConfigurationList()
void LinkManager::loadLinkConfigurationList() void LinkManager::loadLinkConfigurationList()
{ {
bool udpExists = false;
bool linksChanged = false;
QSettings settings; QSettings settings;
// Is the group even there? // Is the group even there?
if(settings.contains(LinkConfiguration::settingsRoot() + "/count")) { 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 // Have the instance load its own values
pLink->loadSettings(settings, root); pLink->loadSettings(settings, root);
addLinkConfiguration(pLink); 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 { } else {
qWarning() << "Link Configuration " << root << " has an empty name." ; 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." ; qWarning() << "Link Configuration " << root << " has no type." ;
} }
} }
emit linkConfigurationChanged();
} }
// Debug buids always add MockLink automatically // 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"); MockConfiguration* pMock = new MockConfiguration("Mock Link");
pMock->setDynamic(true); pMock->setDynamic(true);
addLinkConfiguration(pMock); addLinkConfiguration(pMock);
emit linkConfigurationChanged(); linksChanged = true;
#endif #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; _configurationsLoaded = true;
} }
......
...@@ -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); Q_UNUSED(arg1);
_updateUI(); _updateUI();
if(_config) {
_config->setDynamic(false);
}
} }
...@@ -225,9 +225,14 @@ void QGCLinkConfiguration::_updateButtons() ...@@ -225,9 +225,14 @@ void QGCLinkConfiguration::_updateButtons()
LinkConfiguration* config = NULL; LinkConfiguration* config = NULL;
QModelIndex index = _ui->linkView->currentIndex(); QModelIndex index = _ui->linkView->currentIndex();
bool enabled = (index.row() >= 0); bool enabled = (index.row() >= 0);
bool deleteEnabled = true;
if(enabled) { if(enabled) {
config = _viewModel->getConfiguration(index.row()); config = _viewModel->getConfiguration(index.row());
if(config) { if(config) {
// Can't delete a dynamic link
if(config->isDynamic()) {
deleteEnabled = false;
}
LinkInterface* link = config->getLink(); LinkInterface* link = config->getLink();
if(link) { if(link) {
_ui->connectLinkButton->setText("Disconnect"); _ui->connectLinkButton->setText("Disconnect");
...@@ -237,7 +242,7 @@ void QGCLinkConfiguration::_updateButtons() ...@@ -237,7 +242,7 @@ void QGCLinkConfiguration::_updateButtons()
} }
} }
_ui->connectLinkButton->setEnabled(enabled); _ui->connectLinkButton->setEnabled(enabled);
_ui->delLinkButton->setEnabled(config != NULL); _ui->delLinkButton->setEnabled(config != NULL && deleteEnabled);
_ui->editLinkButton->setEnabled(config != NULL); _ui->editLinkButton->setEnabled(config != NULL);
} }
......
...@@ -90,6 +90,7 @@ void QGCUDPLinkConfiguration::on_portNumber_valueChanged(int arg1) ...@@ -90,6 +90,7 @@ void QGCUDPLinkConfiguration::on_portNumber_valueChanged(int arg1)
{ {
if(!_inConstructor) { if(!_inConstructor) {
_config->setLocalPort(arg1); _config->setLocalPort(arg1);
_config->setDynamic(false);
} }
} }
......
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