Treat temperature as integer, when possible
This commit is contained in:
		@@ -440,7 +440,7 @@ float soft_endstop_min[XYZ] = { X_MIN_POS, Y_MIN_POS, Z_MIN_POS },
 | 
			
		||||
      soft_endstop_max[XYZ] = { X_MAX_POS, Y_MAX_POS, Z_MAX_POS };
 | 
			
		||||
 | 
			
		||||
#if FAN_COUNT > 0
 | 
			
		||||
  int fanSpeeds[FAN_COUNT] = { 0 };
 | 
			
		||||
  int16_t fanSpeeds[FAN_COUNT] = { 0 };
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// The active extruder (tool). Set with T<extruder> command.
 | 
			
		||||
@@ -1297,20 +1297,19 @@ inline bool code_value_bool() { return !code_has_value() || code_value_byte() >
 | 
			
		||||
#if ENABLED(TEMPERATURE_UNITS_SUPPORT)
 | 
			
		||||
  inline void set_input_temp_units(TempUnit units) { input_temp_units = units; }
 | 
			
		||||
 | 
			
		||||
  float code_value_temp_abs() {
 | 
			
		||||
  int16_t code_value_temp_abs() {
 | 
			
		||||
    switch (input_temp_units) {
 | 
			
		||||
      case TEMPUNIT_C:
 | 
			
		||||
        return code_value_float();
 | 
			
		||||
      case TEMPUNIT_F:
 | 
			
		||||
        return (code_value_float() - 32) * 0.5555555556;
 | 
			
		||||
      case TEMPUNIT_K:
 | 
			
		||||
        return code_value_float() - 273.15;
 | 
			
		||||
      case TEMPUNIT_C:
 | 
			
		||||
      default:
 | 
			
		||||
        return code_value_float();
 | 
			
		||||
        return code_value_int();
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  float code_value_temp_diff() {
 | 
			
		||||
  int16_t code_value_temp_diff() {
 | 
			
		||||
    switch (input_temp_units) {
 | 
			
		||||
      case TEMPUNIT_C:
 | 
			
		||||
      case TEMPUNIT_K:
 | 
			
		||||
@@ -1322,8 +1321,8 @@ inline bool code_value_bool() { return !code_has_value() || code_value_byte() >
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
#else
 | 
			
		||||
  float code_value_temp_abs() { return code_value_float(); }
 | 
			
		||||
  float code_value_temp_diff() { return code_value_float(); }
 | 
			
		||||
  int16_t code_value_temp_abs() { return code_value_int(); }
 | 
			
		||||
  int16_t code_value_temp_diff() { return code_value_int(); }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
FORCE_INLINE millis_t code_value_millis() { return code_value_ulong(); }
 | 
			
		||||
@@ -1384,7 +1383,7 @@ bool get_target_extruder_from_command(int code) {
 | 
			
		||||
  static float raised_parked_position[XYZE];         // used in mode 1
 | 
			
		||||
  static millis_t delayed_move_time = 0;             // used in mode 1
 | 
			
		||||
  static float duplicate_extruder_x_offset = DEFAULT_DUPLICATION_X_OFFSET; // used in mode 2
 | 
			
		||||
  static float duplicate_extruder_temp_offset = 0;   // used in mode 2
 | 
			
		||||
  static int16_t duplicate_extruder_temp_offset = 0; // used in mode 2
 | 
			
		||||
 | 
			
		||||
#endif // DUAL_X_CARRIAGE
 | 
			
		||||
 | 
			
		||||
@@ -2073,10 +2072,10 @@ static void clean_up_after_endstop_or_probe_move() {
 | 
			
		||||
      void set_heaters_for_bltouch(const bool deploy) {
 | 
			
		||||
        static bool heaters_were_disabled = false;
 | 
			
		||||
        static millis_t next_emi_protection = 0;
 | 
			
		||||
        static float temps_at_entry[HOTENDS];
 | 
			
		||||
        static int16_t temps_at_entry[HOTENDS];
 | 
			
		||||
 | 
			
		||||
        #if HAS_TEMP_BED
 | 
			
		||||
          static float bed_temp_at_entry;
 | 
			
		||||
          static int16_t bed_temp_at_entry;
 | 
			
		||||
        #endif
 | 
			
		||||
 | 
			
		||||
        // If called out of order or far apart something is seriously wrong
 | 
			
		||||
@@ -6471,10 +6470,11 @@ inline void gcode_M104() {
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
  if (code_seen('S')) {
 | 
			
		||||
    thermalManager.setTargetHotend(code_value_temp_abs(), target_extruder);
 | 
			
		||||
    const int16_t temp = code_value_temp_abs();
 | 
			
		||||
    thermalManager.setTargetHotend(temp, target_extruder);
 | 
			
		||||
    #if ENABLED(DUAL_X_CARRIAGE)
 | 
			
		||||
      if (dual_x_carriage_mode == DXC_DUPLICATION_MODE && target_extruder == 0)
 | 
			
		||||
        thermalManager.setTargetHotend(code_value_temp_abs() == 0.0 ? 0.0 : code_value_temp_abs() + duplicate_extruder_temp_offset, 1);
 | 
			
		||||
        thermalManager.setTargetHotend(temp ? temp + duplicate_extruder_temp_offset : 0, 1);
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    #if ENABLED(PRINTJOB_TIMER_AUTOSTART)
 | 
			
		||||
@@ -6484,7 +6484,7 @@ inline void gcode_M104() {
 | 
			
		||||
       * standby mode, for instance in a dual extruder setup, without affecting
 | 
			
		||||
       * the running print timer.
 | 
			
		||||
       */
 | 
			
		||||
      if (code_value_temp_abs() <= (EXTRUDE_MINTEMP)/2) {
 | 
			
		||||
      if (code_value_temp_abs() <= (EXTRUDE_MINTEMP) / 2) {
 | 
			
		||||
        print_job_timer.stop();
 | 
			
		||||
        LCD_MESSAGEPGM(WELCOME_MSG);
 | 
			
		||||
      }
 | 
			
		||||
@@ -6507,7 +6507,7 @@ inline void gcode_M104() {
 | 
			
		||||
      SERIAL_PROTOCOLPGM(" /");
 | 
			
		||||
      SERIAL_PROTOCOL_F(thermalManager.degTargetHotend(target_extruder), 1);
 | 
			
		||||
      #if ENABLED(SHOW_TEMP_ADC_VALUES)
 | 
			
		||||
        SERIAL_PROTOCOLPAIR(" (", thermalManager.current_temperature_raw[target_extruder] / OVERSAMPLENR);
 | 
			
		||||
        SERIAL_PROTOCOLPAIR(" (", thermalManager.rawHotendTemp(target_extruder) / OVERSAMPLENR);
 | 
			
		||||
        SERIAL_PROTOCOLCHAR(')');
 | 
			
		||||
      #endif
 | 
			
		||||
    #endif
 | 
			
		||||
@@ -6517,7 +6517,7 @@ inline void gcode_M104() {
 | 
			
		||||
      SERIAL_PROTOCOLPGM(" /");
 | 
			
		||||
      SERIAL_PROTOCOL_F(thermalManager.degTargetBed(), 1);
 | 
			
		||||
      #if ENABLED(SHOW_TEMP_ADC_VALUES)
 | 
			
		||||
        SERIAL_PROTOCOLPAIR(" (", thermalManager.current_temperature_bed_raw / OVERSAMPLENR);
 | 
			
		||||
        SERIAL_PROTOCOLPAIR(" (", thermalManager.rawBedTemp() / OVERSAMPLENR);
 | 
			
		||||
        SERIAL_PROTOCOLCHAR(')');
 | 
			
		||||
      #endif
 | 
			
		||||
    #endif
 | 
			
		||||
@@ -6529,7 +6529,7 @@ inline void gcode_M104() {
 | 
			
		||||
        SERIAL_PROTOCOLPGM(" /");
 | 
			
		||||
        SERIAL_PROTOCOL_F(thermalManager.degTargetHotend(e), 1);
 | 
			
		||||
        #if ENABLED(SHOW_TEMP_ADC_VALUES)
 | 
			
		||||
          SERIAL_PROTOCOLPAIR(" (", thermalManager.current_temperature_raw[e] / OVERSAMPLENR);
 | 
			
		||||
          SERIAL_PROTOCOLPAIR(" (", thermalManager.rawHotendTemp(e) / OVERSAMPLENR);
 | 
			
		||||
          SERIAL_PROTOCOLCHAR(')');
 | 
			
		||||
        #endif
 | 
			
		||||
      }
 | 
			
		||||
@@ -6665,10 +6665,11 @@ inline void gcode_M109() {
 | 
			
		||||
 | 
			
		||||
  const bool no_wait_for_cooling = code_seen('S');
 | 
			
		||||
  if (no_wait_for_cooling || code_seen('R')) {
 | 
			
		||||
    thermalManager.setTargetHotend(code_value_temp_abs(), target_extruder);
 | 
			
		||||
    const int16_t temp = code_value_temp_abs();
 | 
			
		||||
    thermalManager.setTargetHotend(temp, target_extruder);
 | 
			
		||||
    #if ENABLED(DUAL_X_CARRIAGE)
 | 
			
		||||
      if (dual_x_carriage_mode == DXC_DUPLICATION_MODE && target_extruder == 0)
 | 
			
		||||
        thermalManager.setTargetHotend(code_value_temp_abs() == 0.0 ? 0.0 : code_value_temp_abs() + duplicate_extruder_temp_offset, 1);
 | 
			
		||||
        thermalManager.setTargetHotend(temp ? temp + duplicate_extruder_temp_offset : 0, 1);
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    #if ENABLED(PRINTJOB_TIMER_AUTOSTART)
 | 
			
		||||
@@ -7196,7 +7197,7 @@ inline void gcode_M92() {
 | 
			
		||||
  LOOP_XYZE(i) {
 | 
			
		||||
    if (code_seen(axis_codes[i])) {
 | 
			
		||||
      if (i == E_AXIS) {
 | 
			
		||||
        const float value = code_value_per_axis_unit(E_AXIS + TARGET_EXTRUDER);
 | 
			
		||||
        const float value = code_value_per_axis_unit((AxisEnum)(E_AXIS + TARGET_EXTRUDER));
 | 
			
		||||
        if (value < 20.0) {
 | 
			
		||||
          float factor = planner.axis_steps_per_mm[E_AXIS + TARGET_EXTRUDER] / value; // increase e constants if M92 E14 is given for netfab.
 | 
			
		||||
          planner.max_jerk[E_AXIS] *= factor;
 | 
			
		||||
@@ -7206,7 +7207,7 @@ inline void gcode_M92() {
 | 
			
		||||
        planner.axis_steps_per_mm[E_AXIS + TARGET_EXTRUDER] = value;
 | 
			
		||||
      }
 | 
			
		||||
      else {
 | 
			
		||||
        planner.axis_steps_per_mm[i] = code_value_per_axis_unit(i);
 | 
			
		||||
        planner.axis_steps_per_mm[i] = code_value_per_axis_unit((AxisEnum)i);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@@ -8100,11 +8101,11 @@ inline void gcode_M226() {
 | 
			
		||||
 */
 | 
			
		||||
inline void gcode_M303() {
 | 
			
		||||
  #if HAS_PID_HEATING
 | 
			
		||||
    int e = code_seen('E') ? code_value_int() : 0;
 | 
			
		||||
    int c = code_seen('C') ? code_value_int() : 5;
 | 
			
		||||
    bool u = code_seen('U') && code_value_bool();
 | 
			
		||||
    const int e = code_seen('E') ? code_value_int() : 0,
 | 
			
		||||
              c = code_seen('C') ? code_value_int() : 5;
 | 
			
		||||
    const bool u = code_seen('U') && code_value_bool();
 | 
			
		||||
 | 
			
		||||
    float temp = code_seen('S') ? code_value_temp_abs() : (e < 0 ? 70.0 : 150.0);
 | 
			
		||||
    int16_t temp = code_seen('S') ? code_value_temp_abs() : (e < 0 ? 70 : 150);
 | 
			
		||||
 | 
			
		||||
    if (WITHIN(e, 0, HOTENDS - 1))
 | 
			
		||||
      target_extruder = e;
 | 
			
		||||
@@ -8741,7 +8742,6 @@ inline void gcode_M503() {
 | 
			
		||||
 | 
			
		||||
    const millis_t nozzle_timeout = millis() + (millis_t)(FILAMENT_CHANGE_NOZZLE_TIMEOUT) * 1000UL;
 | 
			
		||||
    bool nozzle_timed_out = false;
 | 
			
		||||
    float temps[4];
 | 
			
		||||
 | 
			
		||||
    // Wait for filament insert by user and press button
 | 
			
		||||
    lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INSERT);
 | 
			
		||||
@@ -8752,6 +8752,7 @@ inline void gcode_M503() {
 | 
			
		||||
 | 
			
		||||
    idle();
 | 
			
		||||
 | 
			
		||||
    int16_t temps[HOTENDS];
 | 
			
		||||
    HOTEND_LOOP() temps[e] = thermalManager.target_temperature[e]; // Save nozzle temps
 | 
			
		||||
 | 
			
		||||
    KEEPALIVE_STATE(PAUSED_FOR_USER);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user