Skip to content

Commit 1f9bfc5

Browse files
ellenspalextricalthinkyhead
authored
🚸 Optional X-Axis (#25418)
Co-authored-by: alextrical <[email protected]> Co-authored-by: Scott Lahteine <[email protected]>
1 parent 3e9848f commit 1f9bfc5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+1169
-893
lines changed

Marlin/src/core/language.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -324,10 +324,12 @@
324324
//
325325
// Endstop Names used by Endstops::report_states
326326
//
327-
#define STR_X_MIN "x_min"
328-
#define STR_X_MAX "x_max"
329-
#define STR_X2_MIN "x2_min"
330-
#define STR_X2_MAX "x2_max"
327+
#if HAS_X_AXIS
328+
#define STR_X_MIN "x_min"
329+
#define STR_X_MAX "x_max"
330+
#define STR_X2_MIN "x2_min"
331+
#define STR_X2_MAX "x2_max"
332+
#endif
331333

332334
#if HAS_Y_AXIS
333335
#define STR_Y_MIN "y_min"

Marlin/src/core/serial.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,12 @@ void print_bin(uint16_t val) {
9696
}
9797
}
9898

99-
void print_pos(NUM_AXIS_ARGS(const_float_t), FSTR_P const prefix/*=nullptr*/, FSTR_P const suffix/*=nullptr*/) {
99+
void print_pos(NUM_AXIS_ARGS_(const_float_t) FSTR_P const prefix/*=nullptr*/, FSTR_P const suffix/*=nullptr*/) {
100100
if (prefix) serial_print(prefix);
101-
SERIAL_ECHOPGM_P(
102-
LIST_N(DOUBLE(NUM_AXES), SP_X_STR, x, SP_Y_STR, y, SP_Z_STR, z, SP_I_STR, i, SP_J_STR, j, SP_K_STR, k, SP_U_STR, u, SP_V_STR, v, SP_W_STR, w)
103-
);
101+
#if NUM_AXES
102+
SERIAL_ECHOPGM_P(
103+
LIST_N(DOUBLE(NUM_AXES), SP_X_STR, x, SP_Y_STR, y, SP_Z_STR, z, SP_I_STR, i, SP_J_STR, j, SP_K_STR, k, SP_U_STR, u, SP_V_STR, v, SP_W_STR, w)
104+
);
105+
#endif
104106
if (suffix) serial_print(suffix); else SERIAL_EOL();
105107
}

Marlin/src/core/serial.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,10 +340,10 @@ void serial_spaces(uint8_t count);
340340
void serial_offset(const_float_t v, const uint8_t sp=0); // For v==0 draw space (sp==1) or plus (sp==2)
341341

342342
void print_bin(const uint16_t val);
343-
void print_pos(NUM_AXIS_ARGS(const_float_t), FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr);
343+
void print_pos(NUM_AXIS_ARGS_(const_float_t) FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr);
344344

345345
inline void print_pos(const xyze_pos_t &xyze, FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr) {
346-
print_pos(NUM_AXIS_ELEM(xyze), prefix, suffix);
346+
print_pos(NUM_AXIS_ELEM_(xyze) prefix, suffix);
347347
}
348348

349349
#define SERIAL_POS(SUFFIX,VAR) do { print_pos(VAR, F(" " STRINGIFY(VAR) "="), F(" : " SUFFIX "\n")); }while(0)

Marlin/src/core/types.h

Lines changed: 81 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -36,31 +36,47 @@ template <class L, class R> struct IF<true, L, R> { typedef L type; };
3636

3737
#define ALL_AXIS_NAMES X, X2, Y, Y2, Z, Z2, Z3, Z4, I, J, K, U, V, W, E0, E1, E2, E3, E4, E5, E6, E7
3838

39-
#define NUM_AXIS_GANG(V...) GANG_N(NUM_AXES, V)
40-
#define NUM_AXIS_CODE(V...) CODE_N(NUM_AXES, V)
41-
#define NUM_AXIS_LIST(V...) LIST_N(NUM_AXES, V)
42-
#define NUM_AXIS_LIST_1(V) LIST_N_1(NUM_AXES, V)
43-
#define NUM_AXIS_ARRAY(V...) { NUM_AXIS_LIST(V) }
44-
#define NUM_AXIS_ARRAY_1(V) { NUM_AXIS_LIST_1(V) }
45-
#define NUM_AXIS_ARGS(T) NUM_AXIS_LIST(T x, T y, T z, T i, T j, T k, T u, T v, T w)
46-
#define NUM_AXIS_ELEM(O) NUM_AXIS_LIST(O.x, O.y, O.z, O.i, O.j, O.k, O.u, O.v, O.w)
47-
#define NUM_AXIS_DEFS(T,V) NUM_AXIS_LIST(T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V)
48-
#define MAIN_AXIS_NAMES NUM_AXIS_LIST(X, Y, Z, I, J, K, U, V, W)
49-
#define MAIN_AXIS_MAP(F) MAP(F, MAIN_AXIS_NAMES)
50-
#define STR_AXES_MAIN NUM_AXIS_GANG("X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W)
51-
52-
#define LOGICAL_AXIS_GANG(E,V...) NUM_AXIS_GANG(V) GANG_ITEM_E(E)
53-
#define LOGICAL_AXIS_CODE(E,V...) NUM_AXIS_CODE(V) CODE_ITEM_E(E)
54-
#define LOGICAL_AXIS_LIST(E,V...) NUM_AXIS_LIST(V) LIST_ITEM_E(E)
55-
#define LOGICAL_AXIS_LIST_1(V) NUM_AXIS_LIST_1(V) LIST_ITEM_E(V)
39+
#define NUM_AXIS_GANG(V...) GANG_N(NUM_AXES, V)
40+
#define NUM_AXIS_CODE(V...) CODE_N(NUM_AXES, V)
41+
#define NUM_AXIS_LIST(V...) LIST_N(NUM_AXES, V)
42+
#define NUM_AXIS_LIST_1(V) LIST_N_1(NUM_AXES, V)
43+
#define NUM_AXIS_ARRAY(V...) { NUM_AXIS_LIST(V) }
44+
#define NUM_AXIS_ARRAY_1(V) { NUM_AXIS_LIST_1(V) }
45+
#define NUM_AXIS_ARGS(T) NUM_AXIS_LIST(T x, T y, T z, T i, T j, T k, T u, T v, T w)
46+
#define NUM_AXIS_ELEM(O) NUM_AXIS_LIST(O.x, O.y, O.z, O.i, O.j, O.k, O.u, O.v, O.w)
47+
#define NUM_AXIS_DEFS(T,V) NUM_AXIS_LIST(T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V)
48+
#define MAIN_AXIS_NAMES NUM_AXIS_LIST(X, Y, Z, I, J, K, U, V, W)
49+
#define STR_AXES_MAIN NUM_AXIS_GANG("X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W)
50+
51+
#if NUM_AXES
52+
#define NUM_AXES_SEP ,
53+
#define MAIN_AXIS_MAP(F) MAP(F, MAIN_AXIS_NAMES)
54+
#define OPTARGS_LOGICAL(T) , LOGICAL_AXIS_ARGS(T)
55+
#else
56+
#define NUM_AXES_SEP
57+
#define MAIN_AXIS_MAP(F)
58+
#define OPTARGS_LOGICAL(T)
59+
#endif
60+
61+
#define NUM_AXIS_GANG_(V...) NUM_AXIS_GANG(V) NUM_AXES_SEP
62+
#define NUM_AXIS_LIST_(V...) NUM_AXIS_LIST(V) NUM_AXES_SEP
63+
#define NUM_AXIS_LIST_1_(V...) NUM_AXIS_LIST_1(V) NUM_AXES_SEP
64+
#define NUM_AXIS_ARGS_(T) NUM_AXIS_ARGS(T) NUM_AXES_SEP
65+
#define NUM_AXIS_ELEM_(T) NUM_AXIS_ELEM(T) NUM_AXES_SEP
66+
#define MAIN_AXIS_NAMES_ MAIN_AXIS_NAMES NUM_AXES_SEP
67+
68+
#define LOGICAL_AXIS_GANG(E,V...) NUM_AXIS_GANG(V) GANG_ITEM_E(E)
69+
#define LOGICAL_AXIS_CODE(E,V...) NUM_AXIS_CODE(V) CODE_ITEM_E(E)
70+
#define LOGICAL_AXIS_LIST(E,V...) NUM_AXIS_LIST(V) LIST_ITEM_E(E)
71+
#define LOGICAL_AXIS_LIST_1(V) NUM_AXIS_LIST_1(V) LIST_ITEM_E(V)
5672
#define LOGICAL_AXIS_ARRAY(E,V...) { LOGICAL_AXIS_LIST(E,V) }
5773
#define LOGICAL_AXIS_ARRAY_1(V) { LOGICAL_AXIS_LIST_1(V) }
58-
#define LOGICAL_AXIS_ARGS(T) LOGICAL_AXIS_LIST(T e, T x, T y, T z, T i, T j, T k, T u, T v, T w)
59-
#define LOGICAL_AXIS_ELEM(O) LOGICAL_AXIS_LIST(O.e, O.x, O.y, O.z, O.i, O.j, O.k, O.u, O.v, O.w)
60-
#define LOGICAL_AXIS_DECL(T,V) LOGICAL_AXIS_LIST(T e=V, T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V)
61-
#define LOGICAL_AXIS_NAMES LOGICAL_AXIS_LIST(E, X, Y, Z, I, J, K, U, V, W)
62-
#define LOGICAL_AXIS_MAP(F) MAP(F, LOGICAL_AXIS_NAMES)
63-
#define STR_AXES_LOGICAL LOGICAL_AXIS_GANG("E", "X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W)
74+
#define LOGICAL_AXIS_ARGS(T) LOGICAL_AXIS_LIST(T e, T x, T y, T z, T i, T j, T k, T u, T v, T w)
75+
#define LOGICAL_AXIS_ELEM(O) LOGICAL_AXIS_LIST(O.e, O.x, O.y, O.z, O.i, O.j, O.k, O.u, O.v, O.w)
76+
#define LOGICAL_AXIS_DECL(T,V) LOGICAL_AXIS_LIST(T e=V, T x=V, T y=V, T z=V, T i=V, T j=V, T k=V, T u=V, T v=V, T w=V)
77+
#define LOGICAL_AXIS_NAMES LOGICAL_AXIS_LIST(E, X, Y, Z, I, J, K, U, V, W)
78+
#define LOGICAL_AXIS_MAP(F) MAP(F, LOGICAL_AXIS_NAMES)
79+
#define STR_AXES_LOGICAL LOGICAL_AXIS_GANG("E", "X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W)
6480

6581
#define XYZ_GANG(V...) GANG_N(PRIMARY_LINEAR_AXES, V)
6682
#define XYZ_CODE(V...) CODE_N(PRIMARY_LINEAR_AXES, V)
@@ -75,8 +91,13 @@ template <class L, class R> struct IF<true, L, R> { typedef L type; };
7591
#endif
7692

7793
#if HAS_EXTRUDERS
78-
#define LIST_ITEM_E(N) , N
79-
#define CODE_ITEM_E(N) ; N
94+
#if NUM_AXES
95+
#define LIST_ITEM_E(N) , N
96+
#define CODE_ITEM_E(N) ; N
97+
#else
98+
#define LIST_ITEM_E(N) N
99+
#define CODE_ITEM_E(N) N
100+
#endif
80101
#define GANG_ITEM_E(N) N
81102
#else
82103
#define LIST_ITEM_E(N)
@@ -166,37 +187,38 @@ typedef struct AxisFlags {
166187
enum AxisEnum : uint8_t {
167188

168189
// Linear axes may be controlled directly or indirectly
169-
NUM_AXIS_LIST(X_AXIS, Y_AXIS, Z_AXIS, I_AXIS, J_AXIS, K_AXIS, U_AXIS, V_AXIS, W_AXIS)
190+
NUM_AXIS_LIST_(X_AXIS, Y_AXIS, Z_AXIS, I_AXIS, J_AXIS, K_AXIS, U_AXIS, V_AXIS, W_AXIS)
170191

171-
// Extruder axes may be considered distinctly
172-
#define _EN_ITEM(N) , E##N##_AXIS
192+
#define _EN_ITEM(N) E##N##_AXIS,
173193
REPEAT(EXTRUDERS, _EN_ITEM)
174194
#undef _EN_ITEM
175195

176196
// Core also keeps toolhead directions
177197
#if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX)
178-
, X_HEAD, Y_HEAD, Z_HEAD
198+
X_HEAD, Y_HEAD, Z_HEAD,
179199
#endif
180200

181201
// Distinct axes, including all E and Core
182-
, NUM_AXIS_ENUMS
202+
NUM_AXIS_ENUMS,
183203

184204
// Most of the time we refer only to the single E_AXIS
185205
#if HAS_EXTRUDERS
186-
, E_AXIS = E0_AXIS
206+
E_AXIS = E0_AXIS,
187207
#endif
188208

189209
// A, B, and C are for DELTA, SCARA, etc.
190-
, A_AXIS = X_AXIS
210+
#if HAS_X_AXIS
211+
A_AXIS = X_AXIS,
212+
#endif
191213
#if HAS_Y_AXIS
192-
, B_AXIS = Y_AXIS
214+
B_AXIS = Y_AXIS,
193215
#endif
194216
#if HAS_Z_AXIS
195-
, C_AXIS = Z_AXIS
217+
C_AXIS = Z_AXIS,
196218
#endif
197219

198220
// To refer to all or none
199-
, ALL_AXES_ENUM = 0xFE, NO_AXIS_ENUM = 0xFF
221+
ALL_AXES_ENUM = 0xFE, NO_AXIS_ENUM = 0xFF
200222
};
201223

202224
//
@@ -336,7 +358,9 @@ struct XYval {
336358
FI void reset() { x = y = 0; }
337359

338360
// Setters taking struct types and arrays
339-
FI void set(const T px) { x = px; }
361+
#if HAS_X_AXIS
362+
FI void set(const T px) { x = px; }
363+
#endif
340364
#if HAS_Y_AXIS
341365
FI void set(const T px, const T py) { x = px; y = py; }
342366
FI void set(const T (&arr)[XY]) { x = arr[0]; y = arr[1]; }
@@ -453,9 +477,9 @@ struct XYval {
453477
FI XYval<T>& operator<<=(const int &p) { _LS(x); _LS(y); return *this; }
454478

455479
// Exact comparisons. For floats a "NEAR" operation may be better.
456-
FI bool operator==(const XYval<T> &rs) const { return NUM_AXIS_GANG(x == rs.x, && y == rs.y,,,,,,, ); }
457-
FI bool operator==(const XYZval<T> &rs) const { return NUM_AXIS_GANG(x == rs.x, && y == rs.y,,,,,,, ); }
458-
FI bool operator==(const XYZEval<T> &rs) const { return NUM_AXIS_GANG(x == rs.x, && y == rs.y,,,,,,, ); }
480+
FI bool operator==(const XYval<T> &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y,,,,,,, ); }
481+
FI bool operator==(const XYZval<T> &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y,,,,,,, ); }
482+
FI bool operator==(const XYZEval<T> &rs) const { return true NUM_AXIS_GANG(&& x == rs.x, && y == rs.y,,,,,,, ); }
459483
FI bool operator!=(const XYval<T> &rs) const { return !operator==(rs); }
460484
FI bool operator!=(const XYZval<T> &rs) const { return !operator==(rs); }
461485
FI bool operator!=(const XYZEval<T> &rs) const { return !operator==(rs); }
@@ -467,23 +491,25 @@ struct XYval {
467491
template<typename T>
468492
struct XYZval {
469493
union {
470-
struct { T NUM_AXIS_ARGS(); };
471-
struct { T NUM_AXIS_LIST(a, b, c, _i, _j, _k, _u, _v, _w); };
494+
#if NUM_AXES
495+
struct { T NUM_AXIS_ARGS(); };
496+
struct { T NUM_AXIS_LIST(a, b, c, _i, _j, _k, _u, _v, _w); };
497+
#endif
472498
T pos[NUM_AXES];
473499
};
474500

475501
// Set all to 0
476-
FI void reset() { NUM_AXIS_GANG(x =, y =, z =, i =, j =, k =, u =, v =, w =) 0; }
502+
FI void reset() { NUM_AXIS_CODE(x = 0, y = 0, z = 0, i = 0, j = 0, k = 0, u = 0, v = 0, w = 0); }
477503

478504
// Setters taking struct types and arrays
479-
FI void set(const XYval<T> pxy) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y,,,,,,,); }
480-
FI void set(const XYval<T> pxy, const T pz) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y, z = pz,,,,,,); }
481-
FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
505+
FI void set(const XYval<T> pxy) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y,,,,,,,); }
506+
FI void set(const XYval<T> pxy, const T pz) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y, z = pz,,,,,,); }
507+
FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
482508
#if LOGICAL_AXES > NUM_AXES
483-
FI void set(const T (&arr)[LOGICAL_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
484-
FI void set(LOGICAL_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w ); }
509+
FI void set(const T (&arr)[LOGICAL_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
510+
FI void set(LOGICAL_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w ); }
485511
#if DISTINCT_AXES > LOGICAL_AXES
486-
FI void set(const T (&arr)[DISTINCT_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
512+
FI void set(const T (&arr)[DISTINCT_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
487513
#endif
488514
#endif
489515

@@ -517,15 +543,15 @@ struct XYZval {
517543
#endif
518544

519545
// Length reduced to one dimension
520-
FI T magnitude() const { return (T)sqrtf(NUM_AXIS_GANG(x*x, + y*y, + z*z, + i*i, + j*j, + k*k, + u*u, + v*v, + w*w)); }
546+
FI T magnitude() const { return (T)TERN(HAS_X_AXIS, sqrtf(NUM_AXIS_GANG(x*x, + y*y, + z*z, + i*i, + j*j, + k*k, + u*u, + v*v, + w*w)), 0); }
521547
// Pointer to the data as a simple array
522-
FI operator T* () { return pos; }
548+
FI operator T* () { return (T*)this; }
523549
// If any element is true then it's true
524-
FI operator bool() { return NUM_AXIS_GANG(x, || y, || z, || i, || j, || k, || u, || v, || w); }
550+
FI operator bool() { return 0 NUM_AXIS_GANG(|| x, || y, || z, || i, || j, || k, || u, || v, || w); }
525551
// Smallest element
526-
FI T small() const { return _MIN(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w)); }
552+
FI T small() const { return TERN(HAS_X_AXIS,_MIN(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w));,0;) }
527553
// Largest element
528-
FI T large() const { return _MAX(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w)); }
554+
FI T large() const { return TERN(HAS_X_AXIS,_MAX(NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w));,0;) }
529555

530556
// Explicit copy and copies with conversion
531557
FI XYZval<T> copy() const { XYZval<T> o = *this; return o; }
@@ -634,10 +660,10 @@ struct XYZEval {
634660
T pos[LOGICAL_AXES];
635661
};
636662
// Reset all to 0
637-
FI void reset() { LOGICAL_AXIS_GANG(e =, x =, y =, z =, i =, j =, k =, u =, v =, w =) 0; }
663+
FI void reset() { LOGICAL_AXIS_GANG(e =, x =, y =, z =, i =, j =, k =, u =, v =, w =) 0; }
638664

639665
// Setters taking struct types and arrays
640-
FI void set(const XYval<T> pxy) { x = pxy.x; OPTCODE(HAS_Y_AXIS, y = pxy.y) }
666+
FI void set(const XYval<T> pxy) { OPTCODE(HAS_X_AXIS, x = pxy.x) OPTCODE(HAS_Y_AXIS, y = pxy.y) }
641667
FI void set(const XYZval<T> pxyz) { set(NUM_AXIS_ELEM(pxyz)); }
642668
FI void set(const XYval<T> pxy, const T pz) { set(pxy); TERN_(HAS_Z_AXIS, z = pz); }
643669
FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }

Marlin/src/feature/fwretract.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,6 @@ void FWRetract::retract(const bool retracting E_OPTARG(bool swapping/*=false*/))
195195
//*/
196196
}
197197

198-
//extern const char SP_Z_STR[];
199-
200198
/**
201199
* M207: Set firmware retraction values
202200
*

Marlin/src/feature/tmc_util.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -773,8 +773,8 @@
773773
}
774774
}
775775

776-
static void tmc_debug_loop(const TMC_debug_enum n, LOGICAL_AXIS_ARGS(const bool)) {
777-
if (x) {
776+
static void tmc_debug_loop(const TMC_debug_enum n OPTARGS_LOGICAL(const bool)) {
777+
if (TERN0(HAS_X_AXIS, x)) {
778778
#if AXIS_IS_TMC(X)
779779
tmc_status(stepperX, n);
780780
#endif
@@ -856,8 +856,8 @@
856856
SERIAL_EOL();
857857
}
858858

859-
static void drv_status_loop(const TMC_drv_status_enum n, LOGICAL_AXIS_ARGS(const bool)) {
860-
if (x) {
859+
static void drv_status_loop(const TMC_drv_status_enum n OPTARGS_LOGICAL(const bool)) {
860+
if (TERN0(HAS_X_AXIS, x)) {
861861
#if AXIS_IS_TMC(X)
862862
tmc_parse_drv_status(stepperX, n);
863863
#endif
@@ -944,8 +944,8 @@
944944
*/
945945

946946
void tmc_report_all(LOGICAL_AXIS_ARGS(const bool)) {
947-
#define TMC_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); tmc_debug_loop(ITEM, LOGICAL_AXIS_ARGS()); }while(0)
948-
#define DRV_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); drv_status_loop(ITEM, LOGICAL_AXIS_ARGS()); }while(0)
947+
#define TMC_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); tmc_debug_loop(ITEM OPTARGS_LOGICAL()); }while(0)
948+
#define DRV_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); drv_status_loop(ITEM OPTARGS_LOGICAL()); }while(0)
949949

950950
TMC_REPORT("\t", TMC_CODES);
951951
#if HAS_DRIVER(TMC2209)
@@ -1070,8 +1070,8 @@
10701070
}
10711071
#endif
10721072

1073-
static void tmc_get_registers(TMC_get_registers_enum n, LOGICAL_AXIS_ARGS(const bool)) {
1074-
if (x) {
1073+
static void tmc_get_registers(TMC_get_registers_enum n OPTARGS_LOGICAL(const bool)) {
1074+
if (TERN0(HAS_X_AXIS, x)) {
10751075
#if AXIS_IS_TMC(X)
10761076
tmc_get_registers(stepperX, n);
10771077
#endif
@@ -1154,7 +1154,7 @@
11541154
}
11551155

11561156
void tmc_get_registers(LOGICAL_AXIS_ARGS(bool)) {
1157-
#define _TMC_GET_REG(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); tmc_get_registers(ITEM, LOGICAL_AXIS_ARGS()); }while(0)
1157+
#define _TMC_GET_REG(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); tmc_get_registers(ITEM OPTARGS_LOGICAL()); }while(0)
11581158
#define TMC_GET_REG(NAME, TABS) _TMC_GET_REG(STRINGIFY(NAME) TABS, TMC_GET_##NAME)
11591159
_TMC_GET_REG("\t", TMC_AXIS_CODES);
11601160
TMC_GET_REG(GCONF, "\t\t");
@@ -1236,7 +1236,7 @@ static bool test_connection(TMC &st) {
12361236
void test_tmc_connection(LOGICAL_AXIS_ARGS(const bool)) {
12371237
uint8_t axis_connection = 0;
12381238

1239-
if (x) {
1239+
if (TERN0(HAS_X_AXIS, x)) {
12401240
#if AXIS_IS_TMC(X)
12411241
axis_connection += test_connection(stepperX);
12421242
#endif

Marlin/src/feature/tmc_util.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ void test_tmc_connection(LOGICAL_AXIS_DECL(const bool, true));
348348
#if USE_SENSORLESS
349349

350350
// Track enabled status of stealthChop and only re-enable where applicable
351-
struct sensorless_t { bool NUM_AXIS_ARGS(), x2, y2, z2, z3, z4; };
351+
struct sensorless_t { bool NUM_AXIS_ARGS_() x2, y2, z2, z3, z4; };
352352

353353
#if ENABLED(IMPROVE_HOMING_RELIABILITY)
354354
extern millis_t sg_guard_period;

0 commit comments

Comments
 (0)