mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2026-09-13 21:54:07 +00:00
refactor mqtt disconnect reason
This commit is contained in:
+29
-15
@@ -472,25 +472,39 @@ bool Mqtt::get_publish_onchange(uint8_t device_type) {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// human-readable cause for a MQTT disconnect reason, nullptr if not recognized
|
||||||
|
static const char * mqtt_disconnect_cause(espMqttClientTypes::DisconnectReason reason) {
|
||||||
|
using espMqttClientTypes::DisconnectReason;
|
||||||
|
|
||||||
|
switch (reason) {
|
||||||
|
case DisconnectReason::TCP_DISCONNECTED:
|
||||||
|
return "TCP";
|
||||||
|
case DisconnectReason::MQTT_UNACCEPTABLE_PROTOCOL_VERSION:
|
||||||
|
return "Unaccepted protocol version";
|
||||||
|
case DisconnectReason::MQTT_IDENTIFIER_REJECTED:
|
||||||
|
return "Identifier Rejected";
|
||||||
|
case DisconnectReason::MQTT_SERVER_UNAVAILABLE:
|
||||||
|
return "Server unavailable";
|
||||||
|
case DisconnectReason::MQTT_MALFORMED_CREDENTIALS:
|
||||||
|
return "Malformed credentials";
|
||||||
|
case DisconnectReason::MQTT_NOT_AUTHORIZED:
|
||||||
|
return "Not authorized";
|
||||||
|
case DisconnectReason::TLS_BAD_FINGERPRINT:
|
||||||
|
return "Server fingerprint invalid";
|
||||||
|
default:
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Mqtt::on_disconnect(espMqttClientTypes::DisconnectReason reason) {
|
void Mqtt::on_disconnect(espMqttClientTypes::DisconnectReason reason) {
|
||||||
connected_ = false;
|
connected_ = false;
|
||||||
|
|
||||||
if (reason == espMqttClientTypes::DisconnectReason::TCP_DISCONNECTED) {
|
const char * cause = mqtt_disconnect_cause(reason);
|
||||||
LOG_ERROR("MQTT connection failure: TCP");
|
if (cause) {
|
||||||
} else if (reason == espMqttClientTypes::DisconnectReason::MQTT_UNACCEPTABLE_PROTOCOL_VERSION) {
|
LOG_ERROR("MQTT connection failure: %s. Retrying...", cause);
|
||||||
LOG_ERROR("MQTT connection failure: Unaccepted protocol version");
|
|
||||||
} else if (reason == espMqttClientTypes::DisconnectReason::MQTT_IDENTIFIER_REJECTED) {
|
|
||||||
LOG_ERROR("MQTT connection failure: Identifier Rejected");
|
|
||||||
} else if (reason == espMqttClientTypes::DisconnectReason::MQTT_SERVER_UNAVAILABLE) {
|
|
||||||
LOG_ERROR("MQTT connection failure: Server unavailable");
|
|
||||||
} else if (reason == espMqttClientTypes::DisconnectReason::MQTT_MALFORMED_CREDENTIALS) {
|
|
||||||
LOG_ERROR("MQTT connection failure: Malformed credentials");
|
|
||||||
} else if (reason == espMqttClientTypes::DisconnectReason::MQTT_NOT_AUTHORIZED) {
|
|
||||||
LOG_ERROR("MQTT connection failure: Not authorized");
|
|
||||||
} else if (reason == espMqttClientTypes::DisconnectReason::TLS_BAD_FINGERPRINT) {
|
|
||||||
LOG_ERROR("MQTT connection failure: Server fingerprint invalid");
|
|
||||||
} else {
|
} else {
|
||||||
LOG_ERROR("MQTT connection failure: code %d", reason);
|
LOG_ERROR("MQTT connection failure: code %d. Retrying...", static_cast<int>(reason));
|
||||||
}
|
}
|
||||||
|
|
||||||
mqttClient_->clearQueue(true);
|
mqttClient_->clearQueue(true);
|
||||||
|
|||||||
Reference in New Issue
Block a user