Improve K error checking, allow to manually reset the version
Properly check K independently for each version by delegating it to la10c_value() Handle -1 as a special case to allow manual reset.
This commit is contained in:
parent
fd0ed1f0ea
commit
86696156af
|
|
@ -2070,20 +2070,25 @@ static float probe_pt(float x, float y, float z_before) {
|
|||
* K<factor> Set advance K factor
|
||||
*/
|
||||
inline void gcode_M900() {
|
||||
const float newK = code_seen('K') ? code_value_float() : -1;
|
||||
float newK = code_seen('K') ? code_value_float() : -2;
|
||||
#ifdef LA_NOCOMPAT
|
||||
if (newK >= 0 && newK < 10)
|
||||
extruder_advance_K = newK;
|
||||
else
|
||||
SERIAL_ECHOLNPGM("K out of allowed range!");
|
||||
#else
|
||||
if (newK == 0) {
|
||||
if (newK == 0)
|
||||
extruder_advance_K = 0;
|
||||
}
|
||||
else if(newK > 0)
|
||||
extruder_advance_K = la10c_value(newK);
|
||||
else if (newK == -1)
|
||||
la10c_reset();
|
||||
else
|
||||
SERIAL_ECHOLNPGM("K out of allowed range!");
|
||||
{
|
||||
newK = la10c_value(newK);
|
||||
if (newK < 0)
|
||||
SERIAL_ECHOLNPGM("K out of allowed range!");
|
||||
else
|
||||
extruder_advance_K = newK;
|
||||
}
|
||||
#endif
|
||||
|
||||
SERIAL_ECHO_START;
|
||||
|
|
|
|||
|
|
@ -31,10 +31,18 @@ static float la10c_convert(float k)
|
|||
float la10c_value(float k)
|
||||
{
|
||||
if(la10c_mode == LA10C_UNKNOWN)
|
||||
{
|
||||
// do not autodetect until a valid value is seen
|
||||
if(k == 0)
|
||||
return 0;
|
||||
else if(k < 0)
|
||||
return -1;
|
||||
|
||||
la10c_mode_change(k < 10? LA10C_LA15: LA10C_LA10);
|
||||
}
|
||||
|
||||
if(la10c_mode == LA10C_LA15)
|
||||
return k;
|
||||
return (k >= 0 && k < 10? k: -1);
|
||||
else
|
||||
return la10c_convert(k);
|
||||
return (k >= 0? la10c_convert(k): -1);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue