diff --git a/include/MqttSettings.h b/include/MqttSettings.h index 2434253..c21f14b 100644 --- a/include/MqttSettings.h +++ b/include/MqttSettings.h @@ -33,10 +33,8 @@ private: void createMqttClientObject(); - MqttClient* mqttClient = nullptr; - String clientId; - String willTopic; - Ticker mqttReconnectTimer; + MqttClient* _mqttClient = nullptr; + Ticker _mqttReconnectTimer; MqttSubscribeParser _mqttSubscribeParser; std::mutex _clientLock; }; diff --git a/src/MqttSettings.cpp b/src/MqttSettings.cpp index d5fda2c..09c883e 100644 --- a/src/MqttSettings.cpp +++ b/src/MqttSettings.cpp @@ -19,7 +19,7 @@ void MqttSettingsClass::NetworkEvent(network_event event) break; case network_event::NETWORK_DISCONNECTED: MessageOutput.println("Network lost connection"); - mqttReconnectTimer.detach(); // ensure we don't reconnect to MQTT while reconnecting to Wi-Fi + _mqttReconnectTimer.detach(); // ensure we don't reconnect to MQTT while reconnecting to Wi-Fi break; default: break; @@ -33,9 +33,9 @@ void MqttSettingsClass::onMqttConnect(const bool sessionPresent) publish(config.Mqtt.Lwt.Topic, config.Mqtt.Lwt.Value_Online); std::lock_guard lock(_clientLock); - if (mqttClient != nullptr) { + if (_mqttClient != nullptr) { for (const auto& cb : _mqttSubscribeParser.get_callbacks()) { - mqttClient->subscribe(cb.topic.c_str(), cb.qos); + _mqttClient->subscribe(cb.topic.c_str(), cb.qos); } } } @@ -44,8 +44,8 @@ void MqttSettingsClass::subscribe(const String& topic, const uint8_t qos, const { _mqttSubscribeParser.register_callback(topic.c_str(), qos, cb); std::lock_guard lock(_clientLock); - if (mqttClient != nullptr) { - mqttClient->subscribe(topic.c_str(), qos); + if (_mqttClient != nullptr) { + _mqttClient->subscribe(topic.c_str(), qos); } } @@ -53,8 +53,8 @@ void MqttSettingsClass::unsubscribe(const String& topic) { _mqttSubscribeParser.unregister_callback(topic.c_str()); std::lock_guard lock(_clientLock); - if (mqttClient != nullptr) { - mqttClient->unsubscribe(topic.c_str()); + if (_mqttClient != nullptr) { + _mqttClient->unsubscribe(topic.c_str()); } } @@ -85,7 +85,7 @@ void MqttSettingsClass::onMqttDisconnect(espMqttClientTypes::DisconnectReason re default: MessageOutput.println("Unknown"); } - mqttReconnectTimer.once( + _mqttReconnectTimer.once( 2, +[](MqttSettingsClass* instance) { instance->performConnect(); }, this); } @@ -108,40 +108,40 @@ void MqttSettingsClass::performConnect() using std::placeholders::_6; std::lock_guard lock(_clientLock); - if (mqttClient == nullptr) { + if (_mqttClient == nullptr) { return; } MessageOutput.println("Connecting to MQTT..."); const CONFIG_T& config = Configuration.get(); - willTopic = getPrefix() + config.Mqtt.Lwt.Topic; - clientId = NetworkSettings.getApName(); + const String willTopic = getPrefix() + config.Mqtt.Lwt.Topic; + const String clientId = NetworkSettings.getApName(); if (config.Mqtt.Tls.Enabled) { - static_cast(mqttClient)->setCACert(config.Mqtt.Tls.RootCaCert); - static_cast(mqttClient)->setServer(config.Mqtt.Hostname, config.Mqtt.Port); + static_cast(_mqttClient)->setCACert(config.Mqtt.Tls.RootCaCert); + static_cast(_mqttClient)->setServer(config.Mqtt.Hostname, config.Mqtt.Port); if (config.Mqtt.Tls.CertLogin) { - static_cast(mqttClient)->setCertificate(config.Mqtt.Tls.ClientCert); - static_cast(mqttClient)->setPrivateKey(config.Mqtt.Tls.ClientKey); + static_cast(_mqttClient)->setCertificate(config.Mqtt.Tls.ClientCert); + static_cast(_mqttClient)->setPrivateKey(config.Mqtt.Tls.ClientKey); } else { - static_cast(mqttClient)->setCredentials(config.Mqtt.Username, config.Mqtt.Password); + static_cast(_mqttClient)->setCredentials(config.Mqtt.Username, config.Mqtt.Password); } - static_cast(mqttClient)->setWill(willTopic.c_str(), 2, config.Mqtt.Retain, config.Mqtt.Lwt.Value_Offline); - static_cast(mqttClient)->setClientId(clientId.c_str()); - static_cast(mqttClient)->setCleanSession(config.Mqtt.CleanSession); - static_cast(mqttClient)->onConnect(std::bind(&MqttSettingsClass::onMqttConnect, this, _1)); - static_cast(mqttClient)->onDisconnect(std::bind(&MqttSettingsClass::onMqttDisconnect, this, _1)); - static_cast(mqttClient)->onMessage(std::bind(&MqttSettingsClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); + static_cast(_mqttClient)->setWill(willTopic.c_str(), 2, config.Mqtt.Retain, config.Mqtt.Lwt.Value_Offline); + static_cast(_mqttClient)->setClientId(clientId.c_str()); + static_cast(_mqttClient)->setCleanSession(config.Mqtt.CleanSession); + static_cast(_mqttClient)->onConnect(std::bind(&MqttSettingsClass::onMqttConnect, this, _1)); + static_cast(_mqttClient)->onDisconnect(std::bind(&MqttSettingsClass::onMqttDisconnect, this, _1)); + static_cast(_mqttClient)->onMessage(std::bind(&MqttSettingsClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); } else { - static_cast(mqttClient)->setServer(config.Mqtt.Hostname, config.Mqtt.Port); - static_cast(mqttClient)->setCredentials(config.Mqtt.Username, config.Mqtt.Password); - static_cast(mqttClient)->setWill(willTopic.c_str(), config.Mqtt.Lwt.Qos, config.Mqtt.Retain, config.Mqtt.Lwt.Value_Offline); - static_cast(mqttClient)->setClientId(clientId.c_str()); - static_cast(mqttClient)->setCleanSession(config.Mqtt.CleanSession); - static_cast(mqttClient)->onConnect(std::bind(&MqttSettingsClass::onMqttConnect, this, _1)); - static_cast(mqttClient)->onDisconnect(std::bind(&MqttSettingsClass::onMqttDisconnect, this, _1)); - static_cast(mqttClient)->onMessage(std::bind(&MqttSettingsClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); + static_cast(_mqttClient)->setServer(config.Mqtt.Hostname, config.Mqtt.Port); + static_cast(_mqttClient)->setCredentials(config.Mqtt.Username, config.Mqtt.Password); + static_cast(_mqttClient)->setWill(willTopic.c_str(), config.Mqtt.Lwt.Qos, config.Mqtt.Retain, config.Mqtt.Lwt.Value_Offline); + static_cast(_mqttClient)->setClientId(clientId.c_str()); + static_cast(_mqttClient)->setCleanSession(config.Mqtt.CleanSession); + static_cast(_mqttClient)->onConnect(std::bind(&MqttSettingsClass::onMqttConnect, this, _1)); + static_cast(_mqttClient)->onDisconnect(std::bind(&MqttSettingsClass::onMqttDisconnect, this, _1)); + static_cast(_mqttClient)->onMessage(std::bind(&MqttSettingsClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); } - mqttClient->connect(); + _mqttClient->connect(); } } @@ -150,10 +150,10 @@ void MqttSettingsClass::performDisconnect() const CONFIG_T& config = Configuration.get(); publish(config.Mqtt.Lwt.Topic, config.Mqtt.Lwt.Value_Offline); std::lock_guard lock(_clientLock); - if (mqttClient == nullptr) { + if (_mqttClient == nullptr) { return; } - mqttClient->disconnect(); + _mqttClient->disconnect(); } void MqttSettingsClass::performReconnect() @@ -162,17 +162,17 @@ void MqttSettingsClass::performReconnect() createMqttClientObject(); - mqttReconnectTimer.once( + _mqttReconnectTimer.once( 2, +[](MqttSettingsClass* instance) { instance->performConnect(); }, this); } bool MqttSettingsClass::getConnected() { std::lock_guard lock(_clientLock); - if (mqttClient == nullptr) { + if (_mqttClient == nullptr) { return false; } - return mqttClient->connected(); + return _mqttClient->connected(); } String MqttSettingsClass::getPrefix() const @@ -194,10 +194,10 @@ void MqttSettingsClass::publish(const String& subtopic, const String& payload) void MqttSettingsClass::publishGeneric(const String& topic, const String& payload, const bool retain, const uint8_t qos) { std::lock_guard lock(_clientLock); - if (mqttClient == nullptr) { + if (_mqttClient == nullptr) { return; } - mqttClient->publish(topic.c_str(), qos, retain, payload.c_str()); + _mqttClient->publish(topic.c_str(), qos, retain, payload.c_str()); } void MqttSettingsClass::init() @@ -211,15 +211,15 @@ void MqttSettingsClass::init() void MqttSettingsClass::createMqttClientObject() { std::lock_guard lock(_clientLock); - if (mqttClient != nullptr) { - delete mqttClient; - mqttClient = nullptr; + if (_mqttClient != nullptr) { + delete _mqttClient; + _mqttClient = nullptr; } const CONFIG_T& config = Configuration.get(); if (config.Mqtt.Tls.Enabled) { - mqttClient = static_cast(new espMqttClientSecure); + _mqttClient = static_cast(new espMqttClientSecure); } else { - mqttClient = static_cast(new espMqttClient); + _mqttClient = static_cast(new espMqttClient); } }