Index: /BAORadio/libindi/libindi/.directory
===================================================================
--- /BAORadio/libindi/libindi/.directory	(revision 694)
+++ /BAORadio/libindi/libindi/.directory	(revision 695)
@@ -1,5 +1,6 @@
 [Dolphin]
-Timestamp=2010,11,5,21,27,5
+Timestamp=2012,9,13,22,1,51
 
 [Settings]
+HiddenFilesShown=true
 ShowDotFiles=false
Index: /BAORadio/libindi/libindi/BAOTest/BAOtest_main.cpp
===================================================================
--- /BAORadio/libindi/libindi/BAOTest/BAOtest_main.cpp	(revision 694)
+++ /BAORadio/libindi/libindi/BAOTest/BAOtest_main.cpp	(revision 695)
@@ -18,5 +18,8 @@
 #include <netinet/in.h>
 
+//#define POSITIONS_DIRECT  
+
 using namespace std;
+
 
 
@@ -74,5 +77,5 @@
         result.y=atoi(str.substr(7, 4).c_str());
 
-        if (str[1]=='f') result.x=-result.x;
+	if (str[1]=='f') result.x=-result.x;
 
         if (str[6]=='f') result.y=-result.y;
@@ -129,5 +132,5 @@
 int main ( int argc, char *argv[] )
 {
-    Position Pos, NouvPos;
+    Position Pos, Pos2, NouvPos;
     char cIP;
     char IP[20];
@@ -188,5 +191,5 @@
                 strcpy(chaine, "");
 
-
+#ifndef POSITIONS_DIRECT
                 if (abs(Pos.x - NouvPos.x) < 5 )
 		{
@@ -208,4 +211,6 @@
                     Pos.y -= (NouvPos.y - Pos.y) / 6.0;
                 }
+#endif
+		
 
                 if (ErreursAleatoires) Aleat=rand()%ERREURS != 1;
@@ -235,11 +240,15 @@
                 if (asks.find("G")!=string::npos)
                 {
-
-                    NouvPos = ExtractPosition2(asks);
+#ifndef POSITIONS_DIRECT
+                 NouvPos = ExtractPosition2(asks);
 
                         NouvPos.x += Pos.x;
                         NouvPos.y += Pos.y;
-                   
-
+#else 
+	       
+	       Pos2 = ExtractPosition2(asks);
+	       Pos.x-=Pos2.x;
+               Pos.y-=Pos2.y;
+#endif
                     strcpy(chaine,"ACK/GOTO/\n");
                     client_socket << chaine;
Index: /BAORadio/libindi/libindi/BAOcontrol/BAOcontrol.pro
===================================================================
--- /BAORadio/libindi/libindi/BAOcontrol/BAOcontrol.pro	(revision 694)
+++ /BAORadio/libindi/libindi/BAOcontrol/BAOcontrol.pro	(revision 695)
@@ -1,4 +1,4 @@
 ######################################################################
-# Automatically generated by qmake (2.01a) Thu Sep 13 21:57:57 2012
+# Automatically generated by qmake (2.01a) Thu Sep 27 14:47:45 2012
 ######################################################################
 
Index: /BAORadio/libindi/libindi/BAOcontrol/Makefile
===================================================================
--- /BAORadio/libindi/libindi/BAOcontrol/Makefile	(revision 694)
+++ /BAORadio/libindi/libindi/BAOcontrol/Makefile	(revision 695)
@@ -1,5 +1,5 @@
 #############################################################################
 # Makefile for building: BAOcontrol
-# Generated by qmake (2.01a) (Qt 4.8.1) on: Thu Sep 13 21:57:57 2012
+# Generated by qmake (2.01a) (Qt 4.8.1) on: Thu Sep 27 14:47:45 2012
 # Project:  BAOcontrol.pro
 # Template: app
Index: /BAORadio/libindi/libindi/BAOcontrol/baocontrol.cpp
===================================================================
--- /BAORadio/libindi/libindi/BAOcontrol/baocontrol.cpp	(revision 694)
+++ /BAORadio/libindi/libindi/BAOcontrol/baocontrol.cpp	(revision 695)
@@ -20,5 +20,5 @@
 {
     float a1, a2, a3;
-    
+
     char *Version;
 
@@ -29,5 +29,5 @@
 
     // Affichage de la version du programme
-    
+
     Version = new char[1000];
 
@@ -40,7 +40,7 @@
  *        franckrichard033@gmail.com      *\n \
  ******************************************\n\n\n", VERSION, VERSION_DATE);
-    
+
     AfficherLog(Version, true);
-    
+
     delete [] Version;
 
@@ -145,5 +145,4 @@
 
 
-
     // Transfert de la latitude, longitude, pression, tempÃ©rature Ã  la classe Astro
 
@@ -154,7 +153,9 @@
 
 
-
-      //DefinirDateHeure(2012.0, 6.0, 29.0, 21.0, 56.0, 48.0);
-
+    //DefinirDateHeure(2012.0, 6.0, 29.0, 22.0, 39.0, 40.0);
+    //DefinirDateHeure(2012.0, 6.0, 29.0, 22.0, 49.0, 18.0);
+    //DefinirDateHeure(2012.0, 6.0, 29.0, 22.0, 57.0, 52.0);
+    //DefinirDateHeure(2012.0, 6.0, 29.0, 20.0, 59.0, 8.0);
+    //DefinirDateHeure(2012.0, 6.0, 29.0, 21.0, 55.0, 57.0);
 
 
@@ -164,63 +165,99 @@
     CalculTSL();
 
-
-      /*double c,d;
-      double e,f;
-      stringstream os;
-
-      os << "tsl=" << DHMS(GetTSL()*N180divPi, true)<< "  " << GetTSL() << "\n";
-
-      AfficherLog(os.str(), true);
-      os.str("");
-
-      // double a=15.0*(5.0+55.0/60.0+10.3/3600.0)*Pidiv180;
-      // double b=(7.0+24.0/60.0+25.0/3600.0)*Pidiv180;
-
-      //  double a=15.0*(6.0+45.0/60.0+8.7/3600.0)*Pidiv180;
-      //double b=-(16.0+43.0/60.0+0.3/3600.0)*Pidiv180;
-
-      //double a=15.0*(5.0+55.0/60.0+50.0/3600.0)*Pidiv180;
-      //double b=(7.0+24.0/60.0+30.0/3600.0)*Pidiv180;
-
-      //  double a=15.0*(23.0+7.0/60.0+8.0/3600.0)*Pidiv180;
-      // double b=(59.0+29.0/60.0+12.0/3600.0)*Pidiv180;
-
-      double a=15.0*(14.0+15.0/60.0+39.5/3600.0)*Pidiv180;
-      double b=(19.0+10.0/60.0+46.7/3600.0)*Pidiv180;
-
-      //CoordonneesHorairesDouble Soleil;
-
-      //CalculARDecSoleil(&Soleil);
-
-      //a=Soleil.ar;
-      //b=Soleil.dec;
-      // Precession(&a, &b);
-      // NutationEtoile(&a, &b);
-
-      //  AberrationAnnuelle(&a, &b);
-      
-      os << "ad=" << a << "   de=" << b  << "\n";
-
-      Azimut(a,b,&c,&d);
-      
-      c += 2.91488 * Pidiv180;
-      d -= 8.08241 * Pidiv180;
-      
-      AzHa2ADDe(c, d, &a, &b);
-      
-      os << "ad=" << DHMS(a*N180divPi, true) << "   de=" << DHMS(b*N180divPi, false) << "\n";
-      os << "ad=" << a << "   de=" << b  << "\n";
-
-      AfficherLog(os.str(), true);
-
-      Azimut(a,b,&c,&d);
-      
-      os.str("");
-
-      os << "az=" << DHMS(c*N180divPi, false)<< "   ha=" << DHMS(d*N180divPi, false) << "\n";
-
-      AfficherLog(os.str(), true);*/
-
-   
+    /*
+    double a, b, c,d, a22, b22, c22, d22;
+    double e,f;
+    stringstream os;
+
+    os << "tsl=" << DHMS(GetTSL()*N180divPi, true)<< "  " << GetTSL() << "\n";
+
+    AfficherLog(os.str(), true);
+    os.str("");
+
+    a=15.0*(18.0+36.0/60.0+56.3/3600.0)*Pidiv180;
+    b=(38.0+47.0/60.0+3.1/3600.0)*Pidiv180;
+    
+    a= 3.61082;
+    b=0.860677;
+    a22=3.39278;
+    b22=0.844504;
+
+    a= 4.87356;
+    b=0.676912;
+    a22=4.94645;
+    b22=0.577727;
+
+    a= 5.41677;
+    b=0.790291;
+    a22=5.55106;
+    b22=0.699053;
+    
+    a=4.87356;
+    b=0.676912;
+    a22=4.97375;
+    b22=0.579795;
+
+    
+    a=3.73351;
+    b=0.334748;
+    a22=3.61661;
+    b22=0.241758;
+    
+
+    //a=15.0*(18.0+37.0/60.0+22.0/3600.0)*Pidiv180;
+    //b=(38.0+47.0/60.0+43.0/3600.0)*Pidiv180;
+
+    //CoordonneesHorairesDouble Soleil;
+
+    //CalculARDecSoleil(&Soleil);
+
+    //a=Soleil.ar;
+    //b=Soleil.dec;
+    //Precession(&a, &b);
+    //NutationEtoile(&a, &b);
+
+    //AberrationAnnuelle(&a, &b);
+
+    os << "ad=" << DHMS(a*N180divPi, true) << "   de=" << DHMS(b*N180divPi, false) << "\n";
+    os << "ad=" << a << "   de=" << b  << "\n";
+
+    Alignement *al;
+
+    al=new Alignement();
+
+    Azimut(a, b, &c, &d);
+    Azimut(a22, b22, &c22, &d22);
+
+    double ec1 = (c-c22)/PasDeltaAz;
+    double ec2=  (d-d22)/PasDeltaHa;
+
+    os << "nb de pas   az=" << ec1 << "  ha=" << ec2 << "\n";
+
+    double c3= VerifAngle((c * N180divPi * 4000.0/360.0 + ec1) * (360.0 / 4000.0) * Pidiv180 );
+
+    double   d3 = al->Motor2Alt(al->Alt2Motor(d * N180divPi) + ec2) * Pidiv180;
+
+    double sp=DistanceAngulaireEntre2Points(c, d, c3, d3) *N180divPi;
+
+    os << "sep=" << sp << "Â°    dist haut=" << (d-d3)*N180divPi <<"\n";
+
+    AzHa2ADDe(c3, d3, &a, &b);
+
+    os << "ad=" << DHMS(a*N180divPi, true) << "   de=" << DHMS(b*N180divPi, false) << "\n";
+    os << "ad=" << a << "   de=" << b  << "\n";
+
+    AfficherLog(os.str(), true);
+
+    Azimut(a,b,&c,&d);
+
+    os.str("");
+
+    os << "az=" << DHMS(c*N180divPi, false)<< "   ha=" << DHMS(d*N180divPi, false) << "\n";
+
+    delete al;
+
+    AfficherLog(os.str(), true);
+    */
+    
 
 
@@ -244,5 +281,5 @@
 
     Connect(true);
-   
+
 }
 
@@ -535,5 +572,5 @@
     struct tm date;
     struct timeval tv;
- 
+
     // On rÃ©cupÃšre la date et l'heure depuis l'horloge du systÃšme
 
@@ -556,5 +593,5 @@
     // On lance les calculs (Temps sidÃ©ral local etc...)
 
-    CalculTSL();  
+    CalculTSL();
 }
 
@@ -1012,4 +1049,16 @@
             return true;
         }
