#ifndef busp_h #define busp_h // busp.h - Contrôle bas niveau du bus parallèle. // buzz - Programme du robot Efrei Robotique I1-I2 2003 // Copyright (C) 2003 Nicolas Schodet #include "busp_ir.h" #include "busp_servo.h" #include "busp_capteurs.h" #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; BuspServo m_servo; BuspCapteurs m_capteurs; // BuspActionneurs m_actionneurs; // BuspGPS m_gps; static Busp *m_instance; unsigned char m_inverse[256]; public: volatile int irqs; // Initialise le busp, open (), signal (). Busp (); // Destructeur. ~Busp (); // Active les interruptions. void sti (void); // Désactive les interruptions. void cli (void); // Traite le signal envoyé par le kernel lors d'une interruption. static void irq (int sig); // Ecrire sur le bus. void write (int addr, int data); // Lire sur le bus. int read (int addr); // Reset les périphériques. void reset (void) { cli (); write (0, 0); sti (); } // 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; } BuspServo &getServo (void) { return m_servo; } BuspCapteurs &getCapteurs (void) { return m_capteurs; } // BuspActionneurs &getActionneurs (void) { return m_actionneurs; } // BuspGPS &getGPS (void) { return m_gps; } }; #endif // busp_h