Browse Source

mqtt: dont display state when disabled

network/test
Maxim Prokhorov 1 year ago
parent
commit
c45b43cfa4
2 changed files with 60 additions and 36 deletions
  1. +56
    -36
      code/espurna/mqtt.cpp
  2. +4
    -0
      code/espurna/types.h

+ 56
- 36
code/espurna/mqtt.cpp View File

@ -838,59 +838,75 @@ void _mqttBackwards() {
}
}
const char* _mqttBuildInfo() {
#define __MQTT_INFO_STR(X) #X
#define _MQTT_INFO_STR(X) __MQTT_INFO_STR(X)
alignas(4) static constexpr char out[] PROGMEM_STRING_ATTR {
alignas(4) static constexpr char MqttBuild[] PROGMEM_STRING_ATTR {
#if MQTT_LIBRARY == MQTT_LIBRARY_ASYNCMQTTCLIENT
"AsyncMqttClient"
"AsyncMqttClient"
#elif MQTT_LIBRARY == MQTT_LIBRARY_ARDUINOMQTT
"Arduino-MQTT"
"Arduino-MQTT"
#elif MQTT_LIBRARY == MQTT_LIBRARY_PUBSUBCLIENT
"PubSubClient"
"PubSubClient"
#endif
#if SECURE_CLIENT != SEURE_CLIENT_NONE
" (w/ SECURE CLIENT)"
" (w/ SECURE CLIENT)"
#endif
" Buffer size " _MQTT_INFO_STR(MQTT_BUFFER_MAX_SIZE) " (bytes)"
};
" Buffer size " _MQTT_INFO_STR(MQTT_BUFFER_MAX_SIZE) " (bytes)"
};
#undef _MQTT_INFO_STR
#undef __MQTT_INFO_STR
return out;
}
const char* _mqttClientEnabled() {
return _mqtt_enabled ? PSTR("ENABLED") : PSTR("DISABLED");
constexpr espurna::StringView _mqttBuildInfo() {
return MqttBuild;
}
String _mqttClientState(AsyncClientState state) {
espurna::StringView out;
switch (state) {
case AsyncClientState::Connecting:
out = STRING_VIEW("CONNECTING");
break;
case AsyncClientState::Connected:
out = STRING_VIEW("CONNECTED");
break;
case AsyncClientState::Disconnected:
out = STRING_VIEW("DISCONNECTED");
break;
case AsyncClientState::Disconnecting:
out = STRING_VIEW("DISCONNECTING");
break;
default:
out = STRING_VIEW("WAITING");
break;
}
return out.toString();
}
String _mqttClientState() {
const __FlashStringHelper* state = nullptr;
switch (_mqtt_state) {
case AsyncClientState::Connecting:
state = F("CONNECTING");
break;
case AsyncClientState::Connected:
state = F("CONNECTED");
break;
case AsyncClientState::Disconnected:
state = F("DISCONNECTED");
break;
case AsyncClientState::Disconnecting:
state = F("DISCONNECTING");
break;
default:
state = F("WAITING");
break;
String _mqttClientInfo(bool enabled, AsyncClientState state) {
String out;
if (_mqtt_enabled) {
out += _mqttClientState(state);
} else {
out += STRING_VIEW("DISABLED");
}
return state;
return out;
}
String _mqttClientInfo() {
return _mqttClientInfo(_mqtt_enabled, _mqtt_state);
}
void _mqttInfo() {
DEBUG_MSG_P(PSTR("[MQTT] %s\n"), _mqttBuildInfo());
DEBUG_MSG_P(PSTR("[MQTT] Client %s (%s)\n"),
_mqttClientEnabled(), _mqttClientState().c_str());
constexpr auto build = _mqttBuildInfo();
DEBUG_MSG_P(PSTR("[MQTT] %.*s\n"), build.length(), build.data());
const auto client = _mqttClientInfo();
DEBUG_MSG_P(PSTR("[MQTT] Client %.*s\n"), client.length(), client.c_str());
if (_mqtt_enabled && (_mqtt_state != AsyncClientState::Connected)) {
DEBUG_MSG_P(PSTR("[MQTT] Retrying, Last %u with Delay %u (Step %u)\n"),
@ -960,8 +976,12 @@ namespace {
PROGMEM_STRING(MqttCommand, "MQTT");
static void _mqttCommand(::terminal::CommandContext&& ctx) {
ctx.output.printf_P(PSTR("%s\n"), _mqttBuildInfo());
ctx.output.printf_P(PSTR("client %s\n"), _mqttClientState().c_str());
constexpr auto build = _mqttBuildInfo();
ctx.output.printf_P(PSTR("%.*s\n"), build.length(), build.c_str());
const auto client = _mqttClientInfo();
ctx.output.printf_P(PSTR("client %.*s\n"), client.length(), client.c_str());
settingsDump(ctx, mqtt::settings::query::Settings);
terminalOK(ctx);
}


+ 4
- 0
code/espurna/types.h View File

@ -312,6 +312,10 @@ struct StringView {
return _ptr;
}
constexpr const char* data() const {
return _ptr;
}
constexpr const char& operator[](size_t offset) const {
return *(_ptr + offset);
}


Loading…
Cancel
Save