Skip to content

General cleanup: enum #4353

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 19, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 2 additions & 29 deletions Marlin/Marlin.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@

#include "Arduino.h"

#include "enum.h"

typedef unsigned long millis_t;

#ifdef USBCON
Expand Down Expand Up @@ -230,20 +232,8 @@ void manage_inactivity(bool ignore_stepper_queue = false);
* The axis order in all axis related arrays is X, Y, Z, E
*/
#define NUM_AXIS 4

/**
* Axis indices as enumerated constants
*
* A_AXIS and B_AXIS are used by COREXY printers
* X_HEAD and Y_HEAD is used for systems that don't have a 1:1 relationship between X_AXIS and X Head movement, like CoreXY bots.
*/
enum AxisEnum {NO_AXIS = -1, X_AXIS = 0, A_AXIS = 0, Y_AXIS = 1, B_AXIS = 1, Z_AXIS = 2, C_AXIS = 2, E_AXIS = 3, X_HEAD = 4, Y_HEAD = 5, Z_HEAD = 5};

#define _AXIS(AXIS) AXIS ##_AXIS

typedef enum { LINEARUNIT_MM = 0, LINEARUNIT_INCH = 1 } LinearUnit;
typedef enum { TEMPUNIT_C = 0, TEMPUNIT_K = 1, TEMPUNIT_F = 2 } TempUnit;

void enable_all_steppers();
void disable_all_steppers();

Expand All @@ -259,18 +249,6 @@ void quickstop_stepper();
void handle_filament_runout();
#endif

/**
* Debug flags - not yet widely applied
*/
enum DebugFlags {
DEBUG_NONE = 0,
DEBUG_ECHO = _BV(0), ///< Echo commands in order as they are processed
DEBUG_INFO = _BV(1), ///< Print messages for code that has debug output
DEBUG_ERRORS = _BV(2), ///< Not implemented
DEBUG_DRYRUN = _BV(3), ///< Ignore temperature setting and E movement commands
DEBUG_COMMUNICATION = _BV(4), ///< Not implemented
DEBUG_LEVELING = _BV(5) ///< Print detailed output for homing and leveling
};
extern uint8_t marlin_debug_flags;
#define DEBUGGING(F) (marlin_debug_flags & (DEBUG_## F))

Expand Down Expand Up @@ -380,11 +358,6 @@ float code_value_temp_diff();
#endif

#if ENABLED(FILAMENT_CHANGE_FEATURE)
enum FilamentChangeMenuResponse {
FILAMENT_CHANGE_RESPONSE_WAIT_FOR,
FILAMENT_CHANGE_RESPONSE_EXTRUDE_MORE,
FILAMENT_CHANGE_RESPONSE_RESUME_PRINT
};
extern FilamentChangeMenuResponse filament_change_menu_response;
#endif

Expand Down
15 changes: 0 additions & 15 deletions Marlin/MarlinSerial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -455,21 +455,6 @@ MarlinSerial customizedSerial;

