\documentstyle[11pt,a4,psfig]{article}
\title{DEveloppement soft}
\author{G.ZEHNACKER}
\date{Edition june 1991}
\begin{document}

\hsize=16cm
\vsize=25cm
\oddsidemargin 0 in
\evensidemargin 0 in
\pagestyle{plain}

\begin{titlepage}
{

\font\small=cmssbx10 at 14.4truept
\font\medium=cmssbx10 at 17.28truept
\font\large=cmssbx10 at 20.74truept
\hrule height 0pt
\parindent=0pt
%\parskip=0pt
\hskip 3.9truein
\large
\par
\vskip .5truein
\large
Eurogam project
\hskip 5cm
EDOC126\par
\vskip 1.5truein
\hrule height 2pt
\vskip 20pt
\large
Protocoles between electronic card and software tcard \par
\small
protocole between  test card and register server on station\\
protocole between  test card and data  base \\
protocole between  test card and mini spectrum serveur
\small

\vskip .5truein
\vskip 20pt
\hrule height 2pt
\vskip 1truein
\small
\begin{tabbing}
Edition \=: 1.0 \\
Date \>: july 1991\\
Authors \>: B.HUMBERT,  Ch.RING \& G.ZEHNACKER \\
	\>: MMA.ALEONARDC,  C.DIARRA,  P.KADIONIK\\
\end{tabbing}
\vskip 4cm
\small
SATD

Centre de Recherches Nucl\'{e}aires de Strasbourg \par
CENG Bordeaux \par
CNRS-IN2P3 France\par

}
\end{titlepage}

