SysIo  1.9.0
Embedded Library and tools
Broches

Detailed Description

Collaboration diagram for Broches:

Classes

class  Sysio::Pin
 Broche d'un connecteur. More...
 
class  Sysio::Pin::Descriptor
 Descripteur d'une broche. More...
 
class  Sysio::Pin::Number
 Numéro de broche. More...
 

Functions

AccessLayer Sysio::Pin::accessLayer () const
 Couches d'accès autorisées.
 
void Sysio::Pin::attachInterrupt (Isr isr, Edge edge)
 Installe une routine d'interruption (Isr) More...
 
void Sysio::Pin::close ()
 Fermeture du GPIO.
 
int Sysio::Pin::column () const
 Numéro de colonne dans la connecteur. More...
 
Connector * Sysio::Pin::connector () const
 Accès au connecteur parent.
 
void Sysio::Pin::detachInterrupt ()
 Désinstalle la routine d'interruption. More...
 
Device * Sysio::Pin::device () const
 Accès à la couche matérielle.
 
Edge Sysio::Pin::edge ()
 Front de déclenchement. More...
 
static const std::string & Sysio::Pin::edgeName (Edge e)
 Nom d'un front.
 
static const std::map< Edge, std::string > & Sysio::Pin::edges ()
 Listes des fronts posibles avec leurs noms. More...
 
bool Sysio::Pin::forceUseSysFs (bool enable)
 Force ou non l'utilisation de SysFs. More...
 
Gpio * Sysio::Pin::gpio () const
 Accès au GPIO parent.
 
bool Sysio::Pin::isDebug () const
 Indique si le mode mise au point est actif.
 
bool Sysio::Pin::isOpen () const
 Indique si ouvert.
 
int Sysio::Pin::logicalNumber () const
 Numéro de la broche dans la numérotation logique NumberingLogical. More...
 
int Sysio::Pin::mcuNumber () const
 Numéro de la broche dans la numérotation microcontrôleur NumberingMcu. More...
 
Mode Sysio::Pin::mode ()
 Mode actuel d'une broche de type GPIO. More...
 
const std::string & Sysio::Pin::modeName ()
 Nom du mode actuel.
 
const std::string & Sysio::Pin::modeName (Mode mode) const
 Nom d'un mode.
 
const std::map< Mode, std::string > & Sysio::Pin::modes () const
 Listes des modes avec leurs noms. More...
 
const std::string & Sysio::Pin::name ()
 Nom de la broche. More...
 
const std::string & Sysio::Pin::name (Mode mode) const
 Nom correspondant à un mode. More...
 
int Sysio::Pin::number (Numbering numbering) const
 Numéro de la broche dans la numérotation demandé. More...
 
static const std::string & Sysio::Pin::numberingName (Numbering n)
 Nom d'une numérotation.
 
static const std::map< Numbering, std::string > & Sysio::Pin::numberings ()
 Listes des numérotations avec leurs noms. More...
 
bool Sysio::Pin::open ()
 Ouverture. More...
 
int Sysio::Pin::physicalNumber () const
 Numéro de la broche dans son connecteur. More...
 
 Sysio::Pin::Pin (Connector *parent, const Descriptor *desc)
 Constructeur. More...
 
Pull Sysio::Pin::pull ()
 Résistance de tirage d'une broche de type GPIO. More...
 
const std::string & Sysio::Pin::pullName ()
 Nom de la résistance de tirage actuelle.
 
static const std::string & Sysio::Pin::pullName (Pull n)
 Nom d'une résistance de tirage.
 
static const std::map< Pull, std::string > & Sysio::Pin::pulls ()
 Listes des résistances de tirage avec leurs noms. More...
 
bool Sysio::Pin::read () const
 Lecture de l'état binaire d'une broche de type GPIO. More...
 
void Sysio::Pin::release ()
 Restaure le mode et la résistance de pull-up d'une broche de type GPIO. More...
 
int Sysio::Pin::row () const
 Numéro de ligne dans la connecteur. More...
 
void Sysio::Pin::setDebug (bool enable)
 Active le mode mise au point. More...
 
void Sysio::Pin::setEdge (Edge edge)
 Modification du front de déclenchement. More...
 
void Sysio::Pin::setMode (Mode mode)
 Modification du mode d'une broche de type GPIO. More...
 
void Sysio::Pin::setPull (Pull pull)
 Modification de la résistance de tirage d'une broche de type GPIO. More...
 
int Sysio::Pin::systemNumber () const
 Numéro de la broche dans la numérotation système NumberingSystem. More...
 
