kevin eccli
/
Freescale
MAJ BROSSARD
petitedoc.txt@3:8f2c0c324296, 2014-10-22 (annotated)
- 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?
User | Revision | Line number | New 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 |