Browse Source

Cleanups to gcode.h, use seenval()

Scott Lahteine 8 years ago
parent
commit
12f092c812
4 changed files with 86 additions and 88 deletions
  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 View File

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

+ 63
- 65
Marlin/Marlin_main.cpp View File

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

+ 11
- 11
Marlin/gcode.h View File

132
 
132
 
133
     #define SEEN_TEST(L) TEST(codebits[(L - 'A') >> 3], (L - 'A') & 0x7)
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
     // Code is found in the string. If not found, value_ptr is unchanged.
137
     // Code is found in the string. If not found, value_ptr is unchanged.
138
     // This allows "if (seen('A')||seen('B'))" to use the last-found value.
138
     // This allows "if (seen('A')||seen('B'))" to use the last-found value.
147
 
147
 
148
     #define SEEN_TEST(L) !!strchr(command_args, L)
148
     #define SEEN_TEST(L) !!strchr(command_args, L)
149
 
149
 
150
-  #endif // FASTER_GCODE_PARSER
150
+  #endif // !FASTER_GCODE_PARSER
151
 
151
 
152
   // Populate all fields by parsing a single line of GCode
152
   // Populate all fields by parsing a single line of GCode
153
   // This uses 54 bytes of SRAM to speed up seen/value
153
   // This uses 54 bytes of SRAM to speed up seen/value
157
   FORCE_INLINE static bool has_value() { return value_ptr != NULL; }
157
   FORCE_INLINE static bool has_value() { return value_ptr != NULL; }
158
 
158
 
159
   // Seen and has value
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
   static volatile bool seen_axis() {
162
   static volatile bool seen_axis() {
163
     return SEEN_TEST('X') || SEEN_TEST('Y') || SEEN_TEST('Z') || SEEN_TEST('E');
163
     return SEEN_TEST('X') || SEEN_TEST('Y') || SEEN_TEST('Z') || SEEN_TEST('E');
184
   }
184
   }
185
 
185
 
186
   // Code value as a long or ulong
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
   // Code value for use as time
190
   // Code value for use as time
191
   FORCE_INLINE static millis_t value_millis() { return value_ulong(); }
191
   FORCE_INLINE static millis_t value_millis() { return value_ulong(); }
192
   FORCE_INLINE static millis_t value_millis_from_seconds() { return value_float() * 1000UL; }
192
   FORCE_INLINE static millis_t value_millis_from_seconds() { return value_float() * 1000UL; }
193
 
193
 
194
   // Reduce to fewer bits
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
   // Bool is true with no value or non-zero
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
   // Units modes: Inches, Fahrenheit, Kelvin
202
   // Units modes: Inches, Fahrenheit, Kelvin
203
 
203
 
282
       }
282
       }
283
     }
283
     }
284
 
284
 
285
-  #else
285
+  #else // !TEMPERATURE_UNITS_SUPPORT
286
 
286
 
287
     FORCE_INLINE static float value_celsius()      { return value_float(); }
287
     FORCE_INLINE static float value_celsius()      { return value_float(); }
288
     FORCE_INLINE static float value_celsius_diff() { return value_float(); }
288
     FORCE_INLINE static float value_celsius_diff() { return value_float(); }
289
 
289
 
290
-  #endif
290
+  #endif // !TEMPERATURE_UNITS_SUPPORT
291
 
291
 
292
   FORCE_INLINE static float value_feedrate() { return value_linear_units(); }
292
   FORCE_INLINE static float value_feedrate() { return value_linear_units(); }
293
 
293
 

+ 6
- 6
Marlin/ubl_G29.cpp View File

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

Loading…
Cancel
Save