+        
+        if (commande == "R")
+        {
+            if (!VerifReponse("Reinitialisation de la matrice de correction", Message))
+            {
+                ErreurLog("Pas de rÃ©ponse de l'antenne Ã  la requÃªte R.\n\n");
+
+                return false;
+            }
+
+            return true;
+        }
 
         if (!VerifReponse("name=\"COMMAND_SET\" state=\"Ok\"", NULL))
@@ -1655,5 +1704,5 @@
             // et donc la magnitude < MAGNITUDEMAXETOILESCALIBRATION
 
-            if ( Etoiles[i].selectionnee = ((Etoiles[i].ha > (HAUTMIN + 5.0) * Pidiv180) && (Etoiles[i].mag < MAGNITUDEMAXETOILESCALIBRATION)) )
+            if ( Etoiles[i].selectionnee = ((Etoiles[i].ha > (HAUTMIN + 5.0 ) * Pidiv180) && (Etoiles[i].mag < MAGNITUDEMAXETOILESCALIBRATION)) )
             {
                 os.width(20);
@@ -2114,4 +2163,7 @@
             case 'o' :
                 commande[0]='O';
+                break;
+            case 'r' :
+                commande[0]='R';
                 break;
             }
Index: /BAORadio/libindi/libindi/BAOcontrol/baoqt.cpp
===================================================================
--- /BAORadio/libindi/libindi/BAOcontrol/baoqt.cpp	(revision 694)
+++ /BAORadio/libindi/libindi/BAOcontrol/baoqt.cpp	(revision 695)
@@ -10,6 +10,6 @@
     ui(new Ui::BAOqt)
 {
- 
-  QPoint pointPos;
+
+    QPoint pointPos;
 
     RechercheOptimisation = false;
@@ -95,24 +95,24 @@
 
 #ifdef JOYSTICK
-    
+
     joystick = new Joystick();
 
     if (joystick)
     {
-      if (!joystick->init()) 
-      {
-	delete joystick;
-	
-	joystick = NULL;
-	
-	QMessageBox::information(this, tr("Jostick"), tr("Joystick inaccessible. Verifiez que le recepteur est bien branche sur un port USB."));
-      }
-    }
-    
+        if (!joystick->init())
+        {
+            delete joystick;
+
+            joystick = NULL;
+
+            QMessageBox::information(this, tr("Jostick"), tr("Joystick inaccessible. Verifiez que le recepteur est bien branche sur un port USB."));
+        }
+    }
+
 #endif
 
