Main Page | Namespace List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages

xalib.h

Go to the documentation of this file.
00001 /*  Implémentation Linux de la bibliotheque XADLL de Sidena
00002  *  Copyright (C) 2005 ENSTAR
00003  *
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License as published by
00006  *  the Free Software Foundation; either version 2 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  This program is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU General Public License
00015  *  along with this program; if not, write to the Free Software
00016  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00017  *
00018  *  You can contact us:
00019  *    Association ENSTAR
00020  *    Ecole Nationale Superieure de Techniques Avancees
00021  *    32 boulevard Victor
00022  *    75739 Paris Cedex 15
00023  *    FRANCE
00024  *
00025  *    enstar@ensta.fr
00026  */
00027 
00028 /** @file    xalib.h
00029  *  @brief   Front-end de la bibliothèque
00030  *  @author  Francois Fevotte <francois.fevotte@ensta.org>
00031  *  $Revision: 103 $
00032  *  $Date: 2006-04-25 17:35:44 +0200 (Tue, 25 Apr 2006) $
00033  */
00034 
00035 /* $Id: xalib.h 103 2006-04-25 15:35:44Z bearclaw $ */
00036 
00037 /* Protection contre les inclusions multiples */
00038 #ifndef XALIB_H
00039 #define XALIB_H
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043 #include "codes.h"
00044 
00045 /* Gestion des mots clés 'extern' : seul le fichier xalib.c définira réellement les buffers */
00046 #ifdef XALIB_C
00047 #define EXTERN
00048 #else
00049 #define EXTERN extern
00050 #endif
00051 
00052 
00053 /* Variables globales */
00054 EXTERN int XA_opendone; /* Ouverture du port effectuée ? */
00055 EXTERN int XA_typepack; /* Type de pack courant */
00056 EXTERN int XA_adrpack;  /* Adresse du pack courant */
00057 EXTERN int coderr;      /* Le dernier code d'erreur renvoyé par une fonction XA */
00058 
00059 
00060 /** Octet de poids fort d'un mot
00061  *  @param a mot
00062  *  @return octet de poids fort du mot a
00063  *  @remarks à tester...
00064  */
00065 unsigned char hi (int a);
00066 
00067 
00068 /** Octet de poids faible d'un mot
00069  *  @param x mot
00070  *  @return octet de poids faible du mot x
00071  *  @remarks à tester...
00072  */
00073 unsigned char lo (int x);
00074 
00075 /** Retour du dernier code d'erreur
00076  *  @return le code de retour de la derniere fonction XA appelée
00077  */
00078 int XA_coderr (void);
00079 
00080 
00081 /** Lecture d'un caractère (1 octet) dans le buffer de réception
00082  *  @return le caractère lu.
00083  *  @remarks le carcactère lu est aussi placé dans la variable globale lastget
00084  */
00085 int XA_getB (void);
00086 
00087 
00088 /** Retour du dernier caractère (octet) lu dans le buffer de réception
00089  *  @return le dernier caractère lu dans Rec_buffer par la fonction XA_getB
00090  */
00091 long XA_lastgetB (void);
00092 
00093 
00094 /** Lecture d'un mot (2 octets) dans le buffer de réception
00095  *  @return le mot lu.
00096  */
00097 unsigned int XA_getW (void);
00098 
00099 
00100 /** Lecture d'un entier long (4 octets) dans le buffer de réception
00101  *  @return l'entier long lu.
00102  */
00103 long XA_getL (void);
00104 
00105 
00106 /** Envoi d'une instruction vers le matériel
00107  *  @param send indique si l'instruction doit etre envoyée tout de suite ou bufferisée (cf. XAN() et XAN_buffer())
00108  *  @param fonction code de la fonction
00109  *  @param adrmod adresse du module auquel on parle
00110  *  @param arg1,arg2,arg3,arg4,arg5 arguments passés à la fonction
00111  *  @return le code de retour de la fonction d'envoi de message
00112  *
00113  *  @sa XAN, XAN_buffer
00114  */
00115 long XA (char send, long fonction, long adrmod, long arg1, long arg2, long arg3, long arg4, long arg5);
00116 
00117 /** Envoi immédiat d'une instruction vers le matériel
00118  *
00119  *  Le message correspondant à l'instruction est construit, puis envoyé immédiatement
00120  *  aux cartes. Si certains messages avaient été construits et mis en attente auparavant
00121  *  grâce à un appel à XAN_buffer(), ils sont envoyés en même temps.
00122  *
00123  *  @param fonction code de la fonction
00124  *  @param adrmod adresse du module auquel on parle
00125  *  @param arg1,arg2,arg3,arg4,arg5 arguments passés à la fonction
00126  *  @return le code de retour de la fonction d'envoi de message
00127  *
00128  *  @sa XA, XAN_buffer
00129  */
00130 inline long XAN(long fonction, long adrmod, long arg1, long arg2, long arg3, long arg4, long arg5)
00131 {
00132   return XA(1, fonction, adrmod, arg1, arg2, arg3, arg4, arg5);
00133 }
00134 
00135 /** Envoi différé d'une instruction vers le matériel
00136  *
00137  *  Le message correspondant à l'instruction est construit, mais n'est pas envoyé immédiatement
00138  *  aux cartes. L'appel suivant a XAN() complètera la file des messages ainsi mis en attente
00139  *  et les enverra tous ensemble.
00140  *
00141  *  @param fonction code de la fonction
00142  *  @param adrmod adresse du module auquel on parle
00143  *  @param arg1,arg2,arg3,arg4,arg5 arguments passés à la fonction
00144  *  @return le code de retour de la fonction d'envoi de message
00145  *
00146  *  @sa XA, XAN
00147  */
00148 inline long XAN_buffer(long fonction, long adrmod, long arg1, long arg2, long arg3, long arg4, long arg5)
00149 {
00150   return XA(0, fonction, adrmod, arg1, arg2, arg3, arg4, arg5);
00151 }
00152 
00153 /** Envoi d'une instruction avec arguments chaine ou long
00154  *  @param fonction le code de la fonction à envoyer (81 ou 202)
00155  *  @param adrmod l'adresse du module avec lequel on communique
00156  *  @param chaine argument passé à la fonction
00157  *  @param arg ???
00158  *  @return le code de retour de la fonction d'envoi du message
00159 */
00160 long XAN_str (long fonction, long adrmod, char *chaine, long arg);
00161 
00162 /** Initialisation du système XA
00163  *
00164  *  @li ouverture du port série 1
00165  *  @li clignotement de la led de la base
00166  */
00167 void XA_startup (void);
00168 
00169 /** Fermeture propre du système XA
00170  *
00171  *  fermeture des connexions série
00172  */
00173 void XA_cleanup (void);
00174 
00175 #undef EXTERN
00176 
00177 #ifdef __cplusplus
00178 }
00179 #endif
00180 #endif

Project hosted on SourceForge.net
Documentation generated on Mon Apr 2 14:52:56 2007 for libXA by doxygen 1.4.4