mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
show restart needed after changing board profile. also no need to restart sensors.
This commit is contained in:
@@ -196,24 +196,26 @@ StateUpdateResult WebSettings::update(JsonObject root, WebSettings & settings) {
|
|||||||
System::load_board_profile(data, settings.board_profile.c_str());
|
System::load_board_profile(data, settings.board_profile.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int prev;
|
||||||
|
reset_flags();
|
||||||
|
|
||||||
|
// check if board profile has changed
|
||||||
if (org_board_profile != settings.board_profile) {
|
if (org_board_profile != settings.board_profile) {
|
||||||
if (org_board_profile.isEmpty()) {
|
if (org_board_profile.isEmpty()) {
|
||||||
EMSESP::logger().info("Setting board profile to %s", settings.board_profile.c_str());
|
EMSESP::logger().info("Setting board profile to %s", settings.board_profile.c_str());
|
||||||
} else {
|
} else {
|
||||||
EMSESP::logger().info("Setting board profile to %s (was %s)", settings.board_profile.c_str(), org_board_profile.c_str());
|
EMSESP::logger().info("Setting board profile to %s (was %s)", settings.board_profile.c_str(), org_board_profile.c_str());
|
||||||
}
|
}
|
||||||
|
add_flags(ChangeFlags::RESTART);
|
||||||
}
|
}
|
||||||
|
|
||||||
int prev;
|
|
||||||
reset_flags();
|
|
||||||
|
|
||||||
// pins
|
// pins
|
||||||
prev = settings.led_gpio;
|
prev = settings.led_gpio;
|
||||||
settings.led_gpio = data[0];
|
settings.led_gpio = data[0];
|
||||||
check_flag(prev, settings.led_gpio, ChangeFlags::LED);
|
check_flag(prev, settings.led_gpio, ChangeFlags::LED);
|
||||||
prev = settings.dallas_gpio;
|
prev = settings.dallas_gpio;
|
||||||
settings.dallas_gpio = data[1];
|
settings.dallas_gpio = data[1];
|
||||||
check_flag(prev, settings.dallas_gpio, ChangeFlags::SENSOR);
|
check_flag(prev, settings.dallas_gpio, ChangeFlags::TEMPERATURE_SENSOR);
|
||||||
prev = settings.rx_gpio;
|
prev = settings.rx_gpio;
|
||||||
settings.rx_gpio = data[2];
|
settings.rx_gpio = data[2];
|
||||||
check_flag(prev, settings.rx_gpio, ChangeFlags::RESTART);
|
check_flag(prev, settings.rx_gpio, ChangeFlags::RESTART);
|
||||||
@@ -269,7 +271,7 @@ StateUpdateResult WebSettings::update(JsonObject root, WebSettings & settings) {
|
|||||||
// temperature sensor
|
// temperature sensor
|
||||||
prev = settings.dallas_parasite;
|
prev = settings.dallas_parasite;
|
||||||
settings.dallas_parasite = root["dallas_parasite"] | EMSESP_DEFAULT_DALLAS_PARASITE;
|
settings.dallas_parasite = root["dallas_parasite"] | EMSESP_DEFAULT_DALLAS_PARASITE;
|
||||||
check_flag(prev, settings.dallas_parasite, ChangeFlags::SENSOR);
|
check_flag(prev, settings.dallas_parasite, ChangeFlags::TEMPERATURE_SENSOR);
|
||||||
|
|
||||||
// shower
|
// shower
|
||||||
prev = settings.shower_timer;
|
prev = settings.shower_timer;
|
||||||
@@ -296,7 +298,7 @@ StateUpdateResult WebSettings::update(JsonObject root, WebSettings & settings) {
|
|||||||
// adc
|
// adc
|
||||||
prev = settings.analog_enabled;
|
prev = settings.analog_enabled;
|
||||||
settings.analog_enabled = root["analog_enabled"] | EMSESP_DEFAULT_ANALOG_ENABLED;
|
settings.analog_enabled = root["analog_enabled"] | EMSESP_DEFAULT_ANALOG_ENABLED;
|
||||||
check_flag(prev, settings.analog_enabled, ChangeFlags::ADC);
|
check_flag(prev, settings.analog_enabled, ChangeFlags::ANALOG_SENSOR);
|
||||||
|
|
||||||
//
|
//
|
||||||
// these need system restarts first before settings are activated...
|
// these need system restarts first before settings are activated...
|
||||||
@@ -400,11 +402,17 @@ StateUpdateResult WebSettings::update(JsonObject root, WebSettings & settings) {
|
|||||||
// this is called after any of the settings have been persisted to the filesystem
|
// this is called after any of the settings have been persisted to the filesystem
|
||||||
// either via the Web UI or via the Console
|
// either via the Web UI or via the Console
|
||||||
void WebSettingsService::onUpdate() {
|
void WebSettingsService::onUpdate() {
|
||||||
|
// skip if we're restarting anyway
|
||||||
|
|
||||||
|
if (WebSettings::has_flags(WebSettings::ChangeFlags::RESTART)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (WebSettings::has_flags(WebSettings::ChangeFlags::SHOWER)) {
|
if (WebSettings::has_flags(WebSettings::ChangeFlags::SHOWER)) {
|
||||||
EMSESP::shower_.start();
|
EMSESP::shower_.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WebSettings::has_flags(WebSettings::ChangeFlags::SENSOR)) {
|
if (WebSettings::has_flags(WebSettings::ChangeFlags::TEMPERATURE_SENSOR)) {
|
||||||
EMSESP::temperaturesensor_.start();
|
EMSESP::temperaturesensor_.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -416,7 +424,7 @@ void WebSettingsService::onUpdate() {
|
|||||||
EMSESP::system_.syslog_init(); // re-start (or stop)
|
EMSESP::system_.syslog_init(); // re-start (or stop)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WebSettings::has_flags(WebSettings::ChangeFlags::ADC)) {
|
if (WebSettings::has_flags(WebSettings::ChangeFlags::ANALOG_SENSOR)) {
|
||||||
EMSESP::analogsensor_.start();
|
EMSESP::analogsensor_.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -453,7 +461,7 @@ void WebSettingsService::board_profile(AsyncWebServerRequest * request) {
|
|||||||
auto * response = new AsyncJsonResponse(false);
|
auto * response = new AsyncJsonResponse(false);
|
||||||
JsonObject root = response->getRoot();
|
JsonObject root = response->getRoot();
|
||||||
|
|
||||||
std::vector<int8_t> data; // led, dallas, rx, tx, button, phy_type, eth_power, eth_phy_addr, eth_clock_mode
|
std::vector<int8_t> data; // led, dallas, rx, tx, button, phy_type, eth_power, eth_phy_addr, eth_clock_mode, led_type
|
||||||
(void)System::load_board_profile(data, board_profile);
|
(void)System::load_board_profile(data, board_profile);
|
||||||
root["board_profile"] = board_profile;
|
root["board_profile"] = board_profile;
|
||||||
root["led_gpio"] = data[0];
|
root["led_gpio"] = data[0];
|
||||||
|
|||||||
@@ -90,17 +90,16 @@ class WebSettings {
|
|||||||
|
|
||||||
enum ChangeFlags : uint8_t {
|
enum ChangeFlags : uint8_t {
|
||||||
|
|
||||||
NONE = 0,
|
NONE = 0,
|
||||||
UART = (1 << 0), // 1
|
UART = (1 << 0), // 1 - uart
|
||||||
SYSLOG = (1 << 1), // 2
|
SYSLOG = (1 << 1), // 2 - syslog
|
||||||
ADC = (1 << 2), // 4 - analog
|
ANALOG_SENSOR = (1 << 2), // 4 - analog
|
||||||
SENSOR = (1 << 3), // 8
|
TEMPERATURE_SENSOR = (1 << 3), // 8 - dallas sensor
|
||||||
SHOWER = (1 << 4), // 16
|
SHOWER = (1 << 4), // 16 - shower timer and alert
|
||||||
LED = (1 << 5), // 32
|
LED = (1 << 5), // 32 - led
|
||||||
BUTTON = (1 << 6), // 64
|
BUTTON = (1 << 6), // 64 - button
|
||||||
MQTT = (1 << 7), // 128
|
MQTT = (1 << 7), // 128 - mqtt
|
||||||
RESTART = 0xFF
|
RESTART = 0xFF // 255 - restart request (all changes)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static void check_flag(int prev_v, int new_v, uint8_t flag) {
|
static void check_flag(int prev_v, int new_v, uint8_t flag) {
|
||||||
|
|||||||
Reference in New Issue
Block a user