
 Normas acordadas:
 ----------------

 1) Cada módulo de ARTIS tiene un subdirectorio con el nombre del
    módulo. Se define "módulo" como un código que ofrece una
    funcionalidad o servicio al resto de módulos.


 2) Cada módulo ofrece sus servicios al resto mediante único fichero 
    de cabecera, denominado:

	<modulo>/include/<modulo>.h

    En este fichero se especifica todo lo que el módulo exporta
    (definiciones, tipos, variables globales y funciones).


 3) Estructura del código dentro del directorio de cada <modulo>:

	<modulo>/include/<modulo>/  -> cabeceras privadas
	<modulo>/source             -> codigo fuente
	<modulo>/make               -> Makefile y ficheros objeto
	<modulo>/data               -> Datos (si procede)

    El fichero Makefile debe prepararse para ser invocado desde otro
   Makfile en un directorio superior y compilar todo lo necesario. No 
   debe copiar nada a otro(s) directorio(s) (de momento, esto lo 
   revisaremos durante la integración).


 4) Los nombres de módulo se escriben en minúsculas y con subrayados
    (no guiones).


 5) Existen algunos ficheros de cabecera comunes a diferentes módulos,
    pero que no son exportados por ningún módulo concreto. Para ello
    se ha creado el subdirectorio "common/include". De momento, son
    los siguientes:

	artis_conf.h             -> Opciones de compilación condicional 
				    globales a ARTIS.
	artis_event_definition.h -> Constantes de tipos de eventos
                                    de traza.
	artis_mutex_definition.h -> Identificadores de los mutexes
                                    internos que utilizan otros módulos
                                    de ARTIS.
	artis_fifo_definition.h  -> Idem para los RT-FIFOS compartidos 
                                    por diferentes módulos.


 6) En el directorio "include" (sin subdirectorio de <modulo>) se
    encuentran los ficheros de cabecera que se exportan a la aplicación. 
    Sobre estos hay que tener en cuenta lo siguiente:

	a) Se entiende por "user" (usuario) al código que escribe el
	usuario, normalmente mediante la herramienta de desarrollo. 
        El fichero "artis_user.h" incluye todas los ficheros de cabecera
	de todos los servicios de módulos ARTIS que el usuario tiene 
	disponible cuando escribe sus KSs.

	b) Se entiende por "app" (aplicación) al código "fijo" de
	ARTIS que debe recompilarse junto con el "código de usuario"
	mencionado arriba. En concreto, se trata de los ficheros
	"rtl_tasks.c" y "main.c" para las partes RT-Linux y Linux
	respectivamente. El fichero de cabecera "artis_app.h" incluye
	las cabeceras de los módulos que ambos ficheros fuente
	necesitan.

	c) Además de ambos ficheros de cabecera, este directorio
	incluye individualmente las cabeceras de los módulos que ofrecen
	funciones a la aplicación (app + user). Si un mismo fichero
	de cabecera ofrece interfaces distintas al código "app" y al
	"user", debe indicarlo dentro del propio fichero, separando
	ambas interfaces mediante comentarios.

	d) Si un fichero de cabecera de un cierto <modulo> se ofrece a
	la aplicación y a otros módulos de ARTIS, debe ubicarse en:

	       	include/<modulo>.h
	y en

		<modulo>/include/<modulo>.h

	de forma que el segundo incluya al primero (#include...) y
	aparte, en su caso, las funciones de interfaz que se ofrecen a
	otros módulos de ARTIS pero no a la aplicación.

	De esta forma, siempre que un módulo desea utilizar a otro
	<modulo>, sólo tiene que incluir el siguiente fichero
	"../../<modulo>/include/<modulo>.h.


 7) ... Y a disfrutar, chicos!! :-)