FORCE_INLINE void emergency_parser(unsigned char c) {

enum e_parser_state {
state_RESET,
state_N,
state_M,
state_M1,
state_M10,
state_M108,
state_M11,
state_M112,
state_M4,
state_M41,
state_M410,
state_IGNORE // to '\n'
};

static e_parser_state state = state_RESET;

switch (state) {
Expand Down
28 changes: 7 additions & 21 deletions Marlin/Marlin_main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -535,17 +535,6 @@ static bool send_ok[BUFSIZE];
#endif

#if ENABLED(HOST_KEEPALIVE_FEATURE)

// States for managing Marlin and host communication
// Marlin sends messages if blocked or busy
enum MarlinBusyState {
NOT_BUSY, // Not in a handler
IN_HANDLER, // Processing a GCode
IN_PROCESS, // Known to be blocking command input (as in G29)
PAUSED_FOR_USER, // Blocking pending any input
PAUSED_FOR_INPUT // Blocking pending text input (concept)
};

static MarlinBusyState busy_state = NOT_BUSY;
static millis_t next_busy_signal_ms = 0;
uint8_t host_keepalive_interval = DEFAULT_KEEPALIVE_INTERVAL;
Expand Down Expand Up @@ -3213,9 +3202,6 @@ inline void gcode_G28() {
#endif

#if ENABLED(MESH_BED_LEVELING)

enum MeshLevelingState { MeshReport, MeshStart, MeshNext, MeshSet, MeshSetZOffset, MeshReset };

inline void _mbl_goto_xy(float x, float y) {
float old_feedrate_mm_m = feedrate_mm_m;
feedrate_mm_m = homing_feedrate_mm_m[X_AXIS];
Expand Down Expand Up @@ -6825,7 +6811,7 @@ inline void gcode_T(uint8_t tmp_extruder) {
// <0 if the new nozzle is higher, >0 if lower. A bigger raise when lower.
float z_diff = hotend_offset[Z_AXIS][active_extruder] - hotend_offset[Z_AXIS][tmp_extruder],
z_raise = 0.3 + (z_diff > 0.0 ? z_diff : 0.0);

// Always raise by some amount
planner.buffer_line(
current_position[X_AXIS],
Expand All @@ -6836,10 +6822,10 @@ inline void gcode_T(uint8_t tmp_extruder) {
active_extruder
);
stepper.synchronize();

move_extruder_servo(active_extruder);
delay(500);

// Move back down, if needed
if (z_raise != z_diff) {
planner.buffer_line(
Expand All @@ -6853,7 +6839,7 @@ inline void gcode_T(uint8_t tmp_extruder) {
stepper.synchronize();
}
#endif

/**
* Set current_position to the position of the new nozzle.
* Offsets are based on linear distance, so we need to get
Expand Down Expand Up @@ -6906,7 +6892,7 @@ inline void gcode_T(uint8_t tmp_extruder) {
current_position[Z_AXIS] += offset_vec.z;

#else // !AUTO_BED_LEVELING_FEATURE

float xydiff[2] = {
hotend_offset[X_AXIS][tmp_extruder] - hotend_offset[X_AXIS][active_extruder],
hotend_offset[Y_AXIS][tmp_extruder] - hotend_offset[Y_AXIS][active_extruder]
Expand All @@ -6930,7 +6916,7 @@ inline void gcode_T(uint8_t tmp_extruder) {
}

#endif // MESH_BED_LEVELING

#endif // !AUTO_BED_LEVELING_FEATURE

#if ENABLED(DEBUG_LEVELING_FEATURE)
Expand Down Expand Up @@ -6993,7 +6979,7 @@ inline void gcode_T(uint8_t tmp_extruder) {
SERIAL_ECHOLNPGM("<<< gcode_T");
}
#endif

SERIAL_ECHO_START;
SERIAL_ECHOPGM(MSG_ACTIVE_EXTRUDER);
SERIAL_PROTOCOLLN((int)active_extruder);
Expand Down
2 changes: 1 addition & 1 deletion Marlin/cardreader.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
#define MAX_DIR_DEPTH 10 // Maximum folder depth

#include "SdFile.h"
enum LsAction { LS_SerialPrint, LS_Count, LS_GetFilename };
#include "enum.h"

class CardReader {
public:
Expand Down
4 changes: 2 additions & 2 deletions Marlin/endstops.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
#ifndef ENDSTOPS_H
#define ENDSTOPS_H

enum EndstopEnum {X_MIN = 0, Y_MIN = 1, Z_MIN = 2, Z_MIN_PROBE = 3, X_MAX = 4, Y_MAX = 5, Z_MAX = 6, Z2_MIN = 7, Z2_MAX = 8};
#include "enum.h"

class Endstops {

Expand All @@ -42,7 +42,7 @@ class Endstops {
static byte
#endif
current_endstop_bits, old_endstop_bits;

Endstops() {};

/**
Expand Down
190 changes: 190 additions & 0 deletions Marlin/enum.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
/**
* Marlin 3D Printer Firmware
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/

#ifndef __ENUM_H__
#define __ENUM_H__

/**
* Axis indices as enumerated constants
*
* Special axis:
* - A_AXIS and B_AXIS are used by COREXY printers
* - X_HEAD and Y_HEAD is used for systems that don't have a 1:1 relationship
* between X_AXIS and X Head movement, like CoreXY bots
*/
enum AxisEnum {
NO_AXIS = -1,
X_AXIS = 0,
A_AXIS = 0,
Y_AXIS = 1,
B_AXIS = 1,
Z_AXIS = 2,
C_AXIS = 2,
E_AXIS = 3,
X_HEAD = 4,
Y_HEAD = 5,
Z_HEAD = 5
};

typedef enum {
LINEARUNIT_MM,
LINEARUNIT_INCH
} LinearUnit;

typedef enum {
TEMPUNIT_C,
TEMPUNIT_K,
TEMPUNIT_F
} TempUnit;

/**
* Debug flags
* Not yet widely applied
*/
enum DebugFlags {
DEBUG_NONE = 0,
DEBUG_ECHO = _BV(0), ///< Echo commands in order as they are processed
DEBUG_INFO = _BV(1), ///< Print messages for code that has debug output
DEBUG_ERRORS = _BV(2), ///< Not implemented
DEBUG_DRYRUN = _BV(3), ///< Ignore temperature setting and E movement commands
DEBUG_COMMUNICATION = _BV(4), ///< Not implemented
DEBUG_LEVELING = _BV(5) ///< Print detailed output for homing and leveling
};

enum EndstopEnum {
X_MIN,
Y_MIN,
Z_MIN,
Z_MIN_PROBE,
X_MAX,
Y_MAX,
Z_MAX,
Z2_MIN,
Z2_MAX
};

/**
* Temperature
* Stages in the ISR loop
*/
enum TempState {
PrepareTemp_0,
MeasureTemp_0,
PrepareTemp_BED,
MeasureTemp_BED,
PrepareTemp_1,
MeasureTemp_1,
PrepareTemp_2,
MeasureTemp_2,
PrepareTemp_3,
MeasureTemp_3,
Prepare_FILWIDTH,
Measure_FILWIDTH,
StartupDelay // Startup, delay initial temp reading a tiny bit so the hardware can settle
};

#if ENABLED(EMERGENCY_PARSER)
enum e_parser_state {
state_RESET,
state_N,
state_M,
state_M1,
state_M10,
state_M108,
state_M11,
state_M112,
state_M4,
state_M41,
state_M410,
state_IGNORE // to '\n'
};
#endif

#if ENABLED(FILAMENT_CHANGE_FEATURE)
enum FilamentChangeMenuResponse {
FILAMENT_CHANGE_RESPONSE_WAIT_FOR,
FILAMENT_CHANGE_RESPONSE_EXTRUDE_MORE,
FILAMENT_CHANGE_RESPONSE_RESUME_PRINT
};

#if ENABLED(ULTIPANEL)
enum FilamentChangeMessage {
FILAMENT_CHANGE_MESSAGE_INIT,
FILAMENT_CHANGE_MESSAGE_UNLOAD,
FILAMENT_CHANGE_MESSAGE_INSERT,
FILAMENT_CHANGE_MESSAGE_LOAD,
FILAMENT_CHANGE_MESSAGE_EXTRUDE,
FILAMENT_CHANGE_MESSAGE_OPTION,
FILAMENT_CHANGE_MESSAGE_RESUME,
FILAMENT_CHANGE_MESSAGE_STATUS
};
#endif
#endif

/**
* States for managing Marlin and host communication
* Marlin sends messages if blocked or busy
*/
#if ENABLED(HOST_KEEPALIVE_FEATURE)
enum MarlinBusyState {
NOT_BUSY, // Not in a handler
IN_HANDLER, // Processing a GCode
IN_PROCESS, // Known to be blocking command input (as in G29)
PAUSED_FOR_USER, // Blocking pending any input
PAUSED_FOR_INPUT // Blocking pending text input (concept)
};
#endif

#if ENABLED(MESH_BED_LEVELING)
enum MeshLevelingState {
MeshReport,
MeshStart,
MeshNext,
MeshSet,
MeshSetZOffset,
MeshReset
};

enum MBLStatus {
MBL_STATUS_NONE = 0,
MBL_STATUS_HAS_MESH_BIT = 0,
MBL_STATUS_ACTIVE_BIT = 1
};
#endif

/**
* SD Card
*/
enum LsAction { LS_SerialPrint, LS_Count, LS_GetFilename };

/**
* Ultra LCD
*/
enum LCDViewAction {
LCDVIEW_NONE,
LCDVIEW_REDRAW_NOW,
LCDVIEW_CALL_REDRAW_NEXT,
LCDVIEW_CLEAR_CALL_REDRAW,
LCDVIEW_CALL_NO_REDRAW
};

#endif // __ENUM_H__
3 changes: 0 additions & 3 deletions Marlin/mesh_bed_leveling.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,6 @@
#include "Marlin.h"

#if ENABLED(MESH_BED_LEVELING)

enum MBLStatus { MBL_STATUS_NONE = 0, MBL_STATUS_HAS_MESH_BIT = 0, MBL_STATUS_ACTIVE_BIT = 1 };

#define MESH_X_DIST ((MESH_MAX_X - (MESH_MIN_X))/(MESH_NUM_X_POINTS - 1))
#define MESH_Y_DIST ((MESH_MAX_Y - (MESH_MIN_Y))/(MESH_NUM_Y_POINTS - 1))

Expand Down
Loading