From 8f486613be58ced269db1d437e560c16558604e8 Mon Sep 17 00:00:00 2001 From: becquet Date: Thu, 10 May 2007 18:49:20 +0000 Subject: Création de chuck, le programme du robot 2007. --- i/chuck/src/es/test_es.cc | 156 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 i/chuck/src/es/test_es.cc (limited to 'i/chuck/src/es/test_es.cc') diff --git a/i/chuck/src/es/test_es.cc b/i/chuck/src/es/test_es.cc new file mode 100644 index 0000000..2990d73 --- /dev/null +++ b/i/chuck/src/es/test_es.cc @@ -0,0 +1,156 @@ +// test_es.cc +// marvin - programme du robot 2006. {{{ +// +// Copyright (C) 2006 Nicolas Haller +// +// Robot APB Team/Efrei 2006. +// Web: http://assos.efrei.fr/robot/ +// Email: robot AT efrei DOT fr +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} + +#include "tester/tester.hh" +#include "es/es.hh" +#include "timer/timer.hh" + +#include + +class TestEs : public Tester +{ + private: + Es es_; + /// Called after each command called. + void postcall (void) + { + while (!es_.wait ()) + ; + } + /// Wait. + void wait (int ms) + { + int t, stop; + t = Timer::getProgramTime (); + stop = t + ms; + while (t < stop) + { + es_.wait (stop - t); + t = Timer::getProgramTime (); + } + } + public: + // Constructor + TestEs (int argc, char ** argv) + : Tester (argc, argv), es_(config_) { } + void preRun (void) + { + Interpreter &interpreter = getInterpreter (); + // Add functions. + interpreter.add ("reset", Interpreter::memFunc (es_, &Es::reset), + "Reset ()"); + interpreter.add ("wait", Interpreter::memFunc (*this, &TestEs::wait), + "Blocking wait (time)\n" + " - time : time to wait in ms"); + interpreter.add + ("colorRef", Interpreter::memFunc (es_, &Es::refColor), + "Reference current color as green for sensors (mask)"); + interpreter.add + ("rvbAll", Interpreter::memFunc (es_, &Es::enableAllSensors), + "Drop a ball at the rear ()"); + interpreter.add + ("servoPos", Interpreter::memFunc (es_, &Es::setServoPos), + "Set servo position (mask, pos)"); + interpreter.add + ("sharpUp", Interpreter::memFunc (es_, &Es::setSharpUpdate), + "Set sharp update frequency (mask, freq)"); + interpreter.add + ("sharpStat", Interpreter::memFunc (es_, &Es::setSharpStat), + "Set sharp stats (mask, freq)"); + interpreter.add + ("sharpThreshold", Interpreter::memFunc (es_, &Es::setSharpThreshold), + "Set sharp threshold (num, high, low)\n" + " - num : sharp number (1-3)\n" + " - high : high threshold\n" + " - low : low threshold"); + interpreter.add + ("lcdPrint", Interpreter::memFunc (es_, &Es::lcdPrint), + "Print a message (32 char max) onto the LCD (message)"); + interpreter.add + ("lcdKey", Interpreter::memFunc (es_, &Es::lcdGetKey), + "Set stat for key if pressed (freq)"); + interpreter.add + ("turbSpeed", Interpreter::memFunc (es_, &Es::setTurbineSpeed), + "Set turbine speed (num, speed)\n" + " - num : 1 front, 2 rear\n" + " - speed : 256 - 819"); + interpreter.add + ("turbMinSpeed", Interpreter::memFunc (es_, + &Es::barilletDebutLancement), + "Turbine minimal speed ()"); + interpreter.add + ("turbFrontFull", Interpreter::memFunc (es_, + &Es::barilletLancement), + "Turbine front full speed ()"); + interpreter.add + ("barSleep", Interpreter::memFunc (es_, &Es::barilletSleep), + "Barillet in sleep mode (low speed turbine)"); + interpreter.add + ("turbDepose", Interpreter::memFunc (es_, &Es::deposeBalle), + "Drop a ball at the rear ()"); + interpreter.add + ("barDropWhite", Interpreter::memFunc (es_, &Es::dropWhiteBall), + "drop une balle blanche"); + interpreter.add("barDropBlack", Interpreter::memFunc (es_, + &Es::dropBlackBall), + "drop une balle noire"); + interpreter.add("barSetEmpty", Interpreter::memFunc (es_, + &Es::setEmptyHoleFront), + "met un trou vide en position avale une balle"); + interpreter.add + ("barExtract", Interpreter::memFunc (es_, &Es::extraitBalle), + "Extract a ball ()"); + interpreter.add + ("barInit", Interpreter::memFunc (es_, &Es::barilletInit), + "Init barillet ()"); + interpreter.add + ("barGoTo", Interpreter::memFunc (es_, &Es::rotationBarillet), + "Barillet go to position (pos)\n" + " - pos : in 40° of a round"); + interpreter.add + ("barPurge", Interpreter::memFunc (es_, &Es::barilletEmpty), + "Extract a ball ()"); + interpreter.add ("_postcall", + Interpreter::memFunc (*this, &TestEs::postcall)); + } + void postRun (void) + { + es_.reset (); + } +}; + +int +main (int argc, char **argv) +{ + try + { + TestEs te (argc, argv); + te.run (); + } + catch (const std::exception &e) + { + std::cerr << e.what () << std::endl; + } +} -- cgit v1.2.3