diff --git a/Software/src/devboard/safety/safety.cpp b/Software/src/devboard/safety/safety.cpp index ade03995..c3b79ede 100644 --- a/Software/src/devboard/safety/safety.cpp +++ b/Software/src/devboard/safety/safety.cpp @@ -196,16 +196,21 @@ void update_machineryprotection() { } //battery pause status begin -void setBatteryPause(bool pause_battery, bool pause_CAN, bool emergency_stop) { +void setBatteryPause(bool pause_battery, bool pause_CAN, bool emergency_stop, bool store_settings) { // First handle emergency stop / resume if (emergency_stop && !datalayer.system.settings.equipment_stop_active) { datalayer.system.settings.equipment_stop_active = true; - store_settings_emergency_stop(); + if (store_settings) { + store_settings_emergency_stop(); + } + set_event(EVENT_EMERGENCY_STOP, 1); } else if (!emergency_stop && datalayer.system.settings.equipment_stop_active) { datalayer.system.settings.equipment_stop_active = false; - store_settings_emergency_stop(); + if (store_settings) { + store_settings_emergency_stop(); + } clear_event(EVENT_EMERGENCY_STOP); } diff --git a/Software/src/devboard/safety/safety.h b/Software/src/devboard/safety/safety.h index 0020cd81..9dd71851 100644 --- a/Software/src/devboard/safety/safety.h +++ b/Software/src/devboard/safety/safety.h @@ -21,7 +21,7 @@ extern void store_settings_emergency_stop(); void update_machineryprotection(); //battery pause status begin -void setBatteryPause(bool pause_battery, bool pause_CAN, bool emergency_stop = false); +void setBatteryPause(bool pause_battery, bool pause_CAN, bool emergency_stop = false, bool store_settings = true); void emulator_pause_state_send_CAN_battery(); std::string get_emulator_pause_status(); //battery pause status end diff --git a/Software/src/devboard/webserver/webserver.cpp b/Software/src/devboard/webserver/webserver.cpp index 1f1317b3..800c23b1 100644 --- a/Software/src/devboard/webserver/webserver.cpp +++ b/Software/src/devboard/webserver/webserver.cpp @@ -344,7 +344,10 @@ void init_webserver() { if (WEBSERVER_AUTH_REQUIRED && !request->authenticate(http_username, http_password)) return request->requestAuthentication(); request->send(200, "text/plain", "Rebooting server..."); - //TODO: Should we handle contactors gracefully? Ifdef CONTACTOR_CONTROL then what? + + //Equipment STOP without persisting the emergency state before restart + // Max Charge/Discharge = 0; CAN = stop; contactors = open + setBatteryPause(true, true, true, false); delay(1000); ESP.restart(); });