Переглянути джерело

Cleanups to gcode.h, use seenval()

Scott Lahteine 8 роки тому
джерело
коміт
12f092c812
4 змінених файлів з 86 додано та 88 видалено
  1. 6
    6
      Marlin/G26_Mesh_Validation_Tool.cpp
  2. 63
    65
      Marlin/Marlin_main.cpp
  3. 11
    11
      Marlin/gcode.h
  4. 6
    6
      Marlin/ubl_G29.cpp

+ 6
- 6
Marlin/G26_Mesh_Validation_Tool.cpp Переглянути файл

@@ -638,11 +638,11 @@
638 638
     g26_hotend_temp           = HOTEND_TEMP;
639 639
     g26_prime_flag            = 0;
640 640
 
641
-    g26_ooze_amount           = parser.seen('O') && parser.has_value() ? parser.value_linear_units() : OOZE_AMOUNT;
641
+    g26_ooze_amount           = parser.seenval('O') ? parser.value_linear_units() : OOZE_AMOUNT;
642 642
     g26_keep_heaters_on       = parser.seen('K') && parser.value_bool();
643 643
     g26_continue_with_closest = parser.seen('C') && parser.value_bool();
644 644
 
645
-    if (parser.seen('B')) {
645
+    if (parser.seenval('B')) {
646 646
       g26_bed_temp = parser.value_celsius();
647 647
       if (!WITHIN(g26_bed_temp, 15, 140)) {
648 648
         SERIAL_PROTOCOLLNPGM("?Specified bed temperature not plausible.");
@@ -650,7 +650,7 @@
650 650
       }
651 651
     }
652 652
 
653
-    if (parser.seen('L')) {
653
+    if (parser.seenval('L')) {
654 654
       g26_layer_height = parser.value_linear_units();
655 655
       if (!WITHIN(g26_layer_height, 0.0, 2.0)) {
656 656
         SERIAL_PROTOCOLLNPGM("?Specified layer height not plausible.");
@@ -672,7 +672,7 @@
672 672
       }
673 673
     }
674 674
 
675
-    if (parser.seen('S')) {
675
+    if (parser.seenval('S')) {
676 676
       g26_nozzle = parser.value_float();
677 677
       if (!WITHIN(g26_nozzle, 0.1, 1.0)) {
678 678
         SERIAL_PROTOCOLLNPGM("?Specified nozzle size not plausible.");
@@ -699,7 +699,7 @@
699 699
       }
700 700
     }
701 701
 
702
-    if (parser.seen('F')) {
702
+    if (parser.seenval('F')) {
703 703
       g26_filament_diameter = parser.value_linear_units();
704 704
       if (!WITHIN(g26_filament_diameter, 1.0, 4.0)) {
705 705
         SERIAL_PROTOCOLLNPGM("?Specified filament size not plausible.");
@@ -712,7 +712,7 @@
712 712
 
713 713
     g26_extrusion_multiplier *= g26_filament_diameter * sq(g26_nozzle) / sq(0.3); // Scale up by nozzle size
714 714
 
715
-    if (parser.seen('H')) {
715
+    if (parser.seenval('H')) {
716 716
       g26_hotend_temp = parser.value_celsius();
717 717
       if (!WITHIN(g26_hotend_temp, 165, 280)) {
718 718
         SERIAL_PROTOCOLLNPGM("?Specified nozzle temperature not plausible.");

+ 63
- 65
Marlin/Marlin_main.cpp Переглянути файл

@@ -1277,7 +1277,7 @@ void get_available_commands() {
1277 1277
  * Returns TRUE if the target is invalid
1278 1278
  */
1279 1279
 bool get_target_extruder_from_command(const uint16_t code) {
1280
-  if (parser.seen('T')) {
1280
+  if (parser.seenval('T')) {
1281 1281
     const int8_t e = parser.value_byte();
1282 1282
     if (e >= EXTRUDERS) {
1283 1283
       SERIAL_ECHO_START();
@@ -3135,7 +3135,7 @@ static void homeaxis(const AxisEnum axis) {
3135 3135
       const char* mixing_codes = "ABCDHI";
3136 3136
       byte mix_bits = 0;
3137 3137
       for (uint8_t i = 0; i < MIXING_STEPPERS; i++) {
3138
-        if (parser.seen(mixing_codes[i])) {
3138
+        if (parser.seenval(mixing_codes[i])) {
3139 3139
           SBI(mix_bits, i);
3140 3140
           float v = parser.value_float();
3141 3141
           NOLESS(v, 0.0);
@@ -3304,7 +3304,7 @@ inline void gcode_G0_G1(
3304 3304
       #endif
3305 3305
 
3306 3306
       float arc_offset[2] = { 0.0, 0.0 };
3307
-      if (parser.seen('R')) {
3307
+      if (parser.seenval('R')) {
3308 3308
         const float r = parser.value_linear_units(),
3309 3309
                     p1 = current_position[X_AXIS], q1 = current_position[Y_AXIS],
3310 3310
                     p2 = destination[X_AXIS], q2 = destination[Y_AXIS];
@@ -3321,8 +3321,8 @@ inline void gcode_G0_G1(
3321 3321
         }
3322 3322
       }
3323 3323
       else {
3324
-        if (parser.seen('I')) arc_offset[0] = parser.value_linear_units();
3325
-        if (parser.seen('J')) arc_offset[1] = parser.value_linear_units();
3324
+        if (parser.seenval('I')) arc_offset[0] = parser.value_linear_units();
3325
+        if (parser.seenval('J')) arc_offset[1] = parser.value_linear_units();
3326 3326
       }
3327 3327
 
3328 3328
       if (arc_offset[0] || arc_offset[1]) {
@@ -3358,8 +3358,8 @@ inline void gcode_G0_G1(
3358 3358
 inline void gcode_G4() {
3359 3359
   millis_t dwell_ms = 0;
3360 3360
 
3361
-  if (parser.seen('P')) dwell_ms = parser.value_millis(); // milliseconds to wait
3362
-  if (parser.seen('S')) dwell_ms = parser.value_millis_from_seconds(); // seconds to wait
3361
+  if (parser.seenval('P')) dwell_ms = parser.value_millis(); // milliseconds to wait
3362
+  if (parser.seenval('S')) dwell_ms = parser.value_millis_from_seconds(); // seconds to wait
3363 3363
 
3364 3364
   stepper.synchronize();
3365 3365
   refresh_cmd_timeout();
@@ -4111,7 +4111,7 @@ void home_all_axes() { gcode_G28(true); }
4111 4111
         break;
4112 4112
 
4113 4113
       case MeshSet:
4114
-        if (parser.seen('X')) {
4114
+        if (parser.seenval('X')) {
4115 4115
           px = parser.value_int() - 1;
4116 4116
           if (!WITHIN(px, 0, GRID_MAX_POINTS_X - 1)) {
4117 4117
             SERIAL_PROTOCOLLNPGM("X out of range (1-" STRINGIFY(GRID_MAX_POINTS_X) ").");
@@ -4123,7 +4123,7 @@ void home_all_axes() { gcode_G28(true); }
4123 4123
           return;
4124 4124
         }
4125 4125
 
4126
-        if (parser.seen('Y')) {
4126
+        if (parser.seenval('Y')) {
4127 4127
           py = parser.value_int() - 1;
4128 4128
           if (!WITHIN(py, 0, GRID_MAX_POINTS_Y - 1)) {
4129 4129
             SERIAL_PROTOCOLLNPGM("Y out of range (1-" STRINGIFY(GRID_MAX_POINTS_Y) ").");
@@ -4135,7 +4135,7 @@ void home_all_axes() { gcode_G28(true); }
4135 4135
           return;
4136 4136
         }
4137 4137
 
4138
-        if (parser.seen('Z')) {
4138
+        if (parser.seenval('Z')) {
4139 4139
           mbl.z_values[px][py] = parser.value_linear_units();
4140 4140
         }
4141 4141
         else {
@@ -4145,7 +4145,7 @@ void home_all_axes() { gcode_G28(true); }
4145 4145
         break;
4146 4146
 
4147 4147
       case MeshSetZOffset:
4148
-        if (parser.seen('Z')) {
4148
+        if (parser.seenval('Z')) {
4149 4149
           mbl.z_offset = parser.value_linear_units();
4150 4150
         }
4151 4151
         else {
@@ -4371,17 +4371,17 @@ void home_all_axes() { gcode_G28(true); }
4371 4371
             return;
4372 4372
           }
4373 4373
 
4374
-          const float z = parser.seen('Z') && parser.has_value() ? parser.value_float() : RAW_CURRENT_POSITION(Z);
4374
+          const float z = parser.seenval('Z') ? parser.value_float() : RAW_CURRENT_POSITION(Z);
4375 4375
           if (!WITHIN(z, -10, 10)) {
4376 4376
             SERIAL_ERROR_START();
4377 4377
             SERIAL_ERRORLNPGM("Bad Z value");
4378 4378
             return;
4379 4379
           }
4380 4380
 
4381
-          const float x = parser.seen('X') && parser.has_value() ? parser.value_float() : NAN,
4382
-                      y = parser.seen('Y') && parser.has_value() ? parser.value_float() : NAN;
4383
-          int8_t i = parser.seen('I') && parser.has_value() ? parser.value_byte() : -1,
4384
-                 j = parser.seen('J') && parser.has_value() ? parser.value_byte() : -1;
4381
+          const float x = parser.seenval('X') ? parser.value_float() : NAN,
4382
+                      y = parser.seenval('Y') ? parser.value_float() : NAN;
4383
+          int8_t i = parser.seenval('I') ? parser.value_byte() : -1,
4384
+                 j = parser.seenval('J') ? parser.value_byte() : -1;
4385 4385
 
4386 4386
           if (!isnan(x) && !isnan(y)) {
4387 4387
             // Get nearest i / j from x / y
@@ -4413,7 +4413,7 @@ void home_all_axes() { gcode_G28(true); }
4413 4413
 
4414 4414
       #endif
4415 4415
 
4416
-      verbose_level = parser.seen('V') && parser.has_value() ? parser.value_int() : 0;
4416
+      verbose_level = parser.seenval('V') ? parser.value_int() : 0;
4417 4417
       if (!WITHIN(verbose_level, 0, 4)) {
4418 4418
         SERIAL_PROTOCOLLNPGM("?(V)erbose level is implausible (0-4).");
4419 4419
         return;
@@ -4433,7 +4433,7 @@ void home_all_axes() { gcode_G28(true); }
4433 4433
         // These values may be saved with the completed mesh
4434 4434
         abl_grid_points_x = parser.seen('X') ? parser.value_int() : GRID_MAX_POINTS_X;
4435 4435
         abl_grid_points_y = parser.seen('Y') ? parser.value_int() : GRID_MAX_POINTS_Y;
4436
-        if (parser.seen('P')) abl_grid_points_x = abl_grid_points_y = parser.value_int();
4436
+        if (parser.seenval('P')) abl_grid_points_x = abl_grid_points_y = parser.value_int();
4437 4437
 
4438 4438
         if (abl_grid_points_x < 2 || abl_grid_points_y < 2) {
4439 4439
           SERIAL_PROTOCOLLNPGM("?Number of probe points is implausible (2 minimum).");
@@ -5595,7 +5595,7 @@ void home_all_axes() { gcode_G28(true); }
5595 5595
     // If any axis has enough movement, do the move
5596 5596
     LOOP_XYZ(i)
5597 5597
       if (FABS(destination[i] - current_position[i]) >= G38_MINIMUM_MOVE) {
5598
-        if (!parser.seen('F')) feedrate_mm_s = homing_feedrate(i);
5598
+        if (!parser.seenval('F')) feedrate_mm_s = homing_feedrate(i);
5599 5599
         // If G38.2 fails throw an error
5600 5600
         if (!G38_run_probe() && is_38_2) {
5601 5601
           SERIAL_ERROR_START();
@@ -5616,10 +5616,10 @@ void home_all_axes() { gcode_G28(true); }
5616 5616
    */
5617 5617
   inline void gcode_G42() {
5618 5618
     if (IsRunning()) {
5619
-      const bool hasI = parser.seen('I');
5620
-      const int8_t ix = parser.has_value() ? parser.value_int() : 0;
5621
-      const bool hasJ = parser.seen('J');
5622
-      const int8_t iy = parser.has_value() ? parser.value_int() : 0;
5619
+      const bool hasI = parser.seenval('I');
5620
+      const int8_t ix = hasI ? parser.value_int() : 0;
5621
+      const bool hasJ = parser.seenval('J');
5622
+      const int8_t iy = hasJ ? parser.value_int() : 0;
5623 5623
 
5624 5624
       if ((hasI && !WITHIN(ix, 0, GRID_MAX_POINTS_X - 1)) || (hasJ && !WITHIN(iy, 0, GRID_MAX_POINTS_Y - 1))) {
5625 5625
         SERIAL_ECHOLNPGM(MSG_ERR_MESH_XY);
@@ -5664,12 +5664,12 @@ void home_all_axes() { gcode_G28(true); }
5664 5664
  */
5665 5665
 inline void gcode_G92() {
5666 5666
   bool didXYZ = false,
5667
-       didE = parser.seen('E');
5667
+       didE = parser.seenval('E');
5668 5668
 
5669 5669
   if (!didE) stepper.synchronize();
5670 5670
 
5671 5671
   LOOP_XYZE(i) {
5672
-    if (parser.seen(axis_codes[i])) {
5672
+    if (parser.seenval(axis_codes[i])) {
5673 5673
       #if IS_SCARA
5674 5674
         current_position[i] = parser.value_axis_units((AxisEnum)i);
5675 5675
         if (i != E_AXIS) didXYZ = true;
@@ -5715,11 +5715,11 @@ inline void gcode_G92() {
5715 5715
 
5716 5716
     millis_t ms = 0;
5717 5717
     bool hasP = false, hasS = false;
5718
-    if (parser.seen('P')) {
5718
+    if (parser.seenval('P')) {
5719 5719
       ms = parser.value_millis(); // milliseconds to wait
5720 5720
       hasP = ms > 0;
5721 5721
     }
5722
-    if (parser.seen('S')) {
5722
+    if (parser.seenval('S')) {
5723 5723
       ms = parser.value_millis_from_seconds(); // seconds to wait
5724 5724
       hasS = ms > 0;
5725 5725
     }
@@ -6272,7 +6272,7 @@ inline void gcode_M17() {
6272 6272
    * M26: Set SD Card file index
6273 6273
    */
6274 6274
   inline void gcode_M26() {
6275
-    if (card.cardOK && parser.seen('S'))
6275
+    if (card.cardOK && parser.seenval('S'))
6276 6276
       card.setIndex(parser.value_long());
6277 6277
   }
6278 6278
 
@@ -6334,7 +6334,7 @@ inline void gcode_M31() {
6334 6334
     if (card.cardOK) {
6335 6335
       card.openFile(namestartpos, true, call_procedure);
6336 6336
 
6337
-      if (parser.seen('S'))
6337
+      if (parser.seenval('S'))
6338 6338
         card.setIndex(parser.value_long());
6339 6339
 
6340 6340
       card.startFileprint();
@@ -6370,8 +6370,8 @@ inline void gcode_M31() {
6370 6370
      */
6371 6371
     inline void gcode_M34() {
6372 6372
       if (parser.seen('S')) card.setSortOn(parser.value_bool());
6373
-      if (parser.seen('F')) {
6374
-        int v = parser.value_long();
6373
+      if (parser.seenval('F')) {
6374
+        const int v = parser.value_long();
6375 6375
         card.setSortFolders(v < 0 ? -1 : v > 0 ? 1 : 0);
6376 6376
       }
6377 6377
       //if (parser.seen('R')) card.setSortReverse(parser.value_bool());
@@ -6404,10 +6404,8 @@ static bool pin_is_protected(const int8_t pin) {
6404 6404
  *  S<byte> Pin status from 0 - 255
6405 6405
  */
6406 6406
 inline void gcode_M42() {
6407
-  if (!parser.seen('S')) return;
6408
-
6409
-  const int pin_status = parser.value_int();
6410
-  if (!WITHIN(pin_status, 0, 255)) return;
6407
+  if (!parser.seenval('S')) return;
6408
+  const byte pin_status = parser.value_byte();
6411 6409
 
6412 6410
   int pin_number = parser.seen('P') ? parser.value_int() : LED_PIN;
6413 6411
   if (pin_number < 0) return;
@@ -6666,8 +6664,8 @@ inline void gcode_M42() {
6666 6664
     }
6667 6665
 
6668 6666
     // Get the range of pins to test or watch
6669
-    const uint8_t first_pin = parser.seen('P') ? parser.value_byte() : 0,
6670
-                  last_pin = parser.seen('P') ? first_pin : NUM_DIGITAL_PINS - 1;
6667
+    const uint8_t first_pin = parser.seenval('P') ? parser.value_byte() : 0,
6668
+                  last_pin = parser.seenval('P') ? first_pin : NUM_DIGITAL_PINS - 1;
6671 6669
 
6672 6670
     if (first_pin > last_pin) return;
6673 6671
 
@@ -7026,7 +7024,7 @@ inline void gcode_M104() {
7026 7024
     if (target_extruder != active_extruder) return;
7027 7025
   #endif
7028 7026
 
7029
-  if (parser.seen('S')) {
7027
+  if (parser.seenval('S')) {
7030 7028
     const int16_t temp = parser.value_celsius();
7031 7029
     thermalManager.setTargetHotend(temp, target_extruder);
7032 7030
 
@@ -7153,7 +7151,7 @@ inline void gcode_M105() {
7153 7151
    * M155: Set temperature auto-report interval. M155 S<seconds>
7154 7152
    */
7155 7153
   inline void gcode_M155() {
7156
-    if (parser.seen('S')) {
7154
+    if (parser.seenval('S')) {
7157 7155
       auto_report_temp_interval = parser.value_byte();
7158 7156
       NOMORE(auto_report_temp_interval, 60);
7159 7157
       next_temp_report_ms = millis() + 1000UL * auto_report_temp_interval;
@@ -7240,8 +7238,8 @@ inline void gcode_M109() {
7240 7238
     if (target_extruder != active_extruder) return;
7241 7239
   #endif
7242 7240
 
7243
-  const bool no_wait_for_cooling = parser.seen('S');
7244
-  if (no_wait_for_cooling || parser.seen('R')) {
7241
+  const bool no_wait_for_cooling = parser.seenval('S');
7242
+  if (no_wait_for_cooling || parser.seenval('R')) {
7245 7243
     const int16_t temp = parser.value_celsius();
7246 7244
     thermalManager.setTargetHotend(temp, target_extruder);
7247 7245
 
@@ -7389,8 +7387,8 @@ inline void gcode_M109() {
7389 7387
     if (DEBUGGING(DRYRUN)) return;
7390 7388
 
7391 7389
     LCD_MESSAGEPGM(MSG_BED_HEATING);
7392
-    const bool no_wait_for_cooling = parser.seen('S');
7393
-    if (no_wait_for_cooling || parser.seen('R')) {
7390
+    const bool no_wait_for_cooling = parser.seenval('S');
7391
+    if (no_wait_for_cooling || parser.seenval('R')) {
7394 7392
       thermalManager.setTargetBed(parser.value_celsius());
7395 7393
       #if ENABLED(PRINTJOB_TIMER_AUTOSTART)
7396 7394
         if (parser.value_celsius() > BED_MINTEMP)
@@ -7497,7 +7495,7 @@ inline void gcode_M109() {
7497 7495
  * M110: Set Current Line Number
7498 7496
  */
7499 7497
 inline void gcode_M110() {
7500
-  if (parser.seen('N')) gcode_LastN = parser.value_long();
7498
+  if (parser.seenval('N')) gcode_LastN = parser.value_long();
7501 7499
 }
7502 7500
 
7503 7501
 /**
@@ -7547,7 +7545,7 @@ inline void gcode_M111() {
7547 7545
    *   S<seconds> Optional. Set the keepalive interval.
7548 7546
    */
7549 7547
   inline void gcode_M113() {
7550
-    if (parser.seen('S')) {
7548
+    if (parser.seenval('S')) {
7551 7549
       host_keepalive_interval = parser.value_byte();
7552 7550
       NOMORE(host_keepalive_interval, 60);
7553 7551
     }
@@ -7590,7 +7588,7 @@ inline void gcode_M111() {
7590 7588
  */
7591 7589
 inline void gcode_M140() {
7592 7590
   if (DEBUGGING(DRYRUN)) return;
7593
-  if (parser.seen('S')) thermalManager.setTargetBed(parser.value_celsius());
7591
+  if (parser.seenval('S')) thermalManager.setTargetBed(parser.value_celsius());
7594 7592
 }
7595 7593
 
7596 7594
 #if ENABLED(ULTIPANEL)
@@ -7611,16 +7609,16 @@ inline void gcode_M140() {
7611 7609
     }
7612 7610
     else {
7613 7611
       int v;
7614
-      if (parser.seen('H')) {
7612
+      if (parser.seenval('H')) {
7615 7613
         v = parser.value_int();
7616 7614
         lcd_preheat_hotend_temp[material] = constrain(v, EXTRUDE_MINTEMP, HEATER_0_MAXTEMP - 15);
7617 7615
       }
7618
-      if (parser.seen('F')) {
7616
+      if (parser.seenval('F')) {
7619 7617
         v = parser.value_int();
7620 7618
         lcd_preheat_fan_speed[material] = constrain(v, 0, 255);
7621 7619
       }
7622 7620
       #if TEMP_SENSOR_BED != 0
7623
-        if (parser.seen('B')) {
7621
+        if (parser.seenval('B')) {
7624 7622
           v = parser.value_int();
7625 7623
           lcd_preheat_bed_temp[material] = constrain(v, BED_MINTEMP, BED_MAXTEMP - 15);
7626 7624
         }
@@ -7635,9 +7633,9 @@ inline void gcode_M140() {
7635 7633
    * M149: Set temperature units
7636 7634
    */
7637 7635
   inline void gcode_M149() {
7638
-         if (parser.seen('C')) parser.set_input_temp_units(TEMPUNIT_C);
7639
-    else if (parser.seen('K')) parser.set_input_temp_units(TEMPUNIT_K);
7640
-    else if (parser.seen('F')) parser.set_input_temp_units(TEMPUNIT_F);
7636
+         if (parser.seenval('C')) parser.set_input_temp_units(TEMPUNIT_C);
7637
+    else if (parser.seenval('K')) parser.set_input_temp_units(TEMPUNIT_K);
7638
+    else if (parser.seenval('F')) parser.set_input_temp_units(TEMPUNIT_F);
7641 7639
   }
7642 7640
 #endif
7643 7641
 
@@ -7726,7 +7724,7 @@ inline void gcode_M83() { axis_relative_modes[E_AXIS] = true; }
7726 7724
  * M18, M84: Disable stepper motors
7727 7725
  */
7728 7726
 inline void gcode_M18_M84() {
7729
-  if (parser.seen('S')) {
7727
+  if (parser.seenval('S')) {
7730 7728
     stepper_inactive_time = parser.value_millis_from_seconds();
7731 7729
   }
7732 7730
   else {
@@ -8448,11 +8446,11 @@ inline void gcode_M211() {
8448 8446
   inline void gcode_M218() {
8449 8447
     if (get_target_extruder_from_command(218) || target_extruder == 0) return;
8450 8448
 
8451
-    if (parser.seen('X')) hotend_offset[X_AXIS][target_extruder] = parser.value_linear_units();
8452
-    if (parser.seen('Y')) hotend_offset[Y_AXIS][target_extruder] = parser.value_linear_units();
8449
+    if (parser.seenval('X')) hotend_offset[X_AXIS][target_extruder] = parser.value_linear_units();
8450
+    if (parser.seenval('Y')) hotend_offset[Y_AXIS][target_extruder] = parser.value_linear_units();
8453 8451
 
8454 8452
     #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE)
8455
-      if (parser.seen('Z')) hotend_offset[Z_AXIS][target_extruder] = parser.value_linear_units();
8453
+      if (parser.seenval('Z')) hotend_offset[Z_AXIS][target_extruder] = parser.value_linear_units();
8456 8454
     #endif
8457 8455
 
8458 8456
     SERIAL_ECHO_START();
@@ -8476,7 +8474,7 @@ inline void gcode_M211() {
8476 8474
  * M220: Set speed percentage factor, aka "Feed Rate" (M220 S95)
8477 8475
  */
8478 8476
 inline void gcode_M220() {
8479
-  if (parser.seen('S')) feedrate_percentage = parser.value_int();
8477
+  if (parser.seenval('S')) feedrate_percentage = parser.value_int();
8480 8478
 }
8481 8479
 
8482 8480
 /**
@@ -8484,7 +8482,7 @@ inline void gcode_M220() {
8484 8482
  */
8485 8483
 inline void gcode_M221() {
8486 8484
   if (get_target_extruder_from_command(221)) return;
8487
-  if (parser.seen('S'))
8485
+  if (parser.seenval('S'))
8488 8486
     flow_percentage[target_extruder] = parser.value_int();
8489 8487
 }
8490 8488
 
@@ -9777,14 +9775,14 @@ inline void gcode_M907() {
9777 9775
    *       S# determines MS1 or MS2, X# sets the pin high/low.
9778 9776
    */
9779 9777
   inline void gcode_M351() {
9780
-    if (parser.seen('S')) switch (parser.value_byte()) {
9778
+    if (parser.seenval('S')) switch (parser.value_byte()) {
9781 9779
       case 1:
9782
-        LOOP_XYZE(i) if (parser.seen(axis_codes[i])) stepper.microstep_ms(i, parser.value_byte(), -1);
9783
-        if (parser.seen('B')) stepper.microstep_ms(4, parser.value_byte(), -1);
9780
+        LOOP_XYZE(i) if (parser.seenval(axis_codes[i])) stepper.microstep_ms(i, parser.value_byte(), -1);
9781
+        if (parser.seenval('B')) stepper.microstep_ms(4, parser.value_byte(), -1);
9784 9782
         break;
9785 9783
       case 2:
9786
-        LOOP_XYZE(i) if (parser.seen(axis_codes[i])) stepper.microstep_ms(i, -1, parser.value_byte());
9787
-        if (parser.seen('B')) stepper.microstep_ms(4, -1, parser.value_byte());
9784
+        LOOP_XYZE(i) if (parser.seenval(axis_codes[i])) stepper.microstep_ms(i, -1, parser.value_byte());
9785
+        if (parser.seenval('B')) stepper.microstep_ms(4, -1, parser.value_byte());
9788 9786
         break;
9789 9787
     }
9790 9788
     stepper.microstep_readings();
@@ -9827,8 +9825,8 @@ inline void gcode_M907() {
9827 9825
 inline void gcode_M355() {
9828 9826
   #if HAS_CASE_LIGHT
9829 9827
     uint8_t args = 0;
9830
-    if (parser.seen('P')) ++args, case_light_brightness = parser.value_byte();
9831
-    if (parser.seen('S')) ++args, case_light_on = parser.value_bool();
9828
+    if (parser.seenval('P')) ++args, case_light_brightness = parser.value_byte();
9829
+    if (parser.seenval('S')) ++args, case_light_on = parser.value_bool();
9832 9830
     if (args) update_case_light();
9833 9831
 
9834 9832
     // always report case light status

+ 11
- 11
Marlin/gcode.h Переглянути файл

@@ -132,7 +132,7 @@ public:
132 132
 
133 133
     #define SEEN_TEST(L) TEST(codebits[(L - 'A') >> 3], (L - 'A') & 0x7)
134 134
 
135
-  #else
135
+  #else // !FASTER_GCODE_PARSER
136 136
 
137 137
     // Code is found in the string. If not found, value_ptr is unchanged.
138 138
     // This allows "if (seen('A')||seen('B'))" to use the last-found value.
@@ -147,7 +147,7 @@ public:
147 147
 
148 148
     #define SEEN_TEST(L) !!strchr(command_args, L)
149 149
 
150
-  #endif // FASTER_GCODE_PARSER
150
+  #endif // !FASTER_GCODE_PARSER
151 151
 
152 152
   // Populate all fields by parsing a single line of GCode
153 153
   // This uses 54 bytes of SRAM to speed up seen/value
@@ -157,7 +157,7 @@ public:
157 157
   FORCE_INLINE static bool has_value() { return value_ptr != NULL; }
158 158
 
159 159
   // Seen and has value
160
-  FORCE_INLINE static bool seenval(const char c) { return seen(c) && has_value(); }
160
+  inline static bool seenval(const char c) { return seen(c) && has_value(); }
161 161
 
162 162
   static volatile bool seen_axis() {
163 163
     return SEEN_TEST('X') || SEEN_TEST('Y') || SEEN_TEST('Z') || SEEN_TEST('E');
@@ -184,20 +184,20 @@ public:
184 184
   }
185 185
 
186 186
   // Code value as a long or ulong
187
-  inline          static long value_long()  { return value_ptr ? strtol(value_ptr, NULL, 10) : 0L; }
188
-  inline unsigned static long value_ulong() { return value_ptr ? strtoul(value_ptr, NULL, 10) : 0UL; }
187
+  inline static int32_t value_long() { return value_ptr ? strtol(value_ptr, NULL, 10) : 0L; }
188
+  inline static uint32_t value_ulong() { return value_ptr ? strtoul(value_ptr, NULL, 10) : 0UL; }
189 189
 
190 190
   // Code value for use as time
191 191
   FORCE_INLINE static millis_t value_millis() { return value_ulong(); }
192 192
   FORCE_INLINE static millis_t value_millis_from_seconds() { return value_float() * 1000UL; }
193 193
 
194 194
   // Reduce to fewer bits
195
-  FORCE_INLINE static int value_int()    { return (int)value_long(); }
196
-  FORCE_INLINE uint16_t value_ushort()   { return (uint16_t)value_long(); }
197
-  inline static uint8_t value_byte()     { return (uint8_t)(constrain(value_long(), 0, 255)); }
195
+  FORCE_INLINE static int16_t value_int() { return (int16_t)value_long(); }
196
+  FORCE_INLINE static uint16_t value_ushort() { return (uint16_t)value_long(); }
197
+  inline static uint8_t value_byte() { return (uint8_t)constrain(value_long(), 0, 255); }
198 198
 
199 199
   // Bool is true with no value or non-zero
200
-  inline static bool value_bool()        { return !has_value() || value_byte(); }
200
+  inline static bool value_bool() { return !has_value() || value_byte(); }
201 201
 
202 202
   // Units modes: Inches, Fahrenheit, Kelvin
203 203
 
@@ -282,12 +282,12 @@ public:
282 282
       }
283 283
     }
284 284
 
285
-  #else
285
+  #else // !TEMPERATURE_UNITS_SUPPORT
286 286
 
287 287
     FORCE_INLINE static float value_celsius()      { return value_float(); }
288 288
     FORCE_INLINE static float value_celsius_diff() { return value_float(); }
289 289
 
290
-  #endif
290
+  #endif // !TEMPERATURE_UNITS_SUPPORT
291 291
 
292 292
   FORCE_INLINE static float value_feedrate() { return value_linear_units(); }
293 293
 

+ 6
- 6
Marlin/ubl_G29.cpp Переглянути файл

@@ -314,7 +314,7 @@
314 314
 
315 315
     // Check for commands that require the printer to be homed
316 316
     if (axis_unhomed_error()) {
317
-      const int8_t p_val = parser.seen('P') && parser.has_value() ? parser.value_int() : -1;
317
+      const int8_t p_val = parser.seenval('P') ? parser.value_int() : -1;
318 318
       if (p_val == 1 || p_val == 2 || p_val == 4 || parser.seen('J'))
319 319
         home_all_axes();
320 320
     }
@@ -492,7 +492,7 @@
492 492
               return;
493 493
             }
494 494
 
495
-            const float height = parser.seen('H') && parser.has_value() ? parser.value_float() : Z_CLEARANCE_BETWEEN_PROBES;
495
+            const float height = parser.seenval('H') ? parser.value_float() : Z_CLEARANCE_BETWEEN_PROBES;
496 496
             manually_probe_remaining_mesh(g29_x_pos, g29_y_pos, height, g29_card_thickness, parser.seen('T'));
497 497
 
498 498
             SERIAL_PROTOCOLLNPGM("G29 P2 finished.");
@@ -1094,9 +1094,9 @@
1094 1094
     g29_constant = 0.0;
1095 1095
     g29_repetition_cnt = 0;
1096 1096
 
1097
-    g29_x_flag = parser.seen('X') && parser.has_value();
1097
+    g29_x_flag = parser.seenval('X');
1098 1098
     g29_x_pos = g29_x_flag ? parser.value_float() : current_position[X_AXIS];
1099
-    g29_y_flag = parser.seen('Y') && parser.has_value();
1099
+    g29_y_flag = parser.seenval('Y');
1100 1100
     g29_y_pos = g29_y_flag ? parser.value_float() : current_position[Y_AXIS];
1101 1101
 
1102 1102
     if (parser.seen('R')) {
@@ -1170,7 +1170,7 @@
1170 1170
       g29_constant = parser.value_float();
1171 1171
 
1172 1172
     #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
1173
-      if (parser.seen('F') && parser.has_value()) {
1173
+      if (parser.seenval('F')) {
1174 1174
         const float fh = parser.value_float();
1175 1175
         if (!WITHIN(fh, 0.0, 100.0)) {
1176 1176
           SERIAL_PROTOCOLLNPGM("?(F)ade height for Bed Level Correction not plausible.\n");
@@ -1180,7 +1180,7 @@
1180 1180
       }
1181 1181
     #endif
1182 1182
 
1183
-    g29_map_type = parser.seen('T') && parser.has_value() ? parser.value_int() : 0;
1183
+    g29_map_type = parser.seenval('T') ? parser.value_int() : 0;
1184 1184
     if (!WITHIN(g29_map_type, 0, 2)) {
1185 1185
       SERIAL_PROTOCOLLNPGM("Invalid map type.\n");
1186 1186
       return UBL_ERR;

Завантаження…
Відмінити
Зберегти