From 9e9ac23d846063f7b3b533444b213e6ffb931dd9 Mon Sep 17 00:00:00 2001 From: schodet Date: Thu, 22 May 2003 20:52:10 +0000 Subject: Ajout des Actionneurs --- 2003/i/buzz/src/busp/busp_actionneurs.cc | 39 ++++++++++++++++++++++++++++++++ 2003/i/buzz/src/busp/busp_actionneurs.h | 23 +++++++++++++++++++ 2003/i/buzz/src/busp/test_busp.cc | 23 ++++++++++++++++++- 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 2003/i/buzz/src/busp/busp_actionneurs.cc create mode 100644 2003/i/buzz/src/busp/busp_actionneurs.h (limited to '2003') diff --git a/2003/i/buzz/src/busp/busp_actionneurs.cc b/2003/i/buzz/src/busp/busp_actionneurs.cc new file mode 100644 index 0000000..063da02 --- /dev/null +++ b/2003/i/buzz/src/busp/busp_actionneurs.cc @@ -0,0 +1,39 @@ +// busp_actionneurs.cc +// buzz - Programme du robot Efrei Robotique I1-I2 2003 +// Copyright (C) 2003 Nicolas Schodet +// +#include "busp_actionneurs.h" +#include "busp.h" + +#include + +// Constructeur. +BuspActionneurs::BuspActionneurs () +{ + m_actionneurs = 0; +} + +// Destructeur. +BuspActionneurs::~BuspActionneurs () +{ +} + +// Change un actionneur. +void +BuspActionneurs::set (int n, int val) +{ + m_actionneurs = m_actionneurs & ~(1 << n) | (val << n); + Busp::getInstance ().cli (); + Busp::getInstance ().write (m_address, m_actionneurs); + Busp::getInstance ().sti (); +} + +// Change tous les actionneurs. +void +BuspActionneurs::setAll (int set, int reset) +{ + m_actionneurs = (m_actionneurs & ~reset) | set; + Busp::getInstance ().cli (); + Busp::getInstance ().write (m_address, m_actionneurs); + Busp::getInstance ().sti (); +} diff --git a/2003/i/buzz/src/busp/busp_actionneurs.h b/2003/i/buzz/src/busp/busp_actionneurs.h new file mode 100644 index 0000000..fa311c6 --- /dev/null +++ b/2003/i/buzz/src/busp/busp_actionneurs.h @@ -0,0 +1,23 @@ +#ifndef busp_actionneurs_h +#define busp_actionneurs_h +// busp_actionneurs.h +// buzz - Programme du robot Efrei Robotique I1-I2 2003 +// Copyright (C) 2003 Nicolas Schodet + +class BuspActionneurs +{ + private: + static const int m_address = 4; + unsigned char m_actionneurs; + public: + // Constructeur. + BuspActionneurs (); + // Destructeur. + ~BuspActionneurs (); + // Change un actionneur. + void set (int n, int val); + // Change tous les actionneurs. + void setAll (int set, int reset); +}; + +#endif // busp_actionneurs_h diff --git a/2003/i/buzz/src/busp/test_busp.cc b/2003/i/buzz/src/busp/test_busp.cc index 9feaeaa..a3b7c9e 100644 --- a/2003/i/buzz/src/busp/test_busp.cc +++ b/2003/i/buzz/src/busp/test_busp.cc @@ -75,13 +75,34 @@ main (int argc, char **argv) atoi (argv[i + 1])); } } + if (argc >= 4 && strcmp (argv[1], "actionneurs") == 0 && argc % 2 + == 0) + { + if (strcmp (argv[2], "all") == 0) + { + busp.getActionneurs ().setAll (atoi (argv[3]), + atoi (argv[4])) + } + else + { + for (int i = 2; i < argc; i += 2) + { + busp.getActionneurs ().set (atoi (argv[i]), + atoi (argv[i + 1])); + } + } + } else { cerr << argv[0] << ": teste le bus parallèle." << endl << "\t" << argv[0] << " []" << endl << "\t" << argv[0] << " reset" << endl << "\t" << argv[0] << " irq" << endl - << "\t" << argv[0] << " servo [servo pos...]" << endl; + << "\t" << argv[0] << " capteurs" << endl + << "\t" << argv[0] << " actionneurs [ ...]" << endl + << "\t" << argv[0] << " actionneurs all " << + endl + << "\t" << argv[0] << " servo [ ...]" << endl; } return 1; } -- cgit v1.2.3