-    //ui->lineEditIP->setText("127.0.0.1");
-    ui->lineEditIP->setText("134.158.88.199");
-    
+    ui->lineEditIP->setText("127.0.0.1");
+    //ui->lineEditIP->setText("134.158.88.199");
+
     ui->lineEdit_2->setText((QString("BAORadio, LAL, version ").append(VERSION)).toStdString().c_str());
 
@@ -126,5 +126,5 @@
 
     ui->pushButton1x->setDown(false);
-    
+
     ui->pushButton10x->setDown(true);
 
@@ -292,5 +292,5 @@
 
 #ifdef JOYSTICK
-    
+
     joy++;
 
@@ -576,129 +576,138 @@
 void BAOqt::on_pushButton1pt_clicked()
 {
-    static int etape = 1;
-
-    RechercheOptimisation = false;
-
-    switch (etape)
-    {
-    case 1:
-    {
-        etape=2;
-
-        QMessageBox::information(this, tr("Alignement 1pt de l antenne"), tr("Choisissez un objet facile a pointer"));
-
-        on_pushButtonGoto_clicked();
-
-        QMessageBox::information(this, tr("Alignement 1pt de l antenne"), tr("Attendez la fin du pointage. Centrez l'objet dans le viseur et rappuyez sur le bouton 'alignement 1pt' pour terminer."));
-
-    };
-    break;
-
-    case 2:
-    {
-        etape=1;
-
-        QMessageBox::information(this, tr("Alignement 1pt de l antenne"), tr("Annulation du mouvement en cours."));
-
-        bao->Abort();
-
-        sleep(1);
-
-        string str = bao->DecodageEntreesUtilisateur("send X");
-
-        string str2;
-
-        int x = 0;
-        int y = 0;
-
-        char a1='b';
-        char a2='b';
-
-        size_t pos = str.find("/");
-
-        if (pos != string::npos)
-        {
-            str2 = str.substr(pos + 1);
-
-            pos = str2.find("/");
-
-            if (pos != string::npos)
-            {
-                x = atol( str2.substr(0, pos).c_str() );
-
-                y = atol( str2.substr(pos + 1).c_str() );
-            }
-        }
-
-        sleep(1);
-
-        str = bao->DecodageEntreesUtilisateur("send D");
-
-        int dx = 0;
-        int dy = 0;
-
-        pos = str.find("/");
-
-        if (pos != string::npos)
-        {
-            str2 = str.substr(pos + 1);
-
-            pos = str2.find("/");
-
-            if (pos != string::npos)
-            {
-                dx = atol( str2.substr(0, pos).c_str() );
-
-                x -= dx;
-
-                dy = atol( str2.substr(pos + 1).c_str() );
-
-                y -= dy;
-
-                if ( x < 0 ) {
-                    a1 = 'f';
-                    x = -x;
-                }
-
-                if ( y < 0 ) {
-                    a2 = 'f';
-                    y = -y;
-                }
-
-                char chaine[100];
-
-                sprintf(chaine, "send g%c%04df0000", a1, x);
-
-                str = bao->DecodageEntreesUtilisateur(string(chaine));
-
-                QMessageBox::information(this, tr("Alignement 1pt de l antenne"), tr("Attendez la fin du mouvement avant de cliquer sur OK."));
-
-
-                sprintf(chaine, "send gf0000%c%04d", a2, y);
-
-                str = bao->DecodageEntreesUtilisateur(string(chaine));
-                QMessageBox::information(this, tr("Alignement 1pt de l antenne"), tr("Appuyez sur les deux boutons places dans la boite de l'antenne."));
-
-                QMessageBox::StandardButton reply;
-
-                reply = QMessageBox::question(this, tr("Alignement 1pt de l antenne"),
-                                              "Voulez-vous reinitialiser les codeurs de l'antenne en envoyant la c ommande Park ?",
-                                              QMessageBox::Yes | QMessageBox::No );
-
-                if (reply == QMessageBox::Yes)
-                {
-
-                    str = bao->DecodageEntreesUtilisateur("send z");
-
-                    sleep(1);
-
-                    str = bao->DecodageEntreesUtilisateur("send p");
-                }
-                QMessageBox::information(this, tr("Alignement 1pt de l antenne"), tr("Fin de la procedure."));
-            }
-        }
-    }
-    break;
-    }
+    RechercheOptimisation = false;
+
+    bao->DecodageEntreesUtilisateur("send r");
+    
+    
+    /*
+      static int etape = 1;
+
+     RechercheOptimisation = false;
+
+     switch (etape)
+     {
+     case 1:
+     {
+         etape=2;
+
+         QMessageBox::information(this, tr("Alignement 1pt de l antenne"), tr("Choisissez un objet facile a pointer"));
+
+         on_pushButtonGoto_clicked();
+
+         QMessageBox::information(this, tr("Alignement 1pt de l antenne"), tr("Attendez la fin du pointage. Centrez l'objet dans le viseur et rappuyez sur le bouton 'alignement 1pt' pour terminer."));
+
+     };
+     break;
+
+     case 2:
+     {
+         etape=1;
+
+         QMessageBox::information(this, tr("Alignement 1pt de l antenne"), tr("Annulation du mouvement en cours."));
+
+         bao->Abort();
+
+         sleep(1);
+
+         string str = bao->DecodageEntreesUtilisateur("send X");
+
+         string str2;
+
+         int x = 0;
+         int y = 0;
+
+         char a1='b';
+         char a2='b';
+
+         size_t pos = str.find("/");
+
+         if (pos != string::npos)
+         {
+             str2 = str.substr(pos + 1);
+
+             pos = str2.find("/");
+
+             if (pos != string::npos)
+             {
+                 x = atol( str2.substr(0, pos).c_str() );
+
+                 y = atol( str2.substr(pos + 1).c_str() );
+             }
+         }
+
+         sleep(1);
+
+         str = bao->DecodageEntreesUtilisateur("send D");
+
+         int dx = 0;
+         int dy = 0;
+
+         pos = str.find("/");
+
+         if (pos != string::npos)
+         {
+             str2 = str.substr(pos + 1);
+
+             pos = str2.find("/");
+
+             if (pos != string::npos)
+             {
+                 dx = atol( str2.substr(0, pos).c_str() );
+
+                 x -= dx;
+
+                 dy = atol( str2.substr(pos + 1).c_str() );
+
+                 y -= dy;
+
+                 if ( x < 0 ) {
+                     a1 = 'f';
+                     x = -x;
+                 }
+
+                 if ( y < 0 ) {
+                     a2 = 'f';
+                     y = -y;
+                 }
+
+                 char chaine[100];
+
+                 sprintf(chaine, "send g%c%04df0000", a1, x);
+
+                 str = bao->DecodageEntreesUtilisateur(string(chaine));
+
+                 QMessageBox::information(this, tr("Alignement 1pt de l antenne"), tr("Attendez la fin du mouvement avant de cliquer sur OK."));
+
+
+                 sprintf(chaine, "send gf0000%c%04d", a2, y);
+
+                 str = bao->DecodageEntreesUtilisateur(string(chaine));
+                 QMessageBox::information(this, tr("Alignement 1pt de l antenne"), tr("Appuyez sur les deux boutons places dans la boite de l'antenne."));
+
+                 QMessageBox::StandardButton reply;
+
+                 reply = QMessageBox::question(this, tr("Alignement 1pt de l antenne"),
+                                               "Voulez-vous reinitialiser les codeurs de l'antenne en envoyant la c ommande Park ?",
+                                               QMessageBox::Yes | QMessageBox::No );
+
+                 if (reply == QMessageBox::Yes)
+                 {
+
+                     str = bao->DecodageEntreesUtilisateur("send z");
+
+                     sleep(1);
+
+                     str = bao->DecodageEntreesUtilisateur("send p");
+                 }
+                 QMessageBox::information(this, tr("Alignement 1pt de l antenne"), tr("Fin de la procedure."));
+             }
+         }
+     }
+     break;
+     }
+
+
+     */
 }
 
