Page suivantePage pr�c�denteTable des mati�res

12. Envisager d'�crire des applications

Vous avez s�rement plein d'id�es d'applications int�ressantes, mais envisager de contr�ler une jonction s�rie vous fait peur ? Voici quelques petites indications.

12.1 Et si c'�tait simple ?

Sous Unix, donc sous Linux, les seuls objets manipul�s lors des entr�es/sorties sont les fichiers. (Tiens, au fait, on aurait peut-�tre d� commencer par l� ! Bon, vous le saviez d�j�, ce n'est pas un cours Unix). La jonction s�rie n'�chappe pas � cette r�gle et le pilote vous la pr�sente ainsi. Ici, il s'agit d'un (ou plut�t deux comme on le verra plus loin) fichier particulier, bien s�r, puisque se cache derri�re un pilote (driver) en mode caract�re, mais la fa�on de r�aliser les entr�es sorties est la m�me : open, read, write, ioctl, close. Il y a quand m�me quelques petites choses � savoir.

Le pilote s�rie s'est enregistr�, � l'initialisation du noyau, comme un tty. Il est donc g�r� comme un tty classique. Il apporte bien entendu quelques caract�ristiques suppl�mentaires que nous verrons rapidement dans la section concernant la commande ioctl. Toujours est-il que si vous savez g�rer un tty sous Unix (commande stty), vous saurez sans probl�me g�rer ce pilote.

open, close

La m�thode d'ouverture et de fermeture d'un port s�rie est classique. N�anmoins un m�canisme particulier se cache derri�re la primitive open qui est rapidement d�crit � la section Appels entrants (Dial-in) et appels sortants (Call-out) sous Linux.

read, write

Rien � signaler de particulier.

ioctl

Le contr�le de tout syst�me d'entr�e/sortie se fait avec la commande syst�me ioctl. Elle est souvent masqu�e par des commandes de haut niveau (setserial, stty, modemstat, ...), mais elle est leur moteur.

Selon que vous souhaitez vous adresser aux fonctionnalit�s classiques d'un tty ou aux fonctions sp�cialis�es du pilote s�rie, vous utiliserez deux sous-ensembles de commandes diff�rentes. Vous les retrouverez dans le fichier � inclure linux/termios.h. D�crivons-les rapidement (on d�borde un tout petit peu du sujet :-)) :

TCGETS - TCSETS

et quelques d�riv�s avec WAIT, FLUSH... Elles permettent de r�cup�rer (resp. positionner) les attributs standard tty dans une structure termios (voir le fichier linux/termios.h)

TIOCSTTY - TIOCNOTTY

permettent de d�finir (resp. annuler) une session d'utilisation du tty. Ceci est visible car, entre autres choses, une cons�quence est le changement des droits du fichier correspondant

Avant:
 crw-rw-rw-   1 root     tty        4,  64 Nov 26 20:47 ttyS0
Apres:
 crw--w--w-   1 root     root       4,  64 Nov 26 20:49 ttyS0

TCFLSH et compagnie

positionnement d'indicateurs (voir la commande stty)

TIOCGSERIAL - TIOCSSERIAL

permettent de r�cup�rer (resp. positionner) les informations g�n�rales dans une (resp. � partir d'une) structure serial_struct (voir le fichier linux/serial.h) : le type de port s�rie, la ligne, le port, l'irq le port utilis�... ni plus ni moins ce que fait setserial.

TIOCMGET - TIOCMSET

permettent de r�cup�rer (resp. positionner) les informations plus sp�cifiques � la jonction proprement dite (dans un entier, sous forme de bits positionn�s selon que l'indicateur correspondant est vrai ou faux) :

+-------------------------------------------------------------------------------------------+
|   //     DSR      RNG       CAR        CTS        //   //    RTS            DTR         //|
|  //   (Data Set  (Ring)  (Carrier)  (Clear To    //   //   (Request   (Data Terminal   // |
| //      Ready)                        Send)     //   //     To Send)      Ready)      //  |
+------+----------+-------+----------+-----------+----+----+-----------+---------------+----+
 31   9     8         7        6          5        4    3        2          1            0

12.2 Appels entrants (Dial-in) et appels sortants (Call-out) sous Linux

Introduction

Le pilote s�rie du noyau de Linux propose de g�rer un m�me port s�rie � la fois pour les appels entrants et pour les appels sortants exploitant ainsi pleinement leur caract�ristique bi-directionnelle. Il offre donc � l'utilisateur deux types de fichiers :

Gestion

Chaque port s�rie est enregistr� deux fois aupr�s du g�rant tty : une fois en mode entr�e (ttyS, majeur 4) et une fois en mode sortie (cua, majeur 5). Voyons rapidement comment le pilote g�re ensuite les "deux" ports :

C'est le mode qu'utilisent beaucoup d'applications comme getty qui souhaitent dans un premier temps initialiser la ligne (pour �viter des instabilit�s li�es aux connexions pr�c�dentes) voire ensuite pour initialiser l'�quipement (modem). Elles ne s'int�ressent qu'au fait que la ligne soit occup�e, en fermeture ou libre. Si celle-ci n'est pas libre, l'application se termine et le m�canisme du respawn se charge de les relancer.

Pour la gestion de la connexion proprement dite, l'application getty (pour prendre un exemple courant) ouvre la ligne, soit en mode bloquant si vous laissez le modem en r�ponse automatique, soit en mode non-bloquant si vous souhaitez qu'elle g�re activement la connexion. Elle est alors en attente bloquante en lecture (sur read).


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:31