diff options
author | David Crocker <dcrocker@eschertech.com> | 2022-02-07 17:24:23 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2022-02-07 17:24:23 +0300 |
commit | a2e55f4ea1ca876a2cb7f2a36f01ddc1baa5fa8b (patch) | |
tree | e639bcdaa11247fde7313b9fffbd312e803bf932 /src/Movement | |
parent | b8b63b24eeced90323f38ce6c71cf65a28aaf4c3 (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.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 |