Motion: add tests for the axis autoenable

Add Motion::Enabled() to get the current axis enablement status.
pull/96/head
Yuri D'Elia 2021-08-24 17:01:45 +02:00 committed by DRracer
parent 448edfd84b
commit 9a93ebecfc
2 changed files with 21 additions and 0 deletions

View File

@ -77,6 +77,9 @@ public:
/// @returns true if the init was successful (TMC2130 responded ok)
bool InitAxis(Axis axis);
/// Return the axis power status.
bool Enabled(Axis axis) const { return axisData[axis].enabled; }
/// Set axis power status. One must manually ensure no moves are currently being
/// performed by calling QueueEmpty().
void SetEnabled(Axis axis, bool enabled);

View File

@ -31,6 +31,24 @@ TEST_CASE("motion::basic", "[motion]") {
REQUIRE(motion.Position(Idler) == 10);
}
TEST_CASE("motion::auto_axis_enable", "[motion]") {
// by default the axis should start disabled
REQUIRE(motion.Enabled(Pulley) == false);
// enable manually the axis
motion.SetEnabled(Pulley, true);
REQUIRE(motion.Enabled(Pulley) == true);
// now disable
motion.SetEnabled(Pulley, false);
REQUIRE(motion.Enabled(Pulley) == false);
// planning a move should enable the axis automatically
REQUIRE(motion.QueueEmpty());
motion.PlanMove<Pulley>(1.0_mm, 100.0_mm_s);
REQUIRE(motion.Enabled(Pulley) == true);
}
TEST_CASE("motion::unit", "[motion]") {
// test AxisUnit conversion in the PlanMove and PlanMoveTo.
REQUIRE(motion.QueueEmpty());