diff options
author | David Crocker <dcrocker@eschertech.com> | 2021-10-18 17:56:43 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2021-10-18 17:56:43 +0300 |
commit | c0f47d671496f5ada26fc3094441ec2ff80a48ae (patch) | |
tree | 1468c613272128bea6018daaf06097d6a166221f /src/Movement | |
parent | 4e15856c84b9378d3336c5c6b7ddea9de59305ae (diff) |
Initial implementation of G68/69
Diffstat (limited to 'src/Movement')
-rw-r--r-- | src/Movement/Move.cpp | 37 | ||||
-rw-r--r-- | src/Movement/Move.h | 4 |
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 { |