Optimise usage of code_value()

code_value() is float but in some cases we can save memory when the expected output is only 1 or 2 bytes.

Changes save 182 bytes of flash memory on my end.
This commit is contained in:
Guðni Már Gilbert 2022-02-02 20:48:36 +00:00
parent 146b008186
commit 43bf33e791

View file

@ -4319,11 +4319,11 @@ void process_commands()
codenum = 0; codenum = 0;
bool hasP = false, hasS = false; bool hasP = false, hasS = false;
if (code_seen('P')) { if (code_seen('P')) {
codenum = code_value(); // milliseconds to wait codenum = code_value_long(); // milliseconds to wait
hasP = codenum > 0; hasP = codenum > 0;
} }
if (code_seen('S')) { if (code_seen('S')) {
codenum = code_value() * 1000; // seconds to wait codenum = code_value_long() * 1000; // seconds to wait
hasS = codenum > 0; hasS = codenum > 0;
} }
starpos = strchr(src, '*'); starpos = strchr(src, '*');
@ -4679,7 +4679,7 @@ eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,0xFFFF);
// } // }
else if(code_seen('G')) else if(code_seen('G'))
{ {
gcode_in_progress = (int)code_value(); gcode_in_progress = code_value_short();
// printf_P(_N("BEGIN G-CODE=%u\n"), gcode_in_progress); // printf_P(_N("BEGIN G-CODE=%u\n"), gcode_in_progress);
switch (gcode_in_progress) switch (gcode_in_progress)
{ {
@ -5827,7 +5827,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
} else } else
{ {
mcode_in_progress = (int)code_value(); mcode_in_progress = code_value_short();
// printf_P(_N("BEGIN M-CODE=%u\n"), mcode_in_progress); // printf_P(_N("BEGIN M-CODE=%u\n"), mcode_in_progress);
switch(mcode_in_progress) switch(mcode_in_progress)
@ -6096,7 +6096,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
uint8_t pin_status = code_value_uint8(); uint8_t pin_status = code_value_uint8();
int8_t pin_number = LED_PIN; int8_t pin_number = LED_PIN;
if (code_seen('P')) if (code_seen('P'))
pin_number = code_value(); pin_number = code_value_uint8();
for(int8_t i = 0; i < (int8_t)(sizeof(sensitive_pins)/sizeof(*sensitive_pins)); i++) for(int8_t i = 0; i < (int8_t)(sizeof(sensitive_pins)/sizeof(*sensitive_pins)); i++)
{ {
if ((int8_t)pgm_read_byte(&sensitive_pins[i]) == pin_number) if ((int8_t)pgm_read_byte(&sensitive_pins[i]) == pin_number)
@ -6511,9 +6511,9 @@ Sigma_Exit:
*/ */
case 73: //M73 show percent done, time remaining and time to change/pause case 73: //M73 show percent done, time remaining and time to change/pause
{ {
if(code_seen('P')) print_percent_done_normal = code_value(); if(code_seen('P')) print_percent_done_normal = code_value_uint8();
if(code_seen('R')) print_time_remaining_normal = code_value(); if(code_seen('R')) print_time_remaining_normal = code_value();
if(code_seen('Q')) print_percent_done_silent = code_value(); if(code_seen('Q')) print_percent_done_silent = code_value_uint8();
if(code_seen('S')) print_time_remaining_silent = code_value(); if(code_seen('S')) print_time_remaining_silent = code_value();
if(code_seen('C')){ if(code_seen('C')){
float print_time_to_change_normal_f = code_value_float(); float print_time_to_change_normal_f = code_value_float();
@ -6633,7 +6633,7 @@ Sigma_Exit:
autoReportFeatures.SetPeriod( code_value_uint8() ); autoReportFeatures.SetPeriod( code_value_uint8() );
} }
if (code_seen('C')){ if (code_seen('C')){
autoReportFeatures.SetMask(code_value()); autoReportFeatures.SetMask(code_value_uint8());
} else{ } else{
autoReportFeatures.SetMask(1); //Backwards compability to host systems like Octoprint to send only temp if paramerter `C`isn't used. autoReportFeatures.SetMask(1); //Backwards compability to host systems like Octoprint to send only temp if paramerter `C`isn't used.
} }
@ -6784,10 +6784,10 @@ Sigma_Exit:
*/ */
case 106: // M106 Sxxx Fan On S<speed> 0 .. 255 case 106: // M106 Sxxx Fan On S<speed> 0 .. 255
if (code_seen('S')){ if (code_seen('S')){
fanSpeed=constrain(code_value(),0,255); fanSpeed = code_value_uint8();
} }
else { else {
fanSpeed=255; fanSpeed = 255;
} }
break; break;
@ -7017,7 +7017,7 @@ Sigma_Exit:
*/ */
case 113: case 113:
if (code_seen('S')) { if (code_seen('S')) {
host_keepalive_interval = (uint8_t)code_value_short(); host_keepalive_interval = code_value_uint8();
// NOMORE(host_keepalive_interval, 60); // NOMORE(host_keepalive_interval, 60);
} }
else { else {
@ -7243,7 +7243,7 @@ Sigma_Exit:
uint8_t extruder = active_extruder; uint8_t extruder = active_extruder;
if(code_seen('T')) { if(code_seen('T')) {
extruder = code_value(); extruder = code_value_uint8();
if(extruder >= EXTRUDERS) { if(extruder >= EXTRUDERS) {
SERIAL_ECHO_START; SERIAL_ECHO_START;
SERIAL_ECHO(_n("M200 Invalid extruder "));////MSG_M200_INVALID_EXTRUDER SERIAL_ECHO(_n("M200 Invalid extruder "));////MSG_M200_INVALID_EXTRUDER
@ -7251,14 +7251,14 @@ Sigma_Exit:
} }
} }
if(code_seen('D')) { if(code_seen('D')) {
float diameter = (float)code_value(); float diameter = code_value();
if (diameter == 0.0) { if (diameter == 0.0) {
// setting any extruder filament size disables volumetric on the assumption that // setting any extruder filament size disables volumetric on the assumption that
// slicers either generate in extruder values as cubic mm or as as filament feeds // slicers either generate in extruder values as cubic mm or as as filament feeds
// for all extruders // for all extruders
cs.volumetric_enabled = false; cs.volumetric_enabled = false;
} else { } else {
cs.filament_size[extruder] = (float)code_value(); cs.filament_size[extruder] = code_value();
// make sure all extruders have some sane value for the filament size // make sure all extruders have some sane value for the filament size
cs.filament_size[0] = (cs.filament_size[0] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : cs.filament_size[0]); cs.filament_size[0] = (cs.filament_size[0] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : cs.filament_size[0]);
#if EXTRUDERS > 1 #if EXTRUDERS > 1
@ -7506,8 +7506,7 @@ Sigma_Exit:
{ {
if(code_seen('S')) if(code_seen('S'))
{ {
int t= code_value() ; switch(code_value_uint8())
switch(t)
{ {
case 0: case 0:
{ {
@ -7604,7 +7603,7 @@ Sigma_Exit:
} }
if (code_seen('S')) if (code_seen('S'))
{ {
feedmultiply = code_value(); feedmultiply = code_value_short();
codesWereSeen = true; codesWereSeen = true;
} }
if (code_seen('R')) //restore previous feedmultiply if (code_seen('R')) //restore previous feedmultiply
@ -7633,7 +7632,7 @@ Sigma_Exit:
{ {
if (code_seen('S')) if (code_seen('S'))
{ {
int tmp_code = code_value(); int tmp_code = code_value_short();
if (code_seen('T')) if (code_seen('T'))
{ {
uint8_t extruder; uint8_t extruder;
@ -7668,10 +7667,10 @@ Sigma_Exit:
case 226: // M226 P<pin number> S<pin state>- Wait until the specified pin reaches the state required case 226: // M226 P<pin number> S<pin state>- Wait until the specified pin reaches the state required
{ {
if(code_seen('P')){ if(code_seen('P')){
int pin_number = code_value(); // pin number int pin_number = code_value_short(); // pin number
int pin_state = -1; // required pin state - default is inverted int pin_state = -1; // required pin state - default is inverted
if(code_seen('S')) pin_state = code_value(); // required pin state if(code_seen('S')) pin_state = code_value_short(); // required pin state
if(pin_state >= -1 && pin_state <= 1){ if(pin_state >= -1 && pin_state <= 1){
@ -7949,13 +7948,13 @@ Sigma_Exit:
case 303: case 303:
{ {
float temp = 150.0; float temp = 150.0;
int e=0; int e = 0;
int c=5; int c = 5;
if (code_seen('E')) e=code_value(); if (code_seen('E')) e = code_value_short();
if (e<0) if (e < 0)
temp=70; temp = 70;
if (code_seen('S')) temp=code_value(); if (code_seen('S')) temp = code_value();
if (code_seen('C')) c=code_value(); if (code_seen('C')) c = code_value_short();
PID_autotune(temp, e, c); PID_autotune(temp, e, c);
} }
break; break;
@ -7992,8 +7991,8 @@ Sigma_Exit:
{ {
uint8_t extruder = 255; uint8_t extruder = 255;
uint8_t filament = FILAMENT_UNDEFINED; uint8_t filament = FILAMENT_UNDEFINED;
if(code_seen('E')) extruder = code_value(); if(code_seen('E')) extruder = code_value_uint8();
if(code_seen('F')) filament = code_value(); if(code_seen('F')) filament = code_value_uint8();
mmu_set_filament_type(extruder, filament); mmu_set_filament_type(extruder, filament);
} }
} }
@ -8293,7 +8292,7 @@ Sigma_Exit:
int set_target_pinda = 0; int set_target_pinda = 0;
if (code_seen('S')) { if (code_seen('S')) {
set_target_pinda = code_value(); set_target_pinda = code_value_short();
} }
else { else {
break; break;
@ -8386,9 +8385,9 @@ Sigma_Exit:
SERIAL_PROTOCOLLN("zerorized"); SERIAL_PROTOCOLLN("zerorized");
} }
else if (code_seen('S')) { // Sxxx Iyyy - Set compensation ustep value S for compensation table index I else if (code_seen('S')) { // Sxxx Iyyy - Set compensation ustep value S for compensation table index I
int16_t usteps = code_value(); int16_t usteps = code_value_short();
if (code_seen('I')) { if (code_seen('I')) {
uint8_t index = code_value(); uint8_t index = code_value_uint8();
if (index < 5) { if (index < 5) {
EEPROM_save_B(EEPROM_PROBE_TEMP_SHIFT + index * 2, &usteps); EEPROM_save_B(EEPROM_PROBE_TEMP_SHIFT + index * 2, &usteps);
SERIAL_PROTOCOLLN("OK"); SERIAL_PROTOCOLLN("OK");
@ -8874,7 +8873,7 @@ Sigma_Exit:
case 701: case 701:
{ {
if (mmu_enabled && code_seen('E')) if (mmu_enabled && code_seen('E'))
tmp_extruder = code_value(); tmp_extruder = code_value_uint8();
gcode_M701(); gcode_M701();
} }
break; break;
@ -9131,7 +9130,7 @@ Sigma_Exit:
*/ */
else if (code_seen('D')) // D codes (debug) else if (code_seen('D')) // D codes (debug)
{ {
switch((int)code_value()) switch(code_value_short())
{ {
/*! /*!
@ -9599,7 +9598,7 @@ void get_coordinates()
if(code_seen(axis_codes[i])) if(code_seen(axis_codes[i]))
{ {
bool relative = axis_relative_modes & (1 << i); bool relative = axis_relative_modes & (1 << i);
destination[i] = (float)code_value(); destination[i] = code_value();
if (i == E_AXIS) { if (i == E_AXIS) {
float emult = extruder_multiplier[active_extruder]; float emult = extruder_multiplier[active_extruder];
if (emult != 1.) { if (emult != 1.) {
@ -10310,7 +10309,7 @@ bool setTargetedHotend(int code, uint8_t &extruder)
{ {
extruder = active_extruder; extruder = active_extruder;
if(code_seen('T')) { if(code_seen('T')) {
extruder = code_value(); extruder = code_value_uint8();
if(extruder >= EXTRUDERS) { if(extruder >= EXTRUDERS) {
SERIAL_ECHO_START; SERIAL_ECHO_START;
switch(code){ switch(code){