|
|
|
|
3282
|
constexpr float sanity_arr_1[] = DEFAULT_AXIS_STEPS_PER_UNIT,
|
3282
|
constexpr float sanity_arr_1[] = DEFAULT_AXIS_STEPS_PER_UNIT,
|
3283
|
sanity_arr_2[] = DEFAULT_MAX_FEEDRATE,
|
3283
|
sanity_arr_2[] = DEFAULT_MAX_FEEDRATE,
|
3284
|
sanity_arr_3[] = DEFAULT_MAX_ACCELERATION,
|
3284
|
sanity_arr_3[] = DEFAULT_MAX_ACCELERATION,
|
3285
|
- sanity_arr_7[] = HOMING_FEEDRATE_MM_M;
|
|
|
|
|
3285
|
+ sanity_arr_4[] = HOMING_FEEDRATE_MM_M;
|
3286
|
|
3286
|
|
3287
|
-#define _ARR_TEST(N,I) (sanity_arr_##N[_MIN(I,int(COUNT(sanity_arr_##N))-1)] > 0)
|
|
|
|
|
3287
|
+#define __PLUS_TEST(I,A) && (sanity_arr_##A[_MIN(I,signed(COUNT(sanity_arr_##A)-1))] > 0)
|
|
|
3288
|
+#define _PLUS_TEST(A) (1 REPEAT2(14,__PLUS_TEST,A))
|
3288
|
#if HAS_MULTI_EXTRUDER
|
3289
|
#if HAS_MULTI_EXTRUDER
|
3289
|
#define _EXTRA_NOTE " (Did you forget to enable DISTINCT_E_FACTORS?)"
|
3290
|
#define _EXTRA_NOTE " (Did you forget to enable DISTINCT_E_FACTORS?)"
|
3290
|
#else
|
3291
|
#else
|
|
|
|
|
3293
|
|
3294
|
|
3294
|
static_assert(COUNT(sanity_arr_1) >= LOGICAL_AXES, "DEFAULT_AXIS_STEPS_PER_UNIT requires " _LOGICAL_AXES_STR "elements.");
|
3295
|
static_assert(COUNT(sanity_arr_1) >= LOGICAL_AXES, "DEFAULT_AXIS_STEPS_PER_UNIT requires " _LOGICAL_AXES_STR "elements.");
|
3295
|
static_assert(COUNT(sanity_arr_1) <= DISTINCT_AXES, "DEFAULT_AXIS_STEPS_PER_UNIT has too many elements." _EXTRA_NOTE);
|
3296
|
static_assert(COUNT(sanity_arr_1) <= DISTINCT_AXES, "DEFAULT_AXIS_STEPS_PER_UNIT has too many elements." _EXTRA_NOTE);
|
3296
|
-static_assert( _ARR_TEST(1,0) && _ARR_TEST(1,1) && _ARR_TEST(1,2)
|
|
|
3297
|
- && _ARR_TEST(1,3) && _ARR_TEST(1,4) && _ARR_TEST(1,5)
|
|
|
3298
|
- && _ARR_TEST(1,6) && _ARR_TEST(1,7) && _ARR_TEST(1,8),
|
|
|
3299
|
- "DEFAULT_AXIS_STEPS_PER_UNIT values must be positive.");
|
|
|
|
|
3297
|
+static_assert(_PLUS_TEST(1), "DEFAULT_AXIS_STEPS_PER_UNIT values must be positive.");
|
3300
|
|
3298
|
|
3301
|
static_assert(COUNT(sanity_arr_2) >= LOGICAL_AXES, "DEFAULT_MAX_FEEDRATE requires " _LOGICAL_AXES_STR "elements.");
|
3299
|
static_assert(COUNT(sanity_arr_2) >= LOGICAL_AXES, "DEFAULT_MAX_FEEDRATE requires " _LOGICAL_AXES_STR "elements.");
|
3302
|
static_assert(COUNT(sanity_arr_2) <= DISTINCT_AXES, "DEFAULT_MAX_FEEDRATE has too many elements." _EXTRA_NOTE);
|
3300
|
static_assert(COUNT(sanity_arr_2) <= DISTINCT_AXES, "DEFAULT_MAX_FEEDRATE has too many elements." _EXTRA_NOTE);
|
3303
|
-static_assert( _ARR_TEST(2,0) && _ARR_TEST(2,1) && _ARR_TEST(2,2)
|
|
|
3304
|
- && _ARR_TEST(2,3) && _ARR_TEST(2,4) && _ARR_TEST(2,5)
|
|
|
3305
|
- && _ARR_TEST(2,6) && _ARR_TEST(2,7) && _ARR_TEST(2,8),
|
|
|
3306
|
- "DEFAULT_MAX_FEEDRATE values must be positive.");
|
|
|
|
|
3301
|
+static_assert(_PLUS_TEST(2), "DEFAULT_MAX_FEEDRATE values must be positive.");
|
3307
|
|
3302
|
|
3308
|
static_assert(COUNT(sanity_arr_3) >= LOGICAL_AXES, "DEFAULT_MAX_ACCELERATION requires " _LOGICAL_AXES_STR "elements.");
|
3303
|
static_assert(COUNT(sanity_arr_3) >= LOGICAL_AXES, "DEFAULT_MAX_ACCELERATION requires " _LOGICAL_AXES_STR "elements.");
|
3309
|
static_assert(COUNT(sanity_arr_3) <= DISTINCT_AXES, "DEFAULT_MAX_ACCELERATION has too many elements." _EXTRA_NOTE);
|
3304
|
static_assert(COUNT(sanity_arr_3) <= DISTINCT_AXES, "DEFAULT_MAX_ACCELERATION has too many elements." _EXTRA_NOTE);
|
3310
|
-static_assert( _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2)
|
|
|
3311
|
- && _ARR_TEST(3,3) && _ARR_TEST(3,4) && _ARR_TEST(3,5)
|
|
|
3312
|
- && _ARR_TEST(3,6) && _ARR_TEST(3,7) && _ARR_TEST(3,8),
|
|
|
3313
|
- "DEFAULT_MAX_ACCELERATION values must be positive.");
|
|
|
3314
|
-
|
|
|
3315
|
-static_assert(COUNT(sanity_arr_7) == LINEAR_AXES, "HOMING_FEEDRATE_MM_M requires " _LINEAR_AXES_STR "elements (and no others).");
|
|
|
3316
|
-static_assert( _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2)
|
|
|
3317
|
- && _ARR_TEST(3,3) && _ARR_TEST(3,4) && _ARR_TEST(3,5)
|
|
|
3318
|
- && _ARR_TEST(3,6) && _ARR_TEST(3,7) && _ARR_TEST(3,8),
|
|
|
3319
|
- "HOMING_FEEDRATE_MM_M values must be positive.");
|
|
|
3320
|
-
|
|
|
3321
|
-#if ENABLED(LIMITED_MAX_ACCEL_EDITING)
|
|
|
3322
|
- #ifdef MAX_ACCEL_EDIT_VALUES
|
|
|
3323
|
- constexpr float sanity_arr_4[] = MAX_ACCEL_EDIT_VALUES;
|
|
|
3324
|
- static_assert(COUNT(sanity_arr_4) >= LOGICAL_AXES, "MAX_ACCEL_EDIT_VALUES requires " _LOGICAL_AXES_STR "elements.");
|
|
|
3325
|
- static_assert(COUNT(sanity_arr_4) <= LOGICAL_AXES, "MAX_ACCEL_EDIT_VALUES has too many elements. " _LOGICAL_AXES_STR "elements only.");
|
|
|
3326
|
- static_assert( _ARR_TEST(4,0) && _ARR_TEST(4,1) && _ARR_TEST(4,2)
|
|
|
3327
|
- && _ARR_TEST(4,3) && _ARR_TEST(4,4) && _ARR_TEST(4,5)
|
|
|
3328
|
- && _ARR_TEST(4,6) && _ARR_TEST(4,7) && _ARR_TEST(4,8),
|
|
|
3329
|
- "MAX_ACCEL_EDIT_VALUES values must be positive.");
|
|
|
3330
|
- #endif
|
|
|
3331
|
-#endif
|
|
|
3332
|
-
|
|
|
3333
|
-#if ENABLED(LIMITED_MAX_FR_EDITING)
|
|
|
3334
|
- #ifdef MAX_FEEDRATE_EDIT_VALUES
|
|
|
3335
|
- constexpr float sanity_arr_5[] = MAX_FEEDRATE_EDIT_VALUES;
|
|
|
3336
|
- static_assert(COUNT(sanity_arr_5) >= LOGICAL_AXES, "MAX_FEEDRATE_EDIT_VALUES requires " _LOGICAL_AXES_STR "elements.");
|
|
|
3337
|
- static_assert(COUNT(sanity_arr_5) <= LOGICAL_AXES, "MAX_FEEDRATE_EDIT_VALUES has too many elements. " _LOGICAL_AXES_STR "elements only.");
|
|
|
3338
|
- static_assert( _ARR_TEST(5,0) && _ARR_TEST(5,1) && _ARR_TEST(5,2)
|
|
|
3339
|
- && _ARR_TEST(5,3) && _ARR_TEST(5,4) && _ARR_TEST(5,5)
|
|
|
3340
|
- && _ARR_TEST(5,6) && _ARR_TEST(5,7) && _ARR_TEST(5,8),
|
|
|
3341
|
- "MAX_FEEDRATE_EDIT_VALUES values must be positive.");
|
|
|
3342
|
- #endif
|
|
|
3343
|
-#endif
|
|
|
3344
|
-
|
|
|
3345
|
-#if ENABLED(LIMITED_JERK_EDITING)
|
|
|
3346
|
- #ifdef MAX_JERK_EDIT_VALUES
|
|
|
3347
|
- constexpr float sanity_arr_6[] = MAX_JERK_EDIT_VALUES;
|
|
|
3348
|
- static_assert(COUNT(sanity_arr_6) >= LOGICAL_AXES, "MAX_JERK_EDIT_VALUES requires " _LOGICAL_AXES_STR "elements.");
|
|
|
3349
|
- static_assert(COUNT(sanity_arr_6) <= LOGICAL_AXES, "MAX_JERK_EDIT_VALUES has too many elements. " _LOGICAL_AXES_STR "elements only.");
|
|
|
3350
|
- static_assert( _ARR_TEST(6,0) && _ARR_TEST(6,1) && _ARR_TEST(6,2)
|
|
|
3351
|
- && _ARR_TEST(6,3) && _ARR_TEST(6,4) && _ARR_TEST(6,5)
|
|
|
3352
|
- && _ARR_TEST(6,6) && _ARR_TEST(6,7) && _ARR_TEST(6,8),
|
|
|
3353
|
- "MAX_JERK_EDIT_VALUES values must be positive.");
|
|
|
3354
|
- #endif
|
|
|
3355
|
-#endif
|
|
|
3356
|
-
|
|
|
3357
|
-#undef _ARR_TEST
|
|
|
|
|
3305
|
+static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive.");
|
|
|
3306
|
+
|
|
|
3307
|
+static_assert(COUNT(sanity_arr_4) == LINEAR_AXES, "HOMING_FEEDRATE_MM_M requires " _LINEAR_AXES_STR "elements (and no others).");
|
|
|
3308
|
+static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive.");
|
|
|
3309
|
+
|
|
|
3310
|
+#ifdef MAX_ACCEL_EDIT_VALUES
|
|
|
3311
|
+ constexpr float sanity_arr_5[] = MAX_ACCEL_EDIT_VALUES;
|
|
|
3312
|
+ static_assert(COUNT(sanity_arr_5) >= LOGICAL_AXES, "MAX_ACCEL_EDIT_VALUES requires " _LOGICAL_AXES_STR "elements.");
|
|
|
3313
|
+ static_assert(COUNT(sanity_arr_5) <= LOGICAL_AXES, "MAX_ACCEL_EDIT_VALUES has too many elements. " _LOGICAL_AXES_STR "elements only.");
|
|
|
3314
|
+ static_assert(_PLUS_TEST(5), "MAX_ACCEL_EDIT_VALUES values must be positive.");
|
|
|
3315
|
+#endif
|
|
|
3316
|
+
|
|
|
3317
|
+#ifdef MAX_FEEDRATE_EDIT_VALUES
|
|
|
3318
|
+ constexpr float sanity_arr_6[] = MAX_FEEDRATE_EDIT_VALUES;
|
|
|
3319
|
+ static_assert(COUNT(sanity_arr_6) >= LOGICAL_AXES, "MAX_FEEDRATE_EDIT_VALUES requires " _LOGICAL_AXES_STR "elements.");
|
|
|
3320
|
+ static_assert(COUNT(sanity_arr_6) <= LOGICAL_AXES, "MAX_FEEDRATE_EDIT_VALUES has too many elements. " _LOGICAL_AXES_STR "elements only.");
|
|
|
3321
|
+ static_assert(_PLUS_TEST(6), "MAX_FEEDRATE_EDIT_VALUES values must be positive.");
|
|
|
3322
|
+#endif
|
|
|
3323
|
+
|
|
|
3324
|
+#ifdef MAX_JERK_EDIT_VALUES
|
|
|
3325
|
+ constexpr float sanity_arr_7[] = MAX_JERK_EDIT_VALUES;
|
|
|
3326
|
+ static_assert(COUNT(sanity_arr_7) >= LOGICAL_AXES, "MAX_JERK_EDIT_VALUES requires " _LOGICAL_AXES_STR "elements.");
|
|
|
3327
|
+ static_assert(COUNT(sanity_arr_7) <= LOGICAL_AXES, "MAX_JERK_EDIT_VALUES has too many elements. " _LOGICAL_AXES_STR "elements only.");
|
|
|
3328
|
+ static_assert(_PLUS_TEST(7), "MAX_JERK_EDIT_VALUES values must be positive.");
|
|
|
3329
|
+#endif
|
|
|
3330
|
+
|
|
|
3331
|
+#ifdef MANUAL_FEEDRATE
|
|
|
3332
|
+ constexpr float sanity_arr_8[] = MANUAL_FEEDRATE;
|
|
|
3333
|
+ static_assert(COUNT(sanity_arr_8) >= LOGICAL_AXES, "MANUAL_FEEDRATE requires " _LOGICAL_AXES_STR "elements.");
|
|
|
3334
|
+ static_assert(COUNT(sanity_arr_8) <= LOGICAL_AXES, "MANUAL_FEEDRATE has too many elements. " _LOGICAL_AXES_STR "elements only.");
|
|
|
3335
|
+ static_assert(_PLUS_TEST(8), "MANUAL_FEEDRATE values must be positive.");
|
|
|
3336
|
+#endif
|
|
|
3337
|
+
|
|
|
3338
|
+#undef __PLUS_TEST
|
|
|
3339
|
+#undef _PLUS_TEST
|
3358
|
#undef _EXTRA_NOTE
|
3340
|
#undef _EXTRA_NOTE
|
3359
|
|
3341
|
|
3360
|
#if BOTH(CNC_COORDINATE_SYSTEMS, NO_WORKSPACE_OFFSETS)
|
3342
|
#if BOTH(CNC_COORDINATE_SYSTEMS, NO_WORKSPACE_OFFSETS)
|