@@ -786,6 +795,4 @@
 void BAOqt::on_pushButtonRetryGoto_clicked()
 {
-    RechercheOptimisation = true;
-
     RechercheOptimisation = false;
 
Index: /BAORadio/libindi/libindi/BAOcontrol/baoqt.ui
===================================================================
--- /BAORadio/libindi/libindi/BAOcontrol/baoqt.ui	(revision 694)
+++ /BAORadio/libindi/libindi/BAOcontrol/baoqt.ui	(revision 695)
@@ -117,5 +117,5 @@
     </property>
     <property name="text">
-     <string>10x</string>
+     <string>3x</string>
     </property>
    </widget>
@@ -166,18 +166,18 @@
     </property>
     <property name="text">
+     <string>Reset codeurs</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="pushButtonTo00">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>60</y>
+      <width>85</width>
+      <height>27</height>
+     </rect>
+    </property>
+    <property name="text">
      <string>Park</string>
-    </property>
-   </widget>
-   <widget class="QPushButton" name="pushButtonTo00">
-    <property name="geometry">
-     <rect>
-      <x>10</x>
-      <y>60</y>
-      <width>85</width>
-      <height>27</height>
-     </rect>
-    </property>
-    <property name="text">
-     <string>(0,0) codeurs</string>
     </property>
    </widget>
@@ -344,5 +344,5 @@
     </property>
     <property name="text">
-     <string>Align. 1 pt</string>
+     <string>Reset matrice</string>
     </property>
    </widget>
@@ -472,7 +472,7 @@
     <rect>
      <x>20</x>
-     <y>38</y>
+     <y>32</y>
      <width>511</width>
-     <height>115</height>
+     <height>121</height>
     </rect>
    </property>
Index: /BAORadio/libindi/libindi/LancementBAOcontrol.sh
===================================================================
--- /BAORadio/libindi/libindi/LancementBAOcontrol.sh	(revision 694)
+++ /BAORadio/libindi/libindi/LancementBAOcontrol.sh	(revision 695)
@@ -3,5 +3,5 @@
 echo "Lancement du serveur indiserver indi_BAO..."
 
-xterm -ge 150x40 -e indiserver indi_BAO&
+xterm -sb -rightbar -sl 3000 -ge 150x40 -e indiserver indi_BAO&
 
 sleep 1
Index: /BAORadio/libindi/libindi/communs/alignement.cpp
===================================================================
--- /BAORadio/libindi/libindi/communs/alignement.cpp	(revision 694)
+++ /BAORadio/libindi/libindi/communs/alignement.cpp	(revision 695)
@@ -21,6 +21,7 @@
 
     InitAlignement();
-
-
+    
+    AlignementEnCours = 0;
+  
     // initialisation des paramÃštres gÃ©omÃ©triques de l'antenne
 
@@ -80,5 +81,5 @@
     // Est-ce que l'antenne est en cours d'alignement ?
 
-    AlignementEnCours = 0;
+//    AlignementEnCours = 0;
 
     // La matrice de correction a-t-elle Ã©tÃ© calculÃ©e ?
Index: /BAORadio/libindi/libindi/communs/astro.cpp
===================================================================
--- /BAORadio/libindi/libindi/communs/astro.cpp	(revision 694)
+++ /BAORadio/libindi/libindi/communs/astro.cpp	(revision 695)
@@ -690,7 +690,7 @@
     }
 