\section{Philosophie g\'{e}n\'{e}rale}
Le logiciel test card cr\'{e}e des lignes de commandes (ou requ\^{e}tes) pour
diff\'{e}rents serveurs:\\
- le register server\\
- le data base server\\
- le mini serveur de spectre dans le "resource manager"\\
Il attend en retour un ou des messages .\\

Chacune de ces requ\^{e}tes activera une t\^{a}che dans la station client qui
pr\'{e}parera des infos pour la transmission sur le reseau ou en local. A
travers une RPC la demande est transmise \`{a} la t\^{a}che serveur qui
\'{e}x\'{e}cutera l'action demand\'{e}e ( par ex: extraction de la data base,
transmission d'une valeur de registre, ou extraction d'un spectre du "resource
manager")\\

En retour, on  renverra la ligne de la commande \'{e}mettrice ("commande:
xxx"), puis un status ("status: ok" ou "status: autre") indiquant la bonne
execution ou non de la demande puis enfin eventuellement des informations en
retour  pour les commande de lecture  d'un registre ("value: xxx"), de la data
base ("value: name, value, unit , offset, gamme") ou d'un spectre.\\

La ligne de commande en retour permet de connaire l'appartenance des lignes de
status et de resultats qui suivent.


\section{Protocole entre test card et "register server"}
\subsection{syntaxe}
\small

read\_vxi $<$card\_name$>$ $<$detector\_number$>$ $<$detector\_register$>$
\\
read\_vxi $<$card\_name$>$ $<$detector\_number$>$ - $<$detector\_number$>$
$<$detector\_register$>$\\
read\_vxi $<$card\_name$>$ $<$detector\_number$>$ , $<$detector\_number$>$ ,
$<$detector\_number$>$ $<$detector\_register$>$\\
write\_vxi $<$card\_name$>$ $<$detector\_number$>$ $<$detector\_register$>$
$<$value$>$ [$<$unit$>$]\\
write\_vxi $<$card\_name$>$ $<$detector\_number$>$ , $<$detector\_number$>$ ,
$<$detector\_number$>$ $<$detector\_register$>$ $<$value$>$ [$<$unit$>$]\\
write\_vxi $<$card\_name$>$ $<$detector\_number$>$ - $<$detector\_number$>$
$<$detector\_register$>$ $<$value$>$ [$<$unit$>$]\\
scope\_vxi $<$card\_name$>$ $<$detector\_number$>$ $<$test\_point\_number$>$
$<$type\_of\_signal$>$\\
button\_vxi $<$card\_name$>$ $<$detector\_number$>$ $<$button\_number$>$
$<$status$>$

\subsection{card\_name}

Voici les noms autoris\'{e}s :
\begin{itemize}
\item trigger
\item germanium
\item bgo
\item demon
\item icare
\end{itemize}

\subsection{detector\_number}

Le nombre de detecteur disponible sera trouv\'{e} \`{a} partir de la data
base.

\subsection{detector\_register}

Leur nombre depend de la carte ; nous obtiendrons leur nombre \`{a} partir de
la "data base". Pour un detecteur germanium , il y en a actuellement 13.

ntsubsection{test\_point\_number}

Ces points se divise en plusieurs types. Pour l'instant les symboles
utilis\'{e}s sont L ( logique) , A (analogique) , CF ( contr\^{o}le de fenetre
) et MT (mesure de tension). Au total pour le detecteur germasnium il y en a
17.

\subsection{button\_number}


Ces objets auront 2 \`{e}tats possibles; pour le germanium , il y en aura 12.

\subsection{exemples de commandes}

read\_vxi       germanium 40       4 \\
read\_vxi       germanium 40-50    4 \\
read\_vxi       germanium 40,43,45 4 \\
write\_vxi      germanium 40       4  250 ms \\
write\_vxi      germanium 40-50    4  250 ns \\
write\_vxi      germanium 40,43,45 4  250 ns \\
scope\_vxi      germanium 40       4  L2 \\
scope\_vxi      germanium 40       1  A1 \\
scope\_vxi      germanium 40       6  MT \\
scope\_vxi      germanium 40       7  CF \\
button\_vxi     germanium 40       4  ON \\
button\_vxi     germanium 40       4  OFF \\
button\_vxi     germanium 40       5  INT \\
button\_vxi     germanium 40       5  EXT \\
button\_vxi     germanium 40       6  LBU \\
button\_vxi     germanium 40       6  LEMOS \\

\subsection{message en retour}
\subsubsection{read\_vxi germanium }
en retour on recevra \\
"commande: read\_vxi germanium 40 1"\\
"status: ok" ou "status: OK" ou "status: xxxxx" puis\\
"value: 50 " \\

\subsubsection{write\_vxi germanium}
en retour on recevra:\\
"commande: write\_vxi germanium 40 1 100 mv"\\
"status: ok" ou "status: OK" ou "status : xxxx"\\

\subsubsection{scope\_vxi}
en retour on recevra:\\
"commande: scope\_vxi germanium 40 4 A1"\\
"status : ok" ou "status: OK" ou "status : xxxx"\\

\subsubsection{button\_vxi}
en retour on recevra:\\
"commande: button\_vxi germanium 40 4 on\\
"status : ok" ou "status: OK"ou "status : xxxx"\\


\section{Protocole entre test card et "database"}
\subsection{syntaxe}

read\_database $<$detector\_name$>$ $<$detector\_number$>$ r$<$number$>$ \\
read\_database $<$detector\_name$>$ $<$detector\_number$>$ s$<$number$>$ \\
read\_database $<$detector\_name$>$ $<$detector\_number$>$ b$<$number$>$ \\
write\_database $<$detector\_name$>$ $<$detector\_number$>$  r$<$number$>$
$<$value$>$ [$<$unit$>$]\\
\\
r symbole des registres \\
b symbole des boutons \\
s symbole des scopes \\

\subsection{exemple}

write\_database germanium 40 r4 50 mv\\
read\_database  germanium 40 r4\\
read\_database  germanium 40 b10\\
read\_database  germanium 40 s10\\

\subsection{messages en retour}

\subsubsection{read\_database registre}
commande transmise par le Test card : "read\_database germanium 40 r1" \\
en retour on recevra \\
"commande: read\_database germanium 40 r1"\\
"status: ok" ou "status: xxxxx" puis\\
"value: 1 seuil 50 mv 0 200" \\

\subsubsection{read\_database button}
commande transmise par le Test card : "read\_database germanium 40 b1" \\
en retour on recevra \\
"commande: read\_database germanium 40 b1"\\
"status: ok" ou "status: xxxxx" puis\\
"value: 1 button1 on \_ on off

\subsubsection{read\_database scope}
commande transmise par le Test card : "read\_database germanium 40 s15" \\
en retour on recevra \\
"commande: read\_database germanium 40 s15"\\
"status: ok" ou "status: xxxxx" puis\\
"value: 1 scope1  A1 \_  \_ \_

\subsubsection{write\_database registre}

commande transmise par le Test card : "write\_database germanium 40 r1 40 mv"\\
en retour on recevra:\\
"commande: write\_database germanium 40 r1 40 mv"\\
"status: ok" ou "status : xxxx"\\


\section{Protocole entre test\_card et "Resource Manager"}

IL s'agit de lancer ou d'arr\^{e}ter la formation de spectres, puis de la
visualiser.

\subsection{syntaxe}

Les actions pr\'{e}vues sont:
select\\
start\\
stop\\
refresh\\
erase\\

Le d\'{e}tail du protocole est en cours d'\'{e}tude.

\subsection{fonctions}
select : selectionne le type de spectre \`{a} constituer\\
start : demarre l'acquisition sur un ou des spectres\\
stop : arrete l'acquisition\\
refresh : rafraichit l'image des spectres\\
erase : efface les spectres dans le "Resource Manager"\\

\section{Commandes transmises au "Resource Manager"}

	L'interface graphique va g\'{e}n\'{e}rer une commande qui sera
	transmise au "Ressource Manager". Cette commande en ASCII comportera
	une action \`{a} \'{e}x\'{e}cuter par le "Resource Manager" et des
	arguments pour cette commande. Cette commande pourra aussi \^{e}tre
	entr\'{e}e \`{a} partir de tout terminal ASCII ou de toute fen\^{e}tre
	terminal. Il sera m\^{e}me possible de faire un "script" enchainant les
	diff\'{e}rentes commandes. Le transfert de cette chaine ASCII se fera
	naturellement \`{a} travers le r\`{e}seau par des RPC

\subsection{fonctions de base}
	 \begin{itemize}
	 \item [a) ] visualisation de signaux sur le scope
	 \item [b) ] lecture de registre d'une carte VXI
	 \item [c) ]\'{e}criture dans un registre d'une carte VXI
	 \item [d) ] lecture "Slow ADC"
	 \item [e) ]s\'{e}lection d'un param\`{e}tre ADC d'une voie pour
	 formation de spectre (16k) dans le "Resource Manager"
	 \item [f) ] effacement d'un spectre dans le "Resource Manager"
	 \item [g) ] d\'{e}marrage de la formation de tous les histogrammes
	 demand\'{e}s
	 \item [h) ] arr\^{e}t de la formation de tous les histogrammes
	 demand\'{e}s
	 \item [i) ] lecture d'un spectre vers le logiciel "card\_test" pour
	 affichage.
	 \end{itemize}

\subsection{Sch\'{e}ma de principe}


\begin{figure}[h]
\psfig{figure=fig1.ps,width=15cm,height=12cm}
\end{figure}

	Dans la figure, write est le nom d'une fonction , GE\_CFD\_THRESOLD
	celui du nom du registre, 10 le num\`{e}ro du d\'{e}tecteur et 150 la
	valeur \`{a} transmettre (ici sans unit\'{e} pr\'{e}cise).

\subsection{Liste des commandes}

\begin{description}
\item[a) ] {Visualisation de signaux sur le "scope"}\\
	Nous pouvons estimer qu'il s'agit d'une \'{e}criture particuli\`{e}re.
	Ainsi la commande envoy\'{e}e est par exemple:\\

	\bf " scope\_vxi  germanium 15 1 A1 " signifie envoyer la sortie 20Mev
	de l'amplificateur ( num\'{e}rot\'{e} 1 ) du d\'{e}t\'{e}cteur
	Germanium ( num\'{e}ro 15 ) sur la premi\`{e}re sortie analogique du
	"Resource Manager". Au niveau de la station de travail, le fichier
	"voies\_crate" indique \`{a} quel serveur ( c'est \`{a} dire dans quel
	chassis se trouve le voie) il faut transmettre la commande. Le
	"Resource Manager" qui execute celle-\c{c}i doit r\'{e}aliser les
	actions suivantes.

\begin{figure}[h]
\psfig{figure=fig2.ps,width=16cm,height=15cm}
\end{figure}

	\begin{enumerate}
	\item Pour toutes les cartes Germanium
		\begin{description}
		\item [a) ] Lecture de l'AMC (Analog Multiplexer Control) +
		\item [b) ] Modification de l'AMC : \'{e}criture de 0 dans
		l'octet concern\'{e} (octet MSB si A2, octet LSB si A1),
		l'autre octet doit conserver sa valeur (Mask)
		\item [c) ] Ecriture de l'AMC modifi\'{e}
		\end{description}
	\item Pour toutes les cartes BGO
		\begin{description}
		\item [a) ] lecture de l'AMC +
		\item [b) ] Modification de l'AMC : \'{e}criture de 0 dans
		l'octet concern\'{e} (octet MSB si A2, octet LSB si A1),
		l'autre octet doit conserver sa valeur (Mask)

		\item [c) ] Ecriture de l'AMC modifi\'{e}
		\end{description}

	\item Pour la carte (r\'{e}sultant du num\'{e}ro de la voie
	s\'{e}lectionn\'{e}e)
		\begin{description}
		\item[a) ] Lecture de l'AMC +
		\item[b) ] Modification de l'AMC : \'{e}criture du num\'{e}ro
		de la voie (1$\leq$ channel Nb $\leq$ 6) dans les bits 2-0 de
		l'octet concern\'{e} (octet MSB si AL1, octet LSB si AL2) et du
		num\'{e}ro de param\`{e}tre s\'{e}lectionn\'{e} ( 0 $\leq$
		param\`{e}tre\_NB $\leq$ 7) dans les bits 7-3 de l'octet
		concern\'{e}
		\item[c) ] Ecriture de l'AMC modifi\'{e}
		\end{description}
	\end{enumerate}

\item[b) ] {Lecture de registre d'une carte VXI}\\

	exemple : \\
	\bf "read\_vxi germanium 70 2 " \rm signifie lecture du seuil ("CFD
	THRESOLD") associ\'{e}e au Germanium 70. Au niveau de la station de
	travail, le fichier "voies\_crate" indique \`{a} quel "Register Server"
	la commande est envoy\'{e}e. Le fichier "voie\_crate" permet de savoir
	dans quel chassis se trouve la voie concern\'{e}e. Ainsi nous savons
	\`{a} quel "Register Server" de quel "Resource Manager" nous devons
	transmettre la commande  .

	Le "Resource Manager" qui execute cette commande doit r\'{e}aliser les
	actions suivantes:
	\begin{enumerate}
	\item Rechercher  l'adresse associ\'{e}e \`{a} CFD THRESOLD(7)
	\item Effectuer une lecture VME \`{a} cette adresse
	\item Transmettre le r\'{e}sultat \`{a} la station de travail appelante
	en acquittant l'action ("Retour RPC")
	\end{enumerate}

\item[c) ] {Ecriture dans un registre d'une carte VXI}\\

	exemple: \\
	\bf " write\_vxi germanium 45 4 80 ns " \rm signifie \'{e}criture de la
	largeur ("CFD WIDTH") du discriminateur \`{a} fraction constante
	("CFD") de la voie germanium ("GE") 45. Cette largeur est de 80 nano
	seconde ("80 ns"). Apr\`{e}s avoir d\'{e}termin\'{e} le nom du "Server
	Register" \`{a} l'aide du fichier "voie\_crate", le "Resource
	Manager"qui execute cette commande doit r\'{e}aliser les actions
	suivantes:
	\begin{enumerate}
	\item Rechercher l'adresse associ\'{e}e \`{a} GE\_CFD\_WITDH(45)
	\item Convertir les 80 NS en une valeur digitale
	\item Effectuer l'\'{e}criture VME \`{a} l'adresse obtenue en 1.
	\item Acquitter l'action ("Retour RPC").
	\end{enumerate}

\item[d) ] {Lecture du "SLOW ADC"}\\

	exemple : \\
	\bf " read\_vxi germanium 2 SLOW\_ADC " \rm  signifie lecture
	("read\_vxi") du convertisseur lent ("SLOW ADC") contenu dans le
	"Ressource Manager" du chassis VXI num\'{e}ro 2. Ce "Resource Manager"
	pour effectuer cette lecture doit r\'{e}aliser les actions suivantes:
	\begin{enumerate}
	\item Pr\'{e}senter l'adresse du Slow ADC (1) sur le bus externe P3
	("Address")
	\item Envoyer l'ordre de codage (0) sur le bus externe P3 ("Data")
	\item Lire le r\'{e}sultat de codage sur le bus externe P3 ("Data")
	\item R\'{e}p\'{e}ter 1 2 et 3  N fois
	\item Faire la moyennew sur les N mesures
	\item Transmettre la moyenne obtenue \`{a} la station de travail
	appelante en acquittant l'action ("Retour RPC")
	\end{enumerate}

\end{description}
\end{document}

