Bladeren bron

Merge pull request #10450 from marcio-ao/pr-2.0.x-advanced-g29-recovery-and-retry

[2.0.x] Advanced G29 probe fail recovery and retry
Scott Lahteine 7 jaren geleden
bovenliggende
commit
3cf7bac129
No account linked to committer's email address
50 gewijzigde bestanden met toevoegingen van 1235 en 5 verwijderingen
  1. 24
    0
      Marlin/Configuration_adv.h
  2. 24
    0
      Marlin/src/config/default/Configuration_adv.h
  3. 24
    0
      Marlin/src/config/examples/AlephObjects/TAZ4/Configuration_adv.h
  4. 24
    0
      Marlin/src/config/examples/Anet/A6/Configuration_adv.h
  5. 24
    0
      Marlin/src/config/examples/Anet/A8/Configuration_adv.h
  6. 24
    0
      Marlin/src/config/examples/Azteeg/X5GT/Configuration_adv.h
  7. 24
    0
      Marlin/src/config/examples/BIBO/TouchX/cyclops/Configuration_adv.h
  8. 24
    0
      Marlin/src/config/examples/BIBO/TouchX/default/Configuration_adv.h
  9. 24
    0
      Marlin/src/config/examples/BQ/Hephestos/Configuration_adv.h
  10. 24
    0
      Marlin/src/config/examples/BQ/Hephestos_2/Configuration_adv.h
  11. 24
    0
      Marlin/src/config/examples/BQ/WITBOX/Configuration_adv.h
  12. 24
    0
      Marlin/src/config/examples/Cartesio/Configuration_adv.h
  13. 24
    0
      Marlin/src/config/examples/Creality/CR-10/Configuration_adv.h
  14. 24
    0
      Marlin/src/config/examples/Creality/CR-10S/Configuration_adv.h
  15. 24
    0
      Marlin/src/config/examples/Creality/CR-10mini/Configuration_adv.h
  16. 24
    0
      Marlin/src/config/examples/Creality/CR-8/Configuration_adv.h
  17. 24
    0
      Marlin/src/config/examples/Creality/Ender-2/Configuration_adv.h
  18. 24
    0
      Marlin/src/config/examples/Creality/Ender-4/Configuration_adv.h
  19. 24
    0
      Marlin/src/config/examples/Felix/Configuration_adv.h
  20. 24
    0
      Marlin/src/config/examples/FolgerTech/i3-2020/Configuration_adv.h
  21. 24
    0
      Marlin/src/config/examples/Infitary/i3-M508/Configuration_adv.h
  22. 24
    0
      Marlin/src/config/examples/JGAurora/A5/Configuration_adv.h
  23. 24
    0
      Marlin/src/config/examples/MakerParts/Configuration_adv.h
  24. 24
    0
      Marlin/src/config/examples/Malyan/M150/Configuration_adv.h
  25. 24
    0
      Marlin/src/config/examples/Malyan/M200/Configuration_adv.h
  26. 24
    0
      Marlin/src/config/examples/Micromake/C1/enhanced/Configuration_adv.h
  27. 24
    0
      Marlin/src/config/examples/Mks/Sbase/Configuration_adv.h
  28. 24
    0
      Marlin/src/config/examples/RigidBot/Configuration_adv.h
  29. 24
    0
      Marlin/src/config/examples/SCARA/Configuration_adv.h
  30. 24
    0
      Marlin/src/config/examples/Sanguinololu/Configuration_adv.h
  31. 24
    0
      Marlin/src/config/examples/TheBorg/Configuration_adv.h
  32. 24
    0
      Marlin/src/config/examples/TinyBoy2/Configuration_adv.h
  33. 24
    0
      Marlin/src/config/examples/UltiMachine/Archim2/Configuration_adv.h
  34. 24
    0
      Marlin/src/config/examples/Velleman/K8200/Configuration_adv.h
  35. 24
    0
      Marlin/src/config/examples/Velleman/K8400/Configuration_adv.h
  36. 24
    0
      Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration_adv.h
  37. 24
    0
      Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
  38. 24
    0
      Marlin/src/config/examples/delta/FLSUN/kossel/Configuration_adv.h
  39. 24
    0
      Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
  40. 24
    0
      Marlin/src/config/examples/delta/generic/Configuration_adv.h
  41. 24
    0
      Marlin/src/config/examples/delta/kossel_mini/Configuration_adv.h
  42. 24
    0
      Marlin/src/config/examples/delta/kossel_pro/Configuration_adv.h
  43. 24
    0
      Marlin/src/config/examples/delta/kossel_xl/Configuration_adv.h
  44. 24
    0
      Marlin/src/config/examples/gCreate/gMax1.5+/Configuration_adv.h
  45. 24
    0
      Marlin/src/config/examples/makibox/Configuration_adv.h
  46. 24
    0
      Marlin/src/config/examples/tvrrug/Round2/Configuration_adv.h
  47. 24
    0
      Marlin/src/config/examples/wt150/Configuration_adv.h
  48. 91
    4
      Marlin/src/gcode/gcode.cpp
  49. 12
    1
      Marlin/src/gcode/gcode.h
  50. 4
    0
      Marlin/src/inc/Conditionals_post.h

