diff --git a/samples/blackgui/mainwindow.cpp b/samples/blackgui/mainwindow.cpp
index 2787ee2ac..2ffcf337e 100644
--- a/samples/blackgui/mainwindow.cpp
+++ b/samples/blackgui/mainwindow.cpp
@@ -22,7 +22,7 @@ MainWindow::MainWindow(GuiModes::WindowMode windowMode, QWidget *parent) :
QMainWindow(parent, windowMode == GuiModes::WindowFrameless ? (Qt::Window | Qt::FramelessWindowHint) : Qt::Tool),
ui(new Ui::MainWindow),
m_infoWindow(nullptr),
- m_windowMode(windowMode), m_init(false), m_coreMode(GuiModes::CoreExternal),
+ m_init(false), m_windowMode(windowMode), m_coreMode(GuiModes::CoreExternal),
m_coreAvailable(false), m_contextNetworkAvailable(false), m_contextVoiceAvailable(false),
m_dBusConnection("dummy"), m_coreRuntime(nullptr),
m_atcListOnline(nullptr), m_atcListBooked(nullptr),
diff --git a/samples/blackgui/mainwindow.ui b/samples/blackgui/mainwindow.ui
index 70751a761..464694af9 100644
--- a/samples/blackgui/mainwindow.ui
+++ b/samples/blackgui/mainwindow.ui
@@ -1538,7 +1538,7 @@ QSizeGrip {
-
- 0
+ 1
@@ -1736,14 +1736,14 @@ QSizeGrip {
-
-
+
ICAO type (e.g. A320)
-
-
+
-
@@ -1756,14 +1756,14 @@ QSizeGrip {
-
-
+
- Plane type
+ Aircraft type (e.g. L2J)
-
-
+
-
diff --git a/samples/blackgui/mainwindow_aircraft.cpp b/samples/blackgui/mainwindow_aircraft.cpp
index 68ada682e..c52d888b4 100644
--- a/samples/blackgui/mainwindow_aircraft.cpp
+++ b/samples/blackgui/mainwindow_aircraft.cpp
@@ -42,12 +42,15 @@ bool MainWindow::reloadOwnAircraft()
if (this->m_contextVoiceAvailable)
{
CVoiceRoomList selectedRooms = this->m_contextNetwork->getSelectedVoiceRooms();
- this->m_voiceRoomCom1 = this->ui->cb_CockpitVoiceRoom1Override->isChecked() ?
- this->ui->le_CockpitVoiceRoomCom1->text().trimmed() :
- selectedRooms[0];
- this->m_voiceRoomCom2 = this->ui->cb_CockpitVoiceRoom2Override->isChecked() ?
- this->ui->le_CockpitVoiceRoomCom2->text().trimmed() :
- selectedRooms[1];
+ if (selectedRooms.size() == 2)
+ {
+ this->m_voiceRoomCom1 = this->ui->cb_CockpitVoiceRoom1Override->isChecked() ?
+ this->ui->le_CockpitVoiceRoomCom1->text().trimmed() :
+ selectedRooms[0];
+ this->m_voiceRoomCom2 = this->ui->cb_CockpitVoiceRoom2Override->isChecked() ?
+ this->ui->le_CockpitVoiceRoomCom2->text().trimmed() :
+ selectedRooms[1];
+ }
}
//
diff --git a/samples/blackgui/mainwindow_init.cpp b/samples/blackgui/mainwindow_init.cpp
index 0878f8ad8..015de7ac8 100644
--- a/samples/blackgui/mainwindow_init.cpp
+++ b/samples/blackgui/mainwindow_init.cpp
@@ -117,6 +117,7 @@ void MainWindow::init(GuiModes::CoreMode coreMode)
// signal / slots
bool connect;
this->connect(this->m_contextNetwork, &IContextNetwork::statusMessage, this, &MainWindow::displayStatusMessage);
+ this->connect(this->m_contextNetwork, &IContextNetwork::statusMessages, this, &MainWindow::displayStatusMessages);
this->connect(this->m_contextNetwork, &IContextNetwork::connectionTerminated, this, &MainWindow::connectionTerminated);
this->connect(this->m_contextNetwork, &IContextNetwork::connectionStatusChanged, this, &MainWindow::connectionStatusChanged);
this->connect(this->m_contextSettings, &IContextSettings::changedNetworkSettings, this, &MainWindow::changedNetworkSettings);
diff --git a/samples/blackmiscdbus/BlackMiscTest.Datacontext.xml b/samples/blackmiscdbus/BlackMiscTest.Datacontext.xml
index 3eeae1bf7..1e8476a45 100644
--- a/samples/blackmiscdbus/BlackMiscTest.Datacontext.xml
+++ b/samples/blackmiscdbus/BlackMiscTest.Datacontext.xml
@@ -1,10 +1,10 @@
-
+
-
+
@@ -19,14 +19,12 @@
-
-
diff --git a/samples/blackmiscdbus/BlackMiscTest.Testservice.xml b/samples/blackmiscdbus/BlackMiscTest.Testservice.xml
index 3ab70f5c0..4ba47fb73 100644
--- a/samples/blackmiscdbus/BlackMiscTest.Testservice.xml
+++ b/samples/blackmiscdbus/BlackMiscTest.Testservice.xml
@@ -22,7 +22,7 @@
-
+
@@ -66,21 +66,21 @@
-
+
-
+
-
+
-
+
-
+
@@ -89,7 +89,7 @@
-
+
@@ -97,9 +97,9 @@
-
+
-
+
@@ -107,7 +107,7 @@
-
+
diff --git a/samples/blackmiscdbus/datacontext.h b/samples/blackmiscdbus/datacontext.h
index 4c8f97376..8ab546e6e 100644
--- a/samples/blackmiscdbus/datacontext.h
+++ b/samples/blackmiscdbus/datacontext.h
@@ -82,7 +82,7 @@ namespace BlackMiscTest
/*!
* \brief Default constructor
*/
- CDataContext(QObject *parent = 0) : QObject(parent) {}
+ CDataContext(QObject *parent = nullptr) : QObject(parent) {}
/*!
* \brief ctor for Qt meta system
diff --git a/samples/blackmiscdbus/main.cpp b/samples/blackmiscdbus/main.cpp
index 84edf08e4..d2c519c61 100644
--- a/samples/blackmiscdbus/main.cpp
+++ b/samples/blackmiscdbus/main.cpp
@@ -33,28 +33,81 @@ int main(int argc, char *argv[])
}
// some runtime settings
+ QString ip = "192.168.0.133";
+ QString port = "45000";
const QString executable = QString(cmdlineArgs.at(0)); // used as command to fork myself
const bool clientFlag = cmdlineArgs.contains("client", Qt::CaseInsensitive);
- const bool useSessionBusForServer = cmdlineArgs.contains("session", Qt::CaseInsensitive); // flag for session bus
- QString address(useSessionBusForServer ? "session" : "tcp:host=192.168.0.133,port=45000"); // testing with real transfer
- // loopback 127.0.0.1
+ bool useSessionBusForServer;
+ if (cmdlineArgs.contains("session", Qt::CaseInsensitive))
+ {
+ // session mode
+ useSessionBusForServer = true;
+ }
+ else
+ {
+ // TCP/IP mode
+ useSessionBusForServer = false;
+ if (cmdlineArgs.length() > 2)
+ {
+ ip = cmdlineArgs.at(cmdlineArgs.length() - 2);
+ port = cmdlineArgs.at(cmdlineArgs.length() - 1);
+ }
+ }
+ QString addressTcp = QString("tcp:host=%1,port=%2").arg(ip).arg(port);
+ QString address(useSessionBusForServer ? "session" : addressTcp); // testing with real transfer
// Create a Testservice instance and register it with the session bus only if
// the service isn't already available.
if (!clientFlag)
{
// Configure tests
- qDebug() << "1 .. Run testservice to test data transfer" << address;
- qDebug() << "1sb. Run testservice via session bus";
- qDebug() << "2 .. Data context example (via TCP)" << address;
- qDebug() << "2sb. Data context example (via session bus)";
- qDebug() << "3 .. Data context example, only server (via TCP)" << address;
- qDebug() << "3sb. Data context example, only server (via session bus)";
+ Menu:
+ qDebug() << "1 .. Run testservice to test data transfer" << addressTcp;
+ qDebug() << "1sb. Run testservice via session bus";
+ qDebug() << "2 .. Data context example (via TCP)" << addressTcp;
+ qDebug() << "2sb. Data context example (via session bus)";
+ qDebug() << "3 .. Data context example, only server (via TCP)" << addressTcp;
+ qDebug() << "3sb. Data context example, only server (via session bus)";
+ qDebug() << "----- Change address / port (no validation, do before starting server)";
+ qDebug() << "loop Address to loopback, 127.0.0.1";
+ qDebug() << "ip some IP address, e.g 192.168.100.100";
+ qDebug() << "port some port, e.g 12345";
+ qDebug() << "-----";
qDebug() << "x .. Bye";
QTextStream qtin(stdin);
- QString mode = qtin.readLine().toLower();
- bool startServer = !mode.startsWith('3');
+ QString mode = qtin.readLine().toLower().trimmed();
+
+ if (mode.startsWith("l"))
+ {
+ ip = "127.0.0.1";
+ addressTcp = QString("tcp:host=%1,port=%2").arg(ip).arg(port);
+ goto Menu;
+ }
+ if (mode.startsWith("i"))
+ {
+ QStringList p = mode.split(QRegExp("\\s"));
+ if (p.length() > 1)
+ {
+ ip = p.at(1);
+ addressTcp = QString("tcp:host=%1,port=%2").arg(ip).arg(port);
+ }
+ goto Menu;
+ }
+ if (mode.startsWith("p"))
+ {
+ QStringList p = mode.split(QRegExp("\\s"));
+ if (p.length() > 1)
+ {
+ port = p.at(1);
+ addressTcp = QString("tcp:host=%1,port=%2").arg(ip).arg(port);
+ }
+ goto Menu;
+ }
+
+ // start DBus
+ address = QString(useSessionBusForServer ? "session" : addressTcp); // testing with real transfer
+ bool startClient = !mode.startsWith('3');
if (mode.contains("sb", Qt::CaseInsensitive)) address = "session";
if (mode.startsWith("1"))
{
@@ -71,6 +124,8 @@ int main(int argc, char *argv[])
// I know I am in the "server process here", so I can safely create a CDBusServer
// this runs in the original process and can be directly debugged
+ qDebug();
+ qDebug("--------------------------------------------------------");
BlackCore::CDBusServer *dBusServer = new BlackCore::CDBusServer(useSessionBusForServer ? "session" : address);
qDebug() << "server" << dBusServer->address() << "connected:" << dBusServer->isConnected();
@@ -78,9 +133,16 @@ int main(int argc, char *argv[])
QStringList args;
args << "client";
args << mode;
- if (address == "session") args << address;
-
- if (startServer) BlackMiscTest::ServiceTool::startNewProcess(executable, args, &a);
+ if (address == "session")
+ {
+ args << address; // set session as cmd arg
+ }
+ else
+ {
+ args << ip;
+ args << port;
+ }
+ if (startClient) BlackMiscTest::ServiceTool::startNewProcess(executable, args, &a);
// run tests
if (mode == "testservice")
diff --git a/samples/blackmiscdbus/servicetool.cpp b/samples/blackmiscdbus/servicetool.cpp
index b12759976..28934868f 100644
--- a/samples/blackmiscdbus/servicetool.cpp
+++ b/samples/blackmiscdbus/servicetool.cpp
@@ -660,8 +660,7 @@ namespace BlackMiscTest
value.addValue(CAtcStation::IndexBookedUntil, QDateTime::currentDateTimeUtc().addDays(2));
qDebug() << " condition" << condition;
qDebug() << " values" << value;
- qint32 c = dataContextInterface.updateOnlineControllers(condition, value);
- qDebug() << c << "values changed in online controllers";
+ dataContextInterface.updateOnlineControllers(condition, value);
}
// display current status
@@ -679,7 +678,7 @@ namespace BlackMiscTest
// next round? Client
qDebug() << "Key x to exit";
qDebug() << "1 .. add new list via property on interface";
- qDebug() << "3 .. append 1 to controllers in context (no expected to change anything)"; // add to reference
+ qDebug() << "3 .. append 1 to controllers in context (not expected to change anything)"; // add to reference
qDebug() << "5 .. foo signal directly on interface";
qDebug() << "7x . 7, update if, e.g. 7EDDM_TWR";
diff --git a/src/blackcore/blackcore.contextnetwork.xml b/src/blackcore/blackcore.contextnetwork.xml
index f3352421b..23b28f64f 100644
--- a/src/blackcore/blackcore.contextnetwork.xml
+++ b/src/blackcore/blackcore.contextnetwork.xml
@@ -5,6 +5,10 @@
+
+
+
+
diff --git a/src/blackcore/context_network.cpp b/src/blackcore/context_network.cpp
index a7c246459..85ac3f4c5 100644
--- a/src/blackcore/context_network.cpp
+++ b/src/blackcore/context_network.cpp
@@ -246,11 +246,11 @@ namespace BlackCore
}
// send as message
- QString m("connection status changed ");
- m.append(this->m_network->connectionStatusToString(from)).append(" ").append(this->m_network->connectionStatusToString(to));
+ QString m("connection status changed from %1 to %2");
+ m = m.arg(INetwork::connectionStatusToString(from), INetwork::connectionStatusToString(to));
msgs.push_back(CStatusMessage(CStatusMessage::TypeTrafficNetwork,
to == INetwork::DisconnectedError ? CStatusMessage::SeverityError : CStatusMessage::SeverityInfo, m));
- emit this->statusMessage(msgs[0]);
+ emit this->statusMessages(msgs);
// send as own signal
emit this->connectionStatusChanged(from, to);
diff --git a/src/blackcore/context_network_interface.cpp b/src/blackcore/context_network_interface.cpp
index 0e0f5fddc..23fc2ae6e 100644
--- a/src/blackcore/context_network_interface.cpp
+++ b/src/blackcore/context_network_interface.cpp
@@ -38,6 +38,8 @@ namespace BlackCore
"connectionTerminated", this, SIGNAL(connectionTerminated()));
connection.connect(serviceName, IContextNetwork::ServicePath(), IContextNetwork::InterfaceName(),
"statusMessage", this, SIGNAL(statusMessage(BlackMisc::CStatusMessage)));
+ connection.connect(serviceName, IContextNetwork::ServicePath(), IContextNetwork::InterfaceName(),
+ "statusMessages", this, SIGNAL(statusMessages(BlackMisc::CStatusMessageList)));
connection.connect(serviceName, IContextNetwork::ServicePath(), IContextNetwork::InterfaceName(),
"textMessagesReceived", this, SIGNAL(textMessagesReceived(BlackMisc::Network::CTextMessageList)));
}
diff --git a/src/blackcore/context_network_interface.h b/src/blackcore/context_network_interface.h
index 73b70e57d..89c189f9c 100644
--- a/src/blackcore/context_network_interface.h
+++ b/src/blackcore/context_network_interface.h
@@ -106,11 +106,17 @@ namespace BlackCore
signals:
/*!
- * \brief ATC station list has been changed
+ * \brief Send status messages
* \param message
*/
void statusMessage(const BlackMisc::CStatusMessage &message);
+ /*!
+ * \brief Send status messages
+ * \param messages
+ */
+ void statusMessages(const BlackMisc::CStatusMessageList &messages);
+
/*!
* \brief List has been changed
*/
@@ -137,8 +143,6 @@ namespace BlackCore
* \param to
*/
// If I use the enum, adaptor / interface are not created correctly
-
-
void connectionStatusChanged(uint from, uint to);
/*!
diff --git a/src/blackcore/network.h b/src/blackcore/network.h
index bf360a765..342d1b2b5 100644
--- a/src/blackcore/network.h
+++ b/src/blackcore/network.h
@@ -64,11 +64,20 @@ namespace BlackCore
Connected
};
- QString connectionStatusToString(ConnectionStatus status) const
+ static const QString connectionStatusToString(ConnectionStatus status)
{
- int index = metaObject()->indexOfEnumerator("ConnectionStatus");
- QMetaEnum metaEnum = metaObject()->enumerator(index);
- return metaEnum.valueToKey(status);
+ // the version with metaObject, metaObject()->indexOfEnumerator does not work anymore
+ // an interface cannot be used with Q_DECLAREMETATYPE
+ switch (status)
+ {
+ case Disconnected: return "disconnected";
+ case DisconnectedError: return "disconnectedError";
+ case Connecting: return "connecting";
+ case Connected: return "connected";
+ default: break;
+ }
+ qFatal("Missing value");
+ return ""; // just for compiler warning
}
virtual bool isConnected() const = 0;
@@ -101,7 +110,7 @@ namespace BlackCore
virtual void setOwnAircraftPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude) = 0;
virtual void setOwnAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) = 0;
virtual void setOwnAircraftAvionics(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2,
- const BlackMisc::Aviation::CTransponder &xpdr) = 0;
+ const BlackMisc::Aviation::CTransponder &transponder) = 0;
// Weather / flight plan
virtual void requestMetar(const QString &airportICAO) = 0;
diff --git a/src/blackcore/network_vatlib.cpp b/src/blackcore/network_vatlib.cpp
index ad02f9bc8..9f9940934 100644
--- a/src/blackcore/network_vatlib.cpp
+++ b/src/blackcore/network_vatlib.cpp
@@ -31,8 +31,8 @@ namespace BlackCore
CNetworkVatlib::CNetworkVatlib(CNetworkVatlib::LoginMode loginMode, QObject *parent)
: INetwork(parent),
m_net(Cvatlib_Network::Create()),
- m_status(Cvatlib_Network::connStatus_Idle),
m_loginMode(loginMode),
+ m_status(Cvatlib_Network::connStatus_Idle),
m_fsdTextCodec(QTextCodec::codecForName("latin1"))
{
try
diff --git a/src/blackmisc/aviomodulator.h b/src/blackmisc/aviomodulator.h
index f153a0f60..19a976ce4 100644
--- a/src/blackmisc/aviomodulator.h
+++ b/src/blackmisc/aviomodulator.h
@@ -37,7 +37,7 @@ namespace BlackMisc
* \brief Default constructor
*/
CModulator() :
- CAvionicsBase("default"), m_volumeInput(0), m_volumeOutput(0), m_digits(2) {}
+ CAvionicsBase("default"), m_volumeInput(0), m_volumeOutput(0), m_enabled(true), m_digits(2) {}
/*!
* \brief Constructor
@@ -47,7 +47,7 @@ namespace BlackMisc
* \param digits
*/
CModulator(const QString &name, const BlackMisc::PhysicalQuantities::CFrequency &activeFrequency, const BlackMisc::PhysicalQuantities::CFrequency &standbyFrequency, int digits) :
- CAvionicsBase(name), m_frequencyActive(activeFrequency), m_frequencyStandby(standbyFrequency), m_volumeInput(0), m_volumeOutput(0), m_digits(digits), m_enabled(true) {}
+ CAvionicsBase(name), m_frequencyActive(activeFrequency), m_frequencyStandby(standbyFrequency), m_volumeInput(0), m_volumeOutput(0), m_enabled(true), m_digits(digits) {}
/*!
* \brief String for converter
diff --git a/src/blackmisc/pqphysicalquantity.cpp b/src/blackmisc/pqphysicalquantity.cpp
index 27fcb2769..ee91eb860 100644
--- a/src/blackmisc/pqphysicalquantity.cpp
+++ b/src/blackmisc/pqphysicalquantity.cpp
@@ -25,7 +25,7 @@ namespace BlackMisc
* (The implicitly generated copy constructor would suffice, but for what seems to be a bug in MSVC2010 template instantiation)
*/
template CPhysicalQuantity::CPhysicalQuantity(const CPhysicalQuantity &other) :
- m_value(other.m_value), m_unit(other.m_unit)
+ CValueObject(), m_value(other.m_value), m_unit(other.m_unit)
{
// void
}