grblHAL core  20260206
config.h
Go to the documentation of this file.
1 /*
2  config.h - compile time configuration and default setting values
3 
4  Part of grblHAL
5 
6  Copyright (c) 2020-2025 Terje Io
7 
8  grblHAL is free software: you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation, either version 3 of the License, or
11  (at your option) any later version.
12 
13  grblHAL is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with grblHAL. If not, see <http://www.gnu.org/licenses/>.
20 */
21 
32 #ifndef _GRBL_CONFIG_H_
33 #define _GRBL_CONFIG_H_
34 
35 // Compile time only default configuration
36 
41 #ifndef N_AXIS
42 #define N_AXIS 3 // Number of axes
43 #endif
44 
50 #if (!defined AXIS_REMAP_ABC2UVW && (N_AXIS > 3 && N_AXIS < 7)) || defined __DOXYGEN__
51 #define AXIS_REMAP_ABC2UVW Off
52 #endif
53 
57 #if !defined N_SPINDLE || defined __DOXYGEN__
58 #define N_SPINDLE 1
59 #endif
60 
64 #if !defined N_SYS_SPINDLE || defined __DOXYGEN__
65 #define N_SYS_SPINDLE 1
66 #endif
67 
71 #if !defined PLANNER_ADD_MOTION_MODE || defined __DOXYGEN__
72 #define PLANNER_ADD_MOTION_MODE Off // Default disabled. Set to \ref On or 1 to enable.
73 #endif
74 
78 #if !defined BUILD_INFO || defined __DOXYGEN__
79 #define BUILD_INFO ""
80 #endif
81 
96 #if !defined COMPATIBILITY_LEVEL || defined __DOXYGEN__
97 #define COMPATIBILITY_LEVEL 0
98 #endif
99 
108 #if !defined ENABLE_SPINDLE_LINEARIZATION || defined __DOXYGEN__
109 #define ENABLE_SPINDLE_LINEARIZATION 0 // Set to 1 to enable spindle RPM linearization. Requires compatible driver if enabled.
110 #endif
111 
115 #if !defined SPINDLE_NPWM_PIECES || defined __DOXYGEN__
116 #define SPINDLE_NPWM_PIECES 4 // Number of pieces for spindle RPM linearization, max 4.
117 #endif
118 
119 #include "nuts_bolts.h"
120 
121 //#define KINEMATICS_API // Uncomment to add HAL entry points for custom kinematics
122 
127 #if !defined MASLOW_ROUTER || defined __DOXYGEN__
128 // Enable Maslow router kinematics.
129 // Experimental - testing required and homing needs to be worked out.
130 #define MASLOW_ROUTER Off
131 #endif
132 
137 #if !defined WALL_PLOTTER || defined __DOXYGEN__
138 #define WALL_PLOTTER Off
139 #endif
140 
145 #if !defined DELTA_ROBOT || defined __DOXYGEN__
146 #define DELTA_ROBOT Off
147 #endif
148 
149 // Reduce minimum feedrate for delta robots
150 #if DELTA_ROBOT && !defined MINIMUM_FEED_RATE
151 #define MINIMUM_FEED_RATE 0.1f // (radians/min)
152 #endif
153 
158 #if !defined POLAR_ROBOT || defined __DOXYGEN__
159 #define POLAR_ROBOT Off
160 #endif
161 
162 
172 #if !defined COREXY || defined __DOXYGEN__
173 #define COREXY Off
174 #endif
175 
183 #if !defined CHECK_MODE_DELAY || defined __DOXYGEN__
184 #define CHECK_MODE_DELAY 0 // ms
185 #endif
186 
192 #if !defined DEBOUNCE_DELAY || defined __DOXYGEN__
193 #define DEBOUNCE_DELAY 40 // ms
194 #endif
195 
196 #define MAX_TOOL_NUMBER 2147483647 // Limited by max signed 32-bit value - 1
197 
198 // ---------------------------------------------------------------------------------------
199 // ADVANCED CONFIGURATION OPTIONS:
200 
201 // EXPERIMENTAL OPTIONS
202 
203 #define ENABLE_PATH_BLENDING Off // Do NOT enable unless working on adding this feature!
204 
205 #if !defined ENABLE_ACCELERATION_PROFILES || defined __DOXYGEN__
206 #define ENABLE_ACCELERATION_PROFILES Off // Enable to allow G-Code changeable acceleration profiles.
207 #endif
208 
209 #if !defined ENABLE_JERK_ACCELERATION || defined __DOXYGEN__
210 #define ENABLE_JERK_ACCELERATION Off // Enable to use 3rd order acceleration calculations. May need more processing power, a FPU will help.
211 #endif
212 
213 // -
214 
215 // Enables code for debugging purposes. Not for general use and always in constant flux.
216 //#define DEBUG // Uncomment to enable. Default disabled.
217 //#define DEBUGOUT 0 // Uncomment to claim serial port with given instance number and add HAL entry point for debug output.
218 
231 #if !defined REPORT_OVERRIDE_REFRESH_BUSY_COUNT || defined __DOXYGEN__
232 #define REPORT_OVERRIDE_REFRESH_BUSY_COUNT 20 // (1-255)
233 #endif
234 #if !defined REPORT_OVERRIDE_REFRESH_IDLE_COUNT || defined __DOXYGEN__
235 #define REPORT_OVERRIDE_REFRESH_IDLE_COUNT 10 // (1-255) Must be less than or equal to the busy count
236 #endif
237 #if !defined REPORT_WCO_REFRESH_BUSY_COUNT || defined __DOXYGEN__
238 #define REPORT_WCO_REFRESH_BUSY_COUNT 30 // (2-255)
239 #endif
240 #if !defined REPORT_WCO_REFRESH_IDLE_COUNT || defined __DOXYGEN__
241 #define REPORT_WCO_REFRESH_IDLE_COUNT 10 // (2-255) Must be less than or equal to the busy count
242 #endif
244 
255 #if !defined ACCELERATION_TICKS_PER_SECOND || defined __DOXYGEN__
256 #define ACCELERATION_TICKS_PER_SECOND 100
257 #endif
258 
259 // Sets the maximum step rate allowed to be written as a grblHAL setting. This option enables an error
260 // check in the settings module to prevent settings values that will exceed this limitation. The maximum
261 // step rate is strictly limited by the CPU speed and will change if something other than an AVR running
262 // at 16MHz is used.
263 // NOTE: For now disabled, will enable if flash space permits.
264 //#define MAX_STEP_RATE_HZ 30000 // Hz
265 
276 #if !defined REPORT_ECHO_LINE_RECEIVED || defined __DOXYGEN__
277 #define REPORT_ECHO_LINE_RECEIVED Off // Default disabled. Set to \ref On or 1 to enable.
278 #endif
279 
286 #if !defined TOOL_LENGTH_OFFSET_AXIS || defined __DOXYGEN__
287 #define TOOL_LENGTH_OFFSET_AXIS -1 // Default is all axes.
288 #endif
289 
299 #if !defined MINIMUM_JUNCTION_SPEED || defined __DOXYGEN__
300 #define MINIMUM_JUNCTION_SPEED 0.0f // (mm/min)
301 #endif
302 
310 #if !defined MINIMUM_FEED_RATE || defined __DOXYGEN__
311 #define MINIMUM_FEED_RATE 1.0f // (mm/min)
312 #endif
313 
321 #if !defined N_ARC_CORRECTION || defined __DOXYGEN__
322 #define N_ARC_CORRECTION 12 // Integer (1-255)
323 #endif
324 
336 #if !defined ARC_ANGULAR_TRAVEL_EPSILON || defined __DOXYGEN__
337 #define ARC_ANGULAR_TRAVEL_EPSILON 5E-7f // Float (radians)
338 #endif
339 
344 #if !defined BEZIER_MIN_STEP || defined __DOXYGEN__
345 #define BEZIER_MIN_STEP 0.002f
346 #endif
347 #if !defined BEZIER_MAX_STEP || defined __DOXYGEN__
348 #define BEZIER_MAX_STEP 0.1f
349 #endif
350 #if !defined BEZIER_SIGMA || defined __DOXYGEN__
351 #define BEZIER_SIGMA 0.1f
352 #endif
354 
355 
363 #if !defined DWELL_TIME_STEP || defined __DOXYGEN__
364 #define DWELL_TIME_STEP 50 // Integer (1-255) (milliseconds)
365 #endif
366 
376 #if !defined SEGMENT_BUFFER_SIZE || defined __DOXYGEN__
377 #define SEGMENT_BUFFER_SIZE 10 // Uncomment to override default in stepper.h.
378 #endif
379 
385 #if !defined SET_CHECK_MODE_PROBE_TO_START || defined __DOXYGEN__
386 #define SET_CHECK_MODE_PROBE_TO_START Off // Default disabled. Set to \ref On or 1 to enable.
387 #endif
388 
400 #if !defined HARD_LIMIT_FORCE_STATE_CHECK || defined __DOXYGEN__
401 #define HARD_LIMIT_FORCE_STATE_CHECK Off // Default disabled. Set to \ref On or 1 to enable.
402 #endif
403 
415 #if !defined HOMING_AXIS_SEARCH_SCALAR || defined __DOXYGEN__
416 #define HOMING_AXIS_SEARCH_SCALAR 1.5f // Must be > 1 to ensure limit switch will be engaged.
417 #endif
418 #if !defined HOMING_AXIS_LOCATE_SCALAR || defined __DOXYGEN__
419 #define HOMING_AXIS_LOCATE_SCALAR 10.0f// Must be > 1 to ensure limit switch is cleared.
420 #endif
422 
430 #if !defined ENABLE_RESTORE_NVS_WIPE_ALL || defined __DOXYGEN__
431 #define ENABLE_RESTORE_NVS_WIPE_ALL On
432 #endif
433 #if !defined ENABLE_RESTORE_NVS_DEFAULT_SETTINGS || defined __DOXYGEN__
434 #define ENABLE_RESTORE_NVS_DEFAULT_SETTINGS On
435 #endif
436 #if !defined ENABLE_RESTORE_NVS_CLEAR_PARAMETERS || defined __DOXYGEN__
437 #define ENABLE_RESTORE_NVS_CLEAR_PARAMETERS On
438 #endif
439 #if !defined ENABLE_RESTORE_NVS_DRIVER_PARAMETERS || defined __DOXYGEN__
440 #define ENABLE_RESTORE_NVS_DRIVER_PARAMETERS On
441 #endif
443 
454 #if !defined SETTINGS_RESTORE_DEFAULTS || defined __DOXYGEN__
455 #define SETTINGS_RESTORE_DEFAULTS On
456 #endif
457 #if !defined SETTINGS_RESTORE_PARAMETERS || defined __DOXYGEN__
458 #define SETTINGS_RESTORE_PARAMETERS On
459 #endif
460 #if !defined SETTINGS_RESTORE_STARTUP_LINES || defined __DOXYGEN__
461 #define SETTINGS_RESTORE_STARTUP_LINES On
462 #endif
463 #if !defined SETTINGS_RESTORE_BUILD_INFO || defined __DOXYGEN__
464 #define SETTINGS_RESTORE_BUILD_INFO On
465 #endif
466 #if !defined SETTINGS_RESTORE_DRIVER_PARAMETERS || defined __DOXYGEN__
467 #define SETTINGS_RESTORE_DRIVER_PARAMETERS On
468 #endif
477 #if !defined DISABLE_BUILD_INFO_WRITE_COMMAND || defined __DOXYGEN__
478 #define DISABLE_BUILD_INFO_WRITE_COMMAND Off
479 #endif
481 
495 #if !defined SLEEP_DURATION || defined __DOXYGEN__
496 #define SLEEP_DURATION 5.0f // Number of minutes before sleep mode is entered.
497 #endif
498 
504 #if !defined NVSDATA_BUFFER_ENABLE || defined __DOXYGEN__
505 #define NVSDATA_BUFFER_ENABLE On // Default on, set to \ref off or 0 to disable.
506 #endif
507 
517 #if !defined TOOLSETTER_RADIUS || defined __DOXYGEN__
518 #define TOOLSETTER_RADIUS 5.0f
519 #endif
520 
521 #if !defined ENABLE_BACKLASH_COMPENSATION || defined __DOXYGEN__
522 #define ENABLE_BACKLASH_COMPENSATION Off
523 #endif
524 
525 #if COMPATIBILITY_LEVEL == 0 || defined __DOXYGEN__
530 #if !defined N_TOOLS || defined __DOXYGEN__
531 #define N_TOOLS 0
532 #endif
533 #endif
534 
541 #if !defined SPINDLE_SYNC_ENABLE || defined __DOXYGEN__
542 #define SPINDLE_SYNC_ENABLE Off
543 #endif
544 
551 #if !defined NGC_EXPRESSIONS_ENABLE || defined __DOXYGEN__
552 #define NGC_EXPRESSIONS_ENABLE On
553 #endif
554 
559 #if !defined NGC_PARAMETERS_ENABLE || defined __DOXYGEN__
560 #define NGC_PARAMETERS_ENABLE On
561 #endif
562 
567 #if (NGC_EXPRESSIONS_ENABLE && !defined NGC_N_ASSIGN_PARAMETERS_PER_BLOCK) || defined __DOXYGEN__
568 #define NGC_N_ASSIGN_PARAMETERS_PER_BLOCK 10
569 #endif
570 
575 #if !defined LATHE_UVW_OPTION || defined __DOXYGEN__
576 #define LATHE_UVW_OPTION Off
577 #endif
578 
579 // Max number of entries in log for PID data reporting, to be used for tuning
580 //#define PID_LOG 1000 // Default disabled. Uncomment to enable.
581 
582 // End compile time only default configuration
583 
584 // ---------------------------------------------------------------------------------------
585 // SETTINGS DEFAULT VALUE OVERRIDES:
586 
587 // General settings (Group_General)
588 
598 
603 #if !defined DEFAULT_REPORT_MACHINE_POSITION || defined __DOXYGEN__
604 #define DEFAULT_REPORT_MACHINE_POSITION On // Default on. Set to \ref Off or 0 to disable.
605 #endif
606 
612 #if !defined DEFAULT_REPORT_BUFFER_STATE || defined __DOXYGEN__
613 #define DEFAULT_REPORT_BUFFER_STATE On // Default on. Set to \ref Off or 0 to disable.
614 #endif
615 
623 #if !defined DEFAULT_REPORT_LINE_NUMBERS || defined __DOXYGEN__
624 #define DEFAULT_REPORT_LINE_NUMBERS On // Default on. Set to \ref Off or 0 to disable.
625 #endif
626 
633 #if !defined DEFAULT_REPORT_CURRENT_FEED_SPEED || defined __DOXYGEN__
634 #define DEFAULT_REPORT_CURRENT_FEED_SPEED On // Default on. Set to \ref Off or 0 to disable.
635 #endif
636 
643 #if !defined DEFAULT_REPORT_PIN_STATE || defined __DOXYGEN__
644 #define DEFAULT_REPORT_PIN_STATE On // Default on. Set to \ref Off or 0 to disable.
645 #endif
646 
653 #if !defined DEFAULT_REPORT_WORK_COORD_OFFSET || defined __DOXYGEN__
654 #define DEFAULT_REPORT_WORK_COORD_OFFSET On // Default on. Set to \ref Off or 0 to disable.
655 #endif
656 
663 #if !defined DEFAULT_REPORT_OVERRIDES || defined __DOXYGEN__
664 #define DEFAULT_REPORT_OVERRIDES On // Default on. Set to \ref Off or 0 to disable.
665 #endif
666 
674 #if !defined DEFAULT_REPORT_PROBE_COORDINATES || defined __DOXYGEN__
675 #define DEFAULT_REPORT_PROBE_COORDINATES On // Default on. Set to \ref Off or 0 to disable.
676 #endif
677 
688 #if !defined DEFAULT_REPORT_SYNC_ON_WCO_CHANGE || defined __DOXYGEN__
689 #define DEFAULT_REPORT_SYNC_ON_WCO_CHANGE On
690 #endif
691 
699 #if !defined DEFAULT_REPORT_PARSER_STATE || defined __DOXYGEN__
700 #define DEFAULT_REPORT_PARSER_STATE Off // Default off. Set to \ref On or 1 to enable.
701 #endif
702 
713 #if !defined DEFAULT_REPORT_ALARM_SUBSTATE || defined __DOXYGEN__
714 #define DEFAULT_REPORT_ALARM_SUBSTATE Off // Default off. Set to \ref On or 1 to enable.
715 #endif
716 
726 #if !defined DEFAULT_REPORT_RUN_SUBSTATE || defined __DOXYGEN__
727 #define DEFAULT_REPORT_RUN_SUBSTATE Off // Default off. Set to \ref On or 1 to enable.
728 #endif
729 
736 #if !defined DEFAULT_REPORT_WHEN_HOMING || defined __DOXYGEN__
737 #define DEFAULT_REPORT_WHEN_HOMING Off // Default off. Set to \ref On or 1 to enable.
738 #endif
739 
745 #if !defined DEFAULT_REPORT_DISTANCE_TO_GO || defined __DOXYGEN__
746 #define DEFAULT_REPORT_DISTANCE_TO_GO Off // Default off. Set to \ref On or 1 to enable.
747 #endif
748 
750 
755 #if !defined DEFAULT_JUNCTION_DEVIATION || defined __DOXYGEN__
756 #define DEFAULT_JUNCTION_DEVIATION 0.01f // mm
757 #endif
759 
764 #if !defined DEFAULT_ARC_TOLERANCE || defined __DOXYGEN__
765 #define DEFAULT_ARC_TOLERANCE 0.002f // mm
766 #endif
768 
774 #if !defined DEFAULT_REPORT_INCHES || defined __DOXYGEN__
775 #define DEFAULT_REPORT_INCHES Off
776 #endif
778 
784 #if !defined DEFAULT_G73_RETRACT || defined __DOXYGEN__
785 #define DEFAULT_G73_RETRACT 0.1f // mm
786 #endif
788 
793 #if !defined DEFAULT_LASER_MODE || defined __DOXYGEN__
794 #define DEFAULT_LASER_MODE Off
795 #endif
796 #if !defined DEFAULT_LATHE_MODE || defined __DOXYGEN__
797 #define DEFAULT_LATHE_MODE Off
798 #endif
800 
810 #if !defined DEFAULT_LEGACY_RTCOMMANDS || defined __DOXYGEN__
811 #define DEFAULT_LEGACY_RTCOMMANDS On
812 #endif
814 
818 #if !defined DEFAULT_RESET_OVERRIDES || defined __DOXYGEN__
819 #define DEFAULT_RESET_OVERRIDES Off
820 #endif
822 
826 #if !defined DEFAULT_SLEEP_ENABLE || defined __DOXYGEN__
827 #define DEFAULT_SLEEP_ENABLE Off
828 #endif
830 
838 #if !defined DEFAULT_DISABLE_LASER_DURING_HOLD || defined __DOXYGEN__
839 #define DEFAULT_DISABLE_LASER_DURING_HOLD On
840 #endif
842 
848 #if !defined DEFAULT_RESTORE_AFTER_FEED_HOLD || defined __DOXYGEN__
849 #define DEFAULT_RESTORE_AFTER_FEED_HOLD On
850 #endif
852 
862 #if !defined DEFAULT_FORCE_INITIALIZATION_ALARM || defined __DOXYGEN__
863 #define DEFAULT_FORCE_INITIALIZATION_ALARM Off
864 #endif
866 
873 #if !defined DEFAULT_DISABLE_G92_PERSISTENCE || defined __DOXYGEN__
874 #if COMPATIBILITY_LEVEL <= 1
875 #define DEFAULT_DISABLE_G92_PERSISTENCE Off
876 #else
877 #define DEFAULT_DISABLE_G92_PERSISTENCE On
878 #endif
879 #endif
881 
890 #if !defined DEFAULT_PLANNER_BUFFER_BLOCKS || defined __DOXYGEN__
891 #define DEFAULT_PLANNER_BUFFER_BLOCKS 100
892 #endif
894 
904 #if !defined DEFAULT_HOMING_KEEP_STATUS_ON_RESET || defined __DOXYGEN__
905 #define DEFAULT_HOMING_KEEP_STATUS_ON_RESET Off // Default disabled. Set to \ref On or 1 to enable.
906 #endif
908 
915 #if !defined DEFAULT_KEEP_OFFSETS_ON_RESET || defined __DOXYGEN__
916 #define DEFAULT_KEEP_OFFSETS_ON_RESET Off
917 #endif
919 
926 #if !defined DEFAULT_KEEP_RAPIDS_OVR_ON_RESET || defined __DOXYGEN__
927 #define DEFAULT_KEEP_RAPIDS_OVR_ON_RESET Off
928 #endif
930 
937 #if !defined DEFAULT_KEEP_FEED_OVR_ON_RESET || defined __DOXYGEN__
938 #define DEFAULT_KEEP_FEED_OVR_ON_RESET Off
939 #endif
941 
942 
943 // Control signals settings (Group_ControlSignals)
944 
945 #ifndef __DOXYGEN__ // For now do not include in documentation
946 
952 #define SIGNALS_RESET_BIT (1<<0)
953 #define SIGNALS_FEEDHOLD_BIT (1<<1)
954 #define SIGNALS_CYCLESTART_BIT (1<<2)
955 #define SIGNALS_SAFETYDOOR_BIT (1<<3)
956 #define SIGNALS_BLOCKDELETE_BIT (1<<4)
957 #define SIGNALS_STOPDISABLE_BIT (1<<5)
958 #define SIGNALS_ESTOP_BIT (1<<6)
959 #define SIGNALS_PROBE_CONNECTED_BIT (1<<7)
960 #define SIGNALS_MOTOR_FAULT_BIT (1<<8)
961 #define SIGNALS_MOTOR_WARNING_BIT (1<<9)
962 #define SIGNALS_LIMITS_OVERRIDE_BIT (1<<10)
963 #define SIGNALS_SINGLE_BLOCK_BIT (1<<11)
964 #define SIGNALS_TLS_OVERTRAVEL_BIT (1<<12)
965 #define SIGNALS_PROBE_OVERTRAVEL (1<<13)
966 #define SIGNALS_PROBE_TRIGGERED_BIT (1<<14)
967 #define SIGNALS_BITMASK (SIGNALS_RESET_BIT|SIGNALS_FEEDHOLD_BIT|SIGNALS_CYCLESTART_BIT|SIGNALS_SAFETYDOOR_BIT|SIGNALS_BLOCKDELETE_BIT|SIGNALS_STOPDISABLE_BIT|SIGNALS_ESTOP_BIT|SIGNALS_PROBE_CONNECTED_BIT|SIGNALS_MOTOR_FAULT_BIT)
969 
970 #endif
971 
978 #if !defined DEFAULT_CONTROL_SIGNALS_INVERT_MASK || defined __DOXYGEN__
979 #define DEFAULT_CONTROL_SIGNALS_INVERT_MASK 0 // Set to SIGNALS_BITMASK or -1 to invert all signals
980 #endif
982 
997 #if !defined DEFAULT_DISABLE_CONTROL_PINS_PULL_UP_MASK || defined __DOXYGEN__
998 #define DEFAULT_DISABLE_CONTROL_PINS_PULL_UP_MASK 0 // Set to SIGNALS_BITMASK or -1 to invert all signals
999 #endif
1001 
1002 // Limits settings (Group_Limits)
1003 
1012 #if !defined DEFAULT_LIMIT_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1013 #define DEFAULT_LIMIT_SIGNALS_INVERT_MASK 0 // Set to -1 or AXES_BITMASK to invert for all axes
1014 #endif
1016 
1024 #if !defined DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK || defined __DOXYGEN__
1025 #define DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK 0 // Set to -1 or AXES_BITMASK to disable pullup for all axes
1026 #endif
1028 
1032 #if !defined DEFAULT_SOFT_LIMIT_ENABLE || defined __DOXYGEN__
1033 #define DEFAULT_SOFT_LIMIT_ENABLE Off
1034 #endif
1036 
1040 
1047 #if !defined DEFAULT_HARD_LIMIT_ENABLE || defined __DOXYGEN__
1048 #define DEFAULT_HARD_LIMIT_ENABLE Off
1049 #endif
1050 #if !defined DEFAULT_CHECK_LIMITS_AT_INIT || defined __DOXYGEN__
1051 #define DEFAULT_CHECK_LIMITS_AT_INIT Off
1052 #endif
1053 #if !defined DEFAULT_HARD_LIMITS_DISABLE_FOR_ROTARY || defined __DOXYGEN__
1054 #define DEFAULT_HARD_LIMITS_DISABLE_FOR_ROTARY Off
1055 #endif
1056 
1069 
1072 #if !defined DEFAULT_DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT || defined __DOXYGEN__
1073 #define DEFAULT_DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT 5.0f // Float (percent)
1074 #endif
1076 
1080 #if !defined DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN || defined __DOXYGEN__
1081 #define DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN 2.5f // Float (mm)
1082 #endif
1084 
1089 #if !defined DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX || defined __DOXYGEN__
1090 #define DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX 25.0f // Float (mm)
1091 #endif
1093 
1094 // Coolant settings (Group_Coolant)
1095 
1101 #if !defined DEFAULT_INVERT_COOLANT_FLOOD_PIN || defined __DOXYGEN__
1102 #define DEFAULT_INVERT_COOLANT_FLOOD_PIN Off
1103 #endif
1104 #if !defined DEFAULT_INVERT_COOLANT_MIST_PIN || defined __DOXYGEN__
1105 #define DEFAULT_INVERT_COOLANT_MIST_PIN Off // NOTE: not supported by all drivers.
1106 #endif
1108 
1112 #if !defined DEFAULT_COOLANT_ON_DELAY || defined __DOXYGEN__
1113 #define DEFAULT_COOLANT_ON_DELAY 0 // milliseconds: 0 or 500 - 20000
1114 #endif
1116 
1117 // Spindle settings (Group_Spindle)
1118 
1122 #if !defined DEFAULT_SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED || defined __DOXYGEN__
1123 #define DEFAULT_SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED Off
1124 #endif
1125 #if !defined DEFAULT_PWM_SPINDLE_DISABLE_LASER_MODE || defined __DOXYGEN__
1126 #define DEFAULT_PWM_SPINDLE_DISABLE_LASER_MODE Off
1127 #endif
1128 #if !defined DEFAULT_PWM_SPINDLE_ENABLE_RAMP || defined __DOXYGEN__
1129 #define DEFAULT_PWM_SPINDLE_ENABLE_RAMP Off
1130 #endif
1132 
1137 #if !defined DEFAULT_INVERT_SPINDLE_ENABLE_PIN || defined __DOXYGEN__
1138 #define DEFAULT_INVERT_SPINDLE_ENABLE_PIN Off
1139 #endif
1140 #if !defined DEFAULT_INVERT_SPINDLE_CCW_PIN || defined __DOXYGEN__
1141 #define DEFAULT_INVERT_SPINDLE_CCW_PIN Off // NOTE: not supported by all drivers.
1142 #endif
1143 #if !defined DEFAULT_INVERT_SPINDLE_PWM_PIN || defined __DOXYGEN__
1144 #define DEFAULT_INVERT_SPINDLE_PWM_PIN Off // NOTE: not supported by all drivers.
1145 #endif
1147 
1151 #if !defined DEFAULT_SPINDLE_RPM_MAX || defined __DOXYGEN__
1152 #define DEFAULT_SPINDLE_RPM_MAX 1000.0f // rpm
1153 #endif
1155 
1159 #if !defined DEFAULT_SPINDLE_RPM_MIN || defined __DOXYGEN__
1160 #define DEFAULT_SPINDLE_RPM_MIN 0.0f // rpm
1161 #endif
1163 
1167 #if !defined DEFAULT_SPINDLE_PWM_FREQ || defined __DOXYGEN__
1168 #define DEFAULT_SPINDLE_PWM_FREQ 5000 // Hz
1169 #endif
1171 
1175 #if !defined DEFAULT_SPINDLE_PWM_OFF_VALUE || defined __DOXYGEN__
1176 #define DEFAULT_SPINDLE_PWM_OFF_VALUE 0.0f // Percent
1177 #endif
1179 
1192 #if !defined DEFAULT_SPINDLE_PWM_MIN_VALUE || defined __DOXYGEN__
1193 #define DEFAULT_SPINDLE_PWM_MIN_VALUE 0.0f // Must be greater than zero. Integer (+-255).
1194 #endif
1196 
1200 #if !defined DEFAULT_SPINDLE_PWM_MAX_VALUE || defined __DOXYGEN__
1201 #define DEFAULT_SPINDLE_PWM_MAX_VALUE 100.0f // Percent
1202 #endif
1204 
1213 #if !defined DEFAULT_SPINDLE_PPR || defined __DOXYGEN__
1214 #define DEFAULT_SPINDLE_PPR 0 // Pulses per revolution.
1215 #endif
1217 
1221 #if !defined DEFAULT_SPINDLE_AT_SPEED_TOLERANCE || defined __DOXYGEN__
1222 #define DEFAULT_SPINDLE_AT_SPEED_TOLERANCE 0.0f // Percent - 0 means not checked
1223 #endif
1225 
1229 #if !defined DEFAULT_SPINDLE_ON_DELAY || defined __DOXYGEN__
1230 #define DEFAULT_SPINDLE_ON_DELAY 0 // milliseconds: 0 or 500 - 20000
1231 #endif
1233 
1237 #if !defined DEFAULT_SPINDLE || defined __DOXYGEN__
1238 #define DEFAULT_SPINDLE SPINDLE_PWM0 // Spindle number from spindle_control.h
1239 #endif
1241 
1245 #if !defined DEFAULT_SPINDLE_OFF_DELAY || defined __DOXYGEN__
1246 #define DEFAULT_SPINDLE_OFF_DELAY 0 // milliseconds: 0 or 500 - 20000
1247 #endif
1249 
1250 // Closed loop spindle settings (Group_Spindle_ClosedLoop)
1251 
1252 // $9 - Setting_SpindlePWMOptions
1253 // bit 0
1254 // always defaults to on
1255 // bit 1
1256 
1257 // Closed loop spindle settings (Group_Spindle_ClosedLoop)
1258 
1259 #ifndef DEFAULT_SPINDLE_P_GAIN
1260 #define DEFAULT_SPINDLE_P_GAIN 1.0f
1261 #endif
1262 #ifndef DEFAULT_SPINDLE_I_GAIN
1263 #define DEFAULT_SPINDLE_I_GAIN 0.01f
1264 #endif
1265 #ifndef DEFAULT_SPINDLE_D_GAIN
1266 #define DEFAULT_SPINDLE_D_GAIN 0.0f
1267 #endif
1268 #ifndef DEFAULT_SPINDLE_I_MAX
1269 #define DEFAULT_SPINDLE_I_MAX 10.0f
1270 #endif
1271 
1272 #if ENABLE_SPINDLE_LINEARIZATION || defined __DOXYGEN__
1273 
1278 #if !defined DEFAULT_RPM_POINT01 || defined __DOXYGEN__
1279 #define DEFAULT_RPM_POINT01 NAN // DEFAULT_SPINDLE_RPM_MIN // Replace NAN with DEFAULT_SPINDLE_RPM_MIN to enable.
1280 #endif
1281 #if !defined DEFAULT_RPM_LINE_A1 || defined __DOXYGEN__
1282 #define DEFAULT_RPM_LINE_A1 3.197101e-03f
1283 #endif
1284 #if !defined DEFAULT_RPM_LINE_B1 || defined __DOXYGEN__
1285 #define DEFAULT_RPM_LINE_B1 -3.526076e-1f
1286 #endif
1288 
1293 #if !defined DEFAULT_RPM_POINT12 || defined __DOXYGEN__
1294 #define DEFAULT_RPM_POINT12 NAN // Change NAN to a float constant to enable.
1295 #endif
1296 #if !defined DEFAULT_RPM_LINE_A2 || defined __DOXYGEN__
1297 #define DEFAULT_RPM_LINE_A2 1.722950e-2f
1298 #endif
1299 #if !defined DEFAULT_RPM_LINE_B2 || defined __DOXYGEN__
1300 #define DEFAULT_RPM_LINE_B2 1.0f,
1301 #endif
1303 
1308 #if !defined DEFAULT_RPM_POINT23 || defined __DOXYGEN__
1309 #define DEFAULT_RPM_POINT23 NAN // Change NAN to a float constant to enable.
1310 #endif
1311 #if !defined DEFAULT_RPM_LINE_A3 || defined __DOXYGEN__
1312 #define DEFAULT_RPM_LINE_A3 5.901518e-02f
1313 #endif
1314 #if !defined DEFAULT_RPM_LINE_B3 || defined __DOXYGEN__
1315 #define DEFAULT_RPM_LINE_B3 4.881851e+02f
1316 #endif
1318 
1323 #if !defined DEFAULT_RPM_POINT34 || defined __DOXYGEN__
1324 #define DEFAULT_RPM_POINT34 NAN // Change NAN to a float constant to enable.
1325 #endif
1326 #if !defined DEFAULT_RPM_LINE_A4 || defined __DOXYGEN__
1327 #define DEFAULT_RPM_LINE_A4 1.203413e-01f
1328 #endif
1329 #if !defined DEFAULT_RPM_LINE_B4 || defined __DOXYGEN__
1330 #define DEFAULT_RPM_LINE_B4 1.151360e+03f
1331 #endif
1333 
1334 #endif // ENABLE_SPINDLE_LINEARIZATION
1335 
1336 // Settings for second PWM spindle
1337 
1342 #if !defined DEFAULT_INVERT_SPINDLE1_ENABLE_PIN || defined __DOXYGEN__
1343 #define DEFAULT_INVERT_SPINDLE1_ENABLE_PIN Off
1344 #endif
1345 #if !defined DEFAULT_INVERT_SPINDLE1_CCW_PIN || defined __DOXYGEN__
1346 #define DEFAULT_INVERT_SPINDLE1_CCW_PIN Off // NOTE: not supported by all drivers.
1347 #endif
1348 #if !defined DEFAULT_INVERT_SPINDLE1_PWM_PIN || defined __DOXYGEN__
1349 #define DEFAULT_INVERT_SPINDLE1_PWM_PIN Off // NOTE: not supported by all drivers.
1350 #endif
1352 
1356 #if !defined DEFAULT_SPINDLE1_RPM_MAX || defined __DOXYGEN__
1357 #define DEFAULT_SPINDLE1_RPM_MAX 1000.0f // rpm
1358 #endif
1360 
1364 #if !defined DEFAULT_SPINDLE1_RPM_MIN || defined __DOXYGEN__
1365 #define DEFAULT_SPINDLE1_RPM_MIN 0.0f // rpm
1366 #endif
1368 
1372 #if !defined DEFAULT_SPINDLE1_PWM_FREQ || defined __DOXYGEN__
1373 #define DEFAULT_SPINDLE1_PWM_FREQ 5000 // Hz
1374 #endif
1376 
1380 #if !defined DEFAULT_SPINDLE1_PWM_OFF_VALUE || defined __DOXYGEN__
1381 #define DEFAULT_SPINDLE1_PWM_OFF_VALUE 0.0f // Percent
1382 #endif
1384 
1397 #if !defined DEFAULT_SPINDLE1_PWM_MIN_VALUE || defined __DOXYGEN__
1398 #define DEFAULT_SPINDLE1_PWM_MIN_VALUE 0.0f // Must be greater than zero. Integer (+-255).
1399 #endif
1401 
1405 #if !defined DEFAULT_SPINDLE1_PWM_MAX_VALUE || defined __DOXYGEN__
1406 #define DEFAULT_SPINDLE1_PWM_MAX_VALUE 100.0f // Percent
1407 #endif
1409 
1410 
1411 // Tool change settings (Group_Toolchange)
1412 
1417 #if !defined DEFAULT_TOOLCHANGE_MODE || defined __DOXYGEN__
1418 #define DEFAULT_TOOLCHANGE_MODE 0
1419 #endif
1421 
1425 #if !defined DEFAULT_TOOLCHANGE_PROBING_DISTANCE || defined __DOXYGEN__
1426 #define DEFAULT_TOOLCHANGE_PROBING_DISTANCE 30 // max probing distance in mm for mode 3
1427 #endif
1429 
1433 #if !defined DEFAULT_TOOLCHANGE_FEED_RATE || defined __DOXYGEN__
1434 #define DEFAULT_TOOLCHANGE_FEED_RATE 25.0f // mm/min
1435 #endif
1437 
1442 #if !defined DEFAULT_TOOLCHANGE_SEEK_RATE || defined __DOXYGEN__
1443 #define DEFAULT_TOOLCHANGE_SEEK_RATE 200.0f // mm/min
1444 #endif
1446 
1450 #if !defined DEFAULT_TOOLCHANGE_PULLOFF_RATE || defined __DOXYGEN__
1451 #define DEFAULT_TOOLCHANGE_PULLOFF_RATE 200.0f // mm/min
1452 #endif
1454 
1458 #if !defined DEFAULT_TOOLCHANGE_NO_RESTORE_POSITION || defined __DOXYGEN__
1459 #define DEFAULT_TOOLCHANGE_NO_RESTORE_POSITION Off
1460 #endif
1461 #if !defined DEFAULT_TOOLCHANGE_AT_G30 || defined __DOXYGEN__
1462 #define DEFAULT_TOOLCHANGE_AT_G30 Off
1463 #endif
1464 #if !defined DEFAULT_TOOLCHANGE_FAST_PROBE_PULLOFF || defined __DOXYGEN__
1465 #define DEFAULT_TOOLCHANGE_FAST_PROBE_PULLOFF Off
1466 #endif
1468 
1472 #if !defined DEFAULT_PERSIST_TOOL || defined __DOXYGEN__
1473 #define DEFAULT_PERSIST_TOOL Off
1474 #endif
1476 
1477 // Homing settings (Group_Homing)
1478 
1484 
1488 #if !defined DEFAULT_HOMING_ENABLE || defined __DOXYGEN__
1489 #define DEFAULT_HOMING_ENABLE Off // Default disabled. Set to \ref On or 1 to enable.
1490 #endif
1491 
1499 #if !defined DEFAULT_HOMING_SINGLE_AXIS_COMMANDS || defined __DOXYGEN__
1500 #define DEFAULT_HOMING_SINGLE_AXIS_COMMANDS Off // Default disabled. Set to \ref On or 1 to enable.
1501 #endif
1502 
1510 #if !defined DEFAULT_HOMING_INIT_LOCK || defined __DOXYGEN__
1511 #define DEFAULT_HOMING_INIT_LOCK Off // Default disabled. Set to \ref On or 1 to enable.
1512 #endif
1513 
1521 #if !defined DEFAULT_HOMING_FORCE_SET_ORIGIN || defined __DOXYGEN__
1522 #define DEFAULT_HOMING_FORCE_SET_ORIGIN Off // Default disabled. Set to \ref On or 1 to enable.
1523 #endif
1524 
1535 #if !defined DEFAULT_LIMITS_TWO_SWITCHES_ON_AXES || defined __DOXYGEN__
1536 #define DEFAULT_LIMITS_TWO_SWITCHES_ON_AXES Off // Default disabled. Set to \ref On or 1 to enable.
1537 #endif
1539 
1546 #if !defined DEFAULT_HOMING_ALLOW_MANUAL || defined __DOXYGEN__
1547 #define DEFAULT_HOMING_ALLOW_MANUAL Off // Default disabled. Set to \ref On or 1 to enable.
1548 #endif
1549 
1556 #if !defined DEFAULT_HOMING_OVERRIDE_LOCKS || defined __DOXYGEN__
1557 #define DEFAULT_HOMING_OVERRIDE_LOCKS Off // Default disabled. Set to \ref On or 1 to enable.
1558 #endif
1559 
1565 #if !defined DEFAULT_HOMING_USE_LIMIT_SWITCHES || defined __DOXYGEN__
1566 #define DEFAULT_HOMING_USE_LIMIT_SWITCHES Off // Default disabled. Set to \ref On or 1 to enable.
1567 #endif
1569 
1575 #if !defined DEFAULT_RUN_STARTUP_SCRIPTS_ONLY_ON_HOMED || defined __DOXYGEN__
1576 #define DEFAULT_RUN_STARTUP_SCRIPTS_ONLY_ON_HOMED Off // Default disabled. Set to \ref On or 1 to enable.
1577 #endif
1579 
1585 #if !defined DEFAULT_HOMING_DIR_MASK || defined __DOXYGEN__
1586 #define DEFAULT_HOMING_DIR_MASK 0
1587 #endif
1589 
1593 #if !defined DEFAULT_HOMING_FEED_RATE || defined __DOXYGEN__
1594 #define DEFAULT_HOMING_FEED_RATE 25.0f // mm/min
1595 #endif
1597 
1601 #if !defined DEFAULT_HOMING_SEEK_RATE || defined __DOXYGEN__
1602 #define DEFAULT_HOMING_SEEK_RATE 500.0f // mm/min
1603 #endif
1605 
1609 #if !defined DEFAULT_HOMING_DEBOUNCE_DELAY || defined __DOXYGEN__
1610 #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k)
1611 #endif
1613 
1617 #if !defined DEFAULT_HOMING_PULLOFF || defined __DOXYGEN__
1618 #define DEFAULT_HOMING_PULLOFF 1.0f // mm
1619 #endif
1621 
1628 #if !defined DEFAULT_N_HOMING_LOCATE_CYCLE || defined __DOXYGEN__
1629 #define DEFAULT_N_HOMING_LOCATE_CYCLE 1 // Integer (1-127)
1630 #endif
1632 
1654 #if !defined DEFAULT_HOMING_CYCLE_0 || defined __DOXYGEN__
1655 #define DEFAULT_HOMING_CYCLE_0 (Z_AXIS_BIT) // REQUIRED: First move Z to clear workspace.
1656 #endif
1658 
1662 #if !defined DEFAULT_HOMING_CYCLE_1 || defined __DOXYGEN__
1663 #if COREXY
1664 #define DEFAULT_HOMING_CYCLE_1 (X_AXIS_BIT) // OPTIONAL: Then move X.
1665 #else
1666 #define DEFAULT_HOMING_CYCLE_1 (X_AXIS_BIT|Y_AXIS_BIT) // OPTIONAL: Then move X,Y at the same time.
1667 #endif
1668 #endif
1670 
1674 #if !defined DEFAULT_HOMING_CYCLE_2 || defined __DOXYGEN__
1675 #if COREXY
1676 #define DEFAULT_HOMING_CYCLE_2 (Y_AXIS_BIT) // OPTIONAL: Then move Y.
1677 #else
1678 #define DEFAULT_HOMING_CYCLE_2 0 // OPTIONAL: Uncomment and add axes mask to enable
1679 #endif
1680 #endif
1682 
1686 #if (N_AXIS > 3 && !defined DEFAULT_HOMING_CYCLE_3) || defined __DOXYGEN__
1687 #define DEFAULT_HOMING_CYCLE_3 0 // OPTIONAL: Uncomment and add axes mask to enable
1688 #endif
1690 
1695 #if (N_AXIS > 4 && !defined DEFAULT_HOMING_CYCLE_4) || defined __DOXYGEN__
1696 #define DEFAULT_HOMING_CYCLE_4 0 // OPTIONAL: Uncomment and add axes mask to enable
1697 #endif
1699 
1703 #if (N_AXIS > 5 && !defined DEFAULT_HOMING_CYCLE_5) || defined __DOXYGEN__
1704 #define DEFAULT_HOMING_CYCLE_5 0 // OPTIONAL: Uncomment and add axes mask to enable
1705 #endif
1707 
1716 #if !defined DEFAULT_HOME_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1717 #define DEFAULT_HOME_SIGNALS_INVERT_MASK 0 // Set to -1 or AXES_BITMASK to invert for all axes
1718 #endif
1720 
1721 
1722 // Probing settings (Group_Probing)
1723 
1727 #if !defined DEFAULT_PROBE_SIGNAL_INVERT || defined __DOXYGEN__
1728 #define DEFAULT_PROBE_SIGNAL_INVERT Off
1729 #endif
1730 #if !defined DEFAULT_TOOLSETTER_SIGNAL_INVERT || defined __DOXYGEN__
1731 #define DEFAULT_TOOLSETTER_SIGNAL_INVERT Off
1732 #endif
1734 
1738 #if !defined DEFAULT_PROBE_SIGNAL_DISABLE_PULLUP || defined __DOXYGEN__
1739 #define DEFAULT_PROBE_SIGNAL_DISABLE_PULLUP Off
1740 #endif
1741 #if !defined DEFAULT_TOOLSETTER_SIGNAL_DISABLE_PULLUP || defined __DOXYGEN__
1742 #define DEFAULT_TOOLSETTER_SIGNAL_DISABLE_PULLUP Off
1743 #endif
1745 
1754 #if !defined DEFAULT_ALLOW_FEED_OVERRIDE_DURING_PROBE_CYCLES || defined __DOXYGEN__
1755 #define DEFAULT_ALLOW_FEED_OVERRIDE_DURING_PROBE_CYCLES Off
1756 #endif
1757 #if !defined DEFAULT_SOFT_LIMIT_PROBE_CYCLES || defined __DOXYGEN__
1758 #define DEFAULT_SOFT_LIMIT_PROBE_CYCLES Off
1759 #endif
1761 
1762 // Safety door/parking settings (Group_SafetyDoor)
1763 
1764 #ifdef DEFAULT_HOMING_ENABLE
1765 
1783 #if !defined DEFAULT_PARKING_ENABLE || defined __DOXYGEN__
1784 #define DEFAULT_PARKING_ENABLE Off // bit 0
1785 // Enables a special set of M-code commands that enables and disables the parking motion.
1786 // These are controlled by `M56`, `M56 P1`, or `M56 Px` to enable and `M56 P0` to disable.
1787 // The command is modal and will be set after a planner sync. Since it is g-code, it is
1788 // executed in sync with g-code commands. It is not a real-time command.
1789 // NOTE: PARKING_ENABLE is required. By default, M56 is active upon initialization. Use
1790 // DEACTIVATE_PARKING_UPON_INIT to set M56 P0 as the power-up default.
1791 #endif
1792 #if !defined DEFAULT_DEACTIVATE_PARKING_UPON_INIT || defined __DOXYGEN__
1793 #define DEFAULT_DEACTIVATE_PARKING_UPON_INIT Off // bit 1
1794 #endif
1795 #if !defined DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL || defined __DOXYGEN__
1796 #define DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL Off // bit 2
1797 #endif
1799 
1804 #if !defined DEFAULT_PARKING_AXIS || defined __DOXYGEN__
1805 #define DEFAULT_PARKING_AXIS Z_AXIS //
1806 #endif
1808 
1812 #if !defined DEFAULT_PARKING_PULLOUT_INCREMENT || defined __DOXYGEN__
1813 #define DEFAULT_PARKING_PULLOUT_INCREMENT 5.0f //
1814 #endif
1816 
1821 #if !defined DEFAULT_PARKING_PULLOUT_RATE || defined __DOXYGEN__
1822 #define DEFAULT_PARKING_PULLOUT_RATE 100.0f // mm/min.
1823 #endif
1825 
1830 #if !defined DEFAULT_PARKING_TARGET || defined __DOXYGEN__
1831 #define DEFAULT_PARKING_TARGET -5.0f // mm
1832 #endif
1834 
1839 #if !defined DEFAULT_PARKING_RATE || defined __DOXYGEN__
1840 #define DEFAULT_PARKING_RATE 500.0f // mm/min
1841 #endif
1843 
1847 
1852 #if !defined DEFAULT_DOOR_IGNORE_WHEN_IDLE || defined __DOXYGEN__
1853 #define DEFAULT_DOOR_IGNORE_WHEN_IDLE Off
1854 #endif
1859 #if !defined DEFAULT_DOOR_KEEP_COOLANT_ON || defined __DOXYGEN__
1860 #define DEFAULT_DOOR_KEEP_COOLANT_ON Off
1861 #endif
1863 
1869 #if !defined DEFAULT_SAFETY_DOOR_SPINDLE_DELAY || defined __DOXYGEN__
1870 #define DEFAULT_SAFETY_DOOR_SPINDLE_DELAY 4.0f // Float (seconds)
1871 #endif
1873 
1880 #if !defined DEFAULT_SAFETY_DOOR_COOLANT_DELAY || defined __DOXYGEN__
1881 #define DEFAULT_SAFETY_DOOR_COOLANT_DELAY 1.0f // Float (seconds)
1882 #endif
1884 
1885 #endif // DEFAULT_HOMING_ENABLE
1886 
1887 // Jogging settings (Group_Jogging)
1888 
1896 #if !defined DEFAULT_JOG_LIMIT_ENABLE || defined __DOXYGEN__
1897 #define DEFAULT_JOG_LIMIT_ENABLE Off
1898 #endif
1900 
1901 // Stepper settings (Group_Stepper)
1902 
1915 #if !defined DEFAULT_STEP_PULSE_MICROSECONDS || defined __DOXYGEN__
1916 #define DEFAULT_STEP_PULSE_MICROSECONDS 5.0f
1917 #endif
1919 
1928 #if !defined DEFAULT_STEPPER_IDLE_LOCK_TIME || defined __DOXYGEN__
1929 #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // milliseconds
1930 #endif
1932 
1938 #if !defined DEFAULT_STEP_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1939 #define DEFAULT_STEP_SIGNALS_INVERT_MASK 0
1940 #endif
1942 
1948 #if !defined DEFAULT_DIR_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1949 #define DEFAULT_DIR_SIGNALS_INVERT_MASK 0
1950 #endif
1952 
1965 #if !defined DEFAULT_ENABLE_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1966 #define DEFAULT_ENABLE_SIGNALS_INVERT_MASK AXES_BITMASK
1967 #endif
1969 
1975 #if !defined DEFAULT_GANGED_DIRECTION_INVERT_MASK || defined __DOXYGEN__
1976 #define DEFAULT_GANGED_DIRECTION_INVERT_MASK 0
1977 #endif
1979 
1983 #if !defined DEFAULT_STEP_PULSE_DELAY || defined __DOXYGEN__
1984 #define DEFAULT_STEP_PULSE_DELAY 0.0f
1985 #endif
1987 
1994 #if !defined DEFAULT_STEPPER_DEENERGIZE_MASK || defined __DOXYGEN__
1995 #define DEFAULT_STEPPER_DEENERGIZE_MASK 0
1996 #endif
1998 
2005 
2006 #define IS_ROTARY_LETTER(c) (c == 'A' || c == 'B' || c == 'C')
2007 
2008 #if !defined DEFAULT_AXIS_ROTATIONAL_MASK || defined __DOXYGEN__
2009 #if N_AXIS > 3 && IS_ROTARY_LETTER(AXIS3_LETTER)
2010 #define RA3 (1<<3)
2011 #else
2012 #define RA3 0
2013 #endif
2014 #if N_AXIS > 4 && IS_ROTARY_LETTER(AXIS4_LETTER)
2015 #define RA4 (1<<4)
2016 #else
2017 #define RA4 0
2018 #endif
2019 #if N_AXIS > 5 && IS_ROTARY_LETTER(AXIS5_LETTER)
2020 #define RA5 (1<<5)
2021 #else
2022 #define RA5 0
2023 #endif
2024 #if N_AXIS > 6 && IS_ROTARY_LETTER(AXIS6_LETTER)
2025 #define RA6 (1<<6)
2026 #else
2027 #define RA6 0
2028 #endif
2029 #if N_AXIS > 7 && IS_ROTARY_LETTER(AXIS7_LETTER)
2030 #define RA7 (1<<7)
2031 #else
2032 #define RA7 0
2033 #endif
2034 #define DEFAULT_AXIS_ROTATIONAL_MASK (RA3|RA4|RA5|RA6|RA7)
2035 #endif
2037 
2042 #if !defined DEFAULT_STEPPER_ENABLE_DELAY || defined __DOXYGEN__
2043 #define DEFAULT_STEPPER_ENABLE_DELAY 0
2044 #endif
2046 
2052 #if !defined DEFAULT_MOTOR_WARNING_SIGNALS_ENABLE || defined __DOXYGEN__
2053 #define DEFAULT_MOTOR_WARNING_SIGNALS_ENABLE 0
2054 #endif
2056 
2062 #if !defined DEFAULT_MOTOR_WARNING_SIGNALS_INVERT || defined __DOXYGEN__
2063 #define DEFAULT_MOTOR_WARNING_SIGNALS_INVERT 0
2064 #endif
2066 
2072 #if !defined DEFAULT_MOTOR_FAULT_SIGNALS_ENABLE || defined __DOXYGEN__
2073 #define DEFAULT_MOTOR_FAULT_SIGNALS_ENABLE 0
2074 #endif
2076 
2082 #if !defined DEFAULT_MOTOR_FAULT_SIGNALS_INVERT || defined __DOXYGEN__
2083 #define DEFAULT_MOTOR_FAULT_SIGNALS_INVERT 0
2084 #endif
2086 
2091 #if !defined DEFAULT_AUTOREPORT_INTERVAL || defined __DOXYGEN__
2092 #define DEFAULT_AUTOREPORT_INTERVAL 0
2093 #endif
2095 
2100 #if !defined DEFAULT_TIMEZONE_OFFSET || defined __DOXYGEN__
2101 #define DEFAULT_TIMEZONE_OFFSET 0.0f
2102 #endif
2104 
2110 #if !defined DEFAULT_NO_UNLOCK_AFTER_ESTOP || defined __DOXYGEN__
2111 #define DEFAULT_NO_UNLOCK_AFTER_ESTOP Off
2112 #endif
2114 
2119 #if !defined DEFAULT_RGB_STRIP0_LENGTH || defined __DOXYGEN__
2120 #define DEFAULT_RGB_STRIP0_LENGTH 0
2121 #endif
2123 
2128 #if !defined DEFAULT_RGB_STRIP1_LENGTH || defined __DOXYGEN__
2129 #define DEFAULT_RGB_STRIP1_LENGTH 0
2130 #endif
2132 
2140 #if !defined DEFAULT_AXIS_ROTARY_WRAP_MASK || defined __DOXYGEN__
2141 #define DEFAULT_AXIS_ROTARY_WRAP_MASK 0
2142 #endif
2144 
2149 #if !defined DEFAULT_MODBUS_STREAM_BAUD || defined __DOXYGEN__
2150 #define DEFAULT_MODBUS_STREAM_BAUD 3 // 0 = 2400, 1 = 4800, 2 = 9600, 3 = 19200, 4 = 38400, 5 = 115200
2151 #endif
2153 
2158 #if !defined DEFAULT_MODBUS_STREAM_DATA_BITS || defined __DOXYGEN__
2159 #define DEFAULT_MODBUS_STREAM_DATA_BITS 0 // 0 = 8, 1 = 7
2160 #endif
2163 #if !defined DEFAULT_MODBUS_STREAM_STOP_BITS || defined __DOXYGEN__
2164 #define DEFAULT_MODBUS_STREAM_STOP_BITS 0 // 0 = 1, 1 = 1.5, 2 = 2, 3 = 0.5
2165 #endif
2167 #if !defined DEFAULT_MODBUS_STREAM_PARITY || defined __DOXYGEN__
2168 #define DEFAULT_MODBUS_STREAM_PARITY 0 // 0 = None, 1 = Even, 2 = Odd
2169 #endif
2171 
2175 
2179 #if !defined DEFAULT_FS_SD_AUTOMOUNT || defined __DOXYGEN__
2180 #define DEFAULT_FS_SD_AUTOMOUNT Off // Default disabled. Set to \ref On or 1 to enable.
2181 #endif
2182 
2187 #if !defined DEFAULT_FS_LITLLEFS_HIDDEN || defined __DOXYGEN__
2188 #define DEFAULT_FS_LITLLEFS_HIDDEN Off // Default disabled. Set to \ref On or 1 to enable.
2189 #endif
2190 
2196 #if !defined DEFAULT_FS_HIERACHICAL_LISTING || defined __DOXYGEN__
2197 #define DEFAULT_FS_HIERACHICAL_LISTING Off // Default disabled. Set to \ref On or 1 to enable.
2198 #endif
2200 
2201 
2202 // Axis settings (Group_XAxis - Group_VAxis)
2203 
2208 #if !defined DEFAULT_X_STEPS_PER_MM || defined __DOXYGEN__
2209 #define DEFAULT_X_STEPS_PER_MM 250.0f
2210 #endif
2211 #if !defined DEFAULT_Y_STEPS_PER_MM || defined __DOXYGEN__
2212 #define DEFAULT_Y_STEPS_PER_MM 250.0f
2213 #endif
2214 #if !defined DEFAULT_Z_STEPS_PER_MM || defined __DOXYGEN__
2215 #define DEFAULT_Z_STEPS_PER_MM 250.0f
2216 #endif
2217 #if (defined A_AXIS && !defined DEFAULT_A_STEPS_PER_MM) || defined __DOXYGEN__
2218 #define DEFAULT_A_STEPS_PER_MM 250.0f
2219 #endif
2220 #if (defined B_AXIS && !defined DEFAULT_B_STEPS_PER_MM) || defined __DOXYGEN__
2221 #define DEFAULT_B_STEPS_PER_MM 250.0f
2222 #endif
2223 #if (defined C_AXIS && !defined DEFAULT_C_STEPS_PER_MM) || defined __DOXYGEN__
2224 #define DEFAULT_C_STEPS_PER_MM 250.0f
2225 #endif
2226 #if (defined U_AXIS && !defined DEFAULT_U_STEPS_PER_MM) || defined __DOXYGEN__
2227 #define DEFAULT_U_STEPS_PER_MM 250.0f
2228 #endif
2229 #if (defined V_AXIS && !defined DEFAULT_V_STEPS_PER_MM) || defined __DOXYGEN__
2230 #define DEFAULT_V_STEPS_PER_MM 250.0f
2231 #endif
2232 #if (defined W_AXIS && !defined DEFAULT_W_STEPS_PER_MM) || defined __DOXYGEN__
2233 #define DEFAULT_W_STEPS_PER_MM 250.0f
2234 #endif
2236 
2241 #if !defined DEFAULT_X_MAX_RATE || defined __DOXYGEN__
2242 #define DEFAULT_X_MAX_RATE 500.0f // mm/min
2243 #endif
2244 #if !defined DEFAULT_Y_MAX_RATE || defined __DOXYGEN__
2245 #define DEFAULT_Y_MAX_RATE 500.0f // mm/min
2246 #endif
2247 #if !defined DEFAULT_Z_MAX_RATE || defined __DOXYGEN__
2248 #define DEFAULT_Z_MAX_RATE 500.0f // mm/min
2249 #endif
2250 #if (defined A_AXIS && !defined DEFAULT_A_MAX_RATE) || defined __DOXYGEN__
2251 #define DEFAULT_A_MAX_RATE 500.0f // mm/min
2252 #endif
2253 #if (defined B_AXIS && !defined DEFAULT_B_MAX_RATE) || defined __DOXYGEN__
2254 #define DEFAULT_B_MAX_RATE 500.0f // mm/min
2255 #endif
2256 #if (defined C_AXIS && !defined DEFAULT_C_MAX_RATE) || defined __DOXYGEN__
2257 #define DEFAULT_C_MAX_RATE 500.0f // mm/min
2258 #endif
2259 #if (defined U_AXIS && !defined DEFAULT_U_MAX_RATE) || defined __DOXYGEN__
2260 #define DEFAULT_U_MAX_RATE 500.0f // mm/min
2261 #endif
2262 #if (defined V_AXIS && !defined DEFAULT_V_MAX_RATE) || defined __DOXYGEN__
2263 #define DEFAULT_V_MAX_RATE 500.0f // mm/min
2264 #endif
2265 #if (defined W_AXIS && !defined DEFAULT_W_MAX_RATE) || defined __DOXYGEN__
2266 #define DEFAULT_W_MAX_RATE 500.0f // mm/min
2267 #endif
2269 
2273 #if !defined DEFAULT_X_ACCELERATION || defined __DOXYGEN__
2274 #define DEFAULT_X_ACCELERATION 10.0f // mm/sec^2
2275 #endif
2276 #if !defined DEFAULT_Y_ACCELERATION || defined __DOXYGEN__
2277 #define DEFAULT_Y_ACCELERATION 10.0f // mm/sec^2
2278 #endif
2279 #if !defined DEFAULT_Z_ACCELERATION || defined __DOXYGEN__
2280 #define DEFAULT_Z_ACCELERATION 10.0f // mm/sec^2
2281 #endif
2282 #if (defined A_AXIS && !defined DEFAULT_A_ACCELERATION) || defined __DOXYGEN__
2283 #define DEFAULT_A_ACCELERATION 10.0f // mm/sec^2
2284 #endif
2285 #if (defined B_AXIS && !defined DEFAULT_B_ACCELERATION) || defined __DOXYGEN__
2286 #define DEFAULT_B_ACCELERATION 10.0f // mm/sec^2
2287 #endif
2288 #if (defined C_AXIS && !defined DEFAULT_C_ACCELERATION) || defined __DOXYGEN__
2289 #define DEFAULT_C_ACCELERATION 10.0f // mm/sec^2
2290 #endif
2291 #if (defined U_AXIS && !defined DEFAULT_U_ACCELERATION) || defined __DOXYGEN__
2292 #define DEFAULT_U_ACCELERATION 10.0f // mm/sec^2
2293 #endif
2294 #if (defined V_AXIS && !defined DEFAULT_V_ACCELERATION) || defined __DOXYGEN__
2295 #define DEFAULT_V_ACCELERATION 10.0f // mm/sec^2
2296 #endif
2297 #if (defined W_AXIS && !defined DEFAULT_W_ACCELERATION) || defined __DOXYGEN__
2298 #define DEFAULT_W_ACCELERATION 10.0f // mm/sec^2
2299 #endif
2301 
2305 #if !defined DEFAULT_X_JERK|| defined __DOXYGEN__
2306 #define DEFAULT_X_JERK (DEFAULT_X_ACCELERATION * 10.0f) // mm/sec^3
2307 #endif
2308 #if !defined DEFAULT_Y_JERK|| defined __DOXYGEN__
2309 #define DEFAULT_Y_JERK (DEFAULT_Y_ACCELERATION * 10.0f) // mm/sec^3
2310 #endif
2311 #if !defined DEFAULT_Z_JERK || defined __DOXYGEN__
2312 #define DEFAULT_Z_JERK (DEFAULT_Z_ACCELERATION * 10.0f) // mm/sec^3
2313 #endif
2314 #if (defined A_AXIS && !defined DEFAULT_A_JERK) || defined __DOXYGEN__
2315 #define DEFAULT_A_JERK (DEFAULT_A_ACCELERATION * 10.0f) // mm/sec^3
2316 #endif
2317 #if (defined B_AXIS && !defined DEFAULT_B_JERK) || defined __DOXYGEN__
2318 #define DEFAULT_B_JERK (DEFAULT_B_ACCELERATION * 10.0f) // mm/sec^3
2319 #endif
2320 #if (defined C_AXIS && !defined DEFAULT_C_JERK) || defined __DOXYGEN__
2321 #define DEFAULT_C_JERK (DEFAULT_C_ACCELERATION * 10.0f) // mm/sec^3
2322 #endif
2323 #if (defined U_AXIS && !defined DEFAULT_U_JERK) || defined __DOXYGEN__
2324 #define DEFAULT_U_JERK (DEFAULT_U_ACCELERATION * 10.0f) // mm/sec^3
2325 #endif
2326 #if (defined V_AXIS && !defined DEFAULT_V_JERK) || defined __DOXYGEN__
2327 #define DEFAULT_V_JERK (DEFAULT_V_ACCELERATION * 10.0f) // mm/sec^3
2328 #endif
2329 #if (defined W_AXIS && !defined DEFAULT_W_JERK) || defined __DOXYGEN__
2330 #define DEFAULT_W_JERK (DEFAULT_W_ACCELERATION * 10.0f) // mm/sec^3
2331 #endif
2333 
2338 #if !defined DEFAULT_X_MAX_TRAVEL || defined __DOXYGEN__
2339 #define DEFAULT_X_MAX_TRAVEL 200.0f // mm
2340 #endif
2341 #if !defined DEFAULT_Y_MAX_TRAVEL || defined __DOXYGEN__
2342 #define DEFAULT_Y_MAX_TRAVEL 200.0f // mm
2343 #endif
2344 #if !defined DEFAULT_Z_MAX_TRAVEL || defined __DOXYGEN__
2345 #define DEFAULT_Z_MAX_TRAVEL 200.0f // mm
2346 #endif
2347 #if (defined A_AXIS && !defined DEFAULT_A_MAX_TRAVEL) || defined __DOXYGEN__
2348 #define DEFAULT_A_MAX_TRAVEL 200.0f // mm
2349 #endif
2350 #if (defined B_AXIS && !defined DEFAULT_B_MAX_TRAVEL) || defined __DOXYGEN__
2351 #define DEFAULT_B_MAX_TRAVEL 200.0f // mm
2352 #endif
2353 #if (defined C_AXIS && !defined DEFAULT_C_MAX_TRAVEL) || defined __DOXYGEN__
2354 #define DEFAULT_C_MAX_TRAVEL 200.0f // mm
2355 #endif
2356 #if (defined U_AXIS && !defined DEFAULT_U_MAX_TRAVEL) || defined __DOXYGEN__
2357 #define DEFAULT_U_MAX_TRAVEL 200.0f // mm
2358 #endif
2359 #if (defined V_AXIS && !defined DEFAULT_V_MAX_TRAVEL) || defined __DOXYGEN__
2360 #define DEFAULT_V_MAX_TRAVEL 200.0f // mm
2361 #endif
2362 #if (defined W_AXIS && !defined DEFAULT_W_MAX_TRAVEL) || defined __DOXYGEN__
2363 #define DEFAULT_W_MAX_TRAVEL 200.0f // mm
2364 #endif
2366 
2371 #if !defined DEFAULT_X_CURRENT || defined __DOXYGEN__
2372 #define DEFAULT_X_CURRENT 500.0f // mA RMS
2373 #endif
2374 #if !defined DEFAULT_Y_CURRENT || defined __DOXYGEN__
2375 #define DEFAULT_Y_CURRENT 500.0f // mA RMS
2376 #endif
2377 #if !defined DEFAULT_Z_CURRENT || defined __DOXYGEN__
2378 #define DEFAULT_Z_CURRENT 500.0f // mA RMS
2379 #endif
2380 #if (defined A_AXIS && !defined DEFAULT_A_CURRENT) || defined __DOXYGEN__
2381 #define DEFAULT_A_CURRENT 500.0f // mA RMS
2382 #endif
2383 #if (defined B_AXIS && !defined DEFAULT_B_CURRENT) || defined __DOXYGEN__
2384 #define DEFAULT_B_CURRENT 500.0f // mA RMS
2385 #endif
2386 #if (defined C_AXIS && !defined DEFAULT_C_CURRENT) || defined __DOXYGEN__
2387 #define DEFAULT_C_CURRENT 500.0f // mA RMS
2388 #endif
2389 #if (defined U_AXIS && !defined DEFAULT_U_CURRENT) || defined __DOXYGEN__
2390 #define DEFAULT_U_CURRENT 500.0f // mA RMS
2391 #endif
2392 #if (defined V_AXIS && !defined DEFAULT_V_CURRENT) || defined __DOXYGEN__
2393 #define DEFAULT_V_CURRENT 500.0f // mA RMS
2394 #endif
2395 #if (defined W_AXIS && !defined DEFAULT_W_CURRENT) || defined __DOXYGEN__
2396 #define DEFAULT_W_CURRENT 500.0f // mA RMS
2397 #endif
2399 
2400 // Sanity checks
2401 
2402 // N_TOOLS may have been defined on the compiler command line.
2403 #if !defined(N_TOOLS)
2404 #define N_TOOLS 0
2405 #elif N_TOOLS > 32
2406 #undef N_TOOLS
2407 #define N_TOOLS 32
2408 #endif
2409 
2410 #if N_SYS_SPINDLE > N_SPINDLE
2411 #undef N_SYS_SPINDLE
2412 #define N_SYS_SPINDLE N_SPINDLE
2413 #endif
2414 
2415 #if N_SYS_SPINDLE < 1
2416 #undef N_SYS_SPINDLE
2417 #define N_SYS_SPINDLE 1
2418 #endif
2419 
2420 #if N_SYS_SPINDLE > 8
2421 #undef N_SYS_SPINDLE
2422 #define N_SYS_SPINDLE 8
2423 #endif
2424 
2425 #if NGC_EXPRESSIONS_ENABLE && !NGC_PARAMETERS_ENABLE
2426 #undef NGC_PARAMETERS_ENABLE
2427 #define NGC_PARAMETERS_ENABLE On
2428 #endif
2429 
2430 #if (REPORT_WCO_REFRESH_BUSY_COUNT < REPORT_WCO_REFRESH_IDLE_COUNT)
2431  #error "WCO busy refresh is less than idle refresh."
2432 #endif
2433 #if (REPORT_OVERRIDE_REFRESH_BUSY_COUNT < REPORT_OVERRIDE_REFRESH_IDLE_COUNT)
2434  #error "Override busy refresh is less than idle refresh."
2435 #endif
2436 #if (REPORT_WCO_REFRESH_IDLE_COUNT < 2)
2437  #error "WCO refresh must be greater than one."
2438 #endif
2439 #if (REPORT_OVERRIDE_REFRESH_IDLE_COUNT < 1)
2440  #error "Override refresh must be greater than zero."
2441 #endif
2442 
2443 #if DEFAULT_LASER_MODE && DEFAULT_LATHE_MODE
2444 #error "Cannot enable laser and lathe mode at the same time!"
2445 #endif
2446 
2447 #if LATHE_UVW_OPTION && AXIS_REMAP_ABC2UVW
2448 #warning "Cannot enable lathe UVW option when N_AXIS > 6 or ABC words are remapped!"
2449 #undef LATHE_UVW_OPTION
2450 #define LATHE_UVW_OPTION Off
2451 #endif
2452 
2453 #if DEFAULT_CONTROL_SIGNALS_INVERT_MASK < 0
2454 #undef DEFAULT_CONTROL_SIGNALS_INVERT_MASK
2455 #define DEFAULT_CONTROL_SIGNALS_INVERT_MASK SIGNALS_BITMASK
2456 #endif
2457 
2458 #if DEFAULT_LIMIT_SIGNALS_INVERT_MASK < 0
2459 #undef DEFAULT_LIMIT_SIGNALS_INVERT_MASK
2460 #define DEFAULT_LIMIT_SIGNALS_INVERT_MASK AXES_BITMASK
2461 #endif
2462 
2463 #if DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK < 0
2464 #undef DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK
2465 #define DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK AXES_BITMASK
2466 #endif
2467 
2468 #if DEFAULT_STEP_SIGNALS_INVERT_MASK < 0
2469 #undef DEFAULT_STEP_SIGNALS_INVERT_MASK
2470 #define DEFAULT_STEP_SIGNALS_INVERT_MASK AXES_BITMASK
2471 #endif
2472 
2473 #if DEFAULT_ENABLE_SIGNALS_INVERT_MASK < 0
2474 #undef DEFAULT_ENABLE_SIGNALS_INVERT_MASK
2475 #define DEFAULT_ENABLE_SIGNALS_INVERT_MASK AXES_BITMASK
2476 #endif
2477 
2478 #if DEFAULT_SPINDLE_ON_DELAY
2479 #if DEFAULT_SPINDLE_ON_DELAY < 500
2480 #undef DEFAULT_SPINDLE_ON_DELAY
2481 #define DEFAULT_SPINDLE_ON_DELAY 500
2482 #elif DEFAULT_SPINDLE_ON_DELAY > 20000
2483 #undef DEFAULT_SPINDLE_ON_DELAY
2484 #define DEFAULT_SPINDLE_ON_DELAY 20000
2485 #endif
2486 #endif
2487 
2488 #if DEFAULT_COOLANT_ON_DELAY
2489 #if DEFAULT_COOLANT_ON_DELAY < 500
2490 #undef DEFAULT_COOLANT_ON_DELAY
2491 #define DEFAULT_COOLANT_ON_DELAY 500
2492 #elif DEFAULT_COOLANT_ON_DELAY > 20000
2493 #undef DEFAULT_COOLANT_ON_DELAY
2494 #define DEFAULT_COOLANT_ON_DELAY 20000
2495 #endif
2496 #endif
2497 
2498 #if DEFAULT_PARKING_ENABLE > 0
2499  #if DEFAULT_HOMING_FORCE_SET_ORIGIN > 0
2500  #error "DEFAULT_HOMING_FORCE_SET_ORIGIN is not supported with DEFAULT_PARKING_ENABLE at this time."
2501  #endif
2502 #endif
2503 
2504 #if DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL > 0
2505  #if DEFAULT_PARKING_ENABLE < 1
2506  #error "DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL must be enabled with DEFAULT_PARKING_ENABLE."
2507  #endif
2508 #endif
2509 
2564 #endif // _GRBL_CONFIG_H_