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>2021-10-18 17:56:43 +0300
committerDavid Crocker <dcrocker@eschertech.com>2021-10-18 17:56:43 +0300
commitc0f47d671496f5ada26fc3094441ec2ff80a48ae (patch)
tree1468c613272128bea6018daaf06097d6a166221f /src/Movement
parent4e15856c84b9378d3336c5c6b7ddea9de59305ae (diff)
Initial implementation of G68/69
Diffstat (limited to 'src/Movement')
-rw-r--r--src/Movement/Move.cpp37
-rw-r--r--src/Movement/Move.h4
2 files changed, 40 insertions, 1 deletions
diff --git a/src/Movement/Move.cpp b/src/Movement/Move.cpp
index 72ef43fa..ff9a5d48 100644
--- a/src/Movement/Move.cpp
+++ b/src/Movement/Move.cpp
@@ -81,6 +81,17 @@ constexpr ObjectModelArrayDescriptor Move::queueArrayDescriptor =
[] (const ObjectModel *self, ObjectExplorationContext& context) noexcept -> ExpressionValue { return ExpressionValue(&((const Move*)self)->rings[context.GetLastIndex()]); }
};
+#if SUPPORT_COORDINATE_ROTATION
+
+constexpr ObjectModelArrayDescriptor Move::rotationCentreArrayDescriptor =
+{
+ nullptr, // no lock needed
+ [] (const ObjectModel *self, const ObjectExplorationContext&) noexcept -> size_t { return 2; },
+ [] (const ObjectModel *self, ObjectExplorationContext& context) noexcept -> ExpressionValue { return ExpressionValue(reprap.GetGCodes().GetRotationCentre(context.GetLastIndex())); }
+};
+
+#endif
+
constexpr ObjectModelTableEntry Move::objectModelTable[] =
{
// Within each group, these entries must be in alphabetical order
@@ -94,6 +105,9 @@ constexpr ObjectModelTableEntry Move::objectModelTable[] =
{ "kinematics", OBJECT_MODEL_FUNC(self->kinematics), ObjectModelEntryFlags::none },
{ "printingAcceleration", OBJECT_MODEL_FUNC(InverseConvertAcceleration(self->maxPrintingAcceleration), 1), ObjectModelEntryFlags::none },
{ "queue", OBJECT_MODEL_FUNC_NOSELF(&queueArrayDescriptor), ObjectModelEntryFlags::none },
+#if SUPPORT_COORDINATE_ROTATION
+ { "rotation", OBJECT_MODEL_FUNC(self, 44), ObjectModelEntryFlags::none },
+#endif
{ "shaping", OBJECT_MODEL_FUNC(&self->axisShaper, 0), ObjectModelEntryFlags::none },
{ "speedFactor", OBJECT_MODEL_FUNC_NOSELF(reprap.GetGCodes().GetSpeedFactor(), 2), ObjectModelEntryFlags::none },
{ "travelAcceleration", OBJECT_MODEL_FUNC(InverseConvertAcceleration(self->maxTravelAcceleration), 1), ObjectModelEntryFlags::none },
@@ -148,9 +162,30 @@ constexpr ObjectModelTableEntry Move::objectModelTable[] =
{ "tanXY", OBJECT_MODEL_FUNC(self->tanXY, 4), ObjectModelEntryFlags::none },
{ "tanXZ", OBJECT_MODEL_FUNC(self->tanXZ, 4), ObjectModelEntryFlags::none },
{ "tanYZ", OBJECT_MODEL_FUNC(self->tanYZ, 4), ObjectModelEntryFlags::none },
+
+#if SUPPORT_COORDINATE_ROTATION
+ // 8. move.rotation members
+ { "angle", OBJECT_MODEL_FUNC_NOSELF(reprap.GetGCodes().GetRotationAngle()), ObjectModelEntryFlags::none },
+ { "centre", OBJECT_MODEL_FUNC_NOSELF(&rotationCentreArrayDescriptor), ObjectModelEntryFlags::none },
+#endif
};
-constexpr uint8_t Move::objectModelTableDescriptor[] = { 9, 15, 2, 4 + SUPPORT_LASER, 3, 2, 2, 6 + (HAS_MASS_STORAGE || HAS_LINUX_INTERFACE), 2, 4 };
+constexpr uint8_t Move::objectModelTableDescriptor[] =
+{
+ 9 + SUPPORT_COORDINATE_ROTATION,
+ 15 + SUPPORT_WORKPLACE_COORDINATES,
+ 2,
+ 4 + SUPPORT_LASER,
+ 3,
+ 2,
+ 2,
+ 6 + (HAS_MASS_STORAGE || HAS_LINUX_INTERFACE),
+ 2,
+ 4,
+#if SUPPORT_COORDINATE_ROTATION
+ 2
+#endif
+};
DEFINE_GET_OBJECT_MODEL_TABLE(Move)
diff --git a/src/Movement/Move.h b/src/Movement/Move.h
index 6eee76f2..f941cc40 100644
--- a/src/Movement/Move.h
+++ b/src/Movement/Move.h
@@ -221,6 +221,10 @@ protected:
DECLARE_OBJECT_MODEL
OBJECT_MODEL_ARRAY(queue)
+#if SUPPORT_COORDINATE_ROTATION
+ OBJECT_MODEL_ARRAY(rotationCentre)
+#endif
+
private:
enum class MoveState : uint8_t
{