Index: trunk/Poubelle/archediab.old/archediab.sources/c/telecommande.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/telecommande.c	(revision 645)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/telecommande.c	(revision 649)
@@ -5,4 +5,6 @@
 #include "acqui.h"
 #include "tm.h"
+#include "simulmission.h"
+#include "controle.h"
 
 
@@ -135,9 +137,11 @@
 {
 unsigned char mot_tc[10];
-mot_tc[0]	=	tc_reduite;
-mot_tc[1]	=	mot1;
-mot_tc[2]	=	mot2;
-mot_tc[3]	=	mot3;
-emission_telecommande(tc_dir_transputer,mot_tc);
+	{
+	mot_tc[0]	=	tc_reduite;
+	mot_tc[1]	=	mot1;
+	mot_tc[2]	=	mot2;
+	mot_tc[3]	=	mot3;
+	emission_telecommande(tc_dir_transputer,mot_tc);
+	}
 }
 
@@ -148,4 +152,7 @@
 int j;
 
+if(!acquisition_avec_telecommande)  return;
+
+
 //*****************************************************************************************
 //											***
@@ -157,5 +164,5 @@
 
 #define	 delai(xx)	{long uu;for(uu=0;uu<(10000L*(long)xx);uu++){};}
-#define  tc_char(x)	{delai(20);if(tt->PCI_actif==1) ecrit_carte((x)&0xff);}  
+#define  tc_char(x)	{delai(40);if(acquisition_PCI) ecrit_carte((x)&0xff);}  
 #define	 tc_int(x)	{tc_char(x);tc_char(x>>8);tc_char(x>>16);tc_char(x>>24);}
 //printf("telecommande: ");
@@ -200,11 +207,65 @@
 			if( ((mot[0]&0xff)!=tc_reduite) && gg->flag_tc_reduite)
 				{
-				printf("attention: une telecommande normale !!\n\n");
+				printf("attention: une telecommande normale non envoyée !!\n\n");
 				son(130);
 				select(printf_ref);
+				break;
 				}
 //			pour test en mode simulation sans le retour des blocks reglage du transputer
-			if(tt->PCI_actif==2)	relit_telecommandes_reduites(tc);
-			else	{
+			if(tt->PCI_actif==2)	
+				{
+				relit_telecommandes_reduites(tc);
+				break;
+				}
+		    else if(tt->PCI_actif==3)
+		        {
+		        simul_telecommandes_reduites(tc);
+		        }
+			else	{char ss[200];
+						static long t;
+			
+#define tcl(iii)	((long)mot[iii])
+			
+					long mothexa[5];	/* les 5 cara hexa envoyée  */
+					/*  on range les bit: bit 1 en poid fort de tout   */
+					mothexa[0]=tcl(1);	/* 4 bit choix de commande   */
+					mothexa[1]=tcl(2)>>2;	/* les 4 bits poid fort du code direction */
+					mothexa[2]=((tcl(2)<<2)&0xc)  + ((tcl(3)>>6)&0x3);
+					mothexa[3]=(tcl(3)>>2)&0xf;  
+			 		mothexa[4]=(tcl(3)&0x3) + 0x0C;
+			      		printf("commande 18bit:   %d %d %d -> %lx%lx%lx%lx%lx ",tcl(1),tcl(2),tcl(3)
+			      			,mothexa[0],mothexa[1],mothexa[2],mothexa[3],mothexa[4]);
+					ecritD(fenetre_controle,con_subscan,"tc: %x %x %x %x %x ",mothexa[0],mothexa[1],mothexa[2],mothexa[3],mothexa[4]);
+
+				tc_char(0x11);	//  synchro
+				tc_int(debut_telecommande);
+				for(j=0;j<4;j++)	tc_char(mot[j]);
+				tc_char(0x00);		//  synchro
+				sprintf(ss,"S%X%X%X%X%X07WS%X%X%X%X%X07WS%X%X%X%X%X07W\r\n"
+						,mothexa[0],mothexa[1],mothexa[2],mothexa[3],mothexa[4]
+						,mothexa[0],mothexa[1],mothexa[2],mothexa[3],mothexa[4]
+						,mothexa[0],mothexa[1],mothexa[2],mothexa[3],mothexa[4]);
+/*				sprintf(ss,"S%x%x%x%x%x07WS%x%x%x%x%x07WS%x%x%x%x%x07W\r\l"
+						,mothexa[0],mothexa[1],mothexa[2],mothexa[3],mothexa[4]
+						,mothexa[0],mothexa[1],mothexa[2],mothexa[3],mothexa[4]
+						,mothexa[0],mothexa[1],mothexa[2],mothexa[3],mothexa[4]);*/
+				if(ss[7]!='7') erreur("adresse not equal to 7");
+				if(ss[16]!='7') erreur("adresse not equal to 7");
+				if(ss[25]!='7') erreur("adresse not equal to 7");
+				while( (TickCount()>t) et (TickCount()<(t+60*15)) ) 	// 15sec 
+					{
+					static int q;
+					q++;
+					son(130);
+					if(q%10==0) printf("attente pour envoi de telecommande\n");
+					controlemanip(0);
+					}
+				son(133);
+
+				printf(" envoi de la telecommande : %s \n",ss);
+				ecritRS(0,ss,0);
+				t=TickCount();	               	//  10 secondes  (tick = 1/60 sec) 
+				}
+/*			else	{
 				tc_char(0x11);	//  synchro
 				tc_int(debut_telecommande);
@@ -213,9 +274,17 @@
 				tc_char(0x00);tc_char(0x00);	//  synchro
 				}
+*/
 			break;
 
 	case	tc_dir_reset_epld	:	//printf("tc_reset_epld:\n");
 		
-//			for(j=0;j<14;j++) tc_char(j);
+			for(j=0;j<8;j++) tc_char(j);
+			tc_char(1);tc_char(1);
+			tc_char(0x00);tc_char(0x00);	//  synchro
+
+			break;
+
+	case	tc_dir_reset_trp	:	//printf("tc_reset_epld:\n");
+		
 			for(j=0;j<15;j++) tc_char(j);	// reset epld+transputer
 			tc_char(1);tc_char(1);
@@ -233,5 +302,5 @@
 
 //  delai pour separer les télécommandes (archeops, transputer ou non)
-if(tt->PCI_actif==1) delai(1000);
+if(acquisition_PCI) delai(1000);
 
 #endif		//--------------------------------------------------------------------	***
