diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index a441b1068..704f94b25 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -11841,861 +11841,452 @@ void process_parsed_command() { switch (parser.command_letter) { case 'G': switch (parser.codenum) { - // G0, G1 - case 0: - case 1: - #if IS_SCARA - gcode_G0_G1(parser.codenum == 0); - #else - gcode_G0_G1(); - #endif - break; + case 0: case 1: gcode_G0_G1( // G0: Fast Move, G1: Linear Move + #if IS_SCARA + parser.codenum == 0 + #endif + ); break; - // G2, G3 #if ENABLED(ARC_SUPPORT) && DISABLED(SCARA) - case 2: // G2: CW ARC - case 3: // G3: CCW ARC - gcode_G2_G3(parser.codenum == 2); - break; + case 2: case 3: gcode_G2_G3(parser.codenum == 2); break; // G2: CW ARC, G3: CCW ARC #endif - // G4 Dwell - case 4: - gcode_G4(); - break; + case 4: gcode_G4(); break; // G4: Dwell #if ENABLED(BEZIER_CURVE_SUPPORT) - case 5: // G5: Cubic B_spline - gcode_G5(); - break; - #endif // BEZIER_CURVE_SUPPORT + case 5: gcode_G5(); break; // G5: Cubic B_spline + #endif #if ENABLED(FWRETRACT) - case 10: // G10: retract - gcode_G10(); - break; - case 11: // G11: retract_recover - gcode_G11(); - break; - #endif // FWRETRACT + case 10: gcode_G10(); break; // G10: Retract + case 11: gcode_G11(); break; // G11: Prime + #endif #if ENABLED(NOZZLE_CLEAN_FEATURE) - case 12: - gcode_G12(); // G12: Nozzle Clean - break; - #endif // NOZZLE_CLEAN_FEATURE + case 12: gcode_G12(); break; // G12: Clean Nozzle + #endif #if ENABLED(CNC_WORKSPACE_PLANES) - case 17: // G17: Select Plane XY - gcode_G17(); - break; - case 18: // G18: Select Plane ZX - gcode_G18(); - break; - case 19: // G19: Select Plane YZ - gcode_G19(); - break; - #endif // CNC_WORKSPACE_PLANES + case 17: gcode_G17(); break; // G17: Select Plane XY + case 18: gcode_G18(); break; // G18: Select Plane ZX + case 19: gcode_G19(); break; // G19: Select Plane YZ + #endif #if ENABLED(INCH_MODE_SUPPORT) - case 20: // G20: Inch Mode - gcode_G20(); - break; - - case 21: // G21: MM Mode - gcode_G21(); - break; - #endif // INCH_MODE_SUPPORT + case 20: gcode_G20(); break; // G20: Inch Units + case 21: gcode_G21(); break; // G21: Millimeter Units + #endif #if ENABLED(G26_MESH_VALIDATION) - case 26: // G26: Mesh Validation Pattern generation - gcode_G26(); - break; - #endif // G26_MESH_VALIDATION + case 26: gcode_G26(); break; // G26: Mesh Validation Pattern + #endif #if ENABLED(NOZZLE_PARK_FEATURE) - case 27: // G27: Nozzle Park - gcode_G27(); - break; - #endif // NOZZLE_PARK_FEATURE + case 27: gcode_G27(); break; // G27: Park Nozzle + #endif - case 28: // G28: Home all axes, one at a time - gcode_G28(false); - break; + case 28: gcode_G28(false); break; // G28: Home one or more axes #if HAS_LEVELING - case 29: // G29 Detailed Z probe, probes the bed at 3 or more points, - // or provides access to the UBL System if enabled. - gcode_G29(); - break; - #endif // HAS_LEVELING + case 29: gcode_G29(); break; // G29: Detailed Z probe + #endif #if HAS_BED_PROBE + case 30: gcode_G30(); break; // G30: Single Z probe + #endif - case 30: // G30 Single Z probe - gcode_G30(); - break; - - #if ENABLED(Z_PROBE_SLED) - - case 31: // G31: dock the sled - gcode_G31(); - break; - - case 32: // G32: undock the sled - gcode_G32(); - break; - - #endif // Z_PROBE_SLED - - #endif // HAS_BED_PROBE + #if ENABLED(Z_PROBE_SLED) + case 31: gcode_G31(); break; // G31: Dock sled + case 32: gcode_G32(); break; // G32: Undock sled + #endif #if ENABLED(DELTA_AUTO_CALIBRATION) - - case 33: // G33: Delta Auto-Calibration - gcode_G33(); - break; - - #endif // DELTA_AUTO_CALIBRATION + case 33: gcode_G33(); break; // G33: Delta Auto-Calibration + #endif #if ENABLED(G38_PROBE_TARGET) - case 38: // G38.2 & G38.3 + case 38: if (parser.subcode == 2 || parser.subcode == 3) - gcode_G38(parser.subcode == 2); + gcode_G38(parser.subcode == 2); // G38.2, G38.3: Probe towards object break; #endif - case 90: // G90 - relative_mode = false; - break; - case 91: // G91 - relative_mode = true; - break; - - case 92: // G92 - gcode_G92(); - break; - #if HAS_MESH - case 42: - gcode_G42(); - break; + case 42: gcode_G42(); break; // G42: Move to mesh point #endif + case 90: relative_mode = false; break; // G90: Absolute coordinates + case 91: relative_mode = true; break; // G91: Relative coordinates + + case 92: gcode_G92(); break; // G92: Set Position + #if ENABLED(DEBUG_GCODE_PARSER) - case 800: - parser.debug(); // GCode Parser Test for G - break; + case 800: parser.debug(); break; // G800: GCode Parser Test for G #endif } break; case 'M': switch (parser.codenum) { #if HAS_RESUME_CONTINUE - case 0: // M0: Unconditional stop - Wait for user button press on LCD - case 1: // M1: Conditional stop - Wait for user button press on LCD - gcode_M0_M1(); - break; - #endif // ULTIPANEL + case 0: case 1: gcode_M0_M1(); break; // M0: Unconditional stop, M1: Conditional stop + #endif #if ENABLED(SPINDLE_LASER_ENABLE) - case 3: - gcode_M3_M4(true); // M3: turn spindle/laser on, set laser/spindle power/speed, set rotation direction CW - break; // synchronizes with movement commands - case 4: - gcode_M3_M4(false); // M4: turn spindle/laser on, set laser/spindle power/speed, set rotation direction CCW - break; // synchronizes with movement commands - case 5: - gcode_M5(); // M5 - turn spindle/laser off - break; // synchronizes with movement commands + case 3: gcode_M3_M4(true); break; // M3: Laser/CW-Spindle Power + case 4: gcode_M3_M4(false); break; // M4: Laser/CCW-Spindle Power + case 5: gcode_M5(); break; // M5: Laser/Spindle OFF #endif - case 17: // M17: Enable all stepper motors - gcode_M17(); - break; + + case 17: gcode_M17(); break; // M17: Enable all steppers #if ENABLED(SDSUPPORT) - case 20: // M20: list SD card - gcode_M20(); break; - case 21: // M21: init SD card - gcode_M21(); break; - case 22: // M22: release SD card - gcode_M22(); break; - case 23: // M23: Select file - gcode_M23(); break; - case 24: // M24: Start SD print - gcode_M24(); break; - case 25: // M25: Pause SD print - gcode_M25(); break; - case 26: // M26: Set SD index - gcode_M26(); break; - case 27: // M27: Get SD status - gcode_M27(); break; - case 28: // M28: Start SD write - gcode_M28(); break; - case 29: // M29: Stop SD write - gcode_M29(); break; - case 30: // M30 Delete File - gcode_M30(); break; - case 32: // M32: Select file and start SD print - gcode_M32(); break; - + case 20: gcode_M20(); break; // M20: List SD Card + case 21: gcode_M21(); break; // M21: Init SD Card + case 22: gcode_M22(); break; // M22: Release SD Card + case 23: gcode_M23(); break; // M23: Select File + case 24: gcode_M24(); break; // M24: Start SD Print + case 25: gcode_M25(); break; // M25: Pause SD Print + case 26: gcode_M26(); break; // M26: Set SD Index + case 27: gcode_M27(); break; // M27: Get SD Status + case 28: gcode_M28(); break; // M28: Start SD Write + case 29: gcode_M29(); break; // M29: Stop SD Write + case 30: gcode_M30(); break; // M30: Delete File + case 32: gcode_M32(); break; // M32: Select file, Start SD Print #if ENABLED(LONG_FILENAME_HOST_SUPPORT) - case 33: // M33: Get the long full path to a file or folder - gcode_M33(); break; + case 33: gcode_M33(); break; // M33: Report longname path #endif - #if ENABLED(SDCARD_SORT_ALPHA) && ENABLED(SDSORT_GCODE) - case 34: // M34: Set SD card sorting options - gcode_M34(); break; - #endif // SDCARD_SORT_ALPHA && SDSORT_GCODE - - case 928: // M928: Start SD write - gcode_M928(); break; + case 34: gcode_M34(); break; // M34: Set SD card sorting options + #endif + case 928: gcode_M928(); break; // M928: Start SD write #endif // SDSUPPORT - case 31: // M31: Report time since the start of SD print or last M109 - gcode_M31(); break; - - case 42: // M42: Change pin state - gcode_M42(); break; + case 31: gcode_M31(); break; // M31: Report print job elapsed time + case 42: gcode_M42(); break; // M42: Change pin state #if ENABLED(PINS_DEBUGGING) - case 43: // M43: Read pin state - gcode_M43(); break; + case 43: gcode_M43(); break; // M43: Read/monitor pin and endstop states #endif - #if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST) - case 48: // M48: Z probe repeatability test - gcode_M48(); - break; - #endif // Z_MIN_PROBE_REPEATABILITY_TEST - + case 48: gcode_M48(); break; // M48: Z probe repeatability test + #endif #if ENABLED(G26_MESH_VALIDATION) - case 49: // M49: Turn on or off G26 debug flag for verbose output - gcode_M49(); - break; - #endif // G26_MESH_VALIDATION - - #if ENABLED(ULTRA_LCD) && ENABLED(LCD_SET_PROGRESS_MANUALLY) - case 73: // M73: Set print progress percentage - gcode_M73(); break; + case 49: gcode_M49(); break; // M49: Toggle the G26 Debug Flag #endif - case 75: // M75: Start print timer - gcode_M75(); break; - case 76: // M76: Pause print timer - gcode_M76(); break; - case 77: // M77: Stop print timer - gcode_M77(); break; - + #if ENABLED(ULTRA_LCD) && ENABLED(LCD_SET_PROGRESS_MANUALLY) + case 73: gcode_M73(); break; // M73: Set Print Progress % + #endif + case 75: gcode_M75(); break; // M75: Start Print Job Timer + case 76: gcode_M76(); break; // M76: Pause Print Job Timer + case 77: gcode_M77(); break; // M77: Stop Print Job Timer #if ENABLED(PRINTCOUNTER) - case 78: // M78: Show print statistics - gcode_M78(); break; + case 78: gcode_M78(); break; // M78: Report Print Statistics #endif #if ENABLED(M100_FREE_MEMORY_WATCHER) - case 100: // M100: Free Memory Report - gcode_M100(); - break; + case 100: gcode_M100(); break; // M100: Free Memory Report #endif - case 104: // M104: Set hot end temperature - gcode_M104(); - break; - - case 110: // M110: Set Current Line Number - gcode_M110(); - break; - - case 111: // M111: Set debug level - gcode_M111(); - break; + case 104: gcode_M104(); break; // M104: Set Hotend Temperature + case 110: gcode_M110(); break; // M110: Set Current Line Number + case 111: gcode_M111(); break; // M111: Set Debug Flags #if DISABLED(EMERGENCY_PARSER) - - case 108: // M108: Cancel Waiting - gcode_M108(); - break; - - case 112: // M112: Emergency Stop - gcode_M112(); - break; - - case 410: // M410 quickstop - Abort all the planned moves. - gcode_M410(); - break; - + case 108: gcode_M108(); break; // M108: Cancel Waiting + case 112: gcode_M112(); break; // M112: Emergency Stop + case 410: gcode_M410(); break; // M410: Quickstop. Abort all planned moves #endif #if ENABLED(HOST_KEEPALIVE_FEATURE) - case 113: // M113: Set Host Keepalive interval - gcode_M113(); - break; + case 113: gcode_M113(); break; // M113: Set Host Keepalive Interval #endif - case 140: // M140: Set bed temperature - gcode_M140(); - break; + case 140: gcode_M140(); break; // M140: Set Bed Temperature - case 105: // M105: Report current temperature - gcode_M105(); - KEEPALIVE_STATE(NOT_BUSY); - return; // "ok" already printed + case 105: gcode_M105(); KEEPALIVE_STATE(NOT_BUSY); return; // M105: Report Temperatures (and say "ok") #if ENABLED(AUTO_REPORT_TEMPERATURES) && (HAS_TEMP_HOTEND || HAS_TEMP_BED) - case 155: // M155: Set temperature auto-report interval - gcode_M155(); - break; + case 155: gcode_M155(); break; // M155: Set Temperature Auto-report Interval #endif - case 109: // M109: Wait for hotend temperature to reach target - gcode_M109(); - break; + case 109: gcode_M109(); break; // M109: Set Hotend Temperature. Wait for target. #if HAS_TEMP_BED - case 190: // M190: Wait for bed temperature to reach target - gcode_M190(); - break; - #endif // HAS_TEMP_BED + case 190: gcode_M190(); break; // M190: Set Bed Temperature. Wait for target. + #endif #if FAN_COUNT > 0 - case 106: // M106: Fan On - gcode_M106(); - break; - case 107: // M107: Fan Off - gcode_M107(); - break; - #endif // FAN_COUNT > 0 + case 106: gcode_M106(); break; // M106: Set Fan Speed + case 107: gcode_M107(); break; // M107: Fan Off + #endif #if ENABLED(PARK_HEAD_ON_PAUSE) - case 125: // M125: Store current position and move to filament change position - gcode_M125(); break; + case 125: gcode_M125(); break; // M125: Park (for Filament Change) #endif #if ENABLED(BARICUDA) - // PWM for HEATER_1_PIN #if HAS_HEATER_1 - case 126: // M126: valve open - gcode_M126(); - break; - case 127: // M127: valve closed - gcode_M127(); - break; - #endif // HAS_HEATER_1 - - // PWM for HEATER_2_PIN + case 126: gcode_M126(); break; // M126: Valve 1 Open + case 127: gcode_M127(); break; // M127: Valve 1 Closed + #endif #if HAS_HEATER_2 - case 128: // M128: valve open - gcode_M128(); - break; - case 129: // M129: valve closed - gcode_M129(); - break; - #endif // HAS_HEATER_2 - #endif // BARICUDA + case 128: gcode_M128(); break; // M128: Valve 2 Open + case 129: gcode_M129(); break; // M129: Valve 2 Closed + #endif + #endif #if HAS_POWER_SWITCH + case 80: gcode_M80(); break; // M80: Turn on Power Supply + #endif + case 81: gcode_M81(); break; // M81: Turn off Power and Power Supply - case 80: // M80: Turn on Power Supply - gcode_M80(); - break; - - #endif // HAS_POWER_SWITCH - - case 81: // M81: Turn off Power, including Power Supply, if possible - gcode_M81(); - break; - - case 82: // M82: Set E axis normal mode (same as other axes) - gcode_M82(); - break; - case 83: // M83: Set E axis relative mode - gcode_M83(); - break; - case 18: // M18 => M84 - case 84: // M84: Disable all steppers or set timeout - gcode_M18_M84(); - break; - case 85: // M85: Set inactivity stepper shutdown timeout - gcode_M85(); - break; - case 92: // M92: Set the steps-per-unit for one or more axes - gcode_M92(); - break; - case 114: // M114: Report current position - gcode_M114(); - break; - case 115: // M115: Report capabilities - gcode_M115(); - break; - case 117: // M117: Set LCD message text, if possible - gcode_M117(); - break; - case 118: // M118: Display a message in the host console - gcode_M118(); - break; - case 119: // M119: Report endstop states - gcode_M119(); - break; - case 120: // M120: Enable endstops - gcode_M120(); - break; - case 121: // M121: Disable endstops - gcode_M121(); - break; + case 82: gcode_M82(); break; // M82: Disable Relative E-Axis + case 83: gcode_M83(); break; // M83: Set Relative E-Axis + case 18: case 84: gcode_M18_M84(); break; // M18/M84: Disable Steppers / Set Timeout + case 85: gcode_M85(); break; // M85: Set inactivity stepper shutdown timeout + case 92: gcode_M92(); break; // M92: Set steps-per-unit + case 114: gcode_M114(); break; // M114: Report Current Position + case 115: gcode_M115(); break; // M115: Capabilities Report + case 117: gcode_M117(); break; // M117: Set LCD message text + case 118: gcode_M118(); break; // M118: Print a message in the host console + case 119: gcode_M119(); break; // M119: Report Endstop states + case 120: gcode_M120(); break; // M120: Enable Endstops + case 121: gcode_M121(); break; // M121: Disable Endstops #if ENABLED(ULTIPANEL) - - case 145: // M145: Set material heatup parameters - gcode_M145(); - break; - + case 145: gcode_M145(); break; // M145: Set material heatup parameters #endif #if ENABLED(TEMPERATURE_UNITS_SUPPORT) - case 149: // M149: Set temperature units - gcode_M149(); - break; + case 149: gcode_M149(); break; // M149: Set Temperature Units, C F K #endif #if HAS_COLOR_LEDS - - case 150: // M150: Set Status LED Color - gcode_M150(); - break; - - #endif // HAS_COLOR_LEDS + case 150: gcode_M150(); break; // M150: Set Status LED Color + #endif #if ENABLED(MIXING_EXTRUDER) - case 163: // M163: Set a component weight for mixing extruder - gcode_M163(); - break; + case 163: gcode_M163(); break; // M163: Set Mixing Component #if MIXING_VIRTUAL_TOOLS > 1 - case 164: // M164: Save current mix as a virtual extruder - gcode_M164(); - break; + case 164: gcode_M164(); break; // M164: Save Current Mix #endif #if ENABLED(DIRECT_MIXING_IN_G1) - case 165: // M165: Set multiple mix weights - gcode_M165(); - break; + case 165: gcode_M165(); break; // M165: Set Multiple Mixing Components #endif #endif #if DISABLED(NO_VOLUMETRICS) - case 200: // M200: Set filament diameter, E to cubic units - gcode_M200(); - break; + case 200: gcode_M200(); break; // M200: Set Filament Diameter, Volumetric Extrusion #endif - case 201: // M201: Set max acceleration for print moves (units/s^2) - gcode_M201(); - break; - #if 0 // Not used for Sprinter/grbl gen6 - case 202: // M202 - gcode_M202(); - break; + case 201: gcode_M201(); break; // M201: Set Max Printing Acceleration (units/sec^2) + #if 0 + case 202: gcode_M202(); break; // M202: Not used for Sprinter/grbl gen6 #endif - case 203: // M203: Set max feedrate (units/sec) - gcode_M203(); - break; - case 204: // M204: Set acceleration - gcode_M204(); - break; - case 205: // M205: Set advanced settings - gcode_M205(); - break; + case 203: gcode_M203(); break; // M203: Set Max Feedrate (units/sec) + case 204: gcode_M204(); break; // M204: Set Acceleration + case 205: gcode_M205(); break; // M205: Set Advanced settings #if HAS_M206_COMMAND - case 206: // M206: Set home offsets - gcode_M206(); - break; - #endif - - #if ENABLED(DELTA) - case 665: // M665: Set delta configurations - gcode_M665(); - break; - #endif - - #if ENABLED(DELTA) || ENABLED(X_DUAL_ENDSTOPS) || ENABLED(Y_DUAL_ENDSTOPS) || ENABLED(Z_DUAL_ENDSTOPS) - case 666: // M666: Set delta or dual endstop adjustment - gcode_M666(); - break; + case 206: gcode_M206(); break; // M206: Set Home Offsets + case 428: gcode_M428(); break; // M428: Set Home Offsets based on current position #endif #if ENABLED(FWRETRACT) - case 207: // M207: Set Retract Length, Feedrate, and Z lift - gcode_M207(); + case 207: gcode_M207(); break; // M207: Set Retract Length, Feedrate, Z lift + case 208: gcode_M208(); break; // M208: Set Additional Prime Length and Feedrate + case 209: + if (MIN_AUTORETRACT <= MAX_AUTORETRACT) gcode_M209(); // M209: Turn Auto-Retract on/off break; - case 208: // M208: Set Recover (unretract) Additional Length and Feedrate - gcode_M208(); - break; - case 209: // M209: Turn Automatic Retract Detection on/off - if (MIN_AUTORETRACT <= MAX_AUTORETRACT) gcode_M209(); - break; - #endif // FWRETRACT + #endif - case 211: // M211: Enable, Disable, and/or Report software endstops - gcode_M211(); - break; + case 211: gcode_M211(); break; // M211: Enable/Disable/Report Software Endstops #if HOTENDS > 1 - case 218: // M218: Set a tool offset - gcode_M218(); - break; - #endif // HOTENDS > 1 + case 218: gcode_M218(); break; // M218: Set Tool Offset + #endif - case 220: // M220: Set Feedrate Percentage: S ("FR" on your LCD) - gcode_M220(); - break; - - case 221: // M221: Set Flow Percentage - gcode_M221(); - break; - - case 226: // M226: Wait until a pin reaches a state - gcode_M226(); - break; - - #if HAS_SERVOS - case 280: // M280: Set servo position absolute - gcode_M280(); - break; - #endif // HAS_SERVOS - - #if ENABLED(BABYSTEPPING) - case 290: // M290: Babystepping - gcode_M290(); - break; - #endif // BABYSTEPPING - - #if HAS_BUZZER - case 300: // M300: Play beep tone - gcode_M300(); - break; - #endif // HAS_BUZZER - - #if ENABLED(PIDTEMP) - case 301: // M301: Set hotend PID parameters - gcode_M301(); - break; - #endif // PIDTEMP - - #if ENABLED(PIDTEMPBED) - case 304: // M304: Set bed PID parameters - gcode_M304(); - break; - #endif // PIDTEMPBED + case 220: gcode_M220(); break; // M220: Set Feedrate Percentage + case 221: gcode_M221(); break; // M221: Set Flow Percentage + case 226: gcode_M226(); break; // M226: Wait for Pin State #if defined(CHDK) || HAS_PHOTOGRAPH - case 240: // M240: Trigger a camera by emulating a Canon RC-1 : http://www.doc-diy.net/photo/rc-1_hacked/ - gcode_M240(); - break; - #endif // CHDK || PHOTOGRAPH_PIN + case 240: gcode_M240(); break; // M240: Trigger Camera + #endif #if HAS_LCD_CONTRAST - case 250: // M250: Set LCD contrast - gcode_M250(); - break; - #endif // HAS_LCD_CONTRAST + case 250: gcode_M250(); break; // M250: Set LCD Contrast + #endif #if ENABLED(EXPERIMENTAL_I2CBUS) + case 260: gcode_M260(); break; // M260: Send Data to i2c slave + case 261: gcode_M261(); break; // M261: Request Data from i2c slave + #endif - case 260: // M260: Send data to an i2c slave - gcode_M260(); - break; + #if HAS_SERVOS + case 280: gcode_M280(); break; // M280: Set Servo Position + #endif - case 261: // M261: Request data from an i2c slave - gcode_M261(); - break; + #if ENABLED(BABYSTEPPING) + case 290: gcode_M290(); break; // M290: Babystepping + #endif - #endif // EXPERIMENTAL_I2CBUS + #if HAS_BUZZER + case 300: gcode_M300(); break; // M300: Add Tone/Buzz to Queue + #endif + + #if ENABLED(PIDTEMP) + case 301: gcode_M301(); break; // M301: Set Hotend PID parameters + #endif #if ENABLED(PREVENT_COLD_EXTRUSION) - case 302: // M302: Allow cold extrudes (set the minimum extrude temperature) - gcode_M302(); - break; - #endif // PREVENT_COLD_EXTRUSION - - case 303: // M303: PID autotune - gcode_M303(); - break; - - #if ENABLED(MORGAN_SCARA) - case 360: // M360: SCARA Theta pos1 - if (gcode_M360()) return; - break; - case 361: // M361: SCARA Theta pos2 - if (gcode_M361()) return; - break; - case 362: // M362: SCARA Psi pos1 - if (gcode_M362()) return; - break; - case 363: // M363: SCARA Psi pos2 - if (gcode_M363()) return; - break; - case 364: // M364: SCARA Psi pos3 (90 deg to Theta) - if (gcode_M364()) return; - break; - #endif // SCARA - - case 400: // M400: Finish all moves - gcode_M400(); - break; - - #if HAS_BED_PROBE - case 401: // M401: Deploy probe - gcode_M401(); - break; - case 402: // M402: Stow probe - gcode_M402(); - break; - #endif // HAS_BED_PROBE - - #if ENABLED(FILAMENT_WIDTH_SENSOR) - case 404: // M404: Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or display nominal filament width - gcode_M404(); - break; - case 405: // M405: Turn on filament sensor for control - gcode_M405(); - break; - case 406: // M406: Turn off filament sensor for control - gcode_M406(); - break; - case 407: // M407: Display measured filament diameter - gcode_M407(); - break; - #endif // FILAMENT_WIDTH_SENSOR - - #if HAS_LEVELING - case 420: // M420: Enable/Disable Bed Leveling - gcode_M420(); - break; + case 302: gcode_M302(); break; // M302: Set Minimum Extrusion Temp #endif - #if HAS_MESH - case 421: // M421: Set a Mesh Bed Leveling Z coordinate - gcode_M421(); - break; - #endif + case 303: gcode_M303(); break; // M303: PID Autotune - #if HAS_M206_COMMAND - case 428: // M428: Apply current_position to home_offset - gcode_M428(); - break; - #endif - - case 500: // M500: Store settings in EEPROM - gcode_M500(); - break; - case 501: // M501: Read settings from EEPROM - gcode_M501(); - break; - case 502: // M502: Revert to default settings - gcode_M502(); - break; - - #if DISABLED(DISABLE_M503) - case 503: // M503: print settings currently in memory - gcode_M503(); - break; - #endif - - #if ENABLED(ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) - case 540: // M540: Set abort on endstop hit for SD printing - gcode_M540(); - break; - #endif - - #if HAS_BED_PROBE - case 851: // M851: Set Z Probe Z Offset - gcode_M851(); - break; - #endif // HAS_BED_PROBE - - #if ENABLED(SKEW_CORRECTION_GCODE) - case 852: // M852: Set Skew factors - gcode_M852(); - break; - #endif - - #if ENABLED(ADVANCED_PAUSE_FEATURE) - case 600: // M600: Pause for filament change - gcode_M600(); - break; - - case 603: // M603: Configure filament change - gcode_M603(); - break; - #endif // ADVANCED_PAUSE_FEATURE - - #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) - case 605: // M605: Set Dual X Carriage movement mode - gcode_M605(); - break; - #endif // DUAL_X_CARRIAGE - - #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) - case 701: // M701: Load filament - gcode_M701(); - break; - - case 702: // M702: Unload filament - gcode_M702(); - break; - #endif // FILAMENT_LOAD_UNLOAD_GCODES - - #if ENABLED(LIN_ADVANCE) - case 900: // M900: Set advance K factor. - gcode_M900(); - break; - #endif - - case 907: // M907: Set digital trimpot motor current using axis codes. - gcode_M907(); - break; - - #if HAS_DIGIPOTSS || ENABLED(DAC_STEPPER_CURRENT) - - case 908: // M908: Control digital trimpot directly. - gcode_M908(); - break; - - #if ENABLED(DAC_STEPPER_CURRENT) // As with Printrbot RevF - - case 909: // M909: Print digipot/DAC current value - gcode_M909(); - break; - - case 910: // M910: Commit digipot/DAC value to external EEPROM - gcode_M910(); - break; - - #endif - - #endif // HAS_DIGIPOTSS || DAC_STEPPER_CURRENT - - #if ENABLED(HAVE_TMC2130) || ENABLED(HAVE_TMC2208) - case 906: // M906: Set motor current in milliamps using axis codes X, Y, Z, E - gcode_M906(); - break; - - case 911: // M911: Report TMC prewarn triggered flags - gcode_M911(); - break; - - case 912: // M911: Clear TMC prewarn triggered flags - gcode_M912(); - break; - - #if ENABLED(TMC_DEBUG) - case 122: // Debug TMC steppers - gcode_M122(); - break; - #endif - - #if ENABLED(HYBRID_THRESHOLD) - case 913: // M913: Set HYBRID_THRESHOLD speed. - gcode_M913(); - break; - #endif - - #if ENABLED(SENSORLESS_HOMING) - case 914: // M914: Set SENSORLESS_HOMING sensitivity. - gcode_M914(); - break; - #endif - - #if ENABLED(TMC_Z_CALIBRATION) && (Z_IS_TRINAMIC || Z2_IS_TRINAMIC) - case 915: // M915: TMC Z axis calibration routine - gcode_M915(); - break; - #endif + #if ENABLED(PIDTEMPBED) + case 304: gcode_M304(); break; // M304: Set Bed PID parameters #endif #if HAS_MICROSTEPS + case 350: gcode_M350(); break; // M350: Set microstepping mode. Warning: Steps per unit remains unchanged. S code sets stepping mode for all drivers. + case 351: gcode_M351(); break; // M351: Toggle MS1 MS2 pins directly, S# determines MS1 or MS2, X# sets the pin high/low. + #endif - case 350: // M350: Set microstepping mode. Warning: Steps per unit remains unchanged. S code sets stepping mode for all drivers. - gcode_M350(); - break; + case 355: gcode_M355(); break; // M355: Set Case Light brightness - case 351: // M351: Toggle MS1 MS2 pins directly, S# determines MS1 or MS2, X# sets the pin high/low. - gcode_M351(); - break; + #if ENABLED(MORGAN_SCARA) + case 360: if (gcode_M360()) return; break; // M360: SCARA Theta pos1 + case 361: if (gcode_M361()) return; break; // M361: SCARA Theta pos2 + case 362: if (gcode_M362()) return; break; // M362: SCARA Psi pos1 + case 363: if (gcode_M363()) return; break; // M363: SCARA Psi pos2 + case 364: if (gcode_M364()) return; break; // M364: SCARA Psi pos3 (90 deg to Theta) + #endif - #endif // HAS_MICROSTEPS + case 400: gcode_M400(); break; // M400: Synchronize. Wait for moves to finish. - case 355: // M355 set case light brightness - gcode_M355(); - break; + #if HAS_BED_PROBE + case 401: gcode_M401(); break; // M401: Deploy Probe + case 402: gcode_M402(); break; // M402: Stow Probe + #endif + + #if ENABLED(FILAMENT_WIDTH_SENSOR) + case 404: gcode_M404(); break; // M404: Set/Report Nominal Filament Width + case 405: gcode_M405(); break; // M405: Enable Filament Width Sensor + case 406: gcode_M406(); break; // M406: Disable Filament Width Sensor + case 407: gcode_M407(); break; // M407: Report Measured Filament Width + #endif + + #if HAS_LEVELING + case 420: gcode_M420(); break; // M420: Set Bed Leveling Enabled / Fade + #endif + + #if HAS_MESH + case 421: gcode_M421(); break; // M421: Set a Mesh Z value + #endif + + case 500: gcode_M500(); break; // M500: Store Settings in EEPROM + case 501: gcode_M501(); break; // M501: Read Settings from EEPROM + case 502: gcode_M502(); break; // M502: Revert Settings to defaults + #if DISABLED(DISABLE_M503) + case 503: gcode_M503(); break; // M503: Report Settings (in SRAM) + #endif + + #if ENABLED(ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) + case 540: gcode_M540(); break; // M540: Set Abort on Endstop Hit for SD Printing + #endif + + #if ENABLED(ADVANCED_PAUSE_FEATURE) + case 600: gcode_M600(); break; // M600: Pause for Filament Change + case 603: gcode_M603(); break; // M603: Configure Filament Change + #endif + + #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) + case 605: gcode_M605(); break; // M605: Set Dual X Carriage movement mode + #endif + + #if ENABLED(DELTA) + case 665: gcode_M665(); break; // M665: Delta Configuration + #endif + #if ENABLED(DELTA) || ENABLED(X_DUAL_ENDSTOPS) || ENABLED(Y_DUAL_ENDSTOPS) || ENABLED(Z_DUAL_ENDSTOPS) + case 666: gcode_M666(); break; // M666: DELTA/Dual Endstop Adjustment + #endif + + #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) + case 701: gcode_M701(); break; // M701: Load Filament + case 702: gcode_M702(); break; // M702: Unload Filament + #endif #if ENABLED(DEBUG_GCODE_PARSER) - case 800: - parser.debug(); // GCode Parser Test for M - break; + case 800: parser.debug(); break; // M800: GCode Parser Test for M + #endif + + #if HAS_BED_PROBE + case 851: gcode_M851(); break; // M851: Set Z Probe Z Offset + #endif + + #if ENABLED(SKEW_CORRECTION_GCODE) + case 852: gcode_M852(); break; // M852: Set Skew factors #endif #if ENABLED(I2C_POSITION_ENCODERS) + case 860: gcode_M860(); break; // M860: Report encoder module position + case 861: gcode_M861(); break; // M861: Report encoder module status + case 862: gcode_M862(); break; // M862: Perform axis test + case 863: gcode_M863(); break; // M863: Calibrate steps/mm + case 864: gcode_M864(); break; // M864: Change module address + case 865: gcode_M865(); break; // M865: Check module firmware version + case 866: gcode_M866(); break; // M866: Report axis error count + case 867: gcode_M867(); break; // M867: Toggle error correction + case 868: gcode_M868(); break; // M868: Set error correction threshold + case 869: gcode_M869(); break; // M869: Report axis error + #endif - case 860: // M860 Report encoder module position - gcode_M860(); - break; + #if ENABLED(LIN_ADVANCE) + case 900: gcode_M900(); break; // M900: Set Linear Advance K factor + #endif - case 861: // M861 Report encoder module status - gcode_M861(); - break; + case 907: gcode_M907(); break; // M907: Set Digital Trimpot Motor Current using axis codes. - case 862: // M862 Perform axis test - gcode_M862(); - break; + #if HAS_DIGIPOTSS || ENABLED(DAC_STEPPER_CURRENT) + case 908: gcode_M908(); break; // M908: Direct Control Digital Trimpot + #if ENABLED(DAC_STEPPER_CURRENT) + case 909: gcode_M909(); break; // M909: Print Digipot/DAC current value (As with Printrbot RevF) + case 910: gcode_M910(); break; // M910: Commit Digipot/DAC value to External EEPROM (As with Printrbot RevF) + #endif + #endif - case 863: // M863 Calibrate steps/mm - gcode_M863(); - break; + #if ENABLED(HAVE_TMC2130) || ENABLED(HAVE_TMC2208) + #if ENABLED(TMC_DEBUG) + case 122: gcode_M122(); break; // M122: Debug TMC steppers + #endif + case 906: gcode_M906(); break; // M906: Set motor current in milliamps using axis codes X, Y, Z, E + case 911: gcode_M911(); break; // M911: Report TMC prewarn triggered flags + case 912: gcode_M912(); break; // M911: Clear TMC prewarn triggered flags + #if ENABLED(HYBRID_THRESHOLD) + case 913: gcode_M913(); break; // M913: Set HYBRID_THRESHOLD speed. + #endif + #if ENABLED(SENSORLESS_HOMING) + case 914: gcode_M914(); break; // M914: Set SENSORLESS_HOMING sensitivity. + #endif + #if ENABLED(TMC_Z_CALIBRATION) && (Z_IS_TRINAMIC || Z2_IS_TRINAMIC) + case 915: gcode_M915(); break; // M915: TMC Z axis calibration routine + #endif + #endif - case 864: // M864 Change module address - gcode_M864(); - break; - - case 865: // M865 Check module firmware version - gcode_M865(); - break; - - case 866: // M866 Report axis error count - gcode_M866(); - break; - - case 867: // M867 Toggle error correction - gcode_M867(); - break; - - case 868: // M868 Set error correction threshold - gcode_M868(); - break; - - case 869: // M869 Report axis error - gcode_M869(); - break; - - #endif // I2C_POSITION_ENCODERS - - case 999: // M999: Restart after being Stopped - gcode_M999(); - break; + case 999: gcode_M999(); break; // M999: Restart after being Stopped } break; - case 'T': - gcode_T(parser.codenum); - break; + case 'T': gcode_T(parser.codenum); break; // T: Tool Select default: parser.unknown_command_error(); } KEEPALIVE_STATE(NOT_BUSY); - ok_to_send(); }