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/Kinematics/Kinematics.cpp')
-rw-r--r--src/Movement/Kinematics/Kinematics.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/Movement/Kinematics/Kinematics.cpp b/src/Movement/Kinematics/Kinematics.cpp
index 058aef71..dd55b2ed 100644
--- a/src/Movement/Kinematics/Kinematics.cpp
+++ b/src/Movement/Kinematics/Kinematics.cpp
@@ -11,6 +11,7 @@
#include "CoreXYKinematics.h"
#include "CoreXZKinematics.h"
#include "ScaraKinematics.h"
+#include "CoreXYUKinematics.h"
#include "RepRap.h"
#include "Platform.h"
@@ -45,9 +46,10 @@ bool Kinematics::IsReachable(float x, float y) const
// Limit the Cartesian position that the user wants to move to
// This default implementation just applies the rectangular limits set up by M208 to those axes that have been homed.
-void Kinematics::LimitPosition(float coords[], size_t numVisibleAxes, uint16_t axesHomed) const
+bool Kinematics::LimitPosition(float coords[], size_t numVisibleAxes, uint16_t axesHomed) const
{
const Platform& platform = reprap.GetPlatform();
+ bool limited = false;
for (size_t axis = 0; axis < numVisibleAxes; axis++)
{
if ((axesHomed & (1 << axis)) != 0)
@@ -56,13 +58,16 @@ void Kinematics::LimitPosition(float coords[], size_t numVisibleAxes, uint16_t a
if (f < platform.AxisMinimum(axis))
{
f = platform.AxisMinimum(axis);
+ limited = true;
}
else if (f > platform.AxisMaximum(axis))
{
f = platform.AxisMaximum(axis);
+ limited = true;
}
}
}
+ return limited;
}
// Return the initial Cartesian coordinates we assume after switching to this kinematics
@@ -91,6 +96,8 @@ void Kinematics::GetAssumedInitialPosition(size_t numAxes, float positions[]) co
return new CoreXZKinematics();
case KinematicsType::scara:
return new ScaraKinematics();
+ case KinematicsType::coreXYU:
+ return new CoreXYUKinematics();
}
}