gcode_process.c: get rid of duplicate comments and those ===='s
These ==== are nasty if you grep a directory for patch conflicts.
This commit is contained in:
parent
dcc2255526
commit
a241ef2fa3
219
gcode_process.c
219
gcode_process.c
|
|
@ -105,7 +105,7 @@ void process_gcode_command() {
|
|||
// The GCode documentation was taken from http://reprap.org/wiki/Gcode .
|
||||
|
||||
if (next_target.seen_T) {
|
||||
//? ==== T: Select Tool ====
|
||||
//? --- T: Select Tool ---
|
||||
//?
|
||||
//? Example: T1
|
||||
//?
|
||||
|
|
@ -127,28 +127,26 @@ void process_gcode_command() {
|
|||
if (next_target.seen_G) {
|
||||
uint8_t axisSelected = 0;
|
||||
switch (next_target.G) {
|
||||
// G0 - rapid, unsynchronised motion
|
||||
// since it would be a major hassle to force the dda to not synchronise, just provide a fast feedrate and hope it's close enough to what host expects
|
||||
case 0:
|
||||
//? ==== G0: Rapid move ====
|
||||
//? G0: Rapid Linear Motion
|
||||
//?
|
||||
//? Example: G0 X12
|
||||
//?
|
||||
//? In this case move rapidly to X = 12 mm. In fact, the RepRap firmware uses exactly the same code for rapid as it uses for controlled moves (see G1 below), as - for the RepRap machine - this is just as efficient as not doing so. (The distinction comes from some old machine tools that used to move faster if the axes were not driven in a straight line. For them G0 allowed any movement in space to get to the destination as fast as possible.)
|
||||
|
||||
//?
|
||||
backup_f = next_target.target.F;
|
||||
next_target.target.F = MAXIMUM_FEEDRATE_X * 2L;
|
||||
enqueue(&next_target.target);
|
||||
next_target.target.F = backup_f;
|
||||
break;
|
||||
|
||||
// G1 - synchronised motion
|
||||
case 1:
|
||||
//? ==== G1: Controlled move ====
|
||||
//? --- G1: Linear Motion at Feed Rate ---
|
||||
//?
|
||||
//? Example: G1 X90.6 Y13.8 E22.4
|
||||
//?
|
||||
//? Go in a straight line from the current (X, Y) point to the point (90.6, 13.8), extruding material as the move happens from the current extruded length to a length of 22.4 mm.
|
||||
//?
|
||||
enqueue(&next_target.target);
|
||||
break;
|
||||
|
||||
|
|
@ -158,16 +156,13 @@ void process_gcode_command() {
|
|||
// G3 - Arc Counter-clockwise
|
||||
// unimplemented
|
||||
|
||||
// G4 - Dwell
|
||||
case 4:
|
||||
//? ==== G4: Dwell ====
|
||||
//? --- G4: Dwell ---
|
||||
//?
|
||||
//? Example: G4 P200
|
||||
//?
|
||||
//? In this case sit still doing nothing for 200 milliseconds. During delays the state of the machine (for example the temperatures of its extruders) will still be preserved and controlled.
|
||||
//?
|
||||
|
||||
// wait for all moves to complete
|
||||
queue_wait();
|
||||
// delay
|
||||
for (;next_target.P > 0;next_target.P--) {
|
||||
|
|
@ -178,9 +173,8 @@ void process_gcode_command() {
|
|||
}
|
||||
break;
|
||||
|
||||
// G20 - inches as units
|
||||
case 20:
|
||||
//? ==== G20: Set Units to Inches ====
|
||||
//? --- G20: Set Units to Inches ---
|
||||
//?
|
||||
//? Example: G20
|
||||
//?
|
||||
|
|
@ -189,9 +183,8 @@ void process_gcode_command() {
|
|||
next_target.option_inches = 1;
|
||||
break;
|
||||
|
||||
// G21 - mm as units
|
||||
case 21:
|
||||
//? ==== G21: Set Units to Millimeters ====
|
||||
//? --- G21: Set Units to Millimeters ---
|
||||
//?
|
||||
//? Example: G21
|
||||
//?
|
||||
|
|
@ -200,17 +193,15 @@ void process_gcode_command() {
|
|||
next_target.option_inches = 0;
|
||||
break;
|
||||
|
||||
// G30 - go home via point
|
||||
case 30:
|
||||
//? ==== G30: Go home via point ====
|
||||
//? --- G30: Go home via point ---
|
||||
//?
|
||||
//? Undocumented.
|
||||
enqueue(&next_target.target);
|
||||
// no break here, G30 is move and then go home
|
||||
|
||||
// G28 - go home
|
||||
case 28:
|
||||
//? ==== G28: Home ====
|
||||
//? --- G28: Home ---
|
||||
//?
|
||||
//? Example: G28
|
||||
//?
|
||||
|
|
@ -256,35 +247,34 @@ void process_gcode_command() {
|
|||
}
|
||||
break;
|
||||
|
||||
// G90 - absolute positioning
|
||||
case 90:
|
||||
//? ==== G90: Set to Absolute Positioning ====
|
||||
//? --- G90: Set to Absolute Positioning ---
|
||||
//?
|
||||
//? Example: G90
|
||||
//?
|
||||
//? All coordinates from now on are absolute relative to the origin of the machine. (This is the RepRap default.)
|
||||
//?
|
||||
next_target.option_relative = 0;
|
||||
break;
|
||||
|
||||
// G91 - relative positioning
|
||||
case 91:
|
||||
//? ==== G91: Set to Relative Positioning ====
|
||||
//? --- G91: Set to Relative Positioning ---
|
||||
//?
|
||||
//? Example: G91
|
||||
//?
|
||||
//? All coordinates from now on are relative to the last position.
|
||||
//?
|
||||
next_target.option_relative = 1;
|
||||
break;
|
||||
|
||||
// G92 - set home
|
||||
case 92:
|
||||
//? ==== G92: Set Position ====
|
||||
//? --- G92: Set Position ---
|
||||
//?
|
||||
//? Example: G92 X10 E90
|
||||
//?
|
||||
//? Allows programming of absolute zero point, by reseting the current position to the values specified. This would set the machine's X coordinate to 10, and the extrude coordinate to 90. No physical motion will occur.
|
||||
//?
|
||||
|
||||
// wait for queue to empty
|
||||
queue_wait();
|
||||
|
||||
if (next_target.seen_X) {
|
||||
|
|
@ -313,11 +303,11 @@ void process_gcode_command() {
|
|||
}
|
||||
break;
|
||||
|
||||
// G161 - Home negative
|
||||
case 161:
|
||||
//? ==== G161: Home negative ====
|
||||
//? --- G161: Home negative ---
|
||||
//?
|
||||
//? Find the minimum limit of the specified axes by searching for the limit switch.
|
||||
//?
|
||||
if (next_target.seen_X)
|
||||
home_x_negative();
|
||||
if (next_target.seen_Y)
|
||||
|
|
@ -326,11 +316,11 @@ void process_gcode_command() {
|
|||
home_z_negative();
|
||||
break;
|
||||
|
||||
// G162 - Home positive
|
||||
case 162:
|
||||
//? ==== G162: Home positive ====
|
||||
//? --- G162: Home positive ---
|
||||
//?
|
||||
//? Find the maximum limit of the specified axes by searching for the limit switch.
|
||||
//?
|
||||
if (next_target.seen_X)
|
||||
home_x_positive();
|
||||
if (next_target.seen_Y)
|
||||
|
|
@ -352,31 +342,32 @@ void process_gcode_command() {
|
|||
}
|
||||
else if (next_target.seen_M) {
|
||||
switch (next_target.M) {
|
||||
// M0- machine stop
|
||||
case 0:
|
||||
//? ==== M0: machine stop ====
|
||||
//? --- M0: machine stop ---
|
||||
//?
|
||||
//? Example: M112
|
||||
//?
|
||||
//? http://linuxcnc.org/handbook/RS274NGC_3/RS274NGC_33a.html#1002379
|
||||
//? Unimplemented, especially the restart after the stop. Fall trough to M2.
|
||||
//?
|
||||
|
||||
// M2- program end
|
||||
case 2:
|
||||
//? ==== M2: program end ====
|
||||
//? --- M2: program end ---
|
||||
//?
|
||||
//? http://linuxcnc.org/handbook/RS274NGC_3/RS274NGC_33a.html#1002379
|
||||
//?
|
||||
queue_wait();
|
||||
power_off();
|
||||
break;
|
||||
// M112- immediate stop
|
||||
|
||||
case 112:
|
||||
//? ==== M112: Emergency Stop ====
|
||||
//? --- M112: Emergency Stop ---
|
||||
//?
|
||||
//? Example: M112
|
||||
//?
|
||||
//? Any moves in progress are immediately terminated, then RepRap shuts down. All motors and heaters are turned off.
|
||||
//? It can be started again by pressing the reset button on the master microcontroller. See also M0.
|
||||
//?
|
||||
|
||||
timer_stop();
|
||||
queue_flush();
|
||||
|
|
@ -390,9 +381,8 @@ void process_gcode_command() {
|
|||
wd_reset();
|
||||
break;
|
||||
|
||||
// M6- tool change
|
||||
case 6:
|
||||
//? ==== M6: tool change ====
|
||||
//? --- M6: tool change ---
|
||||
//?
|
||||
//? Undocumented.
|
||||
tool = next_tool;
|
||||
|
|
@ -407,7 +397,7 @@ void process_gcode_command() {
|
|||
// M3/M101- extruder on
|
||||
case 3:
|
||||
case 101:
|
||||
//? ==== M101: extruder on ====
|
||||
//? --- M101: extruder on ---
|
||||
//?
|
||||
//? Undocumented.
|
||||
if (temp_achieved() == 0) {
|
||||
|
|
@ -431,7 +421,7 @@ void process_gcode_command() {
|
|||
// M5/M103- extruder off
|
||||
case 5:
|
||||
case 103:
|
||||
//? ==== M103: extruder off ====
|
||||
//? --- M103: extruder off ---
|
||||
//?
|
||||
//? Undocumented.
|
||||
#ifdef DC_EXTRUDER
|
||||
|
|
@ -447,22 +437,21 @@ void process_gcode_command() {
|
|||
#endif
|
||||
break;
|
||||
|
||||
// M104- set temperature
|
||||
case 104:
|
||||
//? ==== M104: Set Extruder Temperature (Fast) ====
|
||||
//? --- M104: Set Extruder Temperature (Fast) ---
|
||||
//?
|
||||
//? Example: M104 S190
|
||||
//?
|
||||
//? Set the temperature of the current extruder to 190<sup>o</sup>C and return control to the host immediately (''i.e.'' before that temperature has been reached by the extruder). See also M109.
|
||||
//? Teacup supports an optional P parameter as a sensor index to address (eg M104 P1 S100 will set the bed temperature rather than the extruder temperature).
|
||||
//?
|
||||
temp_set(next_target.P, next_target.S);
|
||||
if (next_target.S)
|
||||
power_on();
|
||||
break;
|
||||
|
||||
// M105- get temperature
|
||||
case 105:
|
||||
//? ==== M105: Get Extruder Temperature ====
|
||||
//? --- M105: Get Extruder Temperature ---
|
||||
//?
|
||||
//? Example: M105
|
||||
//?
|
||||
|
|
@ -471,21 +460,21 @@ void process_gcode_command() {
|
|||
//? <tt>ok T:201 B:117</tt>
|
||||
//?
|
||||
//? Teacup supports an optional P parameter as a sensor index to address.
|
||||
//?
|
||||
#ifdef ENFORCE_ORDER
|
||||
// wait for all moves to complete
|
||||
queue_wait();
|
||||
#endif
|
||||
temp_print(next_target.P);
|
||||
break;
|
||||
|
||||
// M7/M106- fan on
|
||||
case 7:
|
||||
case 106:
|
||||
//? ==== M106: Fan On ====
|
||||
//? --- M106: Fan On ---
|
||||
//?
|
||||
//? Example: M106
|
||||
//?
|
||||
//? Turn on the cooling fan (if any).
|
||||
//?
|
||||
|
||||
#ifdef ENFORCE_ORDER
|
||||
// wait for all moves to complete
|
||||
|
|
@ -495,14 +484,15 @@ void process_gcode_command() {
|
|||
heater_set(HEATER_FAN, 255);
|
||||
#endif
|
||||
break;
|
||||
// M107- fan off
|
||||
|
||||
case 9:
|
||||
case 107:
|
||||
//? ==== M107: Fan Off ====
|
||||
//? --- M107: Fan Off ---
|
||||
//?
|
||||
//? Example: M107
|
||||
//?
|
||||
//? Turn off the cooling fan (if any).
|
||||
//?
|
||||
|
||||
#ifdef ENFORCE_ORDER
|
||||
// wait for all moves to complete
|
||||
|
|
@ -513,15 +503,15 @@ void process_gcode_command() {
|
|||
#endif
|
||||
break;
|
||||
|
||||
// M109- set temp and wait
|
||||
case 109:
|
||||
//? ==== M109: Set Extruder Temperature ====
|
||||
//? --- M109: Set Extruder Temperature ---
|
||||
//?
|
||||
//? Example: M109 S190
|
||||
//?
|
||||
//? Set the temperature of the current extruder to 190<sup>o</sup>C and wait for it to reach that value before sending an acknowledgment to the host. In fact the RepRap firmware waits a while after the temperature has been reached for the extruder to stabilise - typically about 40 seconds. This can be changed by a parameter in the firmware configuration file when the firmware is compiled. See also M104 and M116.
|
||||
//?
|
||||
//? Teacup supports an optional P parameter as a sensor index to address.
|
||||
//?
|
||||
if (next_target.seen_S)
|
||||
temp_set(next_target.P, next_target.S);
|
||||
if (next_target.S) {
|
||||
|
|
@ -534,19 +524,19 @@ void process_gcode_command() {
|
|||
enqueue(NULL);
|
||||
break;
|
||||
|
||||
// M110- set line number
|
||||
case 110:
|
||||
//? ==== M110: Set Current Line Number ====
|
||||
//? --- M110: Set Current Line Number ---
|
||||
//?
|
||||
//? Example: N123 M110
|
||||
//?
|
||||
//? Set the current line number to 123. Thus the expected next line after this command will be 124.
|
||||
//? This is a no-op in Teacup.
|
||||
//?
|
||||
break;
|
||||
// M111- set debug level
|
||||
|
||||
#ifdef DEBUG
|
||||
case 111:
|
||||
//? ==== M111: Set Debug Level ====
|
||||
//? --- M111: Set Debug Level ---
|
||||
//?
|
||||
//? Example: M111 S6
|
||||
//?
|
||||
|
|
@ -563,10 +553,11 @@ void process_gcode_command() {
|
|||
debug_flags = next_target.S;
|
||||
break;
|
||||
#endif
|
||||
|
||||
// M113- extruder PWM
|
||||
// M114- report XYZEF to host
|
||||
|
||||
case 114:
|
||||
//? ==== M114: Get Current Position ====
|
||||
//? --- M114: Get Current Position ---
|
||||
//?
|
||||
//? Example: M114
|
||||
//?
|
||||
|
|
@ -575,6 +566,7 @@ void process_gcode_command() {
|
|||
//? For example, the machine returns a string such as:
|
||||
//?
|
||||
//? <tt>ok C: X:0.00 Y:0.00 Z:0.00 E:0.00</tt>
|
||||
//?
|
||||
#ifdef ENFORCE_ORDER
|
||||
// wait for all moves to complete
|
||||
queue_wait();
|
||||
|
|
@ -582,9 +574,9 @@ void process_gcode_command() {
|
|||
sersendf_P(PSTR("X:%lq,Y:%lq,Z:%lq,E:%lq,F:%ld"), current_position.X * ((int32_t) UM_PER_STEP_X), current_position.Y * ((int32_t) UM_PER_STEP_Y), current_position.Z * ((int32_t) UM_PER_STEP_Z), current_position.E * ((int32_t) UM_PER_STEP_E), current_position.F);
|
||||
// newline is sent from gcode_parse after we return
|
||||
break;
|
||||
// M115- capabilities string
|
||||
|
||||
case 115:
|
||||
//? ==== M115: Get Firmware Version and Capabilities ====
|
||||
//? --- M115: Get Firmware Version and Capabilities ---
|
||||
//?
|
||||
//? Example: M115
|
||||
//?
|
||||
|
|
@ -593,13 +585,14 @@ void process_gcode_command() {
|
|||
//?
|
||||
//? sample data from firmware:
|
||||
//? FIRMWARE_NAME:Teacup FIRMWARE_URL:http%%3A//github.com/triffid/Teacup_Firmware/ PROTOCOL_VERSION:1.0 MACHINE_TYPE:Mendel EXTRUDER_COUNT:1 TEMP_SENSOR_COUNT:1 HEATER_COUNT:1
|
||||
//?
|
||||
|
||||
sersendf_P(PSTR("FIRMWARE_NAME:Teacup FIRMWARE_URL:http%%3A//github.com/triffid/Teacup_Firmware/ PROTOCOL_VERSION:1.0 MACHINE_TYPE:Mendel EXTRUDER_COUNT:%d TEMP_SENSOR_COUNT:%d HEATER_COUNT:%d"), 1, NUM_TEMP_SENSORS, NUM_HEATERS);
|
||||
// newline is sent from gcode_parse after we return
|
||||
break;
|
||||
// M116 - Wait for all temperatures and other slowly-changing variables to arrive at their set values.
|
||||
|
||||
case 116:
|
||||
//? ==== M116: Wait ====
|
||||
//? --- M116: Wait ---
|
||||
//?
|
||||
//? Example: M116
|
||||
//?
|
||||
|
|
@ -607,61 +600,61 @@ void process_gcode_command() {
|
|||
|
||||
enqueue(NULL);
|
||||
break;
|
||||
// M130- heater P factor
|
||||
|
||||
case 130:
|
||||
//? ==== M130: heater P factor ====
|
||||
//? --- M130: heater P factor ---
|
||||
//? Undocumented.
|
||||
if (next_target.seen_S)
|
||||
pid_set_p(next_target.P, next_target.S);
|
||||
break;
|
||||
// M131- heater I factor
|
||||
|
||||
case 131:
|
||||
//? ==== M131: heater I factor ====
|
||||
//? --- M131: heater I factor ---
|
||||
//? Undocumented.
|
||||
if (next_target.seen_S)
|
||||
pid_set_i(next_target.P, next_target.S);
|
||||
break;
|
||||
// M132- heater D factor
|
||||
|
||||
case 132:
|
||||
//? ==== M132: heater D factor ====
|
||||
//? --- M132: heater D factor ---
|
||||
//? Undocumented.
|
||||
if (next_target.seen_S)
|
||||
pid_set_d(next_target.P, next_target.S);
|
||||
break;
|
||||
// M133- heater I limit
|
||||
|
||||
case 133:
|
||||
//? ==== M133: heater I limit ====
|
||||
//? --- M133: heater I limit ---
|
||||
//? Undocumented.
|
||||
if (next_target.seen_S)
|
||||
pid_set_i_limit(next_target.P, next_target.S);
|
||||
break;
|
||||
// M134- save PID settings to eeprom
|
||||
|
||||
case 134:
|
||||
//? ==== M134: save PID settings to eeprom ====
|
||||
//? --- M134: save PID settings to eeprom ---
|
||||
//? Undocumented.
|
||||
heater_save_settings();
|
||||
break;
|
||||
// M135- set heater output
|
||||
|
||||
case 135:
|
||||
//? ==== M135: set heater output ====
|
||||
//? --- M135: set heater output ---
|
||||
//? Undocumented.
|
||||
if (next_target.seen_S) {
|
||||
heater_set(next_target.P, next_target.S);
|
||||
power_on();
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef DEBUG
|
||||
// M136- PRINT PID settings to host
|
||||
case 136:
|
||||
//? ==== M136: PRINT PID settings to host ====
|
||||
//? --- M136: PRINT PID settings to host ---
|
||||
//? Undocumented.
|
||||
//? This comand is only available in DEBUG builds.
|
||||
heater_print(next_target.P);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case 140: //Set heated bed temperature
|
||||
//? ==== M140: Set heated bed temperature ====
|
||||
case 140:
|
||||
//? --- M140: Set heated bed temperature ---
|
||||
//? Undocumented.
|
||||
#ifdef HEATER_BED
|
||||
temp_set(HEATER_BED, next_target.S);
|
||||
|
|
@ -670,10 +663,11 @@ void process_gcode_command() {
|
|||
#endif
|
||||
break;
|
||||
|
||||
// M190- power on
|
||||
case 190:
|
||||
//? ==== M190: Power On ====
|
||||
//? --- M190: Power On ---
|
||||
//? Undocumented.
|
||||
//? This one is pointless in Teacup. Implemented to calm the RepRap gurus.
|
||||
//?
|
||||
power_on();
|
||||
x_enable();
|
||||
y_enable();
|
||||
|
|
@ -681,10 +675,11 @@ void process_gcode_command() {
|
|||
e_enable();
|
||||
steptimeout = 0;
|
||||
break;
|
||||
// M191- power off
|
||||
|
||||
case 191:
|
||||
//? ==== M191: Power Off ====
|
||||
//? --- M191: Power Off ---
|
||||
//? Undocumented.
|
||||
//? Same as M2. RepRap obviously prefers to invent new numbers instead of looking into standards.
|
||||
#ifdef ENFORCE_ORDER
|
||||
// wait for all moves to complete
|
||||
queue_wait();
|
||||
|
|
@ -696,46 +691,44 @@ void process_gcode_command() {
|
|||
power_off();
|
||||
break;
|
||||
|
||||
// M200 - report endstop status
|
||||
case 200:
|
||||
//? ==== M200: report endstop status ====
|
||||
//? --- M200: report endstop status ---
|
||||
//? Report the current status of the endstops configured in the firmware to the host.
|
||||
#if defined(X_MIN_PIN)
|
||||
sersendf_P(PSTR("x_min:%d "), x_min());
|
||||
#endif
|
||||
#if defined(X_MAX_PIN)
|
||||
sersendf_P(PSTR("x_max:%d "), x_max());
|
||||
#endif
|
||||
#if defined(Y_MIN_PIN)
|
||||
sersendf_P(PSTR("y_min:%d "), y_min());
|
||||
#endif
|
||||
#if defined(Y_MAX_PIN)
|
||||
sersendf_P(PSTR("y_max:%d "), y_max());
|
||||
#endif
|
||||
#if defined(Z_MIN_PIN)
|
||||
sersendf_P(PSTR("z_min:%d "), z_min());
|
||||
#endif
|
||||
#if defined(Z_MAX_PIN)
|
||||
sersendf_P(PSTR("z_max:%d "), z_max());
|
||||
#endif
|
||||
#if !(defined(X_MIN_PIN) || defined(X_MAX_PIN) || defined(Y_MIN_PIN) || defined(Y_MAX_PIN) || defined(Z_MIN_PIN) || defined(Z_MAX_PIN))
|
||||
sersendf_P(PSTR("no endstops defined"));
|
||||
#endif
|
||||
#if defined(X_MIN_PIN)
|
||||
sersendf_P(PSTR("x_min:%d "), x_min());
|
||||
#endif
|
||||
#if defined(X_MAX_PIN)
|
||||
sersendf_P(PSTR("x_max:%d "), x_max());
|
||||
#endif
|
||||
#if defined(Y_MIN_PIN)
|
||||
sersendf_P(PSTR("y_min:%d "), y_min());
|
||||
#endif
|
||||
#if defined(Y_MAX_PIN)
|
||||
sersendf_P(PSTR("y_max:%d "), y_max());
|
||||
#endif
|
||||
#if defined(Z_MIN_PIN)
|
||||
sersendf_P(PSTR("z_min:%d "), z_min());
|
||||
#endif
|
||||
#if defined(Z_MAX_PIN)
|
||||
sersendf_P(PSTR("z_max:%d "), z_max());
|
||||
#endif
|
||||
#if !(defined(X_MIN_PIN) || defined(X_MAX_PIN) || defined(Y_MIN_PIN) || defined(Y_MAX_PIN) || defined(Z_MIN_PIN) || defined(Z_MAX_PIN))
|
||||
sersendf_P(PSTR("no endstops defined"));
|
||||
#endif
|
||||
break;
|
||||
|
||||
#ifdef DEBUG
|
||||
// M240- echo off
|
||||
case 240:
|
||||
//? ==== M240: echo off ====
|
||||
//? --- M240: echo off ---
|
||||
//? Disable echo.
|
||||
//? This command is only available in DEBUG builds.
|
||||
debug_flags &= ~DEBUG_ECHO;
|
||||
serial_writestr_P(PSTR("Echo off"));
|
||||
// newline is sent from gcode_parse after we return
|
||||
break;
|
||||
// M241- echo on
|
||||
|
||||
case 241:
|
||||
//? ==== M241: echo on ====
|
||||
//? --- M241: echo on ---
|
||||
//? Enable echo.
|
||||
//? This command is only available in DEBUG builds.
|
||||
debug_flags |= DEBUG_ECHO;
|
||||
|
|
@ -743,9 +736,8 @@ void process_gcode_command() {
|
|||
// newline is sent from gcode_parse after we return
|
||||
break;
|
||||
|
||||
// DEBUG: return current position, end position, queue
|
||||
case 250:
|
||||
//? ==== M250: return current position, end position, queue ====
|
||||
//? --- M250: return current position, end position, queue ---
|
||||
//? Undocumented
|
||||
//? This command is only available in DEBUG builds.
|
||||
sersendf_P(PSTR("{X:%ld,Y:%ld,Z:%ld,E:%ld,F:%lu,c:%lu}\t{X:%ld,Y:%ld,Z:%ld,E:%ld,F:%lu,c:%lu}\t"), current_position.X, current_position.Y, current_position.Z, current_position.E, current_position.F, movebuffer[mb_tail].c, movebuffer[mb_tail].endpoint.X, movebuffer[mb_tail].endpoint.Y, movebuffer[mb_tail].endpoint.Z, movebuffer[mb_tail].endpoint.E, movebuffer[mb_tail].endpoint.F,
|
||||
|
|
@ -759,9 +751,8 @@ void process_gcode_command() {
|
|||
print_queue();
|
||||
break;
|
||||
|
||||
// DEBUG: read arbitrary memory location
|
||||
case 253:
|
||||
//? ==== M253: read arbitrary memory location ====
|
||||
//? --- M253: read arbitrary memory location ---
|
||||
//? Undocumented
|
||||
//? This command is only available in DEBUG builds.
|
||||
if (next_target.seen_P == 0)
|
||||
|
|
@ -773,9 +764,8 @@ void process_gcode_command() {
|
|||
// newline is sent from gcode_parse after we return
|
||||
break;
|
||||
|
||||
// DEBUG: write arbitrary memory location
|
||||
case 254:
|
||||
//? ==== M254: write arbitrary memory location ====
|
||||
//? --- M254: write arbitrary memory location ---
|
||||
//? Undocumented
|
||||
//? This command is only available in DEBUG builds.
|
||||
sersendf_P(PSTR("%x:%x->%x"), next_target.S, *(volatile uint8_t *)(next_target.S), next_target.P);
|
||||
|
|
@ -783,6 +773,7 @@ void process_gcode_command() {
|
|||
// newline is sent from gcode_parse after we return
|
||||
break;
|
||||
#endif /* DEBUG */
|
||||
|
||||
// unknown mcode: spit an error
|
||||
default:
|
||||
sersendf_P(PSTR("E: Bad M-code %d"), next_target.M);
|
||||
|
|
|
|||
Loading…
Reference in New Issue