void Sysio::Pin::toggle ()
 Bascule de l'état binaire d'une sortie. More...
 
Type Sysio::Pin::type () const
 Type de broche.
 
const std::string & Sysio::Pin::typeName () const
 Nom du type de la broche.
 
static const std::string & Sysio::Pin::typeName (Type t)
 Nom d'un type.
 
static const std::map< Type, std::string > & Sysio::Pin::types ()
 Listes des types avec leurs noms. More...
 
bool Sysio::Pin::useSysFs () const
 Indique si la broche utilise SysFs.
 
void Sysio::Pin::waitForInterrupt (Edge edge, int timeout_ms=-1)
 Attente passive d'un front. More...
 
void Sysio::Pin::write (bool value)
 Modification de l'état binaire d'une sortie. More...
 
virtual Sysio::Pin::~Pin ()
 Desctructeur.
 

Typedefs

typedef void(* Sysio::Pin::Isr) (void)
 Routine d'interruption. More...
 

Enumerations

enum  Sysio::Pin::Edge {
  Sysio::Pin::EdgeNone = 0, Sysio::Pin::EdgeRising, Sysio::Pin::EdgeFalling, Sysio::Pin::EdgeBoth,
  EdgeUnknown = -1
}
 Front de déclenchement d'une broche. More...
 
enum  Sysio::Pin::Mode {
  Sysio::Pin::ModeInput = 0, Sysio::Pin::ModeOutput, Sysio::Pin::ModeDisabled, Sysio::Pin::ModePwm,
  Sysio::Pin::ModeAlt0, Sysio::Pin::ModeAlt1, Sysio::Pin::ModeAlt2, Sysio::Pin::ModeAlt3,
  Sysio::Pin::ModeAlt4, Sysio::Pin::ModeAlt5, Sysio::Pin::ModeAlt6, Sysio::Pin::ModeAlt7,
  Sysio::Pin::ModeAlt8, Sysio::Pin::ModeAlt9, ModeUnknown = -1
}
 Mode de fonctionnement d'une broche. More...
 
enum  Sysio::Pin::Numbering { Sysio::Pin::NumberingLogical = 0, Sysio::Pin::NumberingMcu, Sysio::Pin::NumberingSystem, NumberingUnknown = -1 }
 Numérotation des broches utilisées par le GPIO. More...
 
enum  Sysio::Pin::Pull { Sysio::Pin::PullOff = 0, Sysio::Pin::PullDown, Sysio::Pin::PullUp, PullUnknown = -1 }
 Type de résistances de tirage d'une broche. More...
 
enum  Sysio::Pin::Type {
  Sysio::Pin::TypeGpio = 0, Sysio::Pin::TypePower, Sysio::Pin::TypeUsb, Sysio::Pin::TypeSound,
  Sysio::Pin::TypeVideo, Sysio::Pin::TypeNotConnected, TypeUnknown = -1
}
 Types de broches d'un connecteur. More...
 

Variables

int Sysio::Pin::Number::column
 Numéro de colonne dans la connecteur (commence à 1)
 
int Sysio::Pin::Number::logical
 Numéro dans numérotation logique (commence à 0)
 
int Sysio::Pin::Number::mcu
 Numéro dans numérotation du microcontrôleur (commence à 0)
 
std::map< Mode, std::string > Sysio::Pin::Descriptor::name
 Noms.
 
Number Sysio::Pin::Descriptor::num
 Numéros.
 
int Sysio::Pin::Number::row
 Numéro de ligne dans la connecteur (commence à 1)
 
int Sysio::Pin::Number::system
 Numéro dans numérotation du système d'exploitation (commence à 0)
 
Type Sysio::Pin::Descriptor::type
 Type de broche.
 

Typedef Documentation

typedef void(* Sysio::Pin::Isr) (void)

Routine d'interruption.

Une routine d'interruption ne prend et ne renvoie aucun paramètre.

Definition at line 296 of file gpiopin.h.

Enumeration Type Documentation

Front de déclenchement d'une broche.

Enumerator
EdgeNone 

Pas de détection.

EdgeRising 

Front montant.

EdgeFalling 

Front Descendant.

EdgeBoth 

Front montant et descendant.

Definition at line 101 of file gpiopin.h.

101  {
102  EdgeNone = 0,
103  EdgeRising,
104  EdgeFalling,
105  EdgeBoth,
106  EdgeUnknown = -1
107  };
Front montant.
Definition: gpiopin.h:103
Front montant et descendant.
Definition: gpiopin.h:105
Front Descendant.
Definition: gpiopin.h:104
Pas de détection.
Definition: gpiopin.h:102