-    *azmin = min - 200;
-
-    *azmax = max + 200;
+    *azmin = min - 300;
+
+    *azmax = max + 300;
 
     CalculTSL();
Index: /BAORadio/libindi/libindi/communs/const.h
===================================================================
--- /BAORadio/libindi/libindi/communs/const.h	(revision 694)
+++ /BAORadio/libindi/libindi/communs/const.h	(revision 695)
@@ -8,6 +8,6 @@
 //////////////////////////////////////////
 
-#define VERSION "0.62"
-#define VERSION_DATE "14/09/12"
+#define VERSION "0.63"
+#define VERSION_DATE "28/09/12"
 
 //#define ET_UT 0.0
Index: /BAORadio/libindi/libindi/drivers/telescope/BAO.cpp
===================================================================
--- /BAORadio/libindi/libindi/drivers/telescope/BAO.cpp	(revision 694)
+++ /BAORadio/libindi/libindi/drivers/telescope/BAO.cpp	(revision 695)
@@ -127,5 +127,5 @@
     delta_az 		  = 0;
     delta_ha              = 0;
-    VitesseRaquette       = 10;
+    VitesseRaquette       = 3;
     targetAlignmentIP     = -1;
 
@@ -568,5 +568,5 @@
             // est-ce que l'adresse ip correspond Ã  l'adresse d'une antenne connectÃ©e ?
 