+ 24
- 0
Marlin/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/default/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/AlephObjects/TAZ4/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Anet/A6/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Anet/A8/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Azteeg/X5GT/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/BIBO/TouchX/cyclops/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/BIBO/TouchX/default/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/BQ/Hephestos/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/BQ/Hephestos_2/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/BQ/WITBOX/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Cartesio/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Creality/CR-10/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Creality/CR-10S/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Creality/CR-10mini/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Creality/CR-8/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Creality/Ender-2/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Creality/Ender-4/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Felix/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/FolgerTech/i3-2020/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Infitary/i3-M508/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/JGAurora/A5/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/MakerParts/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Malyan/M150/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Malyan/M200/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Micromake/C1/enhanced/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Mks/Sbase/Configuration_adv.h Bestand weergeven

@@ -754,6 +754,30 @@
754 754
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
755 755
 #endif
756 756
 
757
+/**
758
+ * Repeatedly attempt G29 leveling until it succeeds.
759
+ * Stop after G29_MAX_RETRIES attempts.
760
+ */
761
+//#define G29_RETRY_AND_RECOVER
762
+#if ENABLED(G29_RETRY_AND_RECOVER)
763
+  #define G29_MAX_RETRIES 3
764
+  #define G29_HALT_ON_FAILURE
765
+  /**
766
+   * Specify the GCODE commands that will be executed when leveling succeeds,
767
+   * between attempts, and after the maximum number of retries have been tried.
768
+   */
769
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
770
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
771
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
772
+  /**
773
+   * Specify an action command to send to the host on a recovery attempt or failure.
774
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
775
+   * The host must be configured to handle the action command.
776
+   */
777
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
778
+  #define G29_ACTION_ON_FAILURE "probe_failed"
779
+#endif
780
+
757 781
 // @section extras
758 782
 
759 783
 //

+ 24
- 0
Marlin/src/config/examples/RigidBot/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/SCARA/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Sanguinololu/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/TheBorg/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/TinyBoy2/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/UltiMachine/Archim2/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Velleman/K8200/Configuration_adv.h Bestand weergeven

@@ -759,6 +759,30 @@
759 759
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
760 760
 #endif
761 761
 
762
+/**
763
+ * Repeatedly attempt G29 leveling until it succeeds.
764
+ * Stop after G29_MAX_RETRIES attempts.
765
+ */
766
+//#define G29_RETRY_AND_RECOVER
767
+#if ENABLED(G29_RETRY_AND_RECOVER)
768
+  #define G29_MAX_RETRIES 3
769
+  #define G29_HALT_ON_FAILURE
770
+  /**
771
+   * Specify the GCODE commands that will be executed when leveling succeeds,
772
+   * between attempts, and after the maximum number of retries have been tried.
773
+   */
774
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
775
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
776
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
777
+  /**
778
+   * Specify an action command to send to the host on a recovery attempt or failure.
779
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
780
+   * The host must be configured to handle the action command.
781
+   */
782
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
783
+  #define G29_ACTION_ON_FAILURE "probe_failed"
784
+#endif
785
+
762 786
 // @section extras
