From 27cb90da8b2bd2438acad417af5a2663b746a435 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <sourcetree@thinkyhead.com>
Date: Wed, 8 Apr 2015 00:56:19 -0700
Subject: [PATCH] IsStopped / IsRunning inline

---
 Marlin/Marlin.h        |  4 +++-
 Marlin/Marlin_main.cpp | 46 +++++++++++++++++++++++-------------------
 Marlin/temperature.cpp |  2 +-
 3 files changed, 29 insertions(+), 23 deletions(-)

diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h
index 36e054eec0..9cec9dd37a 100644
--- a/Marlin/Marlin.h
+++ b/Marlin/Marlin.h
@@ -219,7 +219,9 @@ void Stop();
   void filrunout();
 #endif
 
-bool IsStopped();
+extern bool Running;
+inline bool IsRunning() { return  Running; }
+inline bool IsStopped() { return !Running; }
 
 bool enquecommand(const char *cmd); //put a single ASCII command at the end of the current buffer or return false when it is full
 void enquecommands_P(const char *cmd); //put one or many ASCII commands at the end of the current buffer, read from flash
diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 132c353eba..5055d0817b 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -202,6 +202,16 @@
   CardReader card;
 #endif
 
+bool Running = true;
+
+static float feedrate = 1500.0, next_feedrate, saved_feedrate;
+static float current_position[NUM_AXIS] = { 0.0 };
+static float destination[NUM_AXIS] = { 0.0 };
+bool axis_known_position[3] = { false };
+
+static long gcode_N, gcode_LastN, Stopped_gcode_LastN = 0;
+static char cmdbuffer[BUFSIZE][MAX_CMD_SIZE];
+
 float homing_feedrate[] = HOMING_FEEDRATE;
 bool axis_relative_modes[] = AXIS_RELATIVE_MODES;
 int feedmultiply = 100; //100->1 200->2
@@ -210,23 +220,20 @@ int extruder_multiply[EXTRUDERS] = ARRAY_BY_EXTRUDERS(100, 100, 100, 100);
 bool volumetric_enabled = false;
 float filament_size[EXTRUDERS] = ARRAY_BY_EXTRUDERS(DEFAULT_NOMINAL_FILAMENT_DIA, DEFAULT_NOMINAL_FILAMENT_DIA, DEFAULT_NOMINAL_FILAMENT_DIA, DEFAULT_NOMINAL_FILAMENT_DIA);
 float volumetric_multiplier[EXTRUDERS] = ARRAY_BY_EXTRUDERS(1.0, 1.0, 1.0, 1.0);
-float current_position[NUM_AXIS] = { 0.0 };
 float home_offset[3] = { 0 };
 float min_pos[3] = { X_MIN_POS, Y_MIN_POS, Z_MIN_POS };
 float max_pos[3] = { X_MAX_POS, Y_MAX_POS, Z_MAX_POS };
-bool axis_known_position[3] = { false };
+
 uint8_t active_extruder = 0;
 int fanSpeed = 0;
 bool cancel_heatup = false;
+
 const char errormagic[] PROGMEM = "Error:";
 const char echomagic[] PROGMEM = "echo:";
 const char axis_codes[NUM_AXIS] = {'X', 'Y', 'Z', 'E'};
-static float destination[NUM_AXIS] = { 0 };
+
 static float offset[3] = { 0 };
-static float feedrate = 1500.0, next_feedrate, saved_feedrate;
-static long gcode_N, gcode_LastN, Stopped_gcode_LastN = 0;
 static bool relative_mode = false;  //Determines Absolute or Relative Coordinates
-static char cmdbuffer[BUFSIZE][MAX_CMD_SIZE];
 static int bufindr = 0;
 static int bufindw = 0;
 static int buflen = 0;
@@ -243,7 +250,6 @@ static unsigned long stepper_inactive_time = DEFAULT_STEPPER_DEACTIVE_TIME*1000l
 unsigned long starttime = 0; ///< Print job start time
 unsigned long stoptime = 0;  ///< Print job stop time
 static uint8_t target_extruder;
-bool Stopped = false;
 bool CooldownNoWait = true;
 bool target_direction;
 
@@ -743,7 +749,7 @@ void get_command()
         case 1:
         case 2:
         case 3:
-          if (Stopped == true) {
+          if (IsStopped()) {
             SERIAL_ERRORLNPGM(MSG_ERR_STOPPED);
             LCD_MESSAGEPGM(MSG_STOPPED);
           }
@@ -1240,7 +1246,7 @@ inline void set_destination_to_current() { memcpy(destination, current_position,
       if (z_min_endstop)
     #endif
       {
-        if (!Stopped) {
+        if (IsRunning()) {
           SERIAL_ERROR_START;
           SERIAL_ERRORLNPGM("Z-Probe failed to engage!");
           LCD_ALERTMESSAGEPGM("Err: ZPROBE");
@@ -1315,7 +1321,7 @@ inline void set_destination_to_current() { memcpy(destination, current_position,
       if (!z_min_endstop)
     #endif
       {
-        if (!Stopped) {
+        if (IsRunning()) {
           SERIAL_ERROR_START;
           SERIAL_ERRORLNPGM("Z-Probe failed to retract!");
           LCD_ALERTMESSAGEPGM("Err: ZPROBE");
@@ -1650,7 +1656,7 @@ static void homeaxis(AxisEnum axis) {
  * G0, G1: Coordinated movement of X Y Z E axes
  */
 inline void gcode_G0_G1() {
-  if (!Stopped) {
+  if (IsRunning()) {
     get_coordinates(); // For X Y Z E F
     #ifdef FWRETRACT
       if (autoretract_enabled)
@@ -1675,7 +1681,7 @@ inline void gcode_G0_G1() {
  * G3: Counterclockwise Arc
  */
 inline void gcode_G2_G3(bool clockwise) {
-  if (!Stopped) {
+  if (IsRunning()) {
     get_arc_coordinates();
     prepare_arc_move(clockwise);
   }
@@ -4119,7 +4125,7 @@ inline void gcode_M303() {
   bool SCARA_move_to_cal(uint8_t delta_x, uint8_t delta_y) {
     //SoftEndsEnabled = false;              // Ignore soft endstops during calibration
     //SERIAL_ECHOLN(" Soft endstops disabled ");
-    if (! Stopped) {
+    if (IsRunning()) {
       //get_coordinates(); // For X Y Z E F
       delta[X_AXIS] = delta_x;
       delta[Y_AXIS] = delta_y;
@@ -4617,7 +4623,7 @@ inline void gcode_M907() {
  * M999: Restart after being stopped
  */
 inline void gcode_M999() {
-  Stopped = false;
+  Running = true;
   lcd_reset_alert_level();
   gcode_LastN = Stopped_gcode_LastN;
   FlushSerialRequestResend();
@@ -4652,7 +4658,7 @@ inline void gcode_T() {
         // Save current position to return to after applying extruder offset
         set_destination_to_current();
         #ifdef DUAL_X_CARRIAGE
-          if (dual_x_carriage_mode == DXC_AUTO_PARK_MODE && Stopped == false &&
+          if (dual_x_carriage_mode == DXC_AUTO_PARK_MODE && IsRunning() &&
                 (delayed_move_time != 0 || current_position[X_AXIS] != x_home_pos(active_extruder))) {
             // Park old head: 1) raise 2) move to park position 3) lower
             plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS] + TOOLCHANGE_PARK_ZLIFT,
@@ -4710,7 +4716,7 @@ inline void gcode_T() {
           sync_plan_position();
         #endif
         // Move to the old position if 'F' was in the parameters
-        if (make_move && !Stopped) prepare_move();
+        if (make_move && IsRunning()) prepare_move();
       }
 
       #ifdef EXT_SOLENOID
@@ -5877,7 +5883,7 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) {
 
   #ifdef DUAL_X_CARRIAGE
     // handle delayed move timeout
-    if (delayed_move_time && ms > delayed_move_time + 1000 && !Stopped) {
+    if (delayed_move_time && ms > delayed_move_time + 1000 && IsRunning()) {
       // travel moves have been received so enact them
       delayed_move_time = 0xFFFFFFFFUL; // force moves to be done
       set_destination_to_current();
@@ -5928,8 +5934,8 @@ void kill()
 void Stop()
 {
   disable_heater();
-  if(Stopped == false) {
-    Stopped = true;
+  if (IsRunning()) {
+    Running = false;
     Stopped_gcode_LastN = gcode_LastN; // Save last g_code for restart
     SERIAL_ERROR_START;
     SERIAL_ERRORLNPGM(MSG_ERR_STOPPED);
@@ -5937,8 +5943,6 @@ void Stop()
   }
 }
 
-bool IsStopped() { return Stopped; };
-
 #ifdef FAST_PWM_FAN
 void setPwmFrequency(uint8_t pin, int val)
 {
diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp
index aa524ac56a..b4dffbfe16 100644
--- a/Marlin/temperature.cpp
+++ b/Marlin/temperature.cpp
@@ -443,7 +443,7 @@ void checkExtruderAutoFans()
 // Temperature Error Handlers
 //
 inline void _temp_error(int e, const char *msg1, const char *msg2) {
-  if (!IsStopped()) {
+  if (IsRunning()) {
     SERIAL_ERROR_START;
     if (e >= 0) SERIAL_ERRORLN((int)e);
     serialprintPGM(msg1);