-            for ( i=1; i<SocketsNumber; i++) if (Sockets[i].Connected)
+            for ( i=1; i<SocketsNumber; i++) if ( Sockets[i].Connected )
                 {
                     if (Sockets[i].IP == ip) {
@@ -657,5 +657,12 @@
                 {
                     Sockets[targetAlignmentIP].AlignementAntenne->AlignementEnCours = 0;
+		    
+		    Sockets[targetAlignmentIP].AlignementAntenne->InitParametresInstrument();
+		    
                     Sockets[targetAlignmentIP].AlignementAntenne->CalculerMatriceCorrection(targetRA, targetDEC);
+		    
+		     Sockets[targetAlignmentIP].AlignementAntenne->EnregistrementParametresAlignement(
+                        Sockets[targetAlignmentIP].IP,
+                        "/home/" + (string)getenv("USER") + "/AlignementAntennes.cfg");
                 }
                 else
@@ -666,4 +673,18 @@
                 }
             }
+            else if (chaine[0] == 'R')
+            {
+                IDSetText(&CommandTP, "Reinitialisation de la matrice de correction\n" );
+
+                 Sockets[targetAlignmentIP].AlignementAntenne->InitParametresInstrument();
+		 
+		 Sockets[targetAlignmentIP].AlignementAntenne->Identity();
+
+                Sockets[targetAlignmentIP].AlignementAntenne->Matrice_ok = false;
+		
+		 Sockets[targetAlignmentIP].AlignementAntenne->EnregistrementParametresAlignement(
+                        Sockets[targetAlignmentIP].IP,
+                        "/home/" + (string)getenv("USER") + "/AlignementAntennes.cfg");
+	    }
             else if (chaine[0] == 'O')
             {
@@ -1315,6 +1336,6 @@
         case 1 :
             IUResetSwitch(&RaquetteNP);
-            IDSetSwitch(&RaquetteNP, "La vitesse de la raquette est fixee a 10x");
-            VitesseRaquette = 10;
+            IDSetSwitch(&RaquetteNP, "La vitesse de la raquette est fixee a 3x");
+            VitesseRaquette = 3;
             break;
         }
