Browse Source

🔧 Add MANUAL_FEEDRATE sanity-check

Scott Lahteine 3 years ago
parent
commit
02ae11ed72
1 changed files with 40 additions and 58 deletions
  1. 40
    58
      Marlin/src/inc/SanityCheck.h

+ 40
- 58
Marlin/src/inc/SanityCheck.h View File

@@ -3282,9 +3282,10 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
3282 3282
 constexpr float sanity_arr_1[] = DEFAULT_AXIS_STEPS_PER_UNIT,
3283 3283
                 sanity_arr_2[] = DEFAULT_MAX_FEEDRATE,
3284 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 3289
 #if HAS_MULTI_EXTRUDER
3289 3290
   #define _EXTRA_NOTE " (Did you forget to enable DISTINCT_E_FACTORS?)"
3290 3291
 #else
@@ -3293,68 +3294,49 @@ constexpr float sanity_arr_1[] = DEFAULT_AXIS_STEPS_PER_UNIT,
3293 3294
 
3294 3295
 static_assert(COUNT(sanity_arr_1) >= LOGICAL_AXES,  "DEFAULT_AXIS_STEPS_PER_UNIT requires " _LOGICAL_AXES_STR "elements.");
3295 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 3299
 static_assert(COUNT(sanity_arr_2) >= LOGICAL_AXES,  "DEFAULT_MAX_FEEDRATE requires " _LOGICAL_AXES_STR "elements.");
3302 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 3303
 static_assert(COUNT(sanity_arr_3) >= LOGICAL_AXES,  "DEFAULT_MAX_ACCELERATION requires " _LOGICAL_AXES_STR "elements.");
3309 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 3340
 #undef _EXTRA_NOTE
3359 3341
 
3360 3342
 #if BOTH(CNC_COORDINATE_SYSTEMS, NO_WORKSPACE_OFFSETS)

Loading…
Cancel
Save