Mode de fonctionnement d'une broche.

Enumerator
ModeInput 

Entrée.

ModeOutput 

Sortie.

ModeDisabled 

Broche désactivée.

ModePwm 

sortie PWM

ModeAlt0 

Fonction alternative 0.

ModeAlt1 

Fonction alternative 1.

ModeAlt2 

Fonction alternative 2.

ModeAlt3 

Fonction alternative 3.

ModeAlt4 

Fonction alternative 4.

ModeAlt5 

Fonction alternative 5.

ModeAlt6 

Fonction alternative 6.

ModeAlt7 

Fonction alternative 7.

ModeAlt8 

Fonction alternative 8.

ModeAlt9 

Fonction alternative 9.

Definition at line 68 of file gpiopin.h.

68  {
69  ModeInput = 0,
70  ModeOutput,
71  ModeDisabled,
72  ModePwm,
73  ModeAlt0,
74  ModeAlt1,
75  ModeAlt2,
76  ModeAlt3,
77  ModeAlt4,
78  ModeAlt5,
79  ModeAlt6,
80  ModeAlt7,
81  ModeAlt8,
82  ModeAlt9,
83  ModeUnknown = -1
84  };
Fonction alternative 9.
Definition: gpiopin.h:82
Fonction alternative 6.
Definition: gpiopin.h:79
sortie PWM
Definition: gpiopin.h:72
Fonction alternative 5.
Definition: gpiopin.h:78
Fonction alternative 3.
Definition: gpiopin.h:76
Fonction alternative 7.
Definition: gpiopin.h:80
Fonction alternative 1.
Definition: gpiopin.h:74
Broche désactivée.
Definition: gpiopin.h:71
Fonction alternative 4.
Definition: gpiopin.h:77
Fonction alternative 2.
Definition: gpiopin.h:75
Fonction alternative 8.
Definition: gpiopin.h:81
Fonction alternative 0.
Definition: gpiopin.h:73

Numérotation des broches utilisées par le GPIO.

Enumerator
NumberingLogical 

Numérotation logique (défaut), débute à 0.

NumberingMcu 

Numérotation du microcontroleur, débute à 0.

NumberingSystem 

Numérotation du système d'exploitation, débute à 0.

Definition at line 113 of file gpiopin.h.

113  {
114  NumberingLogical = 0,
115  NumberingMcu,
117  NumberingUnknown = -1
118  };
Numérotation logique (défaut), débute à 0.
Definition: gpiopin.h:114
Numérotation du microcontroleur, débute à 0.
Definition: gpiopin.h:115
Numérotation du système d&#39;exploitation, débute à 0.
Definition: gpiopin.h:116

Type de résistances de tirage d'une broche.

Enumerator
PullOff 

Résistance désactivée.

PullDown 

Résistance de tirage à l'état bas.

PullUp 

Résistance de tirage à l'état haut.

Definition at line 90 of file gpiopin.h.

90  {
91  PullOff = 0,
92  PullDown,
93  PullUp,
94  PullUnknown = -1
95  };
Résistance désactivée.
Definition: gpiopin.h:91
Résistance de tirage à l&#39;état bas.
Definition: gpiopin.h:92
Résistance de tirage à l&#39;état haut.
Definition: gpiopin.h:93

Types de broches d'un connecteur.

Enumerator
TypeGpio 

Broche GPIO.

TypePower 

Broche d'alimentation.

TypeUsb 

Broche port USB.

TypeSound 

Broche audio.

TypeVideo 

Broche video.

TypeNotConnected 

Broche non conectée.

Definition at line 124 of file gpiopin.h.

124  {
125  TypeGpio = 0,
126  TypePower,
127  TypeUsb,
128  TypeSound,
129  TypeVideo,
131  TypeUnknown = -1
132  };
Broche GPIO.
Definition: gpiopin.h:125
Broche d&#39;alimentation.
Definition: gpiopin.h:126
Broche audio.
Definition: gpiopin.h:128
Broche non conectée.
Definition: gpiopin.h:130
Broche video.
Definition: gpiopin.h:129
Broche port USB.
Definition: gpiopin.h:127

Function Documentation

void Sysio::Pin::attachInterrupt ( Isr  isr,
Edge  edge 
)

#include <gpiopin.h>

Installe une routine d'interruption (Isr)

Cette fonction créée un thread qui attend l'arrivée d'une interruption déclenchée par chaque front edge et exécute la fonction isr.