@@ -1474,34 +1495,7 @@
             double az, ha, ad, de, ad2, de2;
 
-            int num;
-
-            num = Sockets[targetAlignmentIP].AlignementAntenne->nbrcorrections;
-
-            ad = targetRA * 15.0 * Pidiv180;
-
-            Sockets[targetAlignmentIP].AlignementAntenne->ad[num] = ad;
-
-            de = targetDEC * Pidiv180;
-
-            Sockets[targetAlignmentIP].AlignementAntenne->de[num] = de;
-
-            CalculTSL();
-
-            Sockets[targetAlignmentIP].AlignementAntenne->tsl[num] = GetTSL();
-
-            Azimut(ad, de, &az, &ha);
-
-            //ha = RefractionAtmospherique(ha) ;
-
-            az  = VerifAngle(az + (double)delta_az * PasDeltaAz);
-
-            ha += (double)delta_ha * PasDeltaHa;
-
-            AzHa2ADDe(az, ha, &ad2, &de2);
-
-
-            Sockets[targetAlignmentIP].AlignementAntenne->delta_ad[num] = ad2;
-
-            Sockets[targetAlignmentIP].AlignementAntenne->delta_de[num] = de2;
+            int num = Sockets[targetAlignmentIP].AlignementAntenne->nbrcorrections;
+
+
 
             stringstream os;
@@ -1513,12 +1507,10 @@
 
             AfficherLog("(ad1=%s de1=%s) -> (ad2=%s de2=%s)\n",
-                        DHMS(ad  * N180divPi, true ).c_str(),
-                        DHMS(de  * N180divPi, false).c_str(),
-                        DHMS(ad2 * N180divPi, true ).c_str(),
-                        DHMS(de2 * N180divPi, false).c_str());
-
-            AfficherLog("delta_az=%s delta_ha=%s\n",
-                        DHMS(delta_az * PasDeltaAz, false).c_str(),
-                        DHMS(delta_ha * PasDeltaHa, false).c_str());
+                        DHMS(Sockets[targetAlignmentIP].AlignementAntenne->ad[num]  * N180divPi, true ).c_str(),
+                        DHMS(Sockets[targetAlignmentIP].AlignementAntenne->de[num]  * N180divPi, false).c_str(),
+                        DHMS(Sockets[targetAlignmentIP].AlignementAntenne->delta_ad[num] * N180divPi, true ).c_str(),
+                        DHMS(Sockets[targetAlignmentIP].AlignementAntenne->delta_de[num] * N180divPi, false).c_str());
+
+            AfficherLog("delta_az=%i delta_ha=%i\n", delta_az, delta_ha);
 
             Sockets[targetAlignmentIP].AlignementAntenne->nbrcorrections++;
@@ -1536,5 +1528,5 @@
         case 1 :
         {
-            if  (Sockets[targetAlignmentIP].AlignementAntenne->nbrcorrections >=3 )
+            /*if  (Sockets[targetAlignmentIP].AlignementAntenne->nbrcorrections >=3 )
             {
                 // IDLog("Calcul matrice\n", true);
@@ -1547,5 +1539,5 @@
 
                 Sockets[targetAlignmentIP].AlignementAntenne->Matrice_ok = false;
-            }
+            }*/
 
             IDSetSwitch(&AlignementOkP, "Les parametres de l alignement ont ete sauvegardes");
@@ -1727,9 +1719,10 @@
     double newRA2  = newRA * 15.0 * Pidiv180;
     double newDEC2 = newDEC * Pidiv180;
+    double hautmin = HAUTMIN;
     char AzStr[32];
     char AltStr[32];
     Coord result, vect;
 
-    
+
     // Pour toutes les antennes connectÃ©es
 
@@ -1792,4 +1785,5 @@
                                  DHMS(newDEC*N180divPi, false ).c_str());
                  }*/