763 787
 
764 788
 //

+ 24
- 0
Marlin/src/config/examples/Velleman/K8400/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration_adv.h Bestand weergeven

@@ -748,6 +748,30 @@
748 748
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
749 749
 #endif
750 750
 
751
+/**
752
+ * Repeatedly attempt G29 leveling until it succeeds.
753
+ * Stop after G29_MAX_RETRIES attempts.
754
+ */
755
+//#define G29_RETRY_AND_RECOVER
756
+#if ENABLED(G29_RETRY_AND_RECOVER)
757
+  #define G29_MAX_RETRIES 3
758
+  #define G29_HALT_ON_FAILURE
759
+  /**
760
+   * Specify the GCODE commands that will be executed when leveling succeeds,
761
+   * between attempts, and after the maximum number of retries have been tried.
762
+   */
763
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
764
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
765
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
766
+  /**
767
+   * Specify an action command to send to the host on a recovery attempt or failure.
768
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
769
+   * The host must be configured to handle the action command.
770
+   */
771
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
772
+  #define G29_ACTION_ON_FAILURE "probe_failed"
773
+#endif
774
+
751 775
 // @section extras
752 776
 
753 777
 //

+ 24
- 0
Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h Bestand weergeven

@@ -748,6 +748,30 @@
748 748
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
749 749
 #endif
750 750
 
751
+/**
752
+ * Repeatedly attempt G29 leveling until it succeeds.
753
+ * Stop after G29_MAX_RETRIES attempts.
754
+ */
755
+//#define G29_RETRY_AND_RECOVER
756
+#if ENABLED(G29_RETRY_AND_RECOVER)
757
+  #define G29_MAX_RETRIES 3
758
+  #define G29_HALT_ON_FAILURE
759
+  /**
760
+   * Specify the GCODE commands that will be executed when leveling succeeds,
761
+   * between attempts, and after the maximum number of retries have been tried.
762
+   */
763
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
764
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
765
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
766
+  /**
767
+   * Specify an action command to send to the host on a recovery attempt or failure.
768
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
769
+   * The host must be configured to handle the action command.
770
+   */
771
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
772
+  #define G29_ACTION_ON_FAILURE "probe_failed"
773
+#endif
774
+
751 775
 // @section extras
752 776
 
753 777
 //

+ 24
- 0
Marlin/src/config/examples/delta/FLSUN/kossel/Configuration_adv.h Bestand weergeven

@@ -748,6 +748,30 @@
748 748
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
749 749
 #endif
750 750
 
751
+/**
752
+ * Repeatedly attempt G29 leveling until it succeeds.
753
+ * Stop after G29_MAX_RETRIES attempts.
754
+ */
755
+//#define G29_RETRY_AND_RECOVER
756
+#if ENABLED(G29_RETRY_AND_RECOVER)
757
+  #define G29_MAX_RETRIES 3
758
+  #define G29_HALT_ON_FAILURE
759
+  /**
760
+   * Specify the GCODE commands that will be executed when leveling succeeds,
761
+   * between attempts, and after the maximum number of retries have been tried.
762
+   */
763
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
764
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
765
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
766
+  /**
767
+   * Specify an action command to send to the host on a recovery attempt or failure.
768
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
769
+   * The host must be configured to handle the action command.
770
+   */
771
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
772
+  #define G29_ACTION_ON_FAILURE "probe_failed"
773
+#endif
774
+
751 775
 // @section extras
752 776
 
753 777
 //

+ 24
- 0
Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h Bestand weergeven

@@ -748,6 +748,30 @@
748 748
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
749 749
 #endif
750 750
 
