Browse Source

Smaller binary using inline gcode argument getters

pull/1/head
Scott Lahteine 9 years ago
parent
commit
4980ecc1f7
  1. 11
      Marlin/Marlin.h
  2. 52
      Marlin/Marlin_main.cpp

11
Marlin/Marlin.h

@ -291,20 +291,9 @@ extern bool axis_homed[3]; // axis[n].is_homed
// GCode support for external objects // GCode support for external objects
bool code_seen(char); bool code_seen(char);
float code_value_float();
unsigned long code_value_ulong();
long code_value_long();
int code_value_int(); int code_value_int();
uint16_t code_value_ushort();
uint8_t code_value_byte();
bool code_value_bool();
float code_value_linear_units();
float code_value_per_axis_unit(int axis);
float code_value_axis_units(int axis);
float code_value_temp_abs(); float code_value_temp_abs();
float code_value_temp_diff(); float code_value_temp_diff();
millis_t code_value_millis();
millis_t code_value_millis_from_seconds();
#if ENABLED(DELTA) #if ENABLED(DELTA)
extern float delta[3]; extern float delta[3];

52
Marlin/Marlin_main.cpp

@ -1167,7 +1167,7 @@ void get_available_commands() {
#endif #endif
} }
bool code_has_value() { inline bool code_has_value() {
int i = 1; int i = 1;
char c = seen_pointer[i]; char c = seen_pointer[i];
while (c == ' ') c = seen_pointer[++i]; while (c == ' ') c = seen_pointer[++i];
@ -1176,7 +1176,7 @@ bool code_has_value() {
return NUMERIC(c); return NUMERIC(c);
} }
float code_value_float() { inline float code_value_float() {
float ret; float ret;
char* e = strchr(seen_pointer, 'E'); char* e = strchr(seen_pointer, 'E');
if (e) { if (e) {
@ -1189,20 +1189,20 @@ float code_value_float() {
return ret; return ret;
} }
unsigned long code_value_ulong() { return strtoul(seen_pointer + 1, NULL, 10); } inline unsigned long code_value_ulong() { return strtoul(seen_pointer + 1, NULL, 10); }
long code_value_long() { return strtol(seen_pointer + 1, NULL, 10); } inline long code_value_long() { return strtol(seen_pointer + 1, NULL, 10); }
int code_value_int() { return (int)strtol(seen_pointer + 1, NULL, 10); } inline int code_value_int() { return (int)strtol(seen_pointer + 1, NULL, 10); }
uint16_t code_value_ushort() { return (uint16_t)strtoul(seen_pointer + 1, NULL, 10); } inline uint16_t code_value_ushort() { return (uint16_t)strtoul(seen_pointer + 1, NULL, 10); }
uint8_t code_value_byte() { return (uint8_t)(constrain(strtol(seen_pointer + 1, NULL, 10), 0, 255)); } inline uint8_t code_value_byte() { return (uint8_t)(constrain(strtol(seen_pointer + 1, NULL, 10), 0, 255)); }
bool code_value_bool() { return code_value_byte() > 0; } inline bool code_value_bool() { return code_value_byte() > 0; }
#if ENABLED(INCH_MODE_SUPPORT) #if ENABLED(INCH_MODE_SUPPORT)
void set_input_linear_units(LinearUnit units) { inline void set_input_linear_units(LinearUnit units) {
switch (units) { switch (units) {
case LINEARUNIT_INCH: case LINEARUNIT_INCH:
linear_unit_factor = 25.4; linear_unit_factor = 25.4;
@ -1215,33 +1215,24 @@ bool code_value_bool() { return code_value_byte() > 0; }
volumetric_unit_factor = pow(linear_unit_factor, 3.0); volumetric_unit_factor = pow(linear_unit_factor, 3.0);
} }
float axis_unit_factor(int axis) { inline float axis_unit_factor(int axis) {
return (axis == E_AXIS && volumetric_enabled ? volumetric_unit_factor : linear_unit_factor); return (axis == E_AXIS && volumetric_enabled ? volumetric_unit_factor : linear_unit_factor);
} }
float code_value_linear_units() { inline float code_value_linear_units() { return code_value_float() * linear_unit_factor; }
return code_value_float() * linear_unit_factor; inline float code_value_per_axis_unit(int axis) { return code_value_float() / axis_unit_factor(axis); }
} inline float code_value_axis_units(int axis) { return code_value_float() * axis_unit_factor(axis); }
float code_value_per_axis_unit(int axis) {
return code_value_float() / axis_unit_factor(axis);
}
float code_value_axis_units(int axis) {
return code_value_float() * axis_unit_factor(axis);
}
#else #else
float code_value_linear_units() { return code_value_float(); }
float code_value_per_axis_unit(int axis) { return code_value_float(); } inline float code_value_linear_units() { return code_value_float(); }
inline float code_value_per_axis_unit(int axis) { return code_value_float(); }
inline float code_value_axis_units(int axis) { return code_value_float(); }
float code_value_axis_units(int axis) { return code_value_float(); }
#endif #endif
#if ENABLED(TEMPERATURE_UNITS_SUPPORT) #if ENABLED(TEMPERATURE_UNITS_SUPPORT)
void set_input_temp_units(TempUnit units) { inline void set_input_temp_units(TempUnit units) { input_temp_units = units; }
input_temp_units = units;
}
float code_value_temp_abs() { float code_value_temp_abs() {
switch (input_temp_units) { switch (input_temp_units) {
@ -1272,13 +1263,8 @@ bool code_value_bool() { return code_value_byte() > 0; }
float code_value_temp_diff() { return code_value_float(); } float code_value_temp_diff() { return code_value_float(); }
#endif #endif
millis_t code_value_millis() { inline millis_t code_value_millis() { return code_value_ulong(); }
return code_value_ulong(); inline millis_t code_value_millis_from_seconds() { return code_value_float() * 1000; }
}
millis_t code_value_millis_from_seconds() {
return code_value_float() * 1000;
}
bool code_seen(char code) { bool code_seen(char code) {
seen_pointer = strchr(current_command_args, code); seen_pointer = strchr(current_command_args, code);

Loading…
Cancel
Save