+
             }
             else
@@ -1803,9 +1797,35 @@
                     // entre les deux programmes
 
-                    newRA  = Sockets[i].AlignementAntenne->delta_ad[Sockets[i].AlignementAntenne->nbrcorrections];
-                    newDEC = Sockets[i].AlignementAntenne->delta_de[Sockets[i].AlignementAntenne->nbrcorrections];
+                    double az, ha, ad, de;
 		    
-		    // if newRA et newDEC = 0 -> on sort
-    
+                    int num = Sockets[i].AlignementAntenne->nbrcorrections;
+
+                    Sockets[i].AlignementAntenne->ad[num] = newRA2;
+
+                    Sockets[i].AlignementAntenne->de[num] = newDEC2;
+
+                    //CalculTSL();
+
+                    Sockets[i].AlignementAntenne->tsl[num] = GetTSL();
+
+                    Azimut(newRA2, newDEC2, &az, &ha);
+
+                    //ha = RefractionAtmospherique(ha) ;
+
+                    az  = VerifAngle(az + (double)delta_az * PasDeltaAz);
+
+                    ha += (double)delta_ha * PasDeltaHa;
+
+                    AzHa2ADDe( az, ha, &ad, &de );
+
+                    Sockets[i].AlignementAntenne->delta_ad[num] = ad;
+
+                    Sockets[i].AlignementAntenne->delta_de[num] = de;
+
+                    newRA  = ad;
+                    newDEC = de;
+
+                    // if newRA et newDEC = 0 -> on sort
+
                     if ( newRA == 0 && newDEC == 0) return;
 
@@ -1845,4 +1865,20 @@
                     //TODO :: Ã  vÃ©rifier en dÃ©tails
 
+                    // Calcul de la hauteur minimale accessible par l'inbstrument lorsque la matrice de correction est activÃ©e
+
+                    double targetAltL = Sockets[i].AlignementAntenne->Motor2Alt(Sockets[i].AlignementAntenne->Alt2Motor2(HAUTMIN)) * Pidiv180;
+
+                    vect.x = cos(targetAltL);
+                    vect.y = 0.0;
+                    vect.z = sin(targetAltL);
+
+                    Sockets[i].AlignementAntenne->AppliquerMatriceCorrectionSimple(&result, vect);
+
+                    hautmin = asin(result.z) * N180divPi;
+
+                    AfficherLog("Hauteur  %5.0f\n", hautmin);
+
+                    // Calcul de la hauteur de l'objet suivi aprÃšs application de la matrice de correction
+
                     double targetAltC = Sockets[i].AlignementAntenne->Motor2Alt(Sockets[i].AlignementAntenne->Alt2Motor2(targetAlt * N180divPi)) * Pidiv180;
 
@@ -1918,5 +1954,5 @@
             // Conversion des deux angles en pas codeurs
 
-            if ( targetAlt < HAUTMIN )
+            if ( targetAlt < hautmin )
             {
                 // L'objet est trop bas ( < 30Â°). On annule le suivi...
@@ -1943,5 +1979,5 @@
                 }
 
-                if ( targetAlt < HAUTMIN ) targetAlt = HAUTMIN;
+                if ( targetAlt < hautmin ) targetAlt = hautmin;
 
                 // On applique la formule de Marc pour convertir la hauteur en nombre de pas codeur alt
@@ -1955,9 +1991,18 @@
                 // On ajoute les deltas en AZ et en HA pour la raquette hors procÃ©dure d'alignement
 
-                Sockets[i].TargetPosition.x += delta_az;
-
-                Sockets[i].TargetPosition.y += delta_ha;
-
-                //TODO : solution Ã  trouver pour maintenir efficacement l'antenne dans l'intervalle
+
+                if (Sockets[i].AlignementAntenne->AlignementEnCours == 0)
+                {
+                    Sockets[i].TargetPosition.x += delta_az;
+
+                    Sockets[i].TargetPosition.y += delta_ha;
+
+                    //Sockets[i].TargetPosition.x = (int) Arrondi( VerifAngle( targetAz * Pidiv180 + (double)delta_az * PasDeltaAz ) * N180divPi * (double)NBREPASCODEURSAZ / 360.0);
+
+                    //Sockets[i].TargetPosition.y = (int) Arrondi( Sockets[i].AlignementAntenne->Alt2Motor( targetAlt + (double)delta_ha * PasDeltaHa * N180divPi) );
+                }
+
+
+                //TODO : Ã  vÃ©rifier
 
                 // est-ce que le transit de l'objet suivi va nous emmener Ã  sortir de l'intervalle [MINAZCODEURS..MAXAZCODEURS] ?
