From 4da628cc682c677e4dbcccc3290d995d40d1857e Mon Sep 17 00:00:00 2001 From: fvanroie <15969459+fvanroie@users.noreply.github.com> Date: Fri, 11 Jun 2021 18:38:48 +0200 Subject: [PATCH] Fix disconnected mqtt info not showing up --- src/hasp/hasp_attribute.cpp | 188 ++++++++++++++++++---------- src/hasp/hasp_attribute_helper.h | 45 +++++++ src/hasp/hasp_object.cpp | 19 +++ src/lang/en_US.h | 2 +- src/lang/es_ES.h | 6 +- src/lang/fr_FR.h | 2 +- src/lang/hu_HU.h | 2 +- src/lang/nl_NL.h | 2 +- src/lang/pt_PT.h | 2 +- src/lang/ro_RO.h | 2 +- src/mqtt/hasp_mqtt_pubsubclient.cpp | 34 +++-- src/sys/svc/hasp_telnet.cpp | 4 +- 12 files changed, 222 insertions(+), 86 deletions(-) diff --git a/src/hasp/hasp_attribute.cpp b/src/hasp/hasp_attribute.cpp index 39da7789..0bb55d86 100644 --- a/src/hasp/hasp_attribute.cpp +++ b/src/hasp/hasp_attribute.cpp @@ -1146,14 +1146,21 @@ static hasp_attribute_type_t specific_options_attribute(lv_obj_t* obj, const cha } else { strcpy_P(*text, "Not implemented"); // TODO : Literal String } - return hasp_attribute_type_t::HASP_ATTR_TYPE_METHOD_OK; + return hasp_attribute_type_t::HASP_ATTR_TYPE_STR; case LV_HASP_MSGBOX: if(update) { my_msgbox_set_map(obj, payload); } else { strcpy_P(*text, "Not implemented"); // TODO : Literal String } - return hasp_attribute_type_t::HASP_ATTR_TYPE_METHOD_OK; + return hasp_attribute_type_t::HASP_ATTR_TYPE_STR; + case LV_HASP_LIST: + if(update) { + my_list_set_options(obj, payload); + } else { + strcpy_P(*text, "Not implemented"); // TODO : Literal String + } + return hasp_attribute_type_t::HASP_ATTR_TYPE_STR; default: break; // not found } @@ -1324,6 +1331,11 @@ static bool my_obj_get_range(lv_obj_t* obj, int32_t& min, int32_t& max) max = my_chart_get_max_value(obj); break; + case LV_HASP_SPINBOX: + min = my_spinbox_get_min_value(obj); + max = my_spinbox_get_max_value(obj); + break; + case LV_HASP_DROPDOWN: case LV_HASP_ROLLER: return false; // not supported yet @@ -1336,70 +1348,102 @@ static bool my_obj_get_range(lv_obj_t* obj, int32_t& min, int32_t& max) static hasp_attribute_type_t attribute_common_val(lv_obj_t* obj, int32_t& val, bool update) { - if(obj_check_type(obj, LV_HASP_BUTTON)) { - if(lv_btn_get_checkable(obj)) { - if(update) { - if(val) - lv_obj_add_state(obj, LV_STATE_CHECKED); - else - lv_obj_clear_state(obj, LV_STATE_CHECKED); + switch(obj_get_type(obj)) { + + case LV_HASP_BUTTON: + if(lv_btn_get_checkable(obj)) { + if(update) { + if(val) + lv_obj_add_state(obj, LV_STATE_CHECKED); + else + lv_obj_clear_state(obj, LV_STATE_CHECKED); + } else { + val = lv_obj_get_state(obj, LV_BTN_PART_MAIN) & LV_STATE_CHECKED; + } } else { - val = lv_obj_get_state(obj, LV_BTN_PART_MAIN) & LV_STATE_CHECKED; + return HASP_ATTR_TYPE_NOT_FOUND; // not checkable } - } else { - return HASP_ATTR_TYPE_NOT_FOUND; // not checkable - } - } else if(obj_check_type(obj, LV_HASP_CHECKBOX)) { - if(update) - lv_checkbox_set_checked(obj, !!val); - else - val = lv_checkbox_is_checked(obj); - } else if(obj_check_type(obj, LV_HASP_SWITCH)) { - if(update) - !val ? lv_switch_off(obj, LV_ANIM_ON) : lv_switch_on(obj, LV_ANIM_ON); - else - val = lv_switch_get_state(obj); - } else if(obj_check_type(obj, LV_HASP_DROPDOWN)) { - lv_dropdown_set_selected(obj, (uint16_t)val); - } else if(obj_check_type(obj, LV_HASP_LINEMETER)) { - if(update) - lv_linemeter_set_value(obj, val); - else - val = lv_linemeter_get_value(obj); - } else if(obj_check_type(obj, LV_HASP_SLIDER)) { - if(update) - lv_slider_set_value(obj, val, LV_ANIM_ON); - else - val = lv_slider_get_value(obj); - } else if(obj_check_type(obj, LV_HASP_LED)) { - if(update) - lv_led_set_bright(obj, (uint8_t)val); - else - val = lv_led_get_bright(obj); - } else if(obj_check_type(obj, LV_HASP_ARC)) { - if(update) - lv_arc_set_value(obj, val); - else - val = lv_arc_get_value(obj); - } else if(obj_check_type(obj, LV_HASP_GAUGE)) { - if(update) - lv_gauge_set_value(obj, 0, val); - else - val = lv_gauge_get_value(obj, 0); - } else if(obj_check_type(obj, LV_HASP_ROLLER)) { - lv_roller_set_selected(obj, (uint16_t)val, LV_ANIM_ON); - } else if(obj_check_type(obj, LV_HASP_BAR)) { - if(update) - lv_bar_set_value(obj, val, LV_ANIM_ON); - else - val = lv_bar_get_value(obj); - } else if(obj_check_type(obj, LV_HASP_TABVIEW)) { - if(update) - lv_tabview_set_tab_act(obj, val, LV_ANIM_ON); - else - val = lv_tabview_get_tab_act(obj); - } else { - return HASP_ATTR_TYPE_NOT_FOUND; // not found + break; + + case LV_HASP_CHECKBOX: + if(update) + lv_checkbox_set_checked(obj, !!val); + else + val = lv_checkbox_is_checked(obj); + break; + + case LV_HASP_SWITCH: + if(update) + !val ? lv_switch_off(obj, LV_ANIM_ON) : lv_switch_on(obj, LV_ANIM_ON); + else + val = lv_switch_get_state(obj); + break; + + case LV_HASP_DROPDOWN: + lv_dropdown_set_selected(obj, (uint16_t)val); + + case LV_HASP_LINEMETER: + if(update) + lv_linemeter_set_value(obj, val); + else + val = lv_linemeter_get_value(obj); + break; + + case LV_HASP_SLIDER: + if(update) + lv_slider_set_value(obj, val, LV_ANIM_ON); + else + val = lv_slider_get_value(obj); + break; + + case LV_HASP_LED: + if(update) + lv_led_set_bright(obj, (uint8_t)val); + else + val = lv_led_get_bright(obj); + break; + + case LV_HASP_ARC: + if(update) + lv_arc_set_value(obj, val); + else + val = lv_arc_get_value(obj); + break; + + case LV_HASP_GAUGE: + if(update) + lv_gauge_set_value(obj, 0, val); + else + val = lv_gauge_get_value(obj, 0); + break; + + case LV_HASP_ROLLER: + lv_roller_set_selected(obj, (uint16_t)val, LV_ANIM_ON); + break; + + case LV_HASP_BAR: + if(update) + lv_bar_set_value(obj, val, LV_ANIM_ON); + else + val = lv_bar_get_value(obj); + break; + + case LV_HASP_SPINBOX: + if(update) + lv_spinbox_set_value(obj, val); + else + val = lv_spinbox_get_value(obj); + break; + + case LV_HASP_TABVIEW: + if(update) + lv_tabview_set_tab_act(obj, val, LV_ANIM_ON); + else + val = lv_tabview_get_tab_act(obj); + break; + + default: + return HASP_ATTR_TYPE_NOT_FOUND; // not found } return HASP_ATTR_TYPE_INT; // found @@ -1488,13 +1532,22 @@ static hasp_attribute_type_t attribute_common_range(lv_obj_t* obj, int32_t& val, case LV_HASP_CHART: if(update && (set_min ? val : min) == (set_max ? val : max)) - return HASP_ATTR_TYPE_RANGE_ERROR; // prevent setting min=max + return HASP_ATTR_TYPE_RANGE_ERROR; // prevent setting min=max if(update) lv_chart_set_range(obj, set_min ? val : min, set_max ? val : max); else val = set_min ? min : max; break; + case LV_HASP_SPINBOX: + if(update && (set_min ? val : min) == (set_max ? val : max)) + return HASP_ATTR_TYPE_RANGE_ERROR; // prevent setting min=max + if(update) + lv_spinbox_set_range(obj, set_min ? val : min, set_max ? val : max); + else + val = set_min ? min : max; + break; + default: return HASP_ATTR_TYPE_NOT_FOUND; } @@ -1906,8 +1959,9 @@ void hasp_process_obj_attribute(lv_obj_t* obj, const char* attribute, const char break; // case ATTR_SYMBOL: - // (update) ? lv_dropdown_set_symbol(obj, payload) : attr_out_str(obj, attr, - // lv_dropdown_get_symbol(obj)); return true; + // (update) ? lv_dropdown_set_symbol(obj, payload) : + // attr_out_str(obj, attr, lv_dropdown_get_symbol(obj)); + // return true; case ATTR_DELETE: case ATTR_CLEAR: diff --git a/src/hasp/hasp_attribute_helper.h b/src/hasp/hasp_attribute_helper.h index 0cc2cc15..ffdac787 100644 --- a/src/hasp/hasp_attribute_helper.h +++ b/src/hasp/hasp_attribute_helper.h @@ -76,6 +76,20 @@ lv_chart_series_t* my_chart_get_series(lv_obj_t* chart, uint8_t ser_num) return ser; } +// OK - this function is missing in lvgl +static inline int16_t my_spinbox_get_min_value(lv_obj_t* chart) +{ + lv_spinbox_ext_t* ext = (lv_spinbox_ext_t*)lv_obj_get_ext_attr(chart); + return ext->range_min; +} + +// OK - this function is missing in lvgl +static inline int16_t my_spinbox_get_max_value(lv_obj_t* chart) +{ + lv_spinbox_ext_t* ext = (lv_spinbox_ext_t*)lv_obj_get_ext_attr(chart); + return ext->range_max; +} + // OK static inline lv_color_t haspLogColor(lv_color_t color) { @@ -280,6 +294,37 @@ void my_obj_set_value_str_text(lv_obj_t* obj, uint8_t part, lv_state_t state, co // LOG_VERBOSE(TAG_ATTR, F("%s %d"), __FILE__, __LINE__); } +void my_list_set_options(lv_obj_t* obj, const char* payload) +{ // Reserve memory for JsonDocument + size_t maxsize = (128u * ((strlen(payload) / 128) + 1)) + 256; + DynamicJsonDocument doc(maxsize); + DeserializationError jsonError = deserializeJson(doc, payload); + + if(jsonError) { // Couldn't parse incoming JSON payload + dispatch_json_error(TAG_ATTR, jsonError); + return; + } + + doc.shrinkToFit(); + lv_list_clean(obj); + + JsonArray arr = doc.as(); // Parse payload + lv_obj_t* btn = NULL; + for(JsonVariant v : arr) { + const char* c = v.as(); + if(*c == 0xee || *c == 0xef) { + char icon[4]; + memcpy(icon, c, 3); + icon[3] = '\0'; + btn = lv_list_add_btn(obj, icon, c + 3); + + } else + btn = lv_list_add_btn(obj, NULL, c); + } + + if(btn) lv_obj_set_event_cb(btn, selector_event_handler); +} + void my_tabview_set_text(lv_obj_t* obj, const char* payload) { uint16_t id = lv_tabview_get_tab_act(obj); diff --git a/src/hasp/hasp_object.cpp b/src/hasp/hasp_object.cpp index 9ba44df1..b11fb084 100644 --- a/src/hasp/hasp_object.cpp +++ b/src/hasp/hasp_object.cpp @@ -529,6 +529,25 @@ void hasp_new_object(const JsonObject& config, uint8_t& saved_page_id) } break; + case LV_HASP_SPINBOX: + case HASP_OBJ_SPINBOX: + obj = lv_spinbox_create(parent_obj, NULL); + if(obj) { + lv_spinbox_set_range(obj, 0, 100); + lv_obj_set_event_cb(obj, slider_event_handler); + obj->user_data.objid = LV_HASP_SPINBOX; + } + break; + + case LV_HASP_LIST: + case HASP_OBJ_LIST: + obj = lv_list_create(parent_obj, NULL); + if(obj) { + // Callbacks are set on the individual buttons + obj->user_data.objid = LV_HASP_LIST; + } + break; + case LV_HASP_CHART: case HASP_OBJ_CHART: obj = lv_chart_create(parent_obj, NULL); diff --git a/src/lang/en_US.h b/src/lang/en_US.h index 5e85873b..745946c8 100644 --- a/src/lang/en_US.h +++ b/src/lang/en_US.h @@ -43,6 +43,7 @@ #define D_NETWORK_ONLINE "online" #define D_NETWORK_OFFLINE "offline" #define D_NETWORK_CONNECTION_FAILED "Connection failed" +#define D_NETWORK_CONNECTION_UNAUTHORIZED "Authorization failed" #define D_MQTT_DEFAULT_NAME "plate_%s" #define D_MQTT_CONNECTING "Connecting..." @@ -64,7 +65,6 @@ #define D_TELNET_CLIENT_LOGIN_FROM "Client login from %s" #define D_TELNET_CLIENT_CONNECT_FROM "Client connected from %s" #define D_TELNET_CLIENT_NOT_CONNECTED "Client NOT connected" -#define D_TELNET_AUTHENTICATION_FAILED "Authorization failed!" #define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Incorrect login attempt from %s" #define D_TELNET_STARTED "Telnet console started" #define D_TELNET_FAILED "Failed to start telnet console" diff --git a/src/lang/es_ES.h b/src/lang/es_ES.h index 1db5c17d..c0b7b39e 100644 --- a/src/lang/es_ES.h +++ b/src/lang/es_ES.h @@ -43,6 +43,7 @@ #define D_NETWORK_ONLINE "en linea" #define D_NETWORK_OFFLINE "fuera de línea" #define D_NETWORK_CONNECTION_FAILED "Falló la conexión" +#define D_NETWORK_CONNECTION_UNAUTHORIZED "Falló la autorización" #define D_MQTT_DEFAULT_NAME "placa_%s" #define D_MQTT_CONNECTING "Conectando..." @@ -63,7 +64,6 @@ #define D_TELNET_CLOSING_CONNECTION "Cerrando sesión de %s" #define D_TELNET_CLIENT_LOGIN_FROM "Se ha firmado el cliente %s" #define D_TELNET_CLIENT_CONNECT_FROM "Se ha conectado el cliente %s" -#define D_TELNET_AUTHENTICATION_FAILED "Falló la autorización!" #define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Intento de conexión incorrecta desde %s" #define D_TELNET_STARTED "Console Telnet arrancada" #define D_TELNET_FAILED "Falló el arranque de la consola Telnet" @@ -86,8 +86,8 @@ #define D_ATTRIBUTE_UNKNOWN "Propiedad %s desconocida" // D_ATTRIBUTE_OBSOLETE D_ATTRIBUTE_INSTEAD can be used together or just D_ATTRIBUTE_OBSOLETE alone -#define D_ATTRIBUTE_OBSOLETE "%s is obsolete" // new -#define D_ATTRIBUTE_INSTEAD ", use %s instead" // new +#define D_ATTRIBUTE_OBSOLETE "%s is obsolete" // new +#define D_ATTRIBUTE_INSTEAD ", use %s instead" // new #define D_ATTRIBUTE_READ_ONLY "%s es solo lectura" #define D_ATTRIBUTE_PAGE_METHOD_INVALID "No se puede llamar %s en una página" #define D_ATTRIBUTE_ALIGN_INVALID "Invalid align property: %s" // new diff --git a/src/lang/fr_FR.h b/src/lang/fr_FR.h index eb64dc7e..c03b4b24 100644 --- a/src/lang/fr_FR.h +++ b/src/lang/fr_FR.h @@ -43,6 +43,7 @@ #define D_NETWORK_ONLINE "en ligne" #define D_NETWORK_OFFLINE "déconnecté" #define D_NETWORK_CONNECTION_FAILED "Échec de la connexion " +#define D_NETWORK_CONNECTION_UNAUTHORIZED "Échec de l'autorisation" #define D_MQTT_DEFAULT_NAME "plaque_%s" #define D_MQTT_CONNECTING "Connexion..." @@ -64,7 +65,6 @@ #define D_TELNET_CLIENT_LOGIN_FROM "Connexion client depuis %s" #define D_TELNET_CLIENT_CONNECT_FROM "Client connecté depuis %s" #define D_TELNET_CLIENT_NOT_CONNECTED "Client NON connecté" -#define D_TELNET_AUTHENTICATION_FAILED "Échec de l'autorisation!" #define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Tentative incorrecte de %s" #define D_TELNET_STARTED "Console Telnet démarré" #define D_TELNET_FAILED "Échec du démarrage de la console telnet" diff --git a/src/lang/hu_HU.h b/src/lang/hu_HU.h index ad7c156c..5ddc433e 100644 --- a/src/lang/hu_HU.h +++ b/src/lang/hu_HU.h @@ -43,6 +43,7 @@ #define D_NETWORK_ONLINE "online" #define D_NETWORK_OFFLINE "offline" #define D_NETWORK_CONNECTION_FAILED "A kapcsolódás meghiúsult" +#define D_NETWORK_CONNECTION_UNAUTHORIZED "A hitelesítés sikertelen" #define D_MQTT_DEFAULT_NAME "plate_%s" #define D_MQTT_CONNECTING "Csatlakozás..." @@ -64,7 +65,6 @@ #define D_TELNET_CLIENT_LOGIN_FROM "Kliens bejelentkezés innen: %s" #define D_TELNET_CLIENT_CONNECT_FROM "Kliens csatlakozva innen: %s" #define D_TELNET_CLIENT_NOT_CONNECTED "Kliens NEM csatlakozik" -#define D_TELNET_AUTHENTICATION_FAILED "A hitelesítés sikertelen!" #define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Helytelen bejelentkezési kísérlet %s-ről" #define D_TELNET_STARTED "Telnet konzol elindítva" #define D_TELNET_FAILED "Telnet konzol elindítása meghiúsult" diff --git a/src/lang/nl_NL.h b/src/lang/nl_NL.h index 8d2c98c2..83531d77 100644 --- a/src/lang/nl_NL.h +++ b/src/lang/nl_NL.h @@ -43,6 +43,7 @@ #define D_NETWORK_ONLINE "online" #define D_NETWORK_OFFLINE "offline" #define D_NETWORK_CONNECTION_FAILED "Verbinding mislukt" +#define D_NETWORK_CONNECTION_UNAUTHORIZED "Autorisatie mislukt" #define D_MQTT_DEFAULT_NAME "plaat_%s" #define D_MQTT_CONNECTING "Verbinden..." @@ -64,7 +65,6 @@ #define D_TELNET_CLIENT_LOGIN_FROM "Client aangemeld van %s" #define D_TELNET_CLIENT_CONNECT_FROM "Client verbonden van %s" #define D_TELNET_CLIENT_NOT_CONNECTED "Client NIET verbonden" -#define D_TELNET_AUTHENTICATION_FAILED "Autorisatie mislukt!" #define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Aanmelding van %s mislukt" #define D_TELNET_STARTED "Telnet console gestart" #define D_TELNET_FAILED "Telnet console starten is mislukt" diff --git a/src/lang/pt_PT.h b/src/lang/pt_PT.h index 37564487..08cd4c72 100644 --- a/src/lang/pt_PT.h +++ b/src/lang/pt_PT.h @@ -44,6 +44,7 @@ #define D_NETWORK_ONLINE "Online" #define D_NETWORK_OFFLINE "Offline" #define D_NETWORK_CONNECTION_FAILED "Falhou a ligação" +#define D_NETWORK_CONNECTION_UNAUTHORIZED "Falhou a autorização" #define D_MQTT_DEFAULT_NAME "placa_%s" #define D_MQTT_CONNECTING "A ligar..." @@ -64,7 +65,6 @@ #define D_TELNET_CLOSING_CONNECTION "A fechar a ligação de %s" #define D_TELNET_CLIENT_LOGIN_FROM "Foi feito login ao cliente %s" #define D_TELNET_CLIENT_CONNECT_FROM "Foi conectado ao cliente %s" -#define D_TELNET_AUTHENTICATION_FAILED "Falhou a autorização!" #define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Tentativa de ligação incorreta desde %s" #define D_TELNET_STARTED "Consola inicializada" #define D_TELNET_FAILED "Falhou inicialização da consola" diff --git a/src/lang/ro_RO.h b/src/lang/ro_RO.h index d50b0978..06fd5a59 100644 --- a/src/lang/ro_RO.h +++ b/src/lang/ro_RO.h @@ -43,6 +43,7 @@ #define D_NETWORK_ONLINE "online" #define D_NETWORK_OFFLINE "offline" #define D_NETWORK_CONNECTION_FAILED "Conexiune eșuată" +#define D_NETWORK_CONNECTION_UNAUTHORIZED "Autorizatia a esuat" #define D_MQTT_DEFAULT_NAME "plate_%s" #define D_MQTT_CONNECTING "Conectare..." @@ -64,7 +65,6 @@ #define D_TELNET_CLIENT_LOGIN_FROM "Conectare client de la %s" #define D_TELNET_CLIENT_CONNECT_FROM "Client conectat de la %s" #define D_TELNET_CLIENT_NOT_CONNECTED "Clientul NU este conectat" -#define D_TELNET_AUTHENTICATION_FAILED "Autorizatia a esuat!" #define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Încercare incorectă de autentificare de la %s" #define D_TELNET_STARTED "Consola Telnet pornită" #define D_TELNET_FAILED "Nu s-a putut porni consola Telnet" diff --git a/src/mqtt/hasp_mqtt_pubsubclient.cpp b/src/mqtt/hasp_mqtt_pubsubclient.cpp index 44e2b2b7..7ac8c93b 100644 --- a/src/mqtt/hasp_mqtt_pubsubclient.cpp +++ b/src/mqtt/hasp_mqtt_pubsubclient.cpp @@ -372,7 +372,7 @@ void mqttStop() void mqtt_get_info(JsonDocument& doc) { - char mqttClientId[64]; + char buffer[64]; String mac((char*)0); mac.reserve(64); @@ -382,15 +382,33 @@ void mqtt_get_info(JsonDocument& doc) mac = halGetMacAddress(3, ""); mac.toLowerCase(); - snprintf_P(mqttClientId, sizeof(mqttClientId), PSTR("%s-%s"), haspDevice.get_hostname(), mac.c_str()); - info[F(D_INFO_CLIENTID)] = mqttClientId; + snprintf_P(buffer, sizeof(buffer), PSTR("%s-%s"), haspDevice.get_hostname(), mac.c_str()); + info[F(D_INFO_CLIENTID)] = buffer; - if(mqttIsConnected()) { // Check MQTT connection - info[F(D_INFO_STATUS)] = F(D_INFO_CONNECTED); - } else { - info[F(D_INFO_STATUS)] = F("" D_INFO_DISCONNECTED ", return code: "); - // +String(mqttClient.returnCode()); + switch(mqttClient.state()) { + case MQTT_CONNECT_UNAUTHORIZED: + snprintf_P(buffer, sizeof(buffer), PSTR(D_NETWORK_CONNECTION_UNAUTHORIZED)); + break; + case MQTT_CONNECT_FAILED: + snprintf_P(buffer, sizeof(buffer), PSTR(D_NETWORK_CONNECTION_FAILED)); + break; + case MQTT_DISCONNECTED: + snprintf_P(buffer, sizeof(buffer), PSTR(D_INFO_DISCONNECTED)); + break; + case MQTT_CONNECTED: + snprintf_P(buffer, sizeof(buffer), PSTR(D_INFO_CONNECTED)); + break; + case MQTT_CONNECTION_TIMEOUT: + case MQTT_CONNECTION_LOST: + case MQTT_CONNECT_BAD_PROTOCOL: + case MQTT_CONNECT_BAD_CLIENT_ID: + case MQTT_CONNECT_UNAVAILABLE: + case MQTT_CONNECT_BAD_CREDENTIALS: + default: + snprintf_P(buffer, sizeof(buffer), PSTR(D_INFO_DISCONNECTED " (%d)"), mqttClient.state()); + break; } + info[F(D_INFO_STATUS)] = buffer; info[F(D_INFO_RECEIVED)] = mqttReceiveCount; info[F(D_INFO_PUBLISHED)] = mqttPublishCount; diff --git a/src/sys/svc/hasp_telnet.cpp b/src/sys/svc/hasp_telnet.cpp index dbcd773e..c4d6fee8 100644 --- a/src/sys/svc/hasp_telnet.cpp +++ b/src/sys/svc/hasp_telnet.cpp @@ -131,7 +131,7 @@ static inline void telnetProcessLine() } else { telnetLoginState = TELNET_UNAUTHENTICATED; telnetLoginAttempt++; // Subsequent attempt - telnetClient.println(F(D_TELNET_AUTHENTICATION_FAILED"\r\n")); + telnetClient.println(F(D_NETWORK_CONNECTION_UNAUTHORIZED"\r\n")); LOG_WARNING(TAG_TELN, F(D_TELNET_INCORRECT_LOGIN_ATTEMPT), telnetClient.remoteIP().toString().c_str()); if(telnetLoginAttempt >= 3) { telnetClientDisconnect(); @@ -217,7 +217,7 @@ static void telnetProcessLine(const char* input) } else { telnetLoginState = TELNET_UNAUTHENTICATED; telnetLoginAttempt++; // Subsequent attempt - telnetClient.println(F(D_TELNET_AUTHENTICATION_FAILED "\r\n")); + telnetClient.println(F(D_NETWORK_CONNECTION_UNAUTHORIZED "\r\n")); LOG_WARNING(TAG_TELN, F(D_TELNET_INCORRECT_LOGIN_ATTEMPT), telnetClient.remoteIP().toString().c_str()); if(telnetLoginAttempt >= 3) { telnetClientDisconnect();