Parcourir la source

Add sanity checks to Linear Advance 1.5 (#9873)

Scott Lahteine il y a 7 ans
Parent
révision
118899357d
Aucun compte lié à l'adresse e-mail de l'auteur
2 fichiers modifiés avec 22 ajouts et 7 suppressions
  1. 12
    7
      Marlin/src/gcode/feature/advance/M900.cpp
  2. 10
    0
      Marlin/src/inc/SanityCheck.h

+ 12
- 7
Marlin/src/gcode/feature/advance/M900.cpp Voir le fichier

@@ -34,14 +34,19 @@
34 34
  *  K<factor>                  Set advance K factor
35 35
  */
36 36
 void GcodeSuite::M900() {
37
-    stepper.synchronize();
38
-
39
-    const float newK = parser.floatval('K', -1);
40
-    if (newK >= 0) planner.extruder_advance_K = newK;
41
-
37
+  if (parser.seenval('K')) {
38
+    const float newK = parser.floatval('K');
39
+    if (WITHIN(newK, 0, 10)) {
40
+      stepper.synchronize();
41
+      planner.extruder_advance_K = newK;
42
+    }
43
+    else
44
+      SERIAL_PROTOCOLLNPGM("?K value out of range (0-10).");
45
+  }
46
+  else {
42 47
     SERIAL_ECHO_START();
43
-    SERIAL_ECHOPAIR("Advance K=", planner.extruder_advance_K);
44
-    SERIAL_EOL();
48
+    SERIAL_ECHOLNPAIR("Advance K=", planner.extruder_advance_K);
49
+  }
45 50
 }
46 51
 
47 52
 #endif // LIN_ADVANCE

+ 10
- 0
Marlin/src/inc/SanityCheck.h Voir le fichier

@@ -555,6 +555,16 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
555 555
 #endif
556 556
 
557 557
 /**
558
+ * Linear Advance 1.5 - Check K value range
559
+ */
560
+#if ENABLED(LIN_ADVANCE)
561
+  static_assert(
562
+    WITHIN(LIN_ADVANCE_K, 0, 10),
563
+    "LIN_ADVANCE_K must be a value from 0 to 10 (Changed in LIN_ADVANCE v1.5, Marlin 1.1.9)."
564
+  );
565
+#endif
566
+
567
+/**
558 568
  * Parking Extruder requirements
559 569
  */
560 570
 #if ENABLED(PARKING_EXTRUDER)

Chargement…
Annuler
Enregistrer