Redo "invalid extruder" to save 264 bytes

- Use `setTargetedHotend` in `M200`, as with other commands that use
`T` for the extruder
- Synthesize the "invalid extruder" message, obviating several long
strings
This commit is contained in:
Scott Lahteine 2015-05-28 22:25:28 -07:00
parent a8a8f236d2
commit 06f401e7e5
3 changed files with 15 additions and 38 deletions

View file

@ -3938,20 +3938,14 @@ inline void gcode_M121() { enable_endstops(false); }
#endif // BLINKM #endif // BLINKM
/** /**
* M200: Set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters). * M200: Set filament diameter and set E axis units to cubic millimeters
* T<extruder> *
* D<millimeters> * T<extruder> - Optional extruder number. Current extruder if omitted.
* D<mm> - Diameter of the filament. Use "D0" to set units back to millimeters.
*/ */
inline void gcode_M200() { inline void gcode_M200() {
int tmp_extruder = active_extruder;
if (code_seen('T')) { if (setTargetedHotend(200)) return;
tmp_extruder = code_value_short();
if (tmp_extruder >= EXTRUDERS) {
SERIAL_ECHO_START;
SERIAL_ECHO(MSG_M200_INVALID_EXTRUDER);
return;
}
}
if (code_seen('D')) { if (code_seen('D')) {
float diameter = code_value(); float diameter = code_value();
@ -3960,7 +3954,7 @@ inline void gcode_M200() {
// for all extruders // for all extruders
volumetric_enabled = (diameter != 0.0); volumetric_enabled = (diameter != 0.0);
if (volumetric_enabled) { if (volumetric_enabled) {
filament_size[tmp_extruder] = diameter; filament_size[target_extruder] = diameter;
// make sure all extruders have some sane value for the filament size // make sure all extruders have some sane value for the filament size
for (int i=0; i<EXTRUDERS; i++) for (int i=0; i<EXTRUDERS; i++)
if (! filament_size[i]) filament_size[i] = DEFAULT_NOMINAL_FILAMENT_DIA; if (! filament_size[i]) filament_size[i] = DEFAULT_NOMINAL_FILAMENT_DIA;
@ -6524,30 +6518,25 @@ void Stop() {
} }
} }
bool setTargetedHotend(int code){ bool setTargetedHotend(int code) {
target_extruder = active_extruder; target_extruder = active_extruder;
if (code_seen('T')) { if (code_seen('T')) {
target_extruder = code_value_short(); target_extruder = code_value_short();
if (target_extruder >= EXTRUDERS) { if (target_extruder >= EXTRUDERS) {
SERIAL_ECHO_START; switch(code) {
switch(code){
case 104: case 104:
SERIAL_ECHO(MSG_M104_INVALID_EXTRUDER);
break;
case 105: case 105:
SERIAL_ECHO(MSG_M105_INVALID_EXTRUDER);
break;
case 109: case 109:
SERIAL_ECHO(MSG_M109_INVALID_EXTRUDER);
break;
case 218: case 218:
SERIAL_ECHO(MSG_M218_INVALID_EXTRUDER);
break;
case 221: case 221:
SERIAL_ECHO(MSG_M221_INVALID_EXTRUDER); case 200:
SERIAL_ECHO_START;
SERIAL_CHAR('M');
SERIAL_ECHO(code);
SERIAL_ECHOPGM(" " MSG_INVALID_EXTRUDER " ");
SERIAL_ECHOLN(target_extruder);
break; break;
} }
SERIAL_ECHOLN(target_extruder);
return true; return true;
} }
} }

View file

@ -121,12 +121,6 @@
#define MSG_END_FILE_LIST "End file list" #define MSG_END_FILE_LIST "End file list"
#define MSG_INVALID_EXTRUDER "Invalid extruder" #define MSG_INVALID_EXTRUDER "Invalid extruder"
#define MSG_INVALID_SOLENOID "Invalid solenoid" #define MSG_INVALID_SOLENOID "Invalid solenoid"
#define MSG_M104_INVALID_EXTRUDER "M104 " MSG_INVALID_EXTRUDER " "
#define MSG_M105_INVALID_EXTRUDER "M105 " MSG_INVALID_EXTRUDER " "
#define MSG_M109_INVALID_EXTRUDER "M109 " MSG_INVALID_EXTRUDER " "
#define MSG_M200_INVALID_EXTRUDER "M200 " MSG_INVALID_EXTRUDER " "
#define MSG_M218_INVALID_EXTRUDER "M218 " MSG_INVALID_EXTRUDER " "
#define MSG_M221_INVALID_EXTRUDER "M221 " MSG_INVALID_EXTRUDER " "
#define MSG_ERR_NO_THERMISTORS "No thermistors - no temperature" #define MSG_ERR_NO_THERMISTORS "No thermistors - no temperature"
#define MSG_HEATING "Heating..." #define MSG_HEATING "Heating..."
#define MSG_HEATING_COMPLETE "Heating done." #define MSG_HEATING_COMPLETE "Heating done."

View file

@ -122,12 +122,6 @@
#define MSG_END_FILE_LIST "End file list" #define MSG_END_FILE_LIST "End file list"
#define MSG_INVALID_EXTRUDER "Invalid extruder" #define MSG_INVALID_EXTRUDER "Invalid extruder"
#define MSG_INVALID_SOLENOID "Invalid solenoid" #define MSG_INVALID_SOLENOID "Invalid solenoid"
#define MSG_M104_INVALID_EXTRUDER "M104 " MSG_INVALID_EXTRUDER " "
#define MSG_M105_INVALID_EXTRUDER "M105 " MSG_INVALID_EXTRUDER " "
#define MSG_M109_INVALID_EXTRUDER "M109 " MSG_INVALID_EXTRUDER " "
#define MSG_M200_INVALID_EXTRUDER "M200 " MSG_INVALID_EXTRUDER " "
#define MSG_M218_INVALID_EXTRUDER "M218 " MSG_INVALID_EXTRUDER " "
#define MSG_M221_INVALID_EXTRUDER "M221 " MSG_INVALID_EXTRUDER " "
#define MSG_ERR_NO_THERMISTORS "No thermistors - no temperature" #define MSG_ERR_NO_THERMISTORS "No thermistors - no temperature"
#define MSG_HEATING "Heating..." #define MSG_HEATING "Heating..."
#define MSG_HEATING_COMPLETE "Heating done." #define MSG_HEATING_COMPLETE "Heating done."