/** * UAS Plugin Interface Factory * $Id$ * $HeadURL$ * $Author$ * Created by Mike Wille, ESZS, 2025-04-17 */ #include "plugin.h" #include "plugin_instance.h" #include #include #include namespace UAS { std::shared_ptr TabPluginUAS::createInterface(TrainingAreaBase::Plugin::DataProvider *dataProvider, const std::shared_ptr &recvFromTabCb, const std::shared_ptr &, const std::shared_ptr &ddsHandler, NGL::Settings *settings) { qDebug() << "UAS Plugin starting for ex "<exerciseId()<<"!\n"; /* set this on the machine running the TMS-IF TrainingAreaBase plugin, to the * ip address of the interface of the server which is in the same network as the * gateway machines (e.g. Salchau's tds01 is 10.5.144.32 and the gateway machines * are in the same subnet, so enter "10.5.144.32" on tds01) */ const QString ip(settings->settings()->value(QStringLiteral("UAS/TmsIfIpAddress"), QStringLiteral("127.0.0.1")).toString()); // 127.0.0.1 if IA runs on the same machine qDebug() << "TabPluginUAS::createInterface: TMS-IF will be started on the network interface with ip address: '" << ip << "' \n"; qputenv("CYCLONEDDS_URI", QStringLiteral("").arg(ip).toUtf8()); if ( !hostAvailable(ip)) return nullptr; return std::make_shared(dataProvider, recvFromTabCb, ddsHandler, settings); } bool TabPluginUAS::hostAvailable(QString hostname) { // Blocking call: This pauses execution until the lookup is finished QHostInfo info = QHostInfo::fromName(hostname); // Check if the lookup was successful if (info.error() == QHostInfo::NoError) { qCritical() << "Success! Host found. IP addresses:" << hostname; return true; } // Handle errors like 'Host not found' or 'Network unreachable' return false; } } // namespace UAS