751
+/**
752
+ * Repeatedly attempt G29 leveling until it succeeds.
753
+ * Stop after G29_MAX_RETRIES attempts.
754
+ */
755
+//#define G29_RETRY_AND_RECOVER
756
+#if ENABLED(G29_RETRY_AND_RECOVER)
757
+  #define G29_MAX_RETRIES 3
758
+  #define G29_HALT_ON_FAILURE
759
+  /**
760
+   * Specify the GCODE commands that will be executed when leveling succeeds,
761
+   * between attempts, and after the maximum number of retries have been tried.
762
+   */
763
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
764
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
765
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
766
+  /**
767
+   * Specify an action command to send to the host on a recovery attempt or failure.
768
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
769
+   * The host must be configured to handle the action command.
770
+   */
771
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
772
+  #define G29_ACTION_ON_FAILURE "probe_failed"
773
+#endif
774
+
751 775
 // @section extras
752 776
 
753 777
 //

+ 24
- 0
Marlin/src/config/examples/delta/generic/Configuration_adv.h Bestand weergeven

@@ -748,6 +748,30 @@
748 748
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
749 749
 #endif
750 750
 
751
+/**
752
+ * Repeatedly attempt G29 leveling until it succeeds.
753
+ * Stop after G29_MAX_RETRIES attempts.
754
+ */
755
+//#define G29_RETRY_AND_RECOVER
756
+#if ENABLED(G29_RETRY_AND_RECOVER)
757
+  #define G29_MAX_RETRIES 3
758
+  #define G29_HALT_ON_FAILURE
759
+  /**
760
+   * Specify the GCODE commands that will be executed when leveling succeeds,
761
+   * between attempts, and after the maximum number of retries have been tried.
762
+   */
763
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
764
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
765
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
766
+  /**
767
+   * Specify an action command to send to the host on a recovery attempt or failure.
768
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
769
+   * The host must be configured to handle the action command.
770
+   */
771
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
772
+  #define G29_ACTION_ON_FAILURE "probe_failed"
773
+#endif
774
+
751 775
 // @section extras
752 776
 
753 777
 //

+ 24
- 0
Marlin/src/config/examples/delta/kossel_mini/Configuration_adv.h Bestand weergeven

@@ -748,6 +748,30 @@
748 748
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
749 749
 #endif
750 750
 
751
+/**
752
+ * Repeatedly attempt G29 leveling until it succeeds.
753
+ * Stop after G29_MAX_RETRIES attempts.
754
+ */
755
+//#define G29_RETRY_AND_RECOVER
756
+#if ENABLED(G29_RETRY_AND_RECOVER)
757
+  #define G29_MAX_RETRIES 3
758
+  #define G29_HALT_ON_FAILURE
759
+  /**
760
+   * Specify the GCODE commands that will be executed when leveling succeeds,
761
+   * between attempts, and after the maximum number of retries have been tried.
762
+   */
763
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
764
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
765
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
766
+  /**
767
+   * Specify an action command to send to the host on a recovery attempt or failure.
768
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
769
+   * The host must be configured to handle the action command.
770
+   */
771
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
772
+  #define G29_ACTION_ON_FAILURE "probe_failed"
773
+#endif
774
+
751 775
 // @section extras
752 776
 
753 777
 //

+ 24
- 0
Marlin/src/config/examples/delta/kossel_pro/Configuration_adv.h Bestand weergeven

@@ -753,6 +753,30 @@
753 753
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
754 754
 #endif
755 755
 
756
+/**
757
+ * Repeatedly attempt G29 leveling until it succeeds.
758
+ * Stop after G29_MAX_RETRIES attempts.
759
+ */
760
+//#define G29_RETRY_AND_RECOVER
761
+#if ENABLED(G29_RETRY_AND_RECOVER)
762
+  #define G29_MAX_RETRIES 3
763
+  #define G29_HALT_ON_FAILURE
764
+  /**
765
+   * Specify the GCODE commands that will be executed when leveling succeeds,
766
+   * between attempts, and after the maximum number of retries have been tried.
767
+   */
768
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
769
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
770
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
771
+  /**
772
+   * Specify an action command to send to the host on a recovery attempt or failure.
773
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
774
+   * The host must be configured to handle the action command.
775
+   */
776
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
777
+  #define G29_ACTION_ON_FAILURE "probe_failed"
778
+#endif
779
+
756 780
 // @section extras
