summaryrefslogtreecommitdiff
path: root/2003/i/buzz/src/busp/busp.h
blob: c56219bbaea9f05bc05fc05aaf8c861652bff6b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#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"

// G�re le busp cot� hard.
class Busp
{
    int m_fd;
    BuspIr m_ir;
    BuspServo m_servo;
    BuspCapteurs m_capteurs;
    static Busp *m_instance;
  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; }
};


#endif // busp_h