From 065376e06d4314dc6e89791bd27885d3f0f96948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Fri, 11 May 2018 14:09:19 +0200 Subject: [PATCH] Add testing mode --- nymea-networkmanager/core.cpp | 33 +++++++++++++++++++++++++++++++-- nymea-networkmanager/core.h | 6 ++++++ nymea-networkmanager/main.cpp | 1 + 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/nymea-networkmanager/core.cpp b/nymea-networkmanager/core.cpp index 5e6251b..84a103a 100644 --- a/nymea-networkmanager/core.cpp +++ b/nymea-networkmanager/core.cpp @@ -75,6 +75,16 @@ void Core::setPlatformName(const QString &name) m_platformName = name; } +bool Core::testingEnabled() const +{ + return m_testing; +} + +void Core::setTestingEnabled(bool testing) +{ + m_testing = testing; +} + void Core::run() { // Start the networkmanager service @@ -97,6 +107,7 @@ Core::Core(QObject *parent) : connect(m_bluetoothServer, &BluetoothServer::connectedChanged, this, &Core::onBluetoothServerConnectedChanged); m_nymeaService = new NymeadService(false, this); + connect(m_nymeaService, &NymeadService::availableChanged, this, &Core::onNymeaServiceAvailableChanged); } Core::~Core() @@ -116,6 +127,12 @@ Core::~Core() void Core::evaluateNetworkManagerState(const NetworkManager::NetworkManagerState &state) { + if (m_testing && m_networkManager->available()) { + startService(); + return; + } + + switch (state) { case NetworkManager::NetworkManagerStateConnectedGlobal: // We are online @@ -143,8 +160,6 @@ void Core::evaluateNetworkManagerState(const NetworkManager::NetworkManagerState void Core::startService() { - qCDebug(dcApplication()) << "Start service"; - if (!m_networkManager->available()) { qCWarning(dcApplication()) << "Could not start services. There is no network manager available."; return; @@ -159,6 +174,8 @@ void Core::startService() if (m_bluetoothServer->running()) return; + qCDebug(dcApplication()) << "Start service"; + // Disable bluetooth on nymea in order to not crash with client connections m_nymeaService->enableBluetooth(false); @@ -171,6 +188,10 @@ void Core::startService() void Core::stopService() { + if (m_testing) { + return; + } + if (m_bluetoothServer->running()) qCDebug(dcApplication()) << "Stop bluetooth service"; @@ -209,3 +230,11 @@ void Core::onNetworkManagerStateChanged(const NetworkManager::NetworkManagerStat qCDebug(dcApplication()) << state; evaluateNetworkManagerState(state); } + +void Core::onNymeaServiceAvailableChanged(bool available) +{ + if (available && m_bluetoothServer->running()) { + // Check if the bluetooth server is running, disable nymea bt functionality in that case + m_nymeaService->enableBluetooth(false); + } +} diff --git a/nymea-networkmanager/core.h b/nymea-networkmanager/core.h index 9c5d6a3..57d1cd1 100644 --- a/nymea-networkmanager/core.h +++ b/nymea-networkmanager/core.h @@ -45,6 +45,9 @@ public: QString platformName() const; void setPlatformName(const QString &name); + bool testingEnabled() const; + void setTestingEnabled(bool testing); + void run(); private: @@ -59,6 +62,7 @@ private: QString m_advertiseName; QString m_platformName; + bool m_testing = false; void evaluateNetworkManagerState(const NetworkManager::NetworkManagerState &state); @@ -72,6 +76,8 @@ private slots: void onNetworkManagerAvailableChanged(const bool &available); void onNetworkManagerStateChanged(const NetworkManager::NetworkManagerState &state); + void onNymeaServiceAvailableChanged(bool available); + }; #endif // CORE_H diff --git a/nymea-networkmanager/main.cpp b/nymea-networkmanager/main.cpp index 1c6bca3..dd67cb0 100644 --- a/nymea-networkmanager/main.cpp +++ b/nymea-networkmanager/main.cpp @@ -122,6 +122,7 @@ int main(int argc, char *argv[]) // Start core Core::instance()->setAdvertiseName(parser.value(advertiseNameOption)); Core::instance()->setPlatformName(parser.value(platformNameOption)); + Core::instance()->setTestingEnabled(parser.isSet(testingOption)); Core::instance()->run(); return application.exec();