Index: /BAORadio/libindi/libindi/BAOTest/BAOtest_main.cpp
===================================================================
--- /BAORadio/libindi/libindi/BAOTest/BAOtest_main.cpp	(revision 496)
+++ /BAORadio/libindi/libindi/BAOTest/BAOtest_main.cpp	(revision 497)
@@ -193,26 +193,9 @@
          
 
-                        if (asks.find("s")!=string::npos)
-                        {
-                            strcpy(chaine, "ACK/STATUS\n");
-                            client_socket << chaine;
-
-                            if (Affichage) std::cout <<  "MicrocontroÌleur : " << chaine;
-
-                            if (Aleat)
-                            {
-                                strcpy(chaine, "STATUS/READY\n");
-                            }
-                            else
-                            {
-                                strcpy(chaine, "STATUS/BUSY\n");
-                            }
-                        }
-
-                        if (asks.find("p")!=string::npos)
-                        {
-
-                            strcpy(chaine,"ACK/POSITION\n");
-                            client_socket << chaine;
+			if (asks.find("p")!=string::npos)
+                        {
+
+                           strcpy(chaine,"ACK/POSITION\n");
+                           client_socket << chaine;
 
                             if (Affichage) std::cout <<  "MicrocontroÌleur : " << chaine;
@@ -257,5 +240,5 @@
                         }
 
-                        if (asks.find("pa")!=string::npos)
+                        if (asks.find("z")!=string::npos)
                         {
 
Index: /BAORadio/libindi/libindi/drivers/telescope/BAO.cpp
===================================================================
--- /BAORadio/libindi/libindi/drivers/telescope/BAO.cpp	(revision 496)
+++ /BAORadio/libindi/libindi/drivers/telescope/BAO.cpp	(revision 497)
@@ -234,4 +234,5 @@
     Park=false;
     Goto=false;
+    LastGotoOK=true;
     
     TrackingMode=1;
@@ -879,4 +880,5 @@
     static int memSocketsNumber=-1;
     static unsigned int compt=100;
+    
     int pos;
     
@@ -972,9 +974,5 @@
 	    
 	    if ((reponse.find("ACK")!=string::npos) && (reponse.find("NACK")==string::npos))
-	    {
-	      /*if (reponse.find("STATUS")!=string::npos)
-	      {
-		Sockets[i].ack_status=true;
-	      } else*/
+	    {	      
 	      if (reponse.find("POS")!=string::npos)
 	      {
@@ -996,17 +994,5 @@
 	    else
 	    {
-	      //rÃ©ponse Ã  la requÃªte STATUS
-	      /*if (reponse.find("STATUS")!=string::npos)
-	      {
-		if (reponse.find("READY")!=string::npos)
-		{
-		  Sockets[i].status='R';
-		}
-		else if (reponse.find("BUSY")!=string::npos)
-		{
-		  Sockets[i].status='B';
-		}
-		
-	      } else*/
+	      
 	      //rÃ©ponse Ã  la requÃªte POSITION
 	      if (reponse.find("POS")!=string::npos)
@@ -1021,5 +1007,5 @@
 			      Sockets[i].Connected=false;
 		}
-		else
+		else if (Sockets[i].ack_pos)
 		{
 		  OnCoordSetSP.s = IPS_OK;
@@ -1037,5 +1023,6 @@
 		  ParkSP.s = IPS_ALERT;
 		  IDSetSwitch(&ParkSP, "ALERTE antenne %s : erreur PARK !\n", Sockets[i].IP.c_str());
-		} else if (reponse.find("OK")!=string::npos)
+		} 
+		else if (reponse.find("OK")!=string::npos)
 		{
 		  ParkSP.s = IPS_OK;
@@ -1067,37 +1054,42 @@
 		  Sockets[i].Connected=false;
 		}
-		else
+		else if (Sockets[i].ack_goto)
 		{
-		  OnCoordSetSP.s = IPS_OK;
+		  if (reponse.find("OK")!=string::npos)
+		  {
+		    OnCoordSetSP.s = IPS_OK;
 		  
-		  Sockets[i].GotoOk=true;
+		    Sockets[i].GotoOk=true;
 		  
-		  IDSetSwitch(&ParkSP, "Antenne %s : GOTO OK.\n",  Sockets[i].IP.c_str());
+		    IDSetSwitch(&ParkSP, "Antenne %s : GOTO OK.\n",  Sockets[i].IP.c_str());
 		  
-		  lastRA  = targetRA;
-		  lastDEC = targetDEC;
+		    lastRA  = targetRA;
+		    lastDEC = targetDEC;
 		  
-		  //IDLog("We received JNow RA %s - DEC %s\n", RAStr, DecStr);*/
+		     //IDLog("We received JNow RA %s - DEC %s\n", RAStr, DecStr);*/
 		  
-		  EquatorialCoordsWNP.s = IPS_OK;
-		  IDSetNumber (&EquatorialCoordsWNP, NULL);
+		    EquatorialCoordsWNP.s = IPS_OK;
+		    IDSetNumber (&EquatorialCoordsWNP, NULL);
 		  
-		  // Fin du Goto pour toutes les antennes ?
+		    // Fin du Goto pour toutes les antennes ?
 		  
-		  int num=0;
+		    int num=0;
 		  
-		  for (int j=1; j<SocketsNumber; j++) if (Sockets[j].Connected)
-		  {
-		    if (Sockets[j].GotoOk) num++;
-		  }
+		    for (int j=1; j<SocketsNumber; j++) if (Sockets[j].Connected)
+		    {
+		      if (Sockets[j].GotoOk) num++;
+		    }
 		  
-		  if ((num == AntennesConnectees()) && (num>0))
-		  {
-		    LecturePosition=false;
+		    if ((num == AntennesConnectees()) && (num>0))
+		    {
+		      LecturePosition=false;
 		    
-		    InitAntennes();
+		      InitAntennes();
+		      
+		      LastGotoOK=true;
 		    
-		    IDSetSwitch(&OnCoordSetSP, "GOTO OK !");
-		  }
+		      IDSetSwitch(&OnCoordSetSP, "GOTO OK !");
+		    }
+		  }  
 		}
 	      }
@@ -1175,5 +1167,5 @@
       // Gestion du suivi
       
-      if (Goto)
+      if ((Goto) && (LastGotoOK))
       {
 	// DurÃ©e entre deux actualisations
@@ -1188,4 +1180,7 @@
 	  if (JJ-JJAnc > delai)
 	  {
+	    
+	    LastGotoOK=false;
+	    
 	    ADDEC2Motor(targetRA, targetDEC);
 	    
@@ -1222,92 +1217,5 @@
 	  switch (Sockets[i].etape)
 	  {
-	    //Envoi des requÃªtes STATUS
-	    /*case 0 :
-	    {
-	      Sockets[i].AttenteExecution=0;
-	      Sockets[i].ack_status=false;
-	      Sockets[i].status=0;
-	      
-	      if (!STATUS(i)) Sockets[i].sendalertes++;
-	      
-	      Sockets[i].etape++;
-	    }
-	    break;
-	    
-	    //vÃ©rification ack statuts
-	    case 1 :
-	    {
-	      if (Sockets[i].ack_status)
-	      {
-		Sockets[i].AttenteExecution=0;
-		Sockets[i].etape++;
-		i--;
-	      }
-	      else
-	      {
-		// on rÃ©itÃšre l'ordre prÃ©cÃ©dent si rien ne se passe
-		
-		Sockets[i].AttenteExecution++;
-		
-		if (Sockets[i].AttenteExecution>MAXATTENTE)
-		{
-		  Sockets[i].etape=0;
-		  Sockets[i].AttenteExecution=0;
-		  Sockets[i].AnomaliesExecution++;
-		}
-		
-		if (Sockets[i].AnomaliesExecution>MAXANOMALIES)
-		{
-		  Sockets[i].etape=6;
-		  
-		  if ( compt % 1000 == 0) 
-		  {
-		    IDSetSwitch(&OnCoordSetSP, "ERREUR 1000 : Erreur critique sur l antenne %s. DÃ©connexion de l antenne.",
-				Sockets[i].IP.c_str());
-				
-				// Sockets[i].Connected=false;
-		  }
-		}
-	      }
-	    }
-	    break;
-	    
-	    //status ready ?
-	    case 2 :
-	    {
-	      if (Sockets[i].status == 'R')
-	      {
-		Sockets[i].AttenteExecution=0;
-		Sockets[i].etape++;
-		i--;
-	      }
-	      else
-	      {
-		// on rÃ©itÃšre l'ordre prÃ©cÃ©dent si rien ne se passe
-		
-		Sockets[i].AttenteExecution++;
-		
-		if (Sockets[i].AttenteExecution>MAXATTENTE)
-		{
-		  Sockets[i].etape=0;
-		  Sockets[i].AttenteExecution=0;
-		  Sockets[i].AnomaliesExecution++;
-		}
-		
-		if (Sockets[i].AnomaliesExecution>MAXANOMALIES)
-		{
-		  Sockets[i].etape=6;
-		  
-		  if ( compt % 1000 == 0) 
-		  {
-		    IDSetSwitch(&OnCoordSetSP, "ERREUR 1001 : Erreur critique sur l antenne %s. DÃ©connexion de l antenne.",
-				Sockets[i].IP.c_str());
-				//  Sockets[i].Connected=false;
-		  }
-		}
-	      }
-	    }
-	    break;*/
-	    
+	   
 	    //Envoi de la commande POS
 	    case 0 :
@@ -1328,4 +1236,5 @@
 	      {
 		Sockets[i].AttenteExecution=0;
+		Sockets[i].AnomaliesExecution=0;
 		Sockets[i].etape++;
 		i--;
@@ -1348,9 +1257,9 @@
 		  Sockets[i].etape=3;
 		  
-		  if ( compt % 1000 == 0)
+		 // if ( compt % 1000 == 0)
 		  {
-		    IDSetSwitch(&OnCoordSetSP, "ERREUR 1002 : Erreur critique sur l antenne %s. DÃ©connexion de l antenne.",
+		    IDSetSwitch(&OnCoordSetSP, "ERREUR 1001 : Erreur critique sur l antenne %s. DÃ©connexion de l antenne.",
 				Sockets[i].IP.c_str());
-				// Sockets[i].Connected=false;
+				Sockets[i].Connected=false;
 		  }
 		}
@@ -1375,5 +1284,5 @@
 		if (Sockets[i].AttenteExecution>MAXATTENTE)
 		{
-		  Sockets[i].etape=0;
+		  Sockets[i].etape=2;
 		  Sockets[i].AttenteExecution=0;
 		  Sockets[i].AnomaliesExecution++;
@@ -1384,9 +1293,9 @@
 		  Sockets[i].etape=3;
 		  
-		  if ( compt % 1000 == 0)
+		 // if ( compt % 1000 == 0)
 		  {
-		    IDSetSwitch(&OnCoordSetSP, "ERREUR 1003 : Erreur critique sur l antenne %s. DÃ©connexion de l antenne.",
+		    IDSetSwitch(&OnCoordSetSP, "ERREUR 1002 : Erreur critique sur l antenne %s. DÃ©connexion de l antenne.",
 				Sockets[i].IP.c_str());
-				// Sockets[i].Connected=false;
+				Sockets[i].Connected=false;
 		  }
 		}
@@ -1395,4 +1304,80 @@
 	    break;
 	    
+	    //ack goto  ?
+	    case 4 :
+	    {
+	      if (Sockets[i].ack_goto)
+	      {
+		Sockets[i].AttenteExecution=0;
+		Sockets[i].AnomaliesExecution=0;
+		Sockets[i].etape++;
+	      }
+	      else
+	      {
+		// on rÃ©itÃšre l'ordre prÃ©cÃ©dent si rien ne se passe
+		
+		Sockets[i].AttenteExecution++;
+		
+		if (Sockets[i].AttenteExecution>MAXATTENTE)
+		{
+		  Sockets[i].etape=4;
+		  Sockets[i].AttenteExecution=0;
+		  Sockets[i].AnomaliesExecution++;
+		}
+		
+		if (Sockets[i].AnomaliesExecution>MAXANOMALIES)
+		{
+		  Sockets[i].etape=6;
+		  
+		 // if ( compt % 1000 == 0)
+		  {
+		    IDSetSwitch(&OnCoordSetSP, "ERREUR 1003 : Erreur critique sur l antenne %s. DÃ©connexion de l antenne.",
+				Sockets[i].IP.c_str());
+				Sockets[i].Connected=false;
+		  }
+		}
+	      }
+	    }
+	    break;
+	    
+	    //goto ok  ?
+	    case 5 :
+	    {
+	      if (Sockets[i].GotoOk)
+	      {
+		Sockets[i].AttenteExecution=0;
+		Sockets[i].AnomaliesExecution=0;
+		Sockets[i].etape++;
+	      }
+	      else
+	      {
+		// on rÃ©itÃšre l'ordre prÃ©cÃ©dent si rien ne se passe
+		
+		Sockets[i].AttenteExecution++;
+		
+		if (Sockets[i].AttenteExecution>MAXATTENTE)
+		{
+		  Sockets[i].etape=5;
+		  Sockets[i].AttenteExecution=0;
+		  Sockets[i].AnomaliesExecution++;
+		}
+		
+		if (Sockets[i].AnomaliesExecution>MAXANOMALIESGOTO)
+		{
+		  Sockets[i].etape=6;
+		  
+		 // if ( compt % 1000 == 0)
+		  {
+		    IDSetSwitch(&OnCoordSetSP, "ERREUR 1004 : Erreur critique sur l antenne %s. DÃ©connexion de l antenne.",
+				Sockets[i].IP.c_str());
+				Sockets[i].Connected=false;
+				
+				
+		  }
+		}
+	      }
+	    }
+	    break;
+	    
 	  }
 	}
@@ -1410,12 +1395,12 @@
 	if (Sockets[i].sendalertes > 0)
 	{
-	  Sockets[i].etape=3;
+	  Sockets[i].etape=5;
 	  
-	  if ( compt % 1000 == 0)
+	//  if ( compt % 1000 == 0)
 	  {
-	    IDSetSwitch(&OnCoordSetSP, "Erreur 1004 : Anomalie dÃ©tectÃ©e sur l antenne %s. DÃ©connexion de l antenne.",
+	    IDSetSwitch(&OnCoordSetSP, "Erreur 1005 : Anomalie dÃ©tectÃ©e sur l antenne %s. DÃ©connexion de l antenne.",
 			Sockets[i].IP.c_str());
 			
-			//  Sockets[i].Connected=false;
+			Sockets[i].Connected=false;
 	  }
 	}
@@ -1439,7 +1424,6 @@
 	{
 	  Sockets[i].ack_goto=false;
-	  
-	  //pour tester le programme de FranÃ§ois, on envoie ces coordonnees sur sa demande
-	  //if (!GOTO(i, 1000, -3000)) Sockets[i].sendalertes++;
+	  Sockets[i].AttenteExecution=0;
+          Sockets[i].AnomaliesExecution=0;
 	  
 	  if (!GOTO(i, Sockets[i].Pos.x - TargetPosition.x, Sockets[i].Pos.y - TargetPosition.y )) Sockets[i].sendalertes++;
@@ -1450,36 +1434,5 @@
       
       
-      /*
-      switch (EquatorialCoordsWNP.s)
-      {
-	case IPS_IDLE:
-	  
-	  break;
-	  
-	case IPS_BUSY:
-	  
-	  switch (currentSet)
-	  {
-	    case LX200_TRANSIT:
-	      OnCoordSetSP.sp[LX200_TRANSIT].s = ISS_ON;
-	      IDSetSwitch (&OnCoordSetSP, "Slew is complete.");
-	      break;
-	      
-	    case LX200_TRACKING:
-	      OnCoordSetSP.sp[LX200_TRACKING].s = ISS_ON;
-	      IDSetSwitch (&OnCoordSetSP, "Slew is complete. Tracking...");
-	      break;
-    }
-    
-    break;
-    
-	    case IPS_OK:
-	      
-	      break;
-	      
-	    case IPS_ALERT:
-	      
-	      break;
-    }*/
+       
     }
     
@@ -1511,4 +1464,6 @@
 	Goto=true;
 	
+	LastGotoOK=false;
+	
 	LecturePosition=true;
 	
@@ -1529,4 +1484,6 @@
 	
 	Goto=true;
+	
+	LastGotoOK=false;
 	
 	LecturePosition=true;
@@ -1720,5 +1677,5 @@
   bool BAO::PARK(int numsocket)
   {
-    return COMMANDE(numsocket, (char*)"p", (char*)"");
+    return COMMANDE(numsocket, (char*)"z", (char*)"");
   }
   
Index: /BAORadio/libindi/libindi/drivers/telescope/BAO.h
===================================================================
--- /BAORadio/libindi/libindi/drivers/telescope/BAO.h	(revision 496)
+++ /BAORadio/libindi/libindi/drivers/telescope/BAO.h	(revision 497)
@@ -32,4 +32,5 @@
 #define MAXATTENTE 40                //Si une commande ne recoit pas d'acknowledge. Alors refaire 40 tentatives en renvoyant la commande
 #define MAXANOMALIES 2               //Si pas de rÃ©ponse au bout de 80 tentatives -> erreur critique -> socket perdu ?
+#define MAXANOMALIESGOTO 1000
 
 struct Position
@@ -185,4 +186,5 @@
     bool   Goto;
     bool   BAOConnected;
+    bool   LastGotoOK;
     
     int    fd;				/* Telescope tty file descriptor */
