mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 16:29:51 +03:00
fix issue when 'set setting' didn't reset to default value in telnet
This commit is contained in:
185
src/MyESP.cpp
185
src/MyESP.cpp
@@ -651,7 +651,7 @@ void MyESP::_consoleShowHelp() {
|
||||
|
||||
// see if a char * string is empty. It could not be initialized yet.
|
||||
// return true if there is a value
|
||||
bool MyESP::_hasValue(char * s) {
|
||||
bool MyESP::_hasValue(const char * s) {
|
||||
if ((s == nullptr) || (strlen(s) == 0)) {
|
||||
return false;
|
||||
}
|
||||
@@ -769,148 +769,53 @@ char * MyESP::_telnet_readWord(bool allow_all_chars) {
|
||||
bool MyESP::_changeSetting(uint8_t wc, const char * setting, const char * value) {
|
||||
bool save_config = false;
|
||||
bool save_custom_config = false;
|
||||
bool restart = false;
|
||||
|
||||
// check for our internal commands first
|
||||
if (strcmp(setting, "erase") == 0) {
|
||||
_fs_eraseConfig();
|
||||
return true;
|
||||
|
||||
} else if (strcmp(setting, "wifi_ssid") == 0) {
|
||||
if (value) {
|
||||
free(_network_ssid);
|
||||
_network_ssid = strdup(value);
|
||||
}
|
||||
save_config = true;
|
||||
save_config = fs_setSettingValue(&_network_ssid, value, "");
|
||||
restart = save_config;
|
||||
//jw.enableSTA(false);
|
||||
myDebug_P(PSTR("Note: please 'restart' to apply new WiFi settings"));
|
||||
} else if (strcmp(setting, "wifi_password") == 0) {
|
||||
if (value) {
|
||||
free(_network_password);
|
||||
_network_password = strdup(value);
|
||||
}
|
||||
save_config = true;
|
||||
save_config = fs_setSettingValue(&_network_password, value, "");
|
||||
restart = save_config;
|
||||
//jw.enableSTA(false);
|
||||
myDebug_P(PSTR("Note: please 'restart' to apply new WiFi settings"));
|
||||
|
||||
} else if (strcmp(setting, "wifi_mode") == 0) {
|
||||
if (value) {
|
||||
if (strcmp(value, "ap") == 0) {
|
||||
_network_wmode = 1;
|
||||
save_config = true;
|
||||
myDebug_P(PSTR("Note: please 'restart' to apply new WiFi settings"));
|
||||
save_config = restart = true;
|
||||
} else if (strcmp(value, "client") == 0) {
|
||||
_network_wmode = 0;
|
||||
save_config = true;
|
||||
myDebug_P(PSTR("Note: please 'restart' to apply new WiFi settings"));
|
||||
save_config = restart = true;
|
||||
} else {
|
||||
save_config = false;
|
||||
}
|
||||
}
|
||||
|
||||
} else if (strcmp(setting, "mqtt_ip") == 0) {
|
||||
if (value) {
|
||||
free(_mqtt_ip);
|
||||
_mqtt_ip = strdup(value);
|
||||
}
|
||||
save_config = true;
|
||||
save_config = fs_setSettingValue(&_mqtt_ip, value, "");
|
||||
} else if (strcmp(setting, "mqtt_username") == 0) {
|
||||
if (value) {
|
||||
free(_mqtt_user);
|
||||
_mqtt_user = strdup(value);
|
||||
}
|
||||
save_config = true;
|
||||
save_config = fs_setSettingValue(&_mqtt_user, value, "");
|
||||
} else if (strcmp(setting, "mqtt_password") == 0) {
|
||||
if (value) {
|
||||
free(_mqtt_password);
|
||||
_mqtt_password = strdup(value);
|
||||
}
|
||||
save_config = true;
|
||||
save_config = fs_setSettingValue(&_mqtt_password, value, "");
|
||||
} else if (strcmp(setting, "mqtt_base") == 0) {
|
||||
if (value) {
|
||||
free(_mqtt_base);
|
||||
_mqtt_base = strdup(value);
|
||||
}
|
||||
save_config = true;
|
||||
save_config = fs_setSettingValue(&_mqtt_base, value, MQTT_BASE_DEFAULT);
|
||||
} else if (strcmp(setting, "mqtt_port") == 0) {
|
||||
if (value) {
|
||||
_mqtt_port = atoi(value);
|
||||
}
|
||||
save_config = true;
|
||||
save_config = fs_setSettingValue(&_mqtt_port, value, MQTT_PORT);
|
||||
} else if (strcmp(setting, "mqtt_enabled") == 0) {
|
||||
save_config = true;
|
||||
if (value) {
|
||||
if (strcmp(value, "on") == 0) {
|
||||
_mqtt_enabled = true;
|
||||
save_config = true;
|
||||
} else if (strcmp(value, "off") == 0) {
|
||||
_mqtt_enabled = false;
|
||||
save_config = true;
|
||||
} else {
|
||||
save_config = false;
|
||||
}
|
||||
}
|
||||
|
||||
save_config = fs_setSettingValue(&_mqtt_enabled, value, false);
|
||||
} else if (strcmp(setting, "serial") == 0) {
|
||||
save_config = true;
|
||||
if (value) {
|
||||
if (strcmp(value, "on") == 0) {
|
||||
_general_serial = true;
|
||||
save_config = true;
|
||||
myDebug_P(PSTR("Type 'restart' to activate Serial mode."));
|
||||
} else if (strcmp(value, "off") == 0) {
|
||||
_general_serial = false;
|
||||
save_config = true;
|
||||
myDebug_P(PSTR("Type 'restart' to deactivate Serial mode."));
|
||||
} else {
|
||||
save_config = false;
|
||||
}
|
||||
}
|
||||
|
||||
save_config = fs_setSettingValue(&_general_serial, value, false);
|
||||
restart = save_config;
|
||||
} else if (strcmp(setting, "mqtt_heartbeat") == 0) {
|
||||
save_config = true;
|
||||
if (value) {
|
||||
if (strcmp(value, "on") == 0) {
|
||||
_mqtt_heartbeat = true;
|
||||
save_config = true;
|
||||
myDebug_P(PSTR("Heartbeat on"));
|
||||
} else if (strcmp(value, "off") == 0) {
|
||||
_mqtt_heartbeat = false;
|
||||
save_config = true;
|
||||
myDebug_P(PSTR("Heartbeat off"));
|
||||
} else {
|
||||
save_config = false;
|
||||
}
|
||||
}
|
||||
save_config = fs_setSettingValue(&_mqtt_heartbeat, value, false);
|
||||
} else if (strcmp(setting, "ntp_enabled") == 0) {
|
||||
save_config = true;
|
||||
if (value) {
|
||||
if (strcmp(value, "on") == 0) {
|
||||
_ntp_enabled = true;
|
||||
save_config = true;
|
||||
myDebug_P(PSTR("NTP on"));
|
||||
} else if (strcmp(value, "off") == 0) {
|
||||
_ntp_enabled = false;
|
||||
save_config = true;
|
||||
myDebug_P(PSTR("NTP off"));
|
||||
} else {
|
||||
save_config = false;
|
||||
}
|
||||
}
|
||||
save_config = fs_setSettingValue(&_ntp_enabled, value, false);
|
||||
} else if (strcmp(setting, "log_events") == 0) {
|
||||
save_config = true;
|
||||
if (value) {
|
||||
if (strcmp(value, "on") == 0) {
|
||||
_general_log_events = true;
|
||||
save_config = true;
|
||||
myDebug_P(PSTR("Event logging on"));
|
||||
} else if (strcmp(value, "off") == 0) {
|
||||
_general_log_events = false;
|
||||
save_config = true;
|
||||
myDebug_P(PSTR("Event logging off"));
|
||||
} else {
|
||||
save_config = false;
|
||||
}
|
||||
}
|
||||
save_config = fs_setSettingValue(&_general_log_events, value, false);
|
||||
} else {
|
||||
// finally check for any custom commands
|
||||
if (_fs_setlist_callback_f) {
|
||||
@@ -918,13 +823,17 @@ bool MyESP::_changeSetting(uint8_t wc, const char * setting, const char * value)
|
||||
}
|
||||
}
|
||||
|
||||
if (restart) {
|
||||
myDebug_P(PSTR("Please 'restart' to apply new settings."));
|
||||
}
|
||||
|
||||
bool ok = false;
|
||||
|
||||
// if we were able to recognize the set command, continue
|
||||
if ((save_config || save_custom_config)) {
|
||||
// check for 2 params
|
||||
if (value == nullptr) {
|
||||
myDebug_P(PSTR("%s setting reset to its default value."), setting);
|
||||
myDebug_P(PSTR("%s has been reset to its default value."), setting);
|
||||
} else {
|
||||
// must be 3 params
|
||||
myDebug_P(PSTR("%s changed."), setting);
|
||||
@@ -1787,6 +1696,52 @@ bool MyESP::_fs_loadConfig() {
|
||||
return true;
|
||||
}
|
||||
|
||||
// saves a string into a config setting, using default value if non set
|
||||
// returns true if successful
|
||||
bool MyESP::fs_setSettingValue(char ** setting, const char * value, const char * value_default) {
|
||||
if (*setting == nullptr) {
|
||||
free(setting); // first free any allocated memory
|
||||
}
|
||||
|
||||
if (_hasValue(value)) {
|
||||
*setting = strdup(value);
|
||||
} else {
|
||||
*setting = strdup(value_default); // use the default value
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// saves a integer into a config setting, using default value if non set
|
||||
// returns true if successful
|
||||
bool MyESP::fs_setSettingValue(uint16_t * setting, const char * value, uint16_t value_default) {
|
||||
if (_hasValue(value)) {
|
||||
*setting = (uint16_t)atoi(value);
|
||||
} else {
|
||||
*setting = value_default; // use the default value
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// saves a bool into a config setting, using default value if non set
|
||||
// returns true if successful
|
||||
bool MyESP::fs_setSettingValue(bool * setting, const char * value, bool value_default) {
|
||||
if (_hasValue(value)) {
|
||||
if ((strcmp(value, "on") == 0) || (strcmp(value, "yes") == 0) || (strcmp(value, "1") == 0)) {
|
||||
*setting = true;
|
||||
} else if ((strcmp(value, "off") == 0) || (strcmp(value, "no") == 0) || (strcmp(value, "0") == 0)) {
|
||||
*setting = false;
|
||||
} else {
|
||||
return false; // invalid setting value
|
||||
}
|
||||
} else {
|
||||
*setting = value_default; // use the default value
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// load custom settings
|
||||
bool MyESP::_fs_loadCustomConfig() {
|
||||
StaticJsonDocument<MYESP_SPIFFS_MAXSIZE_CONFIG> doc;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#ifndef MyESP_h
|
||||
#define MyESP_h
|
||||
|
||||
#define MYESP_VERSION "1.2.8"
|
||||
#define MYESP_VERSION "1.2.9"
|
||||
|
||||
#include <ArduinoJson.h>
|
||||
#include <ArduinoOTA.h>
|
||||
@@ -287,6 +287,9 @@ class MyESP {
|
||||
void setSettings(fs_loadsave_callback_f loadsave, fs_setlist_callback_f setlist, bool useSerial = true);
|
||||
bool fs_saveConfig(JsonObject root);
|
||||
bool fs_saveCustomConfig(JsonObject root);
|
||||
bool fs_setSettingValue(char ** setting, const char * value, const char * value_default);
|
||||
bool fs_setSettingValue(uint16_t * setting, const char * value, uint16_t value_default);
|
||||
bool fs_setSettingValue(bool * setting, const char * value, bool value_default);
|
||||
|
||||
// Web
|
||||
void setWeb(web_callback_f callback_web);
|
||||
@@ -330,7 +333,7 @@ class MyESP {
|
||||
char * _mqtt_ip;
|
||||
char * _mqtt_user;
|
||||
char * _mqtt_password;
|
||||
int _mqtt_port;
|
||||
uint16_t _mqtt_port;
|
||||
char * _mqtt_base;
|
||||
bool _mqtt_enabled;
|
||||
uint32_t _mqtt_keepalive;
|
||||
@@ -406,7 +409,7 @@ class MyESP {
|
||||
bool _formatreq;
|
||||
unsigned long _getUptime();
|
||||
char * _getBuildTime();
|
||||
bool _hasValue(char * s);
|
||||
bool _hasValue(const char * s);
|
||||
void _printHeap(const char * s);
|
||||
|
||||
// reset reason and rtcmem
|
||||
|
||||
Reference in New Issue
Block a user