From e40722474578d38fb31f4aa97af49904eda75544 Mon Sep 17 00:00:00 2001 From: schodet Date: Wed, 10 Sep 2003 20:13:52 +0000 Subject: Aprés 2003. --- 2003/i/buzz/src/busp/Makefile.defs | 9 ++++++--- 2003/i/buzz/src/busp/busp.cc | 38 +++++++++++++++++++++--------------- 2003/i/buzz/src/busp/busp.h | 14 +++++++------ 2003/i/buzz/src/busp/busp_capteurs.h | 8 +++++--- 2003/i/buzz/src/busp/busp_gps.cc | 4 ---- 5 files changed, 41 insertions(+), 32 deletions(-) (limited to '2003/i/buzz/src/busp') diff --git a/2003/i/buzz/src/busp/Makefile.defs b/2003/i/buzz/src/busp/Makefile.defs index 4ec0fb0..7882cfd 100644 --- a/2003/i/buzz/src/busp/Makefile.defs +++ b/2003/i/buzz/src/busp/Makefile.defs @@ -1,6 +1,9 @@ +LIBS += busp.a TARGETS += test_busp -test_busp_SOURCES = busp.cc busp_ir.cc busp_servo.cc busp_capteurs.cc \ - busp_actionneurs.cc busp_gps.cc test_busp.cc erreur.a \ - config.a +busp_a_SOURCES = busp.cc busp_ir.cc busp_servo.cc busp_capteurs.cc \ + busp_actionneurs.cc busp_gps.cc +test_busp_SOURCES = test_busp.cc busp.a erreur.a config.a test_busp: $(test_busp_SOURCES:%.cc=%.o) + +busp.a: ${busp_a_SOURCES:%.cc=busp.a(%.o)} diff --git a/2003/i/buzz/src/busp/busp.cc b/2003/i/buzz/src/busp/busp.cc index d830a30..5038a65 100644 --- a/2003/i/buzz/src/busp/busp.cc +++ b/2003/i/buzz/src/busp/busp.cc @@ -34,7 +34,7 @@ Busp::Busp () sa.sa_flags = SA_RESTART; sigaction (SIGUSR1, &sa, 0); // Il n'y aura pas d'erreur, cf doc. // Active les interruptions. - sti (); +// sti (); // Remplis le tableau d'inversion des données. // Les fils sont soudés à l'envers. for (int i = 0; i < 256; ++i) @@ -55,13 +55,13 @@ Busp::Busp () Busp::~Busp () { // Désactive les interruptions. - cli (); +// cli (); // Ignore les signaux, on sait jammais. - struct sigaction sa; - sa.sa_handler = SIG_IGN; - sigemptyset (&sa.sa_mask); - sa.sa_flags = SA_RESTART; - sigaction (SIGUSR1, &sa, 0); +// struct sigaction sa; +// sa.sa_handler = SIG_IGN; +// sigemptyset (&sa.sa_mask); +// sa.sa_flags = SA_RESTART; +// sigaction (SIGUSR1, &sa, 0); // Ferme le périphérique. close (m_fd); // Efface le pointeur d'instance. @@ -72,31 +72,33 @@ Busp::~Busp () void Busp::sti (void) { - ioctl (m_fd, PBUS_INTENABLE); +// ioctl (m_fd, PBUS_INTENABLE); } // Désactive les interruptions. void Busp::cli (void) { - ioctl (m_fd, PBUS_INTDISABLE); +// ioctl (m_fd, PBUS_INTDISABLE); } // Traite le signal envoyé par le kernel lors d'une interruption. void Busp::irq (int sig) { - Busp &busp = Busp::getInstance (); +// Busp &busp = Busp::getInstance (); // Désactivation des interuptions automatique. // Récupère le numéro d'intéruption. - struct pbus_io io; - ioctl (busp.m_fd, PBUS_INTREAD, &io); - cout << "irq " << (int) io.ints << endl; +// struct pbus_io io; +// ioctl (busp.m_fd, PBUS_INTREAD, &io); +#ifdef BUSP_DEBUG +// cout << "irq " << (int) io.ints << endl; +#endif // BUSP_DEBUG // Sous-traite l'interruption. - if (io.ints & BuspIr::m_irqMask) - busp.m_ir.irq (); +// if (io.ints & BuspIr::m_irqMask) +// busp.m_ir.irq (); // Active à nouveau. - busp.sti (); +// busp.sti (); } // Ecrire sur le bus. @@ -107,7 +109,9 @@ Busp::write (int addr, int data) io.addr = addr; io.data = m_inverse[data]; ioctl (m_fd, PBUS_WRITE, &io); +#ifdef BUSP_DEBUG cout << "write " << addr << " " << data << endl; +#endif // BUSP_DEBUG } // Lire sur le bus. @@ -117,6 +121,8 @@ Busp::read (int addr) struct pbus_io io; io.addr = addr; ioctl (m_fd, PBUS_READ, &io); +#ifdef BUSP_DEBUG cout << "read " << addr << " = " << (int) m_inverse[io.data] << endl; +#endif // BUSP_DEBUG return m_inverse[io.data]; } diff --git a/2003/i/buzz/src/busp/busp.h b/2003/i/buzz/src/busp/busp.h index 99bcd72..051cbcc 100644 --- a/2003/i/buzz/src/busp/busp.h +++ b/2003/i/buzz/src/busp/busp.h @@ -9,15 +9,17 @@ #include "busp_actionneurs.h" #include "busp_gps.h" +#define BUSP_DEBUG + // Gère le busp coté hard. class Busp { int m_fd; - BuspIr m_ir; +// BuspIr m_ir; BuspServo m_servo; BuspCapteurs m_capteurs; - BuspActionneurs m_actionneurs; - BuspGPS m_gps; +// BuspActionneurs m_actionneurs; +// BuspGPS m_gps; static Busp *m_instance; unsigned char m_inverse[256]; public: @@ -41,11 +43,11 @@ class Busp // Retourne une référence sur l'instance unique. static Busp &getInstance (void) { return *m_instance; } // Retourne une référence sur un module. - BuspIr &getIr (void) { return m_ir; } +// BuspIr &getIr (void) { return m_ir; } BuspServo &getServo (void) { return m_servo; } BuspCapteurs &getCapteurs (void) { return m_capteurs; } - BuspActionneurs &getActionneurs (void) { return m_actionneurs; } - BuspGPS &getGPS (void) { return m_gps; } +// BuspActionneurs &getActionneurs (void) { return m_actionneurs; } +// BuspGPS &getGPS (void) { return m_gps; } }; diff --git a/2003/i/buzz/src/busp/busp_capteurs.h b/2003/i/buzz/src/busp/busp_capteurs.h index 87f1aae..0189f64 100644 --- a/2003/i/buzz/src/busp/busp_capteurs.h +++ b/2003/i/buzz/src/busp/busp_capteurs.h @@ -7,10 +7,10 @@ class BuspCapteurs { public: - static const unsigned char m_irqMask = 0x04; + static const unsigned char m_irqMask = 0x11; private: - static const int m_address = 2; - unsigned char m_capteurs; + static const int m_address = 10; + int m_capteurs; public: // Constructeur. BuspCapteurs (); @@ -20,6 +20,8 @@ class BuspCapteurs void irq (void); // Sort les informations. void dump (void); + // Récupère les infos capteurs. + int get (void) { return m_capteurs; } }; #endif // busp_capteurs_h diff --git a/2003/i/buzz/src/busp/busp_gps.cc b/2003/i/buzz/src/busp/busp_gps.cc index b2f4ea3..97cb11e 100644 --- a/2003/i/buzz/src/busp/busp_gps.cc +++ b/2003/i/buzz/src/busp/busp_gps.cc @@ -23,25 +23,21 @@ BuspGPS::BuspGPS () { rc.getId (); rc >> m_fl1; - cout << "fl1 " << m_fl1 << endl; } else if (rc.isId ("fl2")) { rc.getId (); rc >> m_fl2; - cout << "fl2 " << m_fl2 << endl; } else if (rc.isId ("fr")) { rc.getId (); rc >> m_fr; - cout << "fr " << m_fr << endl; } else if (rc.isId ("d")) { rc.getId (); rc >> m_d; - cout << "d " << m_d << endl; } else rc.noId (); } -- cgit v1.2.3