Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/Movement')
-rw-r--r--src/Movement/DDA.cpp24
-rw-r--r--src/Movement/DDA.h12
-rw-r--r--src/Movement/DriveMovement.cpp17
-rw-r--r--src/Movement/DriveMovement.h4
-rw-r--r--src/Movement/Kinematics/FiveBarScaraKinematics.cpp5
-rw-r--r--src/Movement/Kinematics/FiveBarScaraKinematics.h4
-rw-r--r--src/Movement/Kinematics/HangprinterKinematics.cpp11
-rw-r--r--src/Movement/Kinematics/HangprinterKinematics.h4
-rw-r--r--src/Movement/Kinematics/Kinematics.cpp17
-rw-r--r--src/Movement/Kinematics/LinearDeltaKinematics.cpp4
-rw-r--r--src/Movement/Kinematics/LinearDeltaKinematics.h5
-rw-r--r--src/Movement/Kinematics/PolarKinematics.cpp4
-rw-r--r--src/Movement/Kinematics/PolarKinematics.h4
-rw-r--r--src/Movement/Kinematics/RotaryDeltaKinematics.cpp4
-rw-r--r--src/Movement/Kinematics/RotaryDeltaKinematics.h4
-rw-r--r--src/Movement/Kinematics/ScaraKinematics.cpp5
-rw-r--r--src/Movement/Kinematics/ScaraKinematics.h4
-rw-r--r--src/Movement/Move.h2
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