MAJ BROSSARD

Dependencies:   mbed

Committer:
singularity
Date:
Wed Oct 22 23:26:41 2014 +0000
Revision:
3:8f2c0c324296
Parent:
2:2889a7a4b67a
tentative convert sint16 -> char

Who changed what in which revision?

UserRevisionLine numberNew contents of line
singularity 2:2889a7a4b67a 1 #define NCCS 16
singularity 2:2889a7a4b67a 2
singularity 2:2889a7a4b67a 3 typedef unsigned int tcflag_t;
singularity 2:2889a7a4b67a 4 typedef unsigned char cc_t;
singularity 2:2889a7a4b67a 5
singularity 2:2889a7a4b67a 6 struct termios {
singularity 2:2889a7a4b67a 7 tcflag_t c_iflag; /* Input modes */
singularity 2:2889a7a4b67a 8 tcflag_t c_oflag; /* Output modes */
singularity 2:2889a7a4b67a 9 tcflag_t c_cflag; /* Control modes */
singularity 2:2889a7a4b67a 10 tcflag_t c_lflag; /* Local modes */
singularity 2:2889a7a4b67a 11 tcflag_t c_reserved; /* Reserved for future use */
singularity 2:2889a7a4b67a 12 cc_t c_cc[NCCS]; /* Control characters */
singularity 2:2889a7a4b67a 13 };
singularity 2:2889a7a4b67a 14
singularity 2:2889a7a4b67a 15
singularity 2:2889a7a4b67a 16
singularity 2:2889a7a4b67a 17 Modes d'entrée
singularity 2:2889a7a4b67a 18
singularity 2:2889a7a4b67a 19 Macro-définitions des drapeaux du mode d'entrée :
singularity 2:2889a7a4b67a 20
singularity 2:2889a7a4b67a 21 IGNBRK
singularity 2:2889a7a4b67a 22 Ignorer <break>
singularity 2:2889a7a4b67a 23 BRKINT
singularity 2:2889a7a4b67a 24 Signal SIGINT à la frappe de <break>
singularity 2:2889a7a4b67a 25 IGNPAR
singularity 2:2889a7a4b67a 26 Ignorer les erreurs de parité
singularity 2:2889a7a4b67a 27 PARMRK
singularity 2:2889a7a4b67a 28 Marquer les erreurs de parité
singularity 2:2889a7a4b67a 29 INPCK
singularity 2:2889a7a4b67a 30 Vérification de parité
singularity 2:2889a7a4b67a 31 ISTRIP
singularity 2:2889a7a4b67a 32 Strip character: compacter sur 7 bits
singularity 2:2889a7a4b67a 33 INLCR
singularity 2:2889a7a4b67a 34 Transformer NL en CR
singularity 2:2889a7a4b67a 35 IGNCR
singularity 2:2889a7a4b67a 36 Ignorer CR
singularity 2:2889a7a4b67a 37 ICRNL
singularity 2:2889a7a4b67a 38 Transformer CR en NL
singularity 2:2889a7a4b67a 39 _IUCLC
singularity 2:2889a7a4b67a 40 Transformer Majuscules en minuscules
singularity 2:2889a7a4b67a 41 IXON
singularity 2:2889a7a4b67a 42 Autoriser l'arrêt du flux avec (Ctrl-S/Ctrl-Q)
singularity 2:2889a7a4b67a 43 _IXANY
singularity 2:2889a7a4b67a 44 N'importe quel caractère relance le flux.
singularity 2:2889a7a4b67a 45 IXOFF
singularity 2:2889a7a4b67a 46 Interdit l'arrêt du flux.
singularity 2:2889a7a4b67a 47
singularity 2:2889a7a4b67a 48
singularity 2:2889a7a4b67a 49
singularity 2:2889a7a4b67a 50 Modes de sortie
singularity 2:2889a7a4b67a 51
singularity 2:2889a7a4b67a 52 Macro-définitions des drapeaux du mode de sortie :
singularity 2:2889a7a4b67a 53
singularity 2:2889a7a4b67a 54 OPOST
singularity 2:2889a7a4b67a 55 Postprocessing de la sortie.
singularity 2:2889a7a4b67a 56 OLCUC
singularity 2:2889a7a4b67a 57 Transformer minuscule en MAJUSCULE en sortie.
singularity 2:2889a7a4b67a 58 ONLCR
singularity 2:2889a7a4b67a 59 NL en CR+NL.
singularity 2:2889a7a4b67a 60 OCRNL
singularity 2:2889a7a4b67a 61 CR en NL .
singularity 2:2889a7a4b67a 62 ONOCR
singularity 2:2889a7a4b67a 63 No CR en colonne 0.
singularity 2:2889a7a4b67a 64 ONLRET
singularity 2:2889a7a4b67a 65 NL en NL+CR
singularity 2:2889a7a4b67a 66
singularity 2:2889a7a4b67a 67
singularity 2:2889a7a4b67a 68
singularity 2:2889a7a4b67a 69 Modes de contrôle
singularity 2:2889a7a4b67a 70
singularity 2:2889a7a4b67a 71 Description plus bas niveau de la ligne de communication. Utilisés surtout pour des périphériques de communication (modems).
singularity 2:2889a7a4b67a 72
singularity 2:2889a7a4b67a 73 CLOCAL
singularity 2:2889a7a4b67a 74 Ouverture non bloquante, sinon l'ouverture est bloquante tant que la ligne n'est pas prête (par exemple un modem), sauf demande contraire dans le open avec O_NONBLOCK.
singularity 2:2889a7a4b67a 75 HUPCL
singularity 2:2889a7a4b67a 76 hangup sur le dernier close.
singularity 2:2889a7a4b67a 77
singularity 2:2889a7a4b67a 78
singularity 2:2889a7a4b67a 79
singularity 2:2889a7a4b67a 80 Modes locaux
singularity 2:2889a7a4b67a 81
singularity 2:2889a7a4b67a 82 Ce sont ces modes-là qui ont le plus d'impact au niveau logiciel. Ce sont eux qui indiquent les traitements réalisés sur les caractères de contrôle et déterminent le comportement de la primitive read.
singularity 2:2889a7a4b67a 83
singularity 2:2889a7a4b67a 84 ISIG
singularity 2:2889a7a4b67a 85 les caractères de contrôle intr, quit, etc sont transformés en signaux.
singularity 2:2889a7a4b67a 86
singularity 2:2889a7a4b67a 87 ECHO
singularity 2:2889a7a4b67a 88 Les caractères frappés au clavier sont après transformation, définie dans le mode d'entrée, insérés dans le flux de sortie (écho des caractères en sh par exemple).
singularity 2:2889a7a4b67a 89
singularity 2:2889a7a4b67a 90 ECHOE
singularity 2:2889a7a4b67a 91 dans ce mode et en mode ICANON, le caractère de contrôle erase a un écho provoquant l'effacement du dernier caractère sur l'écran.
singularity 2:2889a7a4b67a 92
singularity 2:2889a7a4b67a 93 ECHOK
singularity 2:2889a7a4b67a 94 dans ce mode et en mode ICANON, le caractère de contrôle kill a comme écho le caractère de fin de ligne.
singularity 2:2889a7a4b67a 95
singularity 2:2889a7a4b67a 96 NOFLSH
singularity 2:2889a7a4b67a 97 dans ce mode, il n'y a pas de vidange par défaut des tampons de lecture et d'écriture à la prise en compte des caractères intr, quit, susp en mode ISIG.
singularity 2:2889a7a4b67a 98
singularity 2:2889a7a4b67a 99 TOSTOP
singularity 2:2889a7a4b67a 100 dans ce mode, les processus du groupe de processus en arrière-plan du terminal sont suspendus, lorsqu'ils essaient d'écrire sur le terminal, par le signal SIGTTOU.
singularity 2:2889a7a4b67a 101 ICANON
singularity 2:2889a7a4b67a 102 est un mode complexe, voir plus bas.
singularity 2:2889a7a4b67a 103
singularity 2:2889a7a4b67a 104
singularity 2:2889a7a4b67a 105
singularity 2:2889a7a4b67a 106
singularity 2:2889a7a4b67a 107
singularity 2:2889a7a4b67a 108 Mode canonique
singularity 2:2889a7a4b67a 109 : c'est le mode de fonctionnement d'un terminal en mode interactif, il se caractérise de la manière suivante: le tampon d'entrée est structuré en ligne, une ligne étant une suite de caractères terminée par le caractère newline de code ASCII 10 (le newline du C). Ceci signifie que les caractères lus au cours d'une opération de lecture read sur le terminal sont extraits dans une et une seule ligne. Donc tout caractère non suivi d'un newline n'est pas accessible en lecture! Une opération de lecture ne peut avoir lieu à cheval sur plusieurs lignes.
singularity 2:2889a7a4b67a 110 Mode non-canonique
singularity 2:2889a7a4b67a 111 : la structure de ligne ne définit plus le critère d'accessibilité des caractères et les 4 caractères erase, kill, eof, eol perdent leur qualité de caractères de contrôle.
singularity 2:2889a7a4b67a 112
singularity 2:2889a7a4b67a 113 Les critères d'accessibilité en mode non-canonique sont définis par deux caractères spéciaux MIN et TIME du tableau c_cc de la structure termios.
singularity 2:2889a7a4b67a 114
singularity 2:2889a7a4b67a 115 Si MIN > 0 et TIME > 0 , TIME est un minuteur inter-caractères de granularité 0.1 seconde.
singularity 2:2889a7a4b67a 116
singularity 2:2889a7a4b67a 117 A chaque caractère reçu le minuteur est repositionné.
singularity 2:2889a7a4b67a 118 Si le nombre de caractères reçu avant l'expiration du minuteur est égal à MIN l'appel read retourne ces caractère au processus.
singularity 2:2889a7a4b67a 119 Si le minuteur expire avant la reception de MIN caractères, l'appel read retourne les caractères reçus au processus.
singularity 2:2889a7a4b67a 120 Remarquer qu'au moins un caractère sera renvoyé. Le read est bloquant tant que le premier caractère n'est pas reçu et que MIN et TIME ne sont pas mis en marche.
singularity 2:2889a7a4b67a 121
singularity 2:2889a7a4b67a 122 Pour certaines valeurs de MIN et TIME:
singularity 2:2889a7a4b67a 123
singularity 2:2889a7a4b67a 124 MIN > 0, TIME = 0
singularity 2:2889a7a4b67a 125 Même comportement mais seul MIN est significatif. Le read est bloquant jusqu'à la reception de MIN caractères.
singularity 2:2889a7a4b67a 126 MIN = 0, TIME > 0
singularity 2:2889a7a4b67a 127 comme le nombre de caractères à lire est nul (MIN = 0), le minuteur est initialisé au debut de l'appel read. L'appel read retourne soit parce qu'un caractère a été lu ou que le délai a expiré.
singularity 2:2889a7a4b67a 128 MIN = 0, TIME = 0
singularity 2:2889a7a4b67a 129 mode non bloquant : l'appel read retourne les caractères disponibles (le minimum des caractères disponibles et du nombre de caractères demandés dans l'appel de read).
singularity 2:2889a7a4b67a 130
singularity 2:2889a7a4b67a 131 Les valeurs les plus couramment utilisées sont MIN=1, TIME=0, ce qui est le mode CBREAK des versions BSD. Ce mode permet d'avoir une saisie bloquante de chaque caractère frappé au clavier (vi utilise ce mode), le read retourne dès qu'un caractère est frappé.
singularity 2:2889a7a4b67a 132
singularity 2:2889a7a4b67a 133
singularity 2:2889a7a4b67a 134
singularity 2:2889a7a4b67a 135 int tcgetattr(int desc, struct termios *termios);
singularity 2:2889a7a4b67a 136
singularity 2:2889a7a4b67a 137 extraction des paramètres courants.
singularity 2:2889a7a4b67a 138
singularity 2:2889a7a4b67a 139 int tcsetattr(int desc, int option, struct termios *termios);
singularity 2:2889a7a4b67a 140
singularity 2:2889a7a4b67a 141 positionnement des paramètres.
singularity 2:2889a7a4b67a 142
singularity 2:2889a7a4b67a 143 Le paramétre option permet de spécifier le comportement de gestion des tampons d'entrée et de sortie de la ligne :
singularity 2:2889a7a4b67a 144
singularity 2:2889a7a4b67a 145 TCSANOW
singularity 2:2889a7a4b67a 146 changement immédiat des attributs
singularity 2:2889a7a4b67a 147 TCSADRAIN
singularity 2:2889a7a4b67a 148 les sorties en cours sont réalisées avant
singularity 2:2889a7a4b67a 149 TCSAFLUSH
singularity 2:2889a7a4b67a 150 idem et le tampon de lecture est vidé.
singularity 2:2889a7a4b67a 151
singularity 2:2889a7a4b67a 152 La primitive
singularity 2:2889a7a4b67a 153
singularity 2:2889a7a4b67a 154 int tcdrain(int desc);
singularity 2:2889a7a4b67a 155
singularity 2:2889a7a4b67a 156 bloque le processus jusqu'à ce que tous les caractères à destination du terminal de descripteur desc aient été transmis.
singularity 2:2889a7a4b67a 157
singularity 2:2889a7a4b67a 158 int tcflush(int desc, int option);
singularity 2:2889a7a4b67a 159
singularity 2:2889a7a4b67a 160 vidange des tampons.
singularity 2:2889a7a4b67a 161 valeur de option:
singularity 2:2889a7a4b67a 162
singularity 2:2889a7a4b67a 163 TCIFLUSH
singularity 2:2889a7a4b67a 164 tampon d'entrée
singularity 2:2889a7a4b67a 165 TCOFLUSH
singularity 2:2889a7a4b67a 166 tampon de sortie
singularity 2:2889a7a4b67a 167 TCIOFLUSH
singularity 2:2889a7a4b67a 168 les deux tampons.
singularity 2:2889a7a4b67a 169
singularity 2:2889a7a4b67a 170
singularity 2:2889a7a4b67a 171
singularity 2:2889a7a4b67a 172 Encodage:
singularity 2:2889a7a4b67a 173
singularity 2:2889a7a4b67a 174 speed_t cfgetispeed(const struct termios *termios);
singularity 2:2889a7a4b67a 175 speed_t cfgetospeed(const struct termios *termios);
singularity 2:2889a7a4b67a 176
singularity 2:2889a7a4b67a 177 Permet de lire la vitesse dans la structure termios.
singularity 2:2889a7a4b67a 178
singularity 2:2889a7a4b67a 179 int cfsetispeed(const struct *termios, speed_t vitesse);
singularity 2:2889a7a4b67a 180 int cfsetospeed(const struct *termios, speed_t vitesse);
singularity 2:2889a7a4b67a 181
singularity 2:2889a7a4b67a 182 permet de positionner la vitesse dans la structure termios.
singularity 2:2889a7a4b67a 183
singularity 2:2889a7a4b67a 184 Positionnement/récupération de la structure termios par les primitives tcgetattr et tcsetattr