Parameters
isrfonction exécuté à chaque interruption
edgefront déclenchant l'interruption
int Sysio::Pin::column ( ) const

#include <gpiopin.h>

Numéro de colonne dans la connecteur.

Returns
Numéro de colonne, commence à 1
void Sysio::Pin::detachInterrupt ( )

#include <gpiopin.h>

Désinstalle la routine d'interruption.

Le thread est détruit.

Edge Sysio::Pin::edge ( )

#include <gpiopin.h>

Front de déclenchement.

Returns
le front actuel, si la broche n'est pas en mode SysFs, EdgeUnknown est retourné.
static const std::map<Edge, std::string>& Sysio::Pin::edges ( )
static

#include <gpiopin.h>

Listes des fronts posibles avec leurs noms.

Permet de parcourir les fronts à l'aide des itérateurs de la STL.

bool Sysio::Pin::forceUseSysFs ( bool  enable)

#include <gpiopin.h>

Force ou non l'utilisation de SysFs.

Si le Gpio parent n'autorise que la couche d'accès SysFs (AccessLayerSysFs), cette fonction ne fait rien.

int Sysio::Pin::logicalNumber ( ) const

#include <gpiopin.h>

Numéro de la broche dans la numérotation logique NumberingLogical.

Cette numérotation commence à 0.

Returns
Numéro de broche logique, -1 si la broche n'est pas de type GPIO ( TypeGpio)
int Sysio::Pin::mcuNumber ( ) const

#include <gpiopin.h>

Numéro de la broche dans la numérotation microcontrôleur NumberingMcu.

Cette numérotation commence à 0.

Returns
Numéro de broche microcontrôleur, -1 si la broche n'est pas de type GPIO ( TypeGpio)
Mode Sysio::Pin::mode ( )

#include <gpiopin.h>

Mode actuel d'une broche de type GPIO.

Returns
le mode actuel, si la broche n'est pas de type GPIO, ModeUnknown est retourné.
const std::map<Mode, std::string>& Sysio::Pin::modes ( ) const

#include <gpiopin.h>

Listes des modes avec leurs noms.

Permet de parcourir les modes à l'aide des itérateurs de la STL

const std::string& Sysio::Pin::name ( )

#include <gpiopin.h>

Nom de la broche.

Returns
nom qui correspond au mode renvoyé par mode() ou le nom générique si le mode actuel n'est pas associé à un nom ou si la broche n'est pas de type TypeGpio.
const std::string& Sysio::Pin::name ( Mode  mode) const

#include <gpiopin.h>

Nom correspondant à un mode.

Parameters
modemode demandée, déclenche une exception std::out_of_range il n'est pas supporté par cette broche.
Returns
le nom de la broche correspondant au mode
int Sysio::Pin::number ( Numbering  numbering) const

#include <gpiopin.h>

Numéro de la broche dans la numérotation demandé.

La numérotation commence à 0.

Parameters
numberingnumérotation demandée, déclenche une exception std::invalid_argument si incorrecte
Returns
Numéro de broche, -1 si la broche n'est pas de type GPIO ( TypeGpio)
static const std::map<Numbering, std::string>& Sysio::Pin::numberings ( )
static

#include <gpiopin.h>

Listes des numérotations avec leurs noms.

Permet de parcourir les numérotations à l'aide des itérateurs de la STL.

bool Sysio::Pin::open ( )
protected

#include <gpiopin.h>

Ouverture.

Returns
true si ouvert
int Sysio::Pin::physicalNumber ( ) const

#include <gpiopin.h>

Numéro de la broche dans son connecteur.

Cette numérotation commence à 1.

Returns
Numéro de broche connecteur
Sysio::Pin::Pin ( Connector parent,
const Descriptor desc 
)

#include <gpiopin.h>

Constructeur.

Une broche ne peut être instanciée que par une classe Connector.

Parameters
parentpointeur sur le GPIO parent
descpointeur sur la description
Pull Sysio::Pin::pull ( )

#include <gpiopin.h>

Résistance de tirage d'une broche de type GPIO.

Returns
la résistance actuellement appliquée, si la broche n'est pas de type GPIO, PullUnknown est retourné.
static const std::map<Pull, std::string>& Sysio::Pin::pulls ( )
static

#include <gpiopin.h>

Listes des résistances de tirage avec leurs noms.

Permet de parcourir les numérotations à l'aide des itérateurs de la STL.

bool Sysio::Pin::read ( ) const

#include <gpiopin.h>

Lecture de l'état binaire d'une broche de type GPIO.

