summaryrefslogtreecommitdiff
path: root/i/marvin/src/asserv/test_asserv.cc
diff options
context:
space:
mode:
Diffstat (limited to 'i/marvin/src/asserv/test_asserv.cc')
-rw-r--r--i/marvin/src/asserv/test_asserv.cc28
1 files changed, 26 insertions, 2 deletions
diff --git a/i/marvin/src/asserv/test_asserv.cc b/i/marvin/src/asserv/test_asserv.cc
index 4742e5d..557add2 100644
--- a/i/marvin/src/asserv/test_asserv.cc
+++ b/i/marvin/src/asserv/test_asserv.cc
@@ -24,6 +24,7 @@
// }}}
#include "asserv.hh"
#include "tester/tester.hh"
+#include "timer/timer.hh"
#include <iostream>
#include <exception>
@@ -54,6 +55,13 @@ class TestAsserv : public Tester, public Asserv::Receiver
ok_ = false;
asserv_.speedTo (t, a, seq_);
}
+ /// Speed controlled angle consign offset, handle seq.
+ void speedAngle (double a)
+ {
+ nextSeq ();
+ ok_ = false;
+ asserv_.speedAngle (a, seq_);
+ }
/// Find a hole, handle seq.
void findHole (void)
{
@@ -61,18 +69,30 @@ class TestAsserv : public Tester, public Asserv::Receiver
ok_ = false;
asserv_.findHole (seq_);
}
+ /// Wait.
+ void wait (int ms)
+ {
+ int t, stop;
+ t = Timer::getProgramTime ();
+ stop = t + ms;
+ while (t < stop)
+ {
+ asserv_.wait (stop - t);
+ t = Timer::getProgramTime ();
+ }
+ }
/// Called after each command called.
void postcall (void)
{
while (!asserv_.wait () || !ok_)
- std::cout << "hop" << std::endl;
+ ;
}
/// Executed before checking/running commands. Good place to add command
/// to the interpreter.
void preRun (void)
{
Interpreter &i = getInterpreter ();
- i.add ("wait", Interpreter::memFunc (asserv_, &Asserv::wait),
+ i.add ("wait", Interpreter::memFunc (*this, &TestAsserv::wait),
"wait MS\nwait for a delay in millisecond");
i.add ("reset", Interpreter::memFunc (asserv_, &Asserv::reset),
"reset\nreset the asserv board");
@@ -88,6 +108,10 @@ class TestAsserv : public Tester, public Asserv::Receiver
i.add ("speedTo", Interpreter::memFunc (*this, &TestAsserv::speedTo),
"speedTo THETA(mm) ANGLE(mm)\n"
"speed consign limited in distance");
+ i.add ("speedAngle",
+ Interpreter::memFunc (*this, &TestAsserv::speedAngle),
+ "speedAngle ANGLE(rad)\n"
+ "speed consign limited in angle");
i.add ("findHole", Interpreter::memFunc (*this, &TestAsserv::findHole),
"findHole\nfind a hole");
i.add ("setPos", Interpreter::memFunc (asserv_, &Asserv::setPos),