|
@@ -522,19 +522,6 @@ void fsensor_st_block_chunk(block_t* bl, int cnt)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-//! This ensures generating z-position at least 25mm above the heat bed.
|
|
|
-//! Making this a template enables changing the computation data type easily at all spots where necessary.
|
|
|
-//! @param current_z current z-position
|
|
|
-//! @return z-position at least 25mm above the heat bed plus FILAMENTCHANGE_ZADD
|
|
|
-template <typename T>
|
|
|
-inline T fsensor_clamp_z(float current_z){
|
|
|
- T z( current_z );
|
|
|
- if(z < T(25)){ // make sure the compiler understands, that the constant 25 is of correct type
|
|
|
- // - necessary for uint8_t -> results in shorter code
|
|
|
- z = T(25); // move to at least 25mm above heat bed
|
|
|
- }
|
|
|
- return z + T(FILAMENTCHANGE_ZADD); // always move above the printout by FILAMENTCHANGE_ZADD (default 2mm)
|
|
|
-}
|
|
|
|
|
|
//! Common code for enqueing M600 and supplemental codes into the command queue.
|
|
|
//! Used both for the IR sensor and the PAT9125
|
|
@@ -545,22 +532,6 @@ void fsensor_enque_M600(){
|
|
|
enquecommand_front_P(PSTR("PRUSA fsensor_recover"));
|
|
|
fsensor_m600_enqueued = true;
|
|
|
enquecommand_front_P((PSTR("M600")));
|
|
|
-#define xstr(a) str(a)
|
|
|
-#define str(a) #a
|
|
|
- static const char gcodeMove[] PROGMEM =
|
|
|
- "G1 X" xstr(FILAMENTCHANGE_XPOS)
|
|
|
- " Y" xstr(FILAMENTCHANGE_YPOS)
|
|
|
- " Z%u";
|
|
|
-#undef str
|
|
|
-#undef xstr
|
|
|
- char buf[32];
|
|
|
- // integer arithmetics is far shorter, I don't need a precise float position here, just move a bit above
|
|
|
- // 8bit arithmetics in fsensor_clamp_z is 10B shorter than 16bit (not talking about float ;) )
|
|
|
- // The compile-time static_assert here ensures, that the computation gets enough bits in case of Z-range too high,
|
|
|
- // i.e. makes the user change the data type, which also results in larger code
|
|
|
- static_assert(Z_MAX_POS < (255 - FILAMENTCHANGE_ZADD), "Z-range too high, change fsensor_clamp_z<uint8_t> to <uint16_t>");
|
|
|
- sprintf_P(buf, gcodeMove, fsensor_clamp_z<uint8_t>(current_position[Z_AXIS]) );
|
|
|
- enquecommand_front(buf, false);
|
|
|
}
|
|
|
|
|
|
//! @brief filament sensor update (perform M600 on filament runout)
|