Inline manage_inactivity, tweak autoreport_paused

2.0.x
Scott Lahteine 5 years ago
parent 2b788e9aa6
commit a1f026f57a

@ -204,10 +204,6 @@ bool wait_for_heatup = true;
bool wait_for_user; // = false; bool wait_for_user; // = false;
#endif #endif
#if HAS_AUTO_REPORTING || ENABLED(HOST_KEEPALIVE_FEATURE)
bool suspend_auto_report; // = false
#endif
// Inactivity shutdown // Inactivity shutdown
millis_t max_inactive_time, // = 0 millis_t max_inactive_time, // = 0
stepper_inactive_time = (DEFAULT_STEPPER_DEACTIVE_TIME) * 1000UL; stepper_inactive_time = (DEFAULT_STEPPER_DEACTIVE_TIME) * 1000UL;
@ -432,7 +428,7 @@ void startOrResumeJob() {
* - Pulse FET_SAFETY_PIN if it exists * - Pulse FET_SAFETY_PIN if it exists
*/ */
void manage_inactivity(const bool ignore_stepper_queue/*=false*/) { inline void manage_inactivity(const bool ignore_stepper_queue=false) {
#if HAS_FILAMENT_SENSOR #if HAS_FILAMENT_SENSOR
runout.run(); runout.run();
@ -697,7 +693,7 @@ void idle(
#endif #endif
#if HAS_AUTO_REPORTING #if HAS_AUTO_REPORTING
if (!suspend_auto_report) { if (!gcode.autoreport_paused) {
#if ENABLED(AUTO_REPORT_TEMPERATURES) #if ENABLED(AUTO_REPORT_TEMPERATURES)
thermalManager.auto_report_temperatures(); thermalManager.auto_report_temperatures();
#endif #endif

@ -44,8 +44,6 @@ void idle(
#endif #endif
); );
void manage_inactivity(const bool ignore_stepper_queue=false);
#if ENABLED(EXPERIMENTAL_I2CBUS) #if ENABLED(EXPERIMENTAL_I2CBUS)
#include "feature/twibus.h" #include "feature/twibus.h"
extern TWIBus i2c; extern TWIBus i2c;
@ -84,10 +82,6 @@ extern bool wait_for_heatup;
extern bool wait_for_user; extern bool wait_for_user;
#endif #endif
#if HAS_AUTO_REPORTING || ENABLED(HOST_KEEPALIVE_FEATURE)
extern bool suspend_auto_report;
#endif
// Inactivity shutdown timer // Inactivity shutdown timer
extern millis_t max_inactive_time, stepper_inactive_time; extern millis_t max_inactive_time, stepper_inactive_time;

@ -35,6 +35,18 @@ void safe_delay(millis_t ms) {
thermalManager.manage_heater(); // This keeps us safe if too many small safe_delay() calls are made thermalManager.manage_heater(); // This keeps us safe if too many small safe_delay() calls are made
} }
// A delay to provide brittle hosts time to receive bytes
#if ENABLED(SERIAL_OVERRUN_PROTECTION)
#include "../gcode/gcode.h" // for set_autoreport_paused
void serial_delay(const millis_t ms) {
const bool was = gcode.set_autoreport_paused(true);
safe_delay(ms);
gcode.set_autoreport_paused(was);
}
#endif
#if ENABLED(DEBUG_LEVELING_FEATURE) #if ENABLED(DEBUG_LEVELING_FEATURE)
#include "../module/probe.h" #include "../module/probe.h"

@ -27,14 +27,11 @@
// Delay that ensures heaters and watchdog are kept alive // Delay that ensures heaters and watchdog are kept alive
void safe_delay(millis_t ms); void safe_delay(millis_t ms);
// A delay to provide brittle hosts time to receive bytes #if ENABLED(SERIAL_OVERRUN_PROTECTION)
inline void serial_delay(const millis_t ms) { void serial_delay(const millis_t ms);
#if ENABLED(SERIAL_OVERRUN_PROTECTION) #else
safe_delay(ms); inline void serial_delay(const millis_t) {}
#else #endif
UNUSED(ms);
#endif
}
#if GRID_MAX_POINTS_X && GRID_MAX_POINTS_Y #if GRID_MAX_POINTS_X && GRID_MAX_POINTS_Y

@ -28,6 +28,8 @@
unified_bed_leveling ubl; unified_bed_leveling ubl;
#include "../../../MarlinCore.h"
#include "../../../module/configuration_store.h" #include "../../../module/configuration_store.h"
#include "../../../module/planner.h" #include "../../../module/planner.h"
#include "../../../module/motion.h" #include "../../../module/motion.h"
@ -151,9 +153,7 @@
* 4: Compact Human-Readable * 4: Compact Human-Readable
*/ */
void unified_bed_leveling::display_map(const int map_type) { void unified_bed_leveling::display_map(const int map_type) {
#if HAS_AUTO_REPORTING || ENABLED(HOST_KEEPALIVE_FEATURE) const bool was = gcode.set_autoreport_paused(true);
suspend_auto_report = true;
#endif
constexpr uint8_t eachsp = 1 + 6 + 1, // [-3.567] constexpr uint8_t eachsp = 1 + 6 + 1, // [-3.567]
twixt = eachsp * (GRID_MAX_POINTS_X) - 9 * 2; // Leading 4sp, Coordinates 9sp each twixt = eachsp * (GRID_MAX_POINTS_X) - 9 * 2; // Leading 4sp, Coordinates 9sp each
@ -229,9 +229,7 @@
SERIAL_EOL(); SERIAL_EOL();
} }
#if HAS_AUTO_REPORTING || ENABLED(HOST_KEEPALIVE_FEATURE) set_gcode.set_autoreport_paused(was);
suspend_auto_report = false;
#endif
} }
bool unified_bed_leveling::sanity_check() { bool unified_bed_leveling::sanity_check() {

@ -53,7 +53,7 @@ GcodeSuite gcode;
#include "../feature/cancel_object.h" #include "../feature/cancel_object.h"
#endif #endif
#include "../MarlinCore.h" // for idle() and suspend_auto_report #include "../MarlinCore.h" // for idle()
millis_t GcodeSuite::previous_move_ms; millis_t GcodeSuite::previous_move_ms;
@ -66,6 +66,10 @@ uint8_t GcodeSuite::axis_relative = (
| (ar_init.e ? _BV(REL_E) : 0) | (ar_init.e ? _BV(REL_E) : 0)
); );
#if HAS_AUTO_REPORTING || ENABLED(HOST_KEEPALIVE_FEATURE)
bool GcodeSuite::autoreport_paused; // = false
#endif
#if ENABLED(HOST_KEEPALIVE_FEATURE) #if ENABLED(HOST_KEEPALIVE_FEATURE)
GcodeSuite::MarlinBusyState GcodeSuite::busy_state = NOT_BUSY; GcodeSuite::MarlinBusyState GcodeSuite::busy_state = NOT_BUSY;
uint8_t GcodeSuite::host_keepalive_interval = DEFAULT_KEEPALIVE_INTERVAL; uint8_t GcodeSuite::host_keepalive_interval = DEFAULT_KEEPALIVE_INTERVAL;
@ -942,7 +946,7 @@ void GcodeSuite::process_subcommands_now(char * gcode) {
void GcodeSuite::host_keepalive() { void GcodeSuite::host_keepalive() {
const millis_t ms = millis(); const millis_t ms = millis();
static millis_t next_busy_signal_ms = 0; static millis_t next_busy_signal_ms = 0;
if (!suspend_auto_report && host_keepalive_interval && busy_state != NOT_BUSY) { if (!autoreport_paused && host_keepalive_interval && busy_state != NOT_BUSY) {
if (PENDING(ms, next_busy_signal_ms)) return; if (PENDING(ms, next_busy_signal_ms)) return;
switch (busy_state) { switch (busy_state) {
case IN_HANDLER: case IN_HANDLER:

@ -351,6 +351,18 @@ public:
process_subcommands_now_P(G28_STR); process_subcommands_now_P(G28_STR);
} }
#if HAS_AUTO_REPORTING || ENABLED(HOST_KEEPALIVE_FEATURE)
static bool autoreport_paused;
static inline bool set_autoreport_paused(const bool p) {
const bool was = autoreport_paused;
autoreport_paused = p;
return was;
}
#else
static constexpr bool autoreport_paused = false;
static inline bool set_autoreport_paused(const bool) { return false; }
#endif
#if ENABLED(HOST_KEEPALIVE_FEATURE) #if ENABLED(HOST_KEEPALIVE_FEATURE)
/** /**
* States for managing Marlin and host communication * States for managing Marlin and host communication

Loading…
Cancel
Save