Déclenche une exception std::domain_error si la broche n'est pas de type TypeGpio et une exeception std::system_error si la lecture est impossible sur le système.

Returns
true pour un état logique haut (VccIo).
void Sysio::Pin::release ( )

#include <gpiopin.h>

Restaure le mode et la résistance de pull-up d'une broche de type GPIO.

La broche correspondante est remise dans son état initial mémorisé avant le premier appel à setMode() ou/et setPull().

Déclenche une exception std::domain_error si la broche n'est pas de type TypeGpio.

int Sysio::Pin::row ( ) const

#include <gpiopin.h>

Numéro de ligne dans la connecteur.

Returns
Numéro de ligne, commence à 1
void Sysio::Pin::setDebug ( bool  enable)

#include <gpiopin.h>

Active le mode mise au point.

Cela active l'affichage d'informations de mise au point de la couche matérielle (GpioDevice).

void Sysio::Pin::setEdge ( Edge  edge)

#include <gpiopin.h>

Modification du front de déclenchement.

L'accès par SysFs doit donc être autorisée dans le Gpio parent (AccessLayerSysFs ou AccessLayerAll) ou par l'appel à forceUseSysFs(true).
Si la broche n'est pas en mode SysFs et que cet accès est autorisé, la broche est passée automatiquement en mode SysFs.

Parameters
edgechoix du front
void Sysio::Pin::setMode ( Mode  mode)

#include <gpiopin.h>

Modification du mode d'une broche de type GPIO.

Déclenche une exception std::domain_error si la broche n'est pas de type TypeGpio.

Parameters
modenouveau mode, une exception std::invalid_argument est déclenchée si le mode demandé n'est pas supporté.
void Sysio::Pin::setPull ( Pull  pull)

#include <gpiopin.h>

Modification de la résistance de tirage d'une broche de type GPIO.

Déclenche une exception std::domain_error si la broche n'est pas de type TypeGpio.

Parameters
pullnouvelle résistance, PullOff pour désactiver, une exception std::invalid_argument est déclenchée si la résistance demandée n'est pas supportée.
int Sysio::Pin::systemNumber ( ) const

#include <gpiopin.h>

Numéro de la broche dans la numérotation système NumberingSystem.

Cette numérotation commence à 0.

Returns
Numéro de broche système, -1 si la broche n'est pas de type GPIO ( TypeGpio)
void Sysio::Pin::toggle ( )

#include <gpiopin.h>

Bascule de l'état binaire d'une sortie.

Si la sortie est à l'état bas, elle passe à l'état haut et inversement.

Déclenche une exception std::domain_error si la broche n'est pas de type TypeGpio ou si elle n'est pas en sortie (ModeOutput).

static const std::map<Type, std::string>& Sysio::Pin::types ( )
static

#include <gpiopin.h>

Listes des types avec leurs noms.

Permet de parcourir les modes à l'aide des itérateurs de la STL

void Sysio::Pin::waitForInterrupt ( Edge  edge,
int  timeout_ms = -1 
)

#include <gpiopin.h>

Attente passive d'un front.

L'implémentation utilise les interruptions matérielles gérées par SysFs.
Toutes les broches du GPIO ne disposent pas ce cette fonctionnalité (cela dépend de la plateforme). Généralement, on pourra identifier une telle broche du GPIO ou du SOC par un INT se trouvant dans le nom. Par exemple, la broche PA0 sur un SOC AllWinner H3 a cette fonctionnalité car sa fonction ALT6 est PA_EINT0. Si les interruptions ne sont pas supportées par la broche, un appel à waitForInterrupt() déclenchera une exeception std::system_error avec le code ENOSYS (function_not_supported).
L'accès par SysFs doit donc être autorisée dans le Gpio parent (AccessLayerSysFs ou AccessLayerAll) ou par l'appel à forceUseSysFs(true).
Si la broche n'est pas en mode SysFs et que cet accès est autorisé, la broche est passée automatiquement en mode SysFs.

Parameters
edgefront de déclenchement
timeouttemps maximal d'attente en millisecondes. -1 pour l'infini. Si une autre valeur est fournie et que le délai est atteint avant que le front survienne, une exception std::system_error avec le code ETIME est déclenchée.
void Sysio::Pin::write ( bool  value)

#include <gpiopin.h>

Modification de l'état binaire d'une sortie.

Déclenche une exception std::domain_error si la broche n'est pas de type TypeGpio ou si elle n'est pas en sortie (ModeOutput).

Parameters
valuetrue pour un état logique haut (VccIo).