SysIo  1.9.0
Embedded Library and tools
gpiodevice.h
1 
8 #ifndef _SYSIO_GPIO_DEVICE_H_
9 #define _SYSIO_GPIO_DEVICE_H_
10 
11 #include <sysio/gpio.h>
12 
13 #ifndef __DOXYGEN__
14 
15 namespace Sysio {
16 
17  /*
18  * @class Device
19  * @author epsilonrt
20  * @date 02/22/18
21  * @brief Accès à la couche matérielle du GPIO
22  *
23  * Classe abstraite devant être implémentée sur la plateforme cible.
24  */
25  class Device {
26 
27  public:
28  enum {
29  hasToggle = 0x0001,
30  hasPullRead = 0x0002,
31  hasAltRead = 0x0004
32  };
33 
34  Device();
35  virtual ~Device();
36  virtual bool isOpen() const;
37  virtual bool isDebug() const;
38  virtual void setDebug (bool enable);
39  virtual unsigned int flags() const;
40 
41  // Méthodes purement virtuelles
42  virtual const Gpio::Descriptor * descriptor() const = 0;
43 
44  virtual bool open() = 0;
45  virtual void close() = 0;
46  virtual AccessLayer preferedAccessLayer() const = 0;
47 
48  virtual void setMode (const Pin * pin, Pin::Mode m) = 0;
49  virtual void setPull (const Pin * pin, Pin::Pull p) = 0;
50  virtual void write (const Pin * pin, bool v) = 0;
51  virtual void toggle (const Pin * pin);
52 
53  virtual bool read (const Pin * pin) const = 0;
54  virtual Pin::Mode mode (const Pin * pin) const = 0;
55  virtual Pin::Pull pull (const Pin * pin) const;
56 
57  virtual const std::map<Pin::Mode, std::string> & modes() const = 0;
58 
59  protected:
60  virtual void setOpen (bool open);
61 
62  private:
63  bool _isopen;
64  bool _isdebug;
65  };
66 }
67 #endif /* DOXYGEN not defined */
68 /* ========================================================================== */
69 #endif /*_SYSIO_GPIO_DEVICE_H_ defined */
AccessLayer
Choix de la façon d&#39;accéder aux broches du GPIO.
Definition: gpiopin.h:38
Mode
Mode de fonctionnement d&#39;une broche.
Definition: gpiopin.h:68
Pull
Type de résistances de tirage d&#39;une broche.
Definition: gpiopin.h:90
Definition: clock.h:18