757 781
 
758 782
 //

+ 24
- 0
Marlin/src/config/examples/delta/kossel_xl/Configuration_adv.h Bestand weergeven

@@ -748,6 +748,30 @@
748 748
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
749 749
 #endif
750 750
 
751
+/**
752
+ * Repeatedly attempt G29 leveling until it succeeds.
753
+ * Stop after G29_MAX_RETRIES attempts.
754
+ */
755
+//#define G29_RETRY_AND_RECOVER
756
+#if ENABLED(G29_RETRY_AND_RECOVER)
757
+  #define G29_MAX_RETRIES 3
758
+  #define G29_HALT_ON_FAILURE
759
+  /**
760
+   * Specify the GCODE commands that will be executed when leveling succeeds,
761
+   * between attempts, and after the maximum number of retries have been tried.
762
+   */
763
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
764
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
765
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
766
+  /**
767
+   * Specify an action command to send to the host on a recovery attempt or failure.
768
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
769
+   * The host must be configured to handle the action command.
770
+   */
771
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
772
+  #define G29_ACTION_ON_FAILURE "probe_failed"
773
+#endif
774
+
751 775
 // @section extras
752 776
 
753 777
 //

+ 24
- 0
Marlin/src/config/examples/gCreate/gMax1.5+/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/makibox/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/tvrrug/Round2/Configuration_adv.h Bestand weergeven

@@ -746,6 +746,30 @@
746 746
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
747 747
 #endif
748 748
 
749
+/**
750
+ * Repeatedly attempt G29 leveling until it succeeds.
751
+ * Stop after G29_MAX_RETRIES attempts.
752
+ */
753
+//#define G29_RETRY_AND_RECOVER
754
+#if ENABLED(G29_RETRY_AND_RECOVER)
755
+  #define G29_MAX_RETRIES 3
756
+  #define G29_HALT_ON_FAILURE
757
+  /**
758
+   * Specify the GCODE commands that will be executed when leveling succeeds,
759
+   * between attempts, and after the maximum number of retries have been tried.
760
+   */
761
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
762
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
763
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
764
+  /**
765
+   * Specify an action command to send to the host on a recovery attempt or failure.
766
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
767
+   * The host must be configured to handle the action command.
768
+   */
769
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
770
+  #define G29_ACTION_ON_FAILURE "probe_failed"
771
+#endif
772
+
749 773
 // @section extras
750 774
 
751 775
 //

+ 24
- 0
Marlin/src/config/examples/wt150/Configuration_adv.h Bestand weergeven

@@ -747,6 +747,30 @@
747 747
   //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
748 748
 #endif
749 749
 
750
+/**
751
+ * Repeatedly attempt G29 leveling until it succeeds.
752
+ * Stop after G29_MAX_RETRIES attempts.
753
+ */
754
+//#define G29_RETRY_AND_RECOVER
755
+#if ENABLED(G29_RETRY_AND_RECOVER)
756
+  #define G29_MAX_RETRIES 3
757
+  #define G29_HALT_ON_FAILURE
758
+  /**
759
+   * Specify the GCODE commands that will be executed when leveling succeeds,
760
+   * between attempts, and after the maximum number of retries have been tried.
761
+   */
762
+  #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
763
+  #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
764
+  #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
765
+  /**
766
+   * Specify an action command to send to the host on a recovery attempt or failure.
767
+   * Will be sent in the form '//action:ACTION_ON_G29_FAILURE', e.g. '//action:probe_failed'.
768
+   * The host must be configured to handle the action command.
769
+   */
770
+  #define G29_ACTION_ON_RECOVER "probe_rewipe"
771
+  #define G29_ACTION_ON_FAILURE "probe_failed"
772
+#endif
773
+
750 774
 // @section extras
751 775
 
752 776
 //

