Skip to content

Commit 5fea79f

Browse files
🔧 Fix ROTATIONAL_AXIS_GANG
Co-Authored-By: DerAndere <[email protected]>
1 parent 18e65f5 commit 5fea79f

File tree

4 files changed

+27
-20
lines changed

4 files changed

+27
-20
lines changed

Marlin/src/gcode/parser.h

+18-14
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,17 @@ class GCodeParser {
288288
// Bool is true with no value or non-zero
289289
static bool value_bool() { return !has_value() || !!value_byte(); }
290290

291+
static constexpr bool axis_is_rotational(const AxisEnum axis) {
292+
return (false
293+
|| TERN0(AXIS4_ROTATES, axis == I_AXIS)
294+
|| TERN0(AXIS5_ROTATES, axis == J_AXIS)
295+
|| TERN0(AXIS6_ROTATES, axis == K_AXIS)
296+
|| TERN0(AXIS7_ROTATES, axis == U_AXIS)
297+
|| TERN0(AXIS8_ROTATES, axis == V_AXIS)
298+
|| TERN0(AXIS9_ROTATES, axis == W_AXIS)
299+
);
300+
}
301+
291302
// Units modes: Inches, Fahrenheit, Kelvin
292303

293304
#if ENABLED(INCH_MODE_SUPPORT)
@@ -307,14 +318,7 @@ class GCodeParser {
307318
}
308319

309320
static float axis_unit_factor(const AxisEnum axis) {
310-
if (false
311-
|| TERN0(AXIS4_ROTATES, axis == I_AXIS)
312-
|| TERN0(AXIS5_ROTATES, axis == J_AXIS)
313-
|| TERN0(AXIS6_ROTATES, axis == K_AXIS)
314-
|| TERN0(AXIS7_ROTATES, axis == U_AXIS)
315-
|| TERN0(AXIS8_ROTATES, axis == V_AXIS)
316-
|| TERN0(AXIS9_ROTATES, axis == W_AXIS)
317-
) return 1.0f;
321+
if (axis_is_rotational(axis)) return 1.0f;
318322
#if HAS_EXTRUDERS
319323
if (axis >= E_AXIS && volumetric_enabled) return volumetric_unit_factor;
320324
#endif
@@ -327,12 +331,12 @@ class GCodeParser {
327331

328332
#else
329333

330-
static float mm_to_linear_unit(const_float_t mm) { return mm; }
331-
static float mm_to_volumetric_unit(const_float_t mm) { return mm; }
334+
static constexpr float mm_to_linear_unit(const_float_t mm) { return mm; }
335+
static constexpr float mm_to_volumetric_unit(const_float_t mm) { return mm; }
332336

333-
static float linear_value_to_mm(const_float_t v) { return v; }
334-
static float axis_value_to_mm(const AxisEnum, const float v) { return v; }
335-
static float per_axis_value(const AxisEnum, const float v) { return v; }
337+
static constexpr float linear_value_to_mm(const_float_t v) { return v; }
338+
static constexpr float axis_value_to_mm(const AxisEnum, const float v) { return v; }
339+
static constexpr float per_axis_value(const AxisEnum, const float v) { return v; }
336340

337341
#endif
338342

@@ -402,7 +406,7 @@ class GCodeParser {
402406

403407
#else // !TEMPERATURE_UNITS_SUPPORT
404408

405-
static float to_temp_units(int16_t c) { return (float)c; }
409+
static constexpr float to_temp_units(int16_t c) { return (float)c; }
406410

407411
static celsius_t value_celsius() { return value_int(); }
408412
static celsius_t value_celsius_diff() { return value_int(); }

Marlin/src/inc/Conditionals_LCD.h

+4
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,10 @@
507507
#define ROTATIONAL_AXES 0
508508
#endif
509509

510+
#if ROTATIONAL_AXES
511+
#define HAS_ROTATIONAL_AXES 1
512+
#endif
513+
510514
/**
511515
* Number of Secondary Linear Axes (e.g., UVW)
512516
* All secondary axes for which AXIS*_ROTATES is not defined.

Marlin/src/inc/Conditionals_adv.h

+5
Original file line numberDiff line numberDiff line change
@@ -1351,6 +1351,11 @@
13511351
#undef MANUAL_MOVE_DISTANCE_IN
13521352
#endif
13531353

1354+
// Clean up if no rotational axes exist
1355+
#if !HAS_ROTATIONAL_AXES
1356+
#undef MANUAL_MOVE_DISTANCE_DEG
1357+
#endif
1358+
13541359
// Power-Loss Recovery
13551360
#if ENABLED(POWER_LOSS_RECOVERY) && defined(PLR_BED_THRESHOLD)
13561361
#define HAS_PLR_BED_THRESHOLD 1

Marlin/src/inc/Conditionals_post.h

-6
Original file line numberDiff line numberDiff line change
@@ -96,12 +96,6 @@
9696
#define AXIS9_NAME 'W'
9797
#endif
9898

99-
#if ANY(AXIS4_ROTATES, AXIS5_ROTATES, AXIS6_ROTATES, AXIS7_ROTATES, AXIS8_ROTATES, AXIS9_ROTATES)
100-
#define HAS_ROTATIONAL_AXES 1
101-
#else
102-
#undef MANUAL_MOVE_DISTANCE_DEG
103-
#endif
104-
10599
#if HAS_X_AXIS
106100
#define X_MAX_LENGTH (X_MAX_POS - (X_MIN_POS))
107101
#endif

0 commit comments

Comments
 (0)