summaryrefslogtreecommitdiff
path: root/2003/i/buzz/src/busp
diff options
context:
space:
mode:
authorschodet2003-09-10 20:13:52 +0000
committerschodet2003-09-10 20:13:52 +0000
commite40722474578d38fb31f4aa97af49904eda75544 (patch)
tree2259cd5b07ad12f2a8ed52a9354ab2bf8b256b25 /2003/i/buzz/src/busp
parent5b1f702f012e9fcb0e64cdb6954759acc4c13e31 (diff)
Aprés 2003.
Diffstat (limited to '2003/i/buzz/src/busp')
-rw-r--r--2003/i/buzz/src/busp/Makefile.defs9
-rw-r--r--2003/i/buzz/src/busp/busp.cc38
-rw-r--r--2003/i/buzz/src/busp/busp.h14
-rw-r--r--2003/i/buzz/src/busp/busp_capteurs.h8
-rw-r--r--2003/i/buzz/src/busp/busp_gps.cc4
5 files changed, 41 insertions, 32 deletions
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 ();
}