+ 91
- 4
Marlin/src/gcode/gcode.cpp Bestand weergeven

@@ -61,6 +61,11 @@ bool GcodeSuite::axis_relative_modes[] = AXIS_RELATIVE_MODES;
61 61
   float GcodeSuite::coordinate_system[MAX_COORDINATE_SYSTEMS][XYZ];
62 62
 #endif
63 63
 
64
+#if HAS_LEVELING && ENABLED(G29_RETRY_AND_RECOVER)
65
+  #include "../feature/bedlevel/bedlevel.h"
66
+  #include "../module/planner.h"
67
+#endif
68
+
64 69
 /**
65 70
  * Set target_extruder from the T parameter or the active_extruder
66 71
  *
@@ -125,6 +130,44 @@ void GcodeSuite::dwell(millis_t time) {
125 130
   while (PENDING(millis(), time)) idle();
126 131
 }
127 132
 
133
+/**
134
+ * When G29_RETRY_AND_RECOVER is enabled, call G29() in
135
+ * a loop with recovery and retry handling.
136
+ */
137
+#if HAS_LEVELING && ENABLED(G29_RETRY_AND_RECOVER)
138
+
139
+  void GcodeSuite::G29_with_retry() {
140
+    set_bed_leveling_enabled(false);
141
+    for (uint8_t i = G29_MAX_RETRIES; i--;) {
142
+      G29();
143
+      if (planner.leveling_active) break;
144
+      #ifdef G29_ACTION_ON_RECOVER
145
+        SERIAL_ECHOLNPGM("//action:" G29_ACTION_ON_RECOVER);
146
+      #endif
147
+      #ifdef G29_RECOVERY_COMMANDS
148
+        process_subcommands_now_P(PSTR(G29_RECOVER_COMMANDS));
149
+      #endif
150
+    }
151
+    if (planner.leveling_active) {
152
+      #ifdef G29_SUCCESS_COMMANDS
153
+        process_subcommands_now_P(PSTR(G29_SUCCESS_COMMANDS));
154
+      #endif
155
+    }
156
+    else {
157
+      #ifdef G29_FAILURE_COMMANDS
158
+        process_subcommands_now_P(PSTR(G29_FAILURE_COMMANDS));
159
+      #endif
160
+      #ifdef G29_ACTION_ON_FAILURE
161
+        SERIAL_ECHOLNPGM("//action:" G29_ACTION_ON_FAILURE);
162
+      #endif
163
+      #if ENABLED(G29_HALT_ON_FAILURE)
164
+        kill(PSTR(MSG_ERR_PROBING_FAILED));
165
+      #endif
166
+    }
167
+  }
168
+
169
+#endif // HAS_LEVELING && G29_RETRY_AND_RECOVER
170
+
128 171
 //
129 172
 // Placeholders for non-migrated codes
130 173
 //
