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:
authorDavid Crocker <dcrocker@eschertech.com>2022-02-07 17:24:23 +0300
committerDavid Crocker <dcrocker@eschertech.com>2022-02-07 17:24:23 +0300
commita2e55f4ea1ca876a2cb7f2a36f01ddc1baa5fa8b (patch)
treee639bcdaa11247fde7313b9fffbd312e803bf932 /src/Movement
parentb8b63b24eeced90323f38ce6c71cf65a28aaf4c3 (diff)
Various changes for 3.4.rc1
Made most kinematics support a build config option Made PanelDue flasher a build config option Made SPI temperature sensors a build config option Fixed current loop sensor in expansion board mode Use atanf instead of atan in Hangprinter kinematics Removed M573 support Added experimental Mini4 build configuration Increased version to 3.4.0rc1
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