####################################################################
# Helper macros
# - MOVE_SPEED
# - ...
####################################################################

[gcode_macro MOVE_SPEED]
description: move along certain patterns with selected speed
gcode:
  {% set F=params.F|default(3000)|int %}
  {% set N=params.N|default(1)|int %}
  {% if printer.idle_timeout.state != "Printing" %}
    {% if "xyz" in printer.toolhead.homed_axes %}
      M118 moving N={N} with F={F}
      {% set X0=275 %}
      {% set X1=25 %}
      {% set Y0=275 %}
      {% set Y1=25 %}
      ; start
      G0 X{X0} Y{Y0} F3000
      G0 F{F}
      {% for i in range(N) %}
        M118 move {(i+1)}/{N}
        ; move 1
        G0 X{X1} Y{Y0}
        G0 X{X0} Y{Y1}
        ; move 2
        G0 X{X0} Y{Y0}
        G0 X{X1} Y{Y1}
        ; move 3
        G0 X{X0} Y{Y1}
        G0 X{X1} Y{Y0}
        ; move 4
        G0 X{X1} Y{Y1}
        G0 X{X0} Y{Y0}
      {% endfor %}
      M118 done
    {% else %}
      M118 Printer not homed
    {% endif %}
  {% else %}
    M118 Already printing
  {% endif %}

[gcode_macro fes]
description: query filament sensor encoder_sensor
gcode:
  QUERY_FILAMENT_SENSOR SENSOR=encoder_sensor

[gcode_macro fts]
description: query filament sensor toolhead_sensor
gcode:
  QUERY_FILAMENT_SENSOR SENSOR=toolhead_sensor

[gcode_macro zc]
gcode:
  {% set z_run = params.CUR|default(0.4)|float %}
  {% set z_hold = z_run %}
  {action_respond_info("zc: setting zcurrent to %.2f" % z_run)}
  SET_TMC_CURRENT STEPPER=stepper_z  CURRENT={z_run} HOLDCURRENT={z_hold}
  SET_TMC_CURRENT STEPPER=stepper_z1 CURRENT={z_run} HOLDCURRENT={z_hold}
  SET_TMC_CURRENT STEPPER=stepper_z2 CURRENT={z_run} HOLDCURRENT={z_hold}
  SET_TMC_CURRENT STEPPER=stepper_z3 CURRENT={z_run} HOLDCURRENT={z_hold}


[gcode_macro zm]
gcode:
  {% set F = params.SPEED|default(300)|int %}
  {action_respond_info("moving with F=%d" % F)}
  G0 Z30 F{F}
  G0 Z10 F{F}