diff options
Diffstat (limited to 'src/Movement')
-rw-r--r-- | src/Movement/DDA.cpp | 24 | ||||
-rw-r--r-- | src/Movement/DDA.h | 12 | ||||
-rw-r--r-- | src/Movement/DriveMovement.cpp | 17 | ||||
-rw-r--r-- | src/Movement/DriveMovement.h | 4 | ||||
-rw-r--r-- | src/Movement/Kinematics/FiveBarScaraKinematics.cpp | 5 | ||||
-rw-r--r-- | src/Movement/Kinematics/FiveBarScaraKinematics.h | 4 | ||||
-rw-r--r-- | src/Movement/Kinematics/HangprinterKinematics.cpp | 11 | ||||
-rw-r--r-- | src/Movement/Kinematics/HangprinterKinematics.h | 4 | ||||
-rw-r--r-- | src/Movement/Kinematics/Kinematics.cpp | 17 | ||||
-rw-r--r-- | src/Movement/Kinematics/LinearDeltaKinematics.cpp | 4 | ||||
-rw-r--r-- | src/Movement/Kinematics/LinearDeltaKinematics.h | 5 | ||||
-rw-r--r-- | src/Movement/Kinematics/PolarKinematics.cpp | 4 | ||||
-rw-r--r-- | src/Movement/Kinematics/PolarKinematics.h | 4 | ||||
-rw-r--r-- | src/Movement/Kinematics/RotaryDeltaKinematics.cpp | 4 | ||||
-rw-r--r-- | src/Movement/Kinematics/RotaryDeltaKinematics.h | 4 | ||||
-rw-r--r-- | src/Movement/Kinematics/ScaraKinematics.cpp | 5 | ||||
-rw-r--r-- | src/Movement/Kinematics/ScaraKinematics.h | 4 | ||||
-rw-r--r-- | src/Movement/Move.h | 2 |
18 files changed, 116 insertions, 18 deletions
diff --git a/src/Movement/DDA.cpp b/src/Movement/DDA.cpp index e98c7042..880f02f5 100644 --- a/src/Movement/DDA.cpp +++ b/src/Movement/DDA.cpp @@ -316,8 +316,10 @@ bool DDA::InitStandardMove(DDARing& ring, const RawMove &nextMove, bool doMotorM { return false; // throw away the move if it couldn't be transformed } +#if SUPPORT_LINEAR_DELTA flags.isDeltaMovement = move.IsDeltaMode() && (endPoint[X_AXIS] != positionNow[X_AXIS] || endPoint[Y_AXIS] != positionNow[Y_AXIS] || endPoint[Z_AXIS] != positionNow[Z_AXIS]); +#endif } bool linearAxesMoving = false; @@ -1085,6 +1087,7 @@ float DDA::AdvanceBabyStepping(DDARing& ring, size_t axis, float amount) noexcep // Even if there is no babystepping to do this move, we may need to adjust the end coordinates cdda->endCoordinates[Z_AXIS] += babySteppingDone; +#if SUPPORT_LINEAR_DELTA if (cdda->flags.isDeltaMovement) { for (size_t motor = 0; motor < reprap.GetGCodes().GetTotalAxes(); ++motor) @@ -1096,6 +1099,7 @@ float DDA::AdvanceBabyStepping(DDARing& ring, size_t axis, float amount) noexcep } } else +#endif { cdda->endPoint[Z_AXIS] += (int32_t)(babySteppingDone * reprap.GetPlatform().DriveStepsPerUnit(Z_AXIS)); } @@ -1320,26 +1324,28 @@ void DDA::Prepare(SimulationMode simMode) noexcept if (simMode < SimulationMode::normal) { +#if SUPPORT_LINEAR_DELTA if (flags.isDeltaMovement) { // This code assumes that the previous move in the DDA ring is the previously-executed move, because it fetches the X and Y end coordinates from that move. // Therefore the Move code must not store a new move in that entry until this one has been prepared! (It took me ages to track this down.) // Ideally we would store the initial X and Y coordinates in the DDA, but we need to be economical with memory -#if MS_USE_FPU +# if MS_USE_FPU // Nothing needed here, use directionVector[Z_AXIS] directly -#else +# else afterPrepare.cKc = lrintf(directionVector[Z_AXIS] * MoveSegment::KdirectionVector); -#endif +# endif params.a2plusb2 = fsquare(directionVector[X_AXIS]) + fsquare(directionVector[Y_AXIS]); params.initialX = prev->GetEndCoordinate(X_AXIS, false); params.initialY = prev->GetEndCoordinate(Y_AXIS, false); -#if SUPPORT_CAN_EXPANSION + params.dparams = static_cast<const LinearDeltaKinematics*>(&(reprap.GetMove().GetKinematics())); +# if SUPPORT_CAN_EXPANSION params.finalX = GetEndCoordinate(X_AXIS, false); params.finalY = GetEndCoordinate(Y_AXIS, false); params.zMovement = GetEndCoordinate(Z_AXIS, false) - prev->GetEndCoordinate(Z_AXIS, false); -#endif - params.dparams = static_cast<const LinearDeltaKinematics*>(&(reprap.GetMove().GetKinematics())); +# endif } +#endif activeDMs = completedDMs = nullptr; @@ -1405,6 +1411,7 @@ void DDA::Prepare(SimulationMode simMode) noexcept } } } +#if SUPPORT_LINEAR_DELTA else if (flags.isDeltaMovement && reprap.GetMove().GetKinematics().GetMotionType(drive) == MotionType::segmentFreeDelta) { // On a delta we need to move all towers even if some of them have no net movement @@ -1438,7 +1445,7 @@ void DDA::Prepare(SimulationMode simMode) noexcept } } -#if SUPPORT_CAN_EXPANSION +# if SUPPORT_CAN_EXPANSION afterPrepare.drivesMoving.SetBit(drive); const AxisDriversConfig& config = platform.GetAxisDriversConfig(drive); for (size_t i = 0; i < config.numDrivers; ++i) @@ -1449,9 +1456,10 @@ void DDA::Prepare(SimulationMode simMode) noexcept CanMotion::AddMovement(params, driver, delta, false); } } -#endif +# endif axisMotorsEnabled.SetBit(drive); } +#endif else if (drive < reprap.GetGCodes().GetTotalAxes()) { // It's a linear axis diff --git a/src/Movement/DDA.h b/src/Movement/DDA.h index 290c6d69..c4ce6b34 100644 --- a/src/Movement/DDA.h +++ b/src/Movement/DDA.h @@ -51,14 +51,16 @@ struct PrepParams float initialSpeedFraction, finalSpeedFraction; #endif +#if SUPPORT_LINEAR_DELTA // Parameters used only for delta moves float initialX, initialY; -#if SUPPORT_CAN_EXPANSION +# if SUPPORT_CAN_EXPANSION float finalX, finalY; float zMovement; -#endif +# endif const LinearDeltaKinematics *dparams; float a2plusb2; // sum of the squares of the X and Y movement fractions +#endif // Set up the parameters from the DDA, excluding steadyClocks because that may be affected by input shaping void SetFromDDA(const DDA& dda) noexcept; @@ -272,8 +274,10 @@ private: { struct { - uint16_t endCoordinatesValid : 1, // True if endCoordinates can be relied on + uint16_t endCoordinatesValid : 1, // True if endCoordinates can be relied +#if SUPPORT_LINEAR_DELTA isDeltaMovement : 1, // True if this is a delta printer movement +#endif canPauseAfter : 1, // True if we can pause at the end of this move isPrintingMove : 1, // True if this move includes XY movement and extrusion usePressureAdvance : 1, // True if pressure advance should be applied to any forward extrusion @@ -340,7 +344,7 @@ private: static_assert(MaxAxesPlusExtruders <= DriversBitmap::MaxBits()); #endif // These are used only in delta calculations -#if !MS_USE_FPU +#if SUPPORT_LINEAR_DELTA && !MS_USE_FPU int32_t cKc; // The Z movement fraction multiplied by Kc and converted to integer #endif } afterPrepare; diff --git a/src/Movement/DriveMovement.cpp b/src/Movement/DriveMovement.cpp index 77351302..fce12e1f 100644 --- a/src/Movement/DriveMovement.cpp +++ b/src/Movement/DriveMovement.cpp @@ -172,6 +172,8 @@ bool DriveMovement::NewCartesianSegment() noexcept } } +#if SUPPORT_LINEAR_DELTA + // This is called when currentSegment has just been changed to a new segment. Return true if there is a new segment to execute. bool DriveMovement::NewDeltaSegment(const DDA& dda) noexcept { @@ -311,6 +313,8 @@ bool DriveMovement::NewDeltaSegment(const DDA& dda) noexcept } } +#endif // SUPPORT_LINEAR_DELTA + // This is called when currentSegment has just been changed to a new segment. Return true if there is a new segment to execute. bool DriveMovement::NewExtruderSegment() noexcept { @@ -437,6 +441,8 @@ bool DriveMovement::PrepareCartesianAxis(const DDA& dda, const PrepParams& param return CalcNextStepTime(dda); } +#if SUPPORT_LINEAR_DELTA + // Prepare this DM for a Delta axis move, returning true if there are steps to do bool DriveMovement::PrepareDeltaAxis(const DDA& dda, const PrepParams& params) noexcept { @@ -616,6 +622,8 @@ bool DriveMovement::PrepareDeltaAxis(const DDA& dda, const PrepParams& params) n return CalcNextStepTime(dda); } +#endif // SUPPORT_LINEAR_DELTA + // Prepare this DM for an extruder move, returning true if there are steps to do // If there are no steps to do, set nextStep = 0 so that DDARing::CurrentMoveCompleted doesn't add any steps to the movement accumulator // We have already generated the extruder segments and we know that there are some @@ -902,9 +910,12 @@ pre(nextStep <= totalSteps; stepsTillRecalc == 0) if (stepsToLimit == 0) { currentSegment = currentSegment->GetNext(); - const bool more = (isDelta) ? NewDeltaSegment(dda) - : (isExtruder) ? NewExtruderSegment() - : NewCartesianSegment(); + const bool more = +#if SUPPORT_LINEAR_DELTA + (isDelta) ? NewDeltaSegment(dda) : +#endif + (isExtruder) ? NewExtruderSegment() + : NewCartesianSegment(); if (!more) { state = DMState::stepError; diff --git a/src/Movement/DriveMovement.h b/src/Movement/DriveMovement.h index 0315e808..473091d3 100644 --- a/src/Movement/DriveMovement.h +++ b/src/Movement/DriveMovement.h @@ -50,7 +50,9 @@ public: bool CalcNextStepTime(const DDA &dda) noexcept SPEED_CRITICAL; bool PrepareCartesianAxis(const DDA& dda, const PrepParams& params) noexcept SPEED_CRITICAL; +#if SUPPORT_LINEAR_DELTA bool PrepareDeltaAxis(const DDA& dda, const PrepParams& params) noexcept SPEED_CRITICAL; +#endif bool PrepareExtruder(const DDA& dda, const PrepParams& params) noexcept SPEED_CRITICAL; void DebugPrint() const noexcept; @@ -70,7 +72,9 @@ private: bool CalcNextStepTimeFull(const DDA &dda) noexcept SPEED_CRITICAL; bool NewCartesianSegment() noexcept SPEED_CRITICAL; bool NewExtruderSegment() noexcept SPEED_CRITICAL; +#if SUPPORT_LINEAR_DELTA bool NewDeltaSegment(const DDA& dda) noexcept SPEED_CRITICAL; +#endif static DriveMovement *freeList; static unsigned int numCreated; diff --git a/src/Movement/Kinematics/FiveBarScaraKinematics.cpp b/src/Movement/Kinematics/FiveBarScaraKinematics.cpp index fe44440b..7615e261 100644 --- a/src/Movement/Kinematics/FiveBarScaraKinematics.cpp +++ b/src/Movement/Kinematics/FiveBarScaraKinematics.cpp @@ -8,6 +8,9 @@ */ #include "FiveBarScaraKinematics.h" + +#if SUPPORT_FIVEBARSCARA + #include <Platform/RepRap.h> #include <Platform/Platform.h> #include <Storage/MassStorage.h> @@ -948,4 +951,6 @@ void FiveBarScaraKinematics::Recalc() noexcept cachedInvalid = true; } +#endif // SUPPORT_FIVEBARSCARA + // End diff --git a/src/Movement/Kinematics/FiveBarScaraKinematics.h b/src/Movement/Kinematics/FiveBarScaraKinematics.h index 7c20a9ca..beaa5905 100644 --- a/src/Movement/Kinematics/FiveBarScaraKinematics.h +++ b/src/Movement/Kinematics/FiveBarScaraKinematics.h @@ -12,6 +12,8 @@ #include "ZLeadscrewKinematics.h" +#if SUPPORT_FIVEBARSCARA + // Standard setup for 5 Bar SCARA (parallel SCARA) machines assumed by this firmware enum class Arm : uint8_t { @@ -103,4 +105,6 @@ private: mutable bool cachedInvalid; }; +#endif // SUPPORT_FIVEBARSCARA + #endif /* SRC_MOVEMENT_KINEMATICS_FIVEBARSCARAKINEMATICS_H_ */ diff --git a/src/Movement/Kinematics/HangprinterKinematics.cpp b/src/Movement/Kinematics/HangprinterKinematics.cpp index a99e71ae..71566e83 100644 --- a/src/Movement/Kinematics/HangprinterKinematics.cpp +++ b/src/Movement/Kinematics/HangprinterKinematics.cpp @@ -6,6 +6,9 @@ */ #include "HangprinterKinematics.h" + +#if SUPPORT_HANGPRINTER + #include <Platform/RepRap.h> #include <Platform/Platform.h> #include <GCodes/GCodeBuffer/GCodeBuffer.h> @@ -521,7 +524,7 @@ void HangprinterKinematics::ForwardTransform(float const a, float const b, float { // Force the anchor location norms Ax=0, Dx=0, Dy=0 // through a series of rotations. - float const x_angle = atan(anchors[D_AXIS][Y_AXIS]/anchors[D_AXIS][Z_AXIS]); + float const x_angle = atanf(anchors[D_AXIS][Y_AXIS]/anchors[D_AXIS][Z_AXIS]); float const rxt[3][3] = {{1, 0, 0}, {0, cosf(x_angle), sinf(x_angle)}, {0, -sinf(x_angle), cosf(x_angle)}}; float anchors_tmp0[4][3] = { 0 }; for (size_t row{0}; row < 4; ++row) { @@ -529,7 +532,7 @@ void HangprinterKinematics::ForwardTransform(float const a, float const b, float anchors_tmp0[row][col] = rxt[0][col]*anchors[row][0] + rxt[1][col]*anchors[row][1] + rxt[2][col]*anchors[row][2]; } } - float const y_angle = atan(-anchors_tmp0[D_AXIS][X_AXIS]/anchors_tmp0[D_AXIS][Z_AXIS]); + float const y_angle = atanf(-anchors_tmp0[D_AXIS][X_AXIS]/anchors_tmp0[D_AXIS][Z_AXIS]); float const ryt[3][3] = {{cosf(y_angle), 0, -sinf(y_angle)}, {0, 1, 0}, {sinf(y_angle), 0, cosf(y_angle)}}; float anchors_tmp1[4][3] = { 0 }; for (size_t row{0}; row < 4; ++row) { @@ -537,7 +540,7 @@ void HangprinterKinematics::ForwardTransform(float const a, float const b, float anchors_tmp1[row][col] = ryt[0][col]*anchors_tmp0[row][0] + ryt[1][col]*anchors_tmp0[row][1] + ryt[2][col]*anchors_tmp0[row][2]; } } - float const z_angle = atan(anchors_tmp1[A_AXIS][X_AXIS]/anchors_tmp1[A_AXIS][Y_AXIS]); + float const z_angle = atanf(anchors_tmp1[A_AXIS][X_AXIS]/anchors_tmp1[A_AXIS][Y_AXIS]); float const rzt[3][3] = {{cosf(z_angle), sinf(z_angle), 0}, {-sinf(z_angle), cosf(z_angle), 0}, {0, 0, 1}}; for (size_t row{0}; row < 4; ++row) { for (size_t col{0}; col < 3; ++col) { @@ -778,4 +781,6 @@ GCodeResult HangprinterKinematics::SetODrive3TorqueMode(DriverId const driver, f } #endif // DUAL_CAN +#endif // SUPPORT_HANGPRINTER + // End diff --git a/src/Movement/Kinematics/HangprinterKinematics.h b/src/Movement/Kinematics/HangprinterKinematics.h index 6a64977d..8584a389 100644 --- a/src/Movement/Kinematics/HangprinterKinematics.h +++ b/src/Movement/Kinematics/HangprinterKinematics.h @@ -10,6 +10,8 @@ #include "RoundBedKinematics.h" +#if SUPPORT_HANGPRINTER + class HangprinterKinematics : public RoundBedKinematics { public: @@ -137,4 +139,6 @@ class CANSimple { static const int32_t INPUT_MODE_TUNING = 8; }; +#endif // SUPPORT_HANGPRINTER + #endif /* SRC_MOVEMENT_KINEMATICS_HANGPRINTERKINEMATICS_H_ */ diff --git a/src/Movement/Kinematics/Kinematics.cpp b/src/Movement/Kinematics/Kinematics.cpp index e2ebdc71..6ccc5f9d 100644 --- a/src/Movement/Kinematics/Kinematics.cpp +++ b/src/Movement/Kinematics/Kinematics.cpp @@ -238,18 +238,35 @@ void Kinematics::LimitSpeedAndAcceleration(DDA& dda, const float *normalisedDire case KinematicsType::markForged: return new CoreKinematics(k); +#if SUPPORT_LINEAR_DELTA case KinematicsType::linearDelta: return new LinearDeltaKinematics(); +#endif + +#if SUPPORT_SCARA case KinematicsType::scara: return new ScaraKinematics(); +#endif + +#if SUPPORT_HANGPRINTER case KinematicsType::hangprinter: return new HangprinterKinematics(); +#endif + +#if SUPPORT_POLAR case KinematicsType::polar: return new PolarKinematics(); +#endif + +#if SUPPORT_ROTARY_DELTA case KinematicsType::rotaryDelta: return new RotaryDeltaKinematics(); +#endif + +#if SUPPORT_FIVEBARSCARA case KinematicsType::fiveBarScara: return new FiveBarScaraKinematics(); +#endif } } diff --git a/src/Movement/Kinematics/LinearDeltaKinematics.cpp b/src/Movement/Kinematics/LinearDeltaKinematics.cpp index 13f951a5..e0d2ff10 100644 --- a/src/Movement/Kinematics/LinearDeltaKinematics.cpp +++ b/src/Movement/Kinematics/LinearDeltaKinematics.cpp @@ -7,6 +7,8 @@ #include "LinearDeltaKinematics.h" +#if SUPPORT_LINEAR_DELTA + #include <Movement/Move.h> #include <Platform/RepRap.h> #include <Storage/FileStore.h> @@ -1046,4 +1048,6 @@ AxesBitmap LinearDeltaKinematics::GetLinearAxes() const noexcept return AxesBitmap::MakeFromBits(Z_AXIS); } +#endif // SUPPORT_LINEAR_DELTA + // End diff --git a/src/Movement/Kinematics/LinearDeltaKinematics.h b/src/Movement/Kinematics/LinearDeltaKinematics.h index 0132c33e..8bd55d5d 100644 --- a/src/Movement/Kinematics/LinearDeltaKinematics.h +++ b/src/Movement/Kinematics/LinearDeltaKinematics.h @@ -9,6 +9,9 @@ #define LINEARDELTAKINEMATICS_H_ #include "RepRapFirmware.h" + +#if SUPPORT_LINEAR_DELTA + #include "RoundBedKinematics.h" // Class to hold the parameter for a delta machine. @@ -106,4 +109,6 @@ private: bool doneAutoCalibration; // True if we have done auto calibration }; +#endif // SUPPORT_LINEAR_DELTA + #endif /* LINEARDELTAKINEMATICS_H_ */ diff --git a/src/Movement/Kinematics/PolarKinematics.cpp b/src/Movement/Kinematics/PolarKinematics.cpp index 25a26735..1e00c145 100644 --- a/src/Movement/Kinematics/PolarKinematics.cpp +++ b/src/Movement/Kinematics/PolarKinematics.cpp @@ -7,6 +7,8 @@ #include "PolarKinematics.h" +#if SUPPORT_POLAR + #include <Platform/RepRap.h> #include <Platform/Platform.h> #include <Storage/MassStorage.h> @@ -340,4 +342,6 @@ void PolarKinematics::Recalc() maxRadiusSquared = fsquare(maxRadius); } +#endif // SUPPORT_POLAR + // End diff --git a/src/Movement/Kinematics/PolarKinematics.h b/src/Movement/Kinematics/PolarKinematics.h index 60483b38..0cb0951f 100644 --- a/src/Movement/Kinematics/PolarKinematics.h +++ b/src/Movement/Kinematics/PolarKinematics.h @@ -10,6 +10,8 @@ #include "Kinematics.h" +#if SUPPORT_POLAR + class PolarKinematics : public Kinematics { public: @@ -51,4 +53,6 @@ private: float minRadiusSquared, maxRadiusSquared; }; +#endif // SUPPORT_POLAR + #endif /* SRC_MOVEMENT_KINEMATICS_POLARKINEMATICS_H_ */ diff --git a/src/Movement/Kinematics/RotaryDeltaKinematics.cpp b/src/Movement/Kinematics/RotaryDeltaKinematics.cpp index 9ef081a2..eb2b8fc3 100644 --- a/src/Movement/Kinematics/RotaryDeltaKinematics.cpp +++ b/src/Movement/Kinematics/RotaryDeltaKinematics.cpp @@ -7,6 +7,8 @@ #include "RotaryDeltaKinematics.h" +#if SUPPORT_ROTARY_DELTA + #include <Movement/Move.h> #include <Platform/RepRap.h> #include <Storage/FileStore.h> @@ -813,4 +815,6 @@ void RotaryDeltaKinematics::ForwardTransform(float Ha, float Hb, float Hc, float } } +#endif // SUPPORT_ROTARY_DELTA + // End diff --git a/src/Movement/Kinematics/RotaryDeltaKinematics.h b/src/Movement/Kinematics/RotaryDeltaKinematics.h index b0361fdb..9c916010 100644 --- a/src/Movement/Kinematics/RotaryDeltaKinematics.h +++ b/src/Movement/Kinematics/RotaryDeltaKinematics.h @@ -10,6 +10,8 @@ #include "RoundBedKinematics.h" +#if SUPPORT_ROTARY_DELTA + class RotaryDeltaKinematics : public RoundBedKinematics { public: @@ -92,4 +94,6 @@ private: bool doneAutoCalibration; // True if we have done auto calibration }; +#endif // SUPPORT_ROTARY_DELTA + #endif /* SRC_MOVEMENT_KINEMATICS_ROTARYDELTAKINEMATICS_H_ */ diff --git a/src/Movement/Kinematics/ScaraKinematics.cpp b/src/Movement/Kinematics/ScaraKinematics.cpp index c6c95e30..2ff4597e 100644 --- a/src/Movement/Kinematics/ScaraKinematics.cpp +++ b/src/Movement/Kinematics/ScaraKinematics.cpp @@ -6,6 +6,9 @@ */ #include "ScaraKinematics.h" + +#if SUPPORT_SCARA + #include <Platform/RepRap.h> #include <Platform/Platform.h> #include <Storage/MassStorage.h> @@ -494,4 +497,6 @@ void ScaraKinematics::Recalc() noexcept cachedX = cachedY = std::numeric_limits<float>::quiet_NaN(); // make sure that the cached values won't match any coordinates } +#endif // SUPPORT_SCARA + // End diff --git a/src/Movement/Kinematics/ScaraKinematics.h b/src/Movement/Kinematics/ScaraKinematics.h index 2a6920bf..27d69999 100644 --- a/src/Movement/Kinematics/ScaraKinematics.h +++ b/src/Movement/Kinematics/ScaraKinematics.h @@ -10,6 +10,8 @@ #include "ZLeadscrewKinematics.h" +#if SUPPORT_SCARA + // Standard setup for SCARA machines assumed by this firmware // The X motor output drives the proximal arm joint, unless remapped using M584 // The Y motor output drives the distal arm joint, unless remapped using M584 @@ -83,4 +85,6 @@ private: mutable bool currentArmMode, cachedArmMode; }; +#endif // SUPPORT_SCARA + #endif /* SRC_MOVEMENT_KINEMATICS_SCARAKINEMATICS_H_ */ diff --git a/src/Movement/Move.h b/src/Movement/Move.h index 5d274600..057c79b4 100644 --- a/src/Movement/Move.h +++ b/src/Movement/Move.h @@ -121,7 +121,9 @@ public: bool IsAccessibleProbePoint(float axesCoords[MaxAxes], AxesBitmap axes) const noexcept; // Temporary kinematics functions +#if SUPPORT_LINEAR_DELTA bool IsDeltaMode() const noexcept { return kinematics->GetKinematicsType() == KinematicsType::linearDelta; } +#endif // End temporary functions bool IsRawMotorMove(uint8_t moveType) const noexcept; // Return true if this is a raw motor move |