@@ -135,7 +178,11 @@ void GcodeSuite::dwell(millis_t time) {
135 178
 /**
136 179
  * Process the parsed command and dispatch it to its handler
137 180
  */
138
-void GcodeSuite::process_parsed_command() {
181
+void GcodeSuite::process_parsed_command(
182
+  #if ENABLED(USE_EXECUTE_COMMANDS_IMMEDIATE)
183
+    const bool no_ok
184
+  #endif
185
+) {
139 186
   KEEPALIVE_STATE(IN_HANDLER);
140 187
 
141 188
   // Handle a known G, M, or T
@@ -190,8 +237,14 @@ void GcodeSuite::process_parsed_command() {
190 237
       case 28: G28(false); break;                                 // G28: Home all axes, one at a time
191 238
 
192 239
       #if HAS_LEVELING
193
-        case 29: G29(); break;                                    // G29: Bed leveling calibration
194
-      #endif
240
+        case 29:                                                  // G29: Bed leveling calibration
241
+          #if ENABLED(G29_RETRY_AND_RECOVER)
242
+            G29_with_retry();
243
+          #else
244
+            G29();
245
+          #endif
246
+          break;
247
+      #endif // HAS_LEVELING
195 248
 
196 249
       #if HAS_BED_PROBE
197 250
         case 30: G30(); break;                                    // G30: Single Z probe
@@ -612,7 +665,10 @@ void GcodeSuite::process_parsed_command() {
612 665
 
613 666
   KEEPALIVE_STATE(NOT_BUSY);
614 667
 
615
-  ok_to_send();
668
+  #if ENABLED(USE_EXECUTE_COMMANDS_IMMEDIATE)
669
+    if (!no_ok)
670
+  #endif
671
+      ok_to_send();
616 672
 }
617 673
 
618 674
 /**
@@ -638,6 +694,37 @@ void GcodeSuite::process_next_command() {
638 694
   process_parsed_command();
639 695
 }
640 696
 
697
+#if ENABLED(USE_EXECUTE_COMMANDS_IMMEDIATE)
698
+  /**
699
+   * Run a series of commands, bypassing the command queue to allow
700
+   * G-code "macros" to be called from within other G-code handlers.
701
+   */
702
+  void GcodeSuite::process_subcommands_now_P(const char *pgcode) {
703
+    // Save the parser state
704
+    char saved_cmd[strlen(parser.command_ptr) + 1];
705
+    strcpy(saved_cmd, parser.command_ptr);
706
+
707
+    // Process individual commands in string
708
+    while (pgm_read_byte_near(pgcode)) {
709
+      // Break up string at '\n' delimiters
710
+      const char *delim = strchr_P(pgcode, '\n');
711
+      size_t len = delim ? delim - pgcode : strlen_P(pgcode);
712
+      char cmd[len + 1];
713
+      strncpy_P(cmd, pgcode, len);
714
+      cmd[len] = '\0';
715
+      pgcode += len;
716
+      if (delim) pgcode++;
717
+
718
+      // Parse the next command in the string
719
+      parser.parse(cmd);
720
+      process_parsed_command(true);
721
+    }
722
+
723
+    // Restore the parser state
724
+    parser.parse(saved_cmd);
725
+  }
726
+#endif
727
+
641 728
 #if ENABLED(HOST_KEEPALIVE_FEATURE)
642 729
 
643 730
   /**

+ 12
- 1
Marlin/src/gcode/gcode.h Bestand weergeven

@@ -285,9 +285,17 @@ public:
285 285
 
286 286
   static bool get_target_extruder_from_command();
287 287
   static void get_destination_from_command();
288
-  static void process_parsed_command();
288
+  static void process_parsed_command(
289
+    #if ENABLED(USE_EXECUTE_COMMANDS_IMMEDIATE)
290
+      const bool no_ok = false
291
+    #endif
292
+  );
289 293
   static void process_next_command();
290 294
 
295
+  #if ENABLED(USE_EXECUTE_COMMANDS_IMMEDIATE)
296
+    static void process_subcommands_now_P(const char *pgcode);
297
+  #endif
298
+
291 299
   FORCE_INLINE static void home_all_axes() { G28(true); }
292 300
 
293 301
   /**
@@ -380,6 +388,9 @@ private:
380 388
 
381 389
   #if HAS_LEVELING
382 390
     static void G29();
391
+    #if ENABLED(G29_RETRY_AND_RECOVER)
392
+      static void G29_with_retry();
393
+    #endif
383 394
   #endif
384 395
 
385 396
   #if HAS_BED_PROBE

+ 4
- 0
Marlin/src/inc/Conditionals_post.h Bestand weergeven

@@ -1448,4 +1448,8 @@
1448 1448
 // If platform requires early initialization of watchdog to properly boot
1449 1449
 #define EARLY_WATCHDOG (ENABLED(USE_WATCHDOG) && defined(ARDUINO_ARCH_SAM))
1450 1450
 
1451
+#if ENABLED(G29_RETRY_AND_RECOVER)
1452
+  #define USE_EXECUTE_COMMANDS_IMMEDIATE
1453
+#endif
1454
+
1451 1455
 #endif // CONDITIONALS_POST_H

Laden…
Annuleren
Opslaan