diff --git a/CMakeLists.txt b/CMakeLists.txt index 1e7bd088..3d06efec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,7 +56,6 @@ endif() if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv7l") add_compile_options( -mthumb - -mthumb-interwork -march=armv7-a ) endif (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv7l") @@ -72,7 +71,7 @@ endif () set(CPACK_RESOURCE_FILE_LICENSE "${MUONDETECTOR_CONFIG_DIR}/license") set(CPACK_PACKAGE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/output/packages") set(CPACK_PACKAGE_VENDOR "MuonPi.org") -set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") +set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}-hotfix1") set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") diff --git a/daemon/src/daemon.cpp b/daemon/src/daemon.cpp index b91e02fd..b977649b 100644 --- a/daemon/src/daemon.cpp +++ b/daemon/src/daemon.cpp @@ -298,6 +298,7 @@ Daemon::Daemon(configuration cfg, QObject* parent) mqttHandler = new MuonPi::MqttHandler(cfg.station_ID, verbose - 1); mqttHandler->moveToThread(mqttHandlerThread); connect(mqttHandler, &MuonPi::MqttHandler::mqttConnectionStatus, this, &Daemon::sendMqttStatus); + connect(mqttHandler, &MuonPi::MqttHandler::giving_up, this, &Daemon::handleSigTerm); connect(fileHandlerThread, &QThread::finished, mqttHandler, &MuonPi::MqttHandler::deleteLater); connect(this, &Daemon::requestMqttConnectionStatus, mqttHandler, &MuonPi::MqttHandler::onRequestConnectionStatus); mqttHandlerThread->start(); diff --git a/library/include/config.h b/library/include/config.h index e27ba4a8..7a344d24 100644 --- a/library/include/config.h +++ b/library/include/config.h @@ -27,7 +27,7 @@ constexpr int event_count_max_pileups { 50 }; namespace MQTT { constexpr const char* host { "data.muonpi.org" }; constexpr int port { 1883 }; - constexpr int timeout { 2000 }; + constexpr int timeout { 10000 }; constexpr int qos { 1 }; constexpr int keepalive_interval { 45 }; constexpr const char* data_topic { "muonpi/data/" }; diff --git a/library/include/mqtthandler.h b/library/include/mqtthandler.h index 998e1da7..8bf21d51 100644 --- a/library/include/mqtthandler.h +++ b/library/include/mqtthandler.h @@ -42,6 +42,8 @@ class MUONDETECTORSHARED MqttHandler : public QObject void request_timer_start(int); void request_timer_restart(int); + void giving_up(); + public slots: void start(const QString& username, const QString& password); diff --git a/library/src/mqtthandler.cpp b/library/src/mqtthandler.cpp index 56b255cc..5dbe9e03 100644 --- a/library/src/mqtthandler.cpp +++ b/library/src/mqtthandler.cpp @@ -61,7 +61,6 @@ void MqttHandler::callback_disconnected(int result) if (result != 0) { qWarning() << "Mqtt disconnected unexpectedly: " + QString::number(result); set_status(Status::Error); - m_tries = 1; emit request_timer_start(Config::MQTT::timeout * m_tries); } else { set_status(Status::Disconnected); @@ -76,6 +75,14 @@ void MqttHandler::callback_message(const mosquitto_message* message) void MqttHandler::set_status(Status status) { + if (status == Status::Error) { + m_tries++; + qWarning() << "Tried: "< s_max_tries) { + exit(0); + emit giving_up(); + } + } if (m_status != status) { if (status == Status::Connected) { emit mqttConnectionStatus(true); @@ -91,13 +98,10 @@ MqttHandler::MqttHandler(const QString& station_id, const int verbosity) , m_verbose { verbosity } { m_reconnect_timer.setInterval(Config::MQTT::timeout); - m_reconnect_timer.setSingleShot(true); connect(&m_reconnect_timer, &QTimer::timeout, this, [this](){mqttConnect();}); - connect(this, &MqttHandler::request_timer_stop, &m_reconnect_timer, &QTimer::stop); - connect(this, &MqttHandler::request_timer_restart, this, &MqttHandler::timer_restart); - connect(this, &MqttHandler::request_timer_start, this, &MqttHandler::timer_start); } + MqttHandler::~MqttHandler() { mqttDisconnect(); @@ -135,7 +139,6 @@ void MqttHandler::start(const QString& username, const QString& password){ void MqttHandler::mqttConnect(){ if (connected()) { - qDebug() << "Already connected to Mqtt."; return; } qDebug() << "Trying to connect to MQTT.";