Ignore:
Timestamp:
Oct 22, 2012, 4:20:40 PM (12 years ago)
Author:
frichard
Message:

-Passage de la version 0.9 à la version 0.9.5 de la biliothèque libindi
-correction d'un bug affectant la commande 'm'
-vérification des fuites de mémoire et débogage complet

Location:
BAORadio/libindi/libindi/drivers/telescope
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • BAORadio/libindi/libindi/drivers/telescope/BAO.cpp

    r695 r697  
    652652            else if (chaine[0] == 'M')
    653653            {
    654                 IDSetText(&CommandTP, "Calcul des matrices de correction\n" );
    655 
    656                 if  (Sockets[targetAlignmentIP].AlignementAntenne->nbrcorrections >=3 )
     654                if (targetAlignmentIP != -1)
    657655                {
    658                     Sockets[targetAlignmentIP].AlignementAntenne->AlignementEnCours = 0;
    659                    
    660                     Sockets[targetAlignmentIP].AlignementAntenne->InitParametresInstrument();
    661                    
    662                     Sockets[targetAlignmentIP].AlignementAntenne->CalculerMatriceCorrection(targetRA, targetDEC);
    663                    
    664                      Sockets[targetAlignmentIP].AlignementAntenne->EnregistrementParametresAlignement(
     656                    IDSetText(&CommandTP, "Calcul des matrices de correction\n" );
     657
     658                    if  (Sockets[targetAlignmentIP].AlignementAntenne->nbrcorrections >=3 )
     659                    {
     660                        Sockets[targetAlignmentIP].AlignementAntenne->AlignementEnCours = 0;
     661
     662                        Sockets[targetAlignmentIP].AlignementAntenne->InitParametresInstrument();
     663
     664                        Sockets[targetAlignmentIP].AlignementAntenne->CalculerMatriceCorrection(targetRA, targetDEC);
     665
     666                        Sockets[targetAlignmentIP].AlignementAntenne->EnregistrementParametresAlignement(
     667                            Sockets[targetAlignmentIP].IP,
     668                            "/home/" + (string)getenv("USER") + "/AlignementAntennes.cfg");
     669                    }
     670                    else
     671                    {
     672                        Sockets[targetAlignmentIP].AlignementAntenne->Identity();
     673
     674                        Sockets[targetAlignmentIP].AlignementAntenne->Matrice_ok = false;
     675                    }
     676                }
     677            }
     678            else if (chaine[0] == 'R')
     679            {
     680                if (targetAlignmentIP != -1)
     681                {
     682                    IDSetText(&CommandTP, "Reinitialisation de la matrice de correction\n" );
     683
     684                    Sockets[targetAlignmentIP].AlignementAntenne->InitParametresInstrument();
     685
     686                    Sockets[targetAlignmentIP].AlignementAntenne->Identity();
     687
     688                    Sockets[targetAlignmentIP].AlignementAntenne->Matrice_ok = false;
     689
     690                    Sockets[targetAlignmentIP].AlignementAntenne->EnregistrementParametresAlignement(
    665691                        Sockets[targetAlignmentIP].IP,
    666692                        "/home/" + (string)getenv("USER") + "/AlignementAntennes.cfg");
    667693                }
    668                 else
    669                 {
    670                     Sockets[targetAlignmentIP].AlignementAntenne->Identity();
    671 
    672                     Sockets[targetAlignmentIP].AlignementAntenne->Matrice_ok = false;
    673                 }
    674             }
    675             else if (chaine[0] == 'R')
    676             {
    677                 IDSetText(&CommandTP, "Reinitialisation de la matrice de correction\n" );
    678 
    679                  Sockets[targetAlignmentIP].AlignementAntenne->InitParametresInstrument();
    680                  
    681                  Sockets[targetAlignmentIP].AlignementAntenne->Identity();
    682 
    683                 Sockets[targetAlignmentIP].AlignementAntenne->Matrice_ok = false;
    684                
    685                  Sockets[targetAlignmentIP].AlignementAntenne->EnregistrementParametresAlignement(
    686                         Sockets[targetAlignmentIP].IP,
    687                         "/home/" + (string)getenv("USER") + "/AlignementAntennes.cfg");
    688             }
     694            }
    689695            else if (chaine[0] == 'O')
    690696            {
    691                 IDSetText(&CommandTP, "Optimisation de la geometrie de l antenne\n" );
    692 
    693697                if (targetAlignmentIP != -1)
    694698                {
     699                    IDSetText(&CommandTP, "Optimisation de la geometrie de l antenne\n" );
     700
    695701                    Sockets[targetAlignmentIP].AlignementAntenne->OptimisationGeometrieAntenne(true);
    696702
     
    17981804
    17991805                    double az, ha, ad, de;
    1800                    
     1806
    18011807                    int num = Sockets[i].AlignementAntenne->nbrcorrections;
    18021808
  • BAORadio/libindi/libindi/drivers/telescope/celestrongps.cpp

    r642 r697  
    447447         
    448448          if (IUUpdateSwitch(&OnCoordSetSP, states, names, n) < 0) return;
     449          OnCoordSetSP.s = IPS_OK;
     450          IDSetSwitch(&OnCoordSetSP, NULL);
    449451          currentSet = getOnSwitch(&OnCoordSetSP);
    450452        }
     
    524526         last_move = getOnSwitch(&MovementNSSP);
    525527
    526          if (IUUpdateSwitch(&MovementNSSP, states, names, n) < 0)
    527         IDLog("fixme!!! - IUUpdateSwitch MovementNSSP\n");
    528         //      return;
     528         IUUpdateSwitch(&MovementNSSP, states, names, n);
    529529
    530530        current_move = getOnSwitch(&MovementNSSP);
  • BAORadio/libindi/libindi/drivers/telescope/lx200basic.cpp

    r501 r697  
    4545
    4646const int POLLMS = 1000;                                // Period of update, 1 second.
    47 const char *mydev = "LX200 Basic";                      // Name of our device.
     47char *mydev;                            // Name of our device.
    4848
    4949const char *BASIC_GROUP    = "Main Control";            // Main Group
     
    151151LX200Basic::LX200Basic()
    152152{
     153    mydev = new char[MAXINDIDEVICE];
     154
     155    char *envDev = getenv("INDIDEV");
     156
     157    if (envDev != NULL)
     158        strncpy(mydev, envDev, MAXINDIDEVICE);
     159    else
     160        strncpy(mydev, "LX200 Basic", MAXINDIDEVICE);
     161
    153162   init_properties();
    154163
  • BAORadio/libindi/libindi/drivers/telescope/lx200fs2.cpp

    r646 r697  
    6464
    6565   IDLog("Initilizing from LX200 FS2 device...\n");
    66    IDLog("Driver Version: 2011-01-02\n");
     66   IDLog("Driver Version: 2012-07-22\n");
    6767 
    6868   //enableSimulation(true); 
     
    151151 
    152152  if (FirmwareVerNP.np[0].value < 1.19)
    153         return getLX200RA(fd, &x); // Version 1.18 and below don't support ACK command
     153  {
     154        getLX200RA(fd, &x);
     155        return getLX200DEC(fd, &x); // Version 1.18 and below don't support ACK command
     156  }
    154157  else
    155158        return check_lx200_connection(fd);
     
    216219void LX200Fs2::getBasicData()
    217220{
    218 
    219   // process parent first
    220    LX200Generic::getBasicData();
     221  //LX200Generic::getBasicData()
    221222  // Make sure short
    222223  //checkLX200Format(fd);
  • BAORadio/libindi/libindi/drivers/telescope/lx200generic.cpp

    r642 r697  
    507507
    508508 }
    509 
     509 IEAddTimer (POLLMS, ISPoll, NULL);
    510510}
    511511
    512512void ISGetProperties (const char *dev)
    513 { ISInit(); telescope->ISGetProperties(dev); IEAddTimer (POLLMS, ISPoll, NULL);}
     513{ ISInit(); telescope->ISGetProperties(dev);}
    514514void ISNewSwitch (const char *dev, const char *name, ISState *states, char *names[], int n)
    515515{ ISInit(); telescope->ISNewSwitch(dev, name, states, names, n);}
     
    555555   IDLog("INDI Library v%g\n", INDI_LIBV);
    556556   IDLog("initilizaing from generic LX200 device...\n");
    557    IDLog("Driver Version: 2008-05-21\n");
     557   IDLog("Driver Version: 2012-07-27\n");
    558558 
    559    //enableSimulation(true); 
     559   //enableSimulation(true);
    560560}
    561561
     
    17501750                mountSim();
    17511751                return;
    1752         }
     1752        }
    17531753
    17541754        if ( (err = getLX200RA(fd, &currentRA)) < 0 || (err = getLX200DEC(fd, &currentDEC)) < 0)
     
    17771777        break;
    17781778
    1779         case IPS_BUSY:
     1779        case IPS_BUSY:
    17801780            dx = targetRA - currentRA;
    17811781            dy = targetDEC - currentDEC;
     
    17891789               EquatorialCoordsWNP.s = IPS_OK;
    17901790               IDSetNumber(&EquatorialCoordsWNP, "Slew is complete, target locked...");
    1791               
    1792             break;
     1791                } 
     1792                break;
    17931793
    17941794        case IPS_OK:
     
    18011801}
    18021802
    1803 }
     1803
    18041804// wildi nothing changed in LX200Generic::mountSim
    18051805void LX200Generic::mountSim ()
     
    21172117        }
    21182118       
     2119         tty_disconnect(fd); // Close if already open
    21192120         if (tty_connect(PortTP.tp[0].text, 9600, 8, 0, 1, &fd) != TTY_OK)
    21202121         {
  • BAORadio/libindi/libindi/drivers/telescope/magellan1.cpp

    r646 r697  
    9898void ISInit()
    9999{
     100  static int isInit=0;
     101       
     102  if (isInit)
     103          return;
    100104  if (telescope == NULL)
    101105  {
     
    104108    telescope->setCurrentDeviceName(mydev);
    105109  }
     110 
     111  isInit = 1;
     112  IEAddTimer (POLLMS, ISPoll, NULL);
    106113}
    107114
    108115void ISGetProperties (const char *dev)
    109 { ISInit(); telescope->ISGetProperties(dev); IEAddTimer (POLLMS, ISPoll, NULL);}
     116{ ISInit(); telescope->ISGetProperties(dev);}
    110117
    111118void ISNewSwitch (const char *dev, const char *name, ISState *states, char *names[], int n)
  • BAORadio/libindi/libindi/drivers/telescope/synscanmount.cpp

    r642 r697  
    119119void SynscanMount::ISGetProperties (const char *dev)
    120120{
    121     //if (isDebug())
    122         IDLog("Enter SynscanMount::ISGetProperties %s\n",dev);
    123 
    124121    //  First we let our parent class do it's thing
    125122    INDI::Telescope::ISGetProperties(dev);
     
    147144        //  this is not a correct echo
    148145        //if (isDebug())
    149             IDLog("ReadStatus Echo Fail\n");
    150         IDMessage(deviceName(),"Mount Not Responding");
     146            IDLog("ReadStatus Echo Fail. %s\n", str);
     147        IDMessage(getDeviceName(),"Mount Not Responding");
    151148        return false;
    152149    }
     
    183180            ParkSV->s=IPS_OK;
    184181            IDSetSwitch(ParkSV,NULL);
    185             IDMessage(deviceName(),"Telescope is Parked.");
     182            IDMessage(getDeviceName(),"Telescope is Parked.");
    186183        }
    187184
     
    276273
    277274    TrackState=SCOPE_PARKING;
    278     IDMessage(deviceName(),"Parking Telescope...");
    279     return true;
    280 }
     275    IDMessage(getDeviceName(),"Parking Telescope...");
     276    return true;
     277}
  • BAORadio/libindi/libindi/drivers/telescope/telescope_simulator.cpp

    r642 r697  
    99#include "telescope_simulator.h"
    1010#include "indicom.h"
     11
     12#include <memory>
    1113
    1214// We declare an auto pointer to ScopeSim.
     
    126128    IUFillNumber(&GuideNSN[GUIDE_NORTH], "TIMED_GUIDE_N", "North (sec)", "%g", 0, 10, 0.001, 0);
    127129    IUFillNumber(&GuideNSN[GUIDE_SOUTH], "TIMED_GUIDE_S", "South (sec)", "%g", 0, 10, 0.001, 0);
    128     IUFillNumberVector(GuideNSNP, GuideNSN, 2, deviceName(), "TELESCOPE_TIMED_GUIDE_NS", "Guide North/South", MOTION_TAB, IP_RW, 0, IPS_IDLE);
     130    IUFillNumberVector(GuideNSNP, GuideNSN, 2, getDeviceName(), "TELESCOPE_TIMED_GUIDE_NS", "Guide North/South", MOTION_TAB, IP_RW, 0, IPS_IDLE);
    129131
    130132    /* Property for guider support. How many seconds to guide either westward or eastward? */
    131133    IUFillNumber(&GuideWEN[GUIDE_WEST], "TIMED_GUIDE_W", "West (sec)", "%g", 0, 10, 0.001, 0);
    132134    IUFillNumber(&GuideWEN[GUIDE_EAST], "TIMED_GUIDE_E", "East (sec)", "%g", 0, 10, 0.001, 0);
    133     IUFillNumberVector(GuideWENP, GuideWEN, 2, deviceName(), "TELESCOPE_TIMED_GUIDE_WE", "Guide West/East", MOTION_TAB, IP_RW, 0, IPS_IDLE);
     135    IUFillNumberVector(GuideWENP, GuideWEN, 2, getDeviceName(), "TELESCOPE_TIMED_GUIDE_WE", "Guide West/East", MOTION_TAB, IP_RW, 0, IPS_IDLE);
    134136
    135137    /* Simulated periodic error in RA, DEC */
    136138    IUFillNumber(&EqPECN[RA_AXIS],"RA_PEC","RA (hh:mm:ss)","%010.6m",0,24,0,15.);
    137139    IUFillNumber(&EqPECN[DEC_AXIS],"DEC_PEC","DEC (dd:mm:ss)","%010.6m",-90,90,0,15.);
    138     IUFillNumberVector(EqPECNV,EqPECN,2,deviceName(),"EQUATORIAL_PEC","Periodic Error",MOTION_TAB,IP_RO,60,IPS_IDLE);
     140    IUFillNumberVector(EqPECNV,EqPECN,2,getDeviceName(),"EQUATORIAL_PEC","Periodic Error",MOTION_TAB,IP_RO,60,IPS_IDLE);
    139141
    140142    /* Enable client to manually add periodic error northward or southward for simulation purposes */
    141143    IUFillSwitch(&PECErrNSS[MOTION_NORTH], "PEC_N", "North", ISS_OFF);
    142144    IUFillSwitch(&PECErrNSS[MOTION_SOUTH], "PEC_S", "South", ISS_OFF);
    143     IUFillSwitchVector(PECErrNSSP, PECErrNSS, 2, deviceName(),"PEC_NS", "PE N/S", MOTION_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE);
     145    IUFillSwitchVector(PECErrNSSP, PECErrNSS, 2, getDeviceName(),"PEC_NS", "PE N/S", MOTION_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE);
    144146
    145147    /* Enable client to manually add periodic error westward or easthward for simulation purposes */
    146148    IUFillSwitch(&PECErrWES[MOTION_WEST], "PEC_W", "West", ISS_OFF);
    147149    IUFillSwitch(&PECErrWES[MOTION_EAST], "PEC_E", "East", ISS_OFF);
    148     IUFillSwitchVector(PECErrWESP, PECErrWES, 2, deviceName(),"PEC_WE", "PE W/E", MOTION_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE);
     150    IUFillSwitchVector(PECErrWESP, PECErrWES, 2, getDeviceName(),"PEC_WE", "PE W/E", MOTION_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE);
    149151
    150152    /* How fast do we guide compared to sideral rate */
    151153    IUFillNumber(&GuideRateN[RA_AXIS], "GUIDE_RATE_WE", "W/E Rate", "%g", 0, 1, 0.1, 0.3);
    152154    IUFillNumber(&GuideRateN[DEC_AXIS], "GUIDE_RATE_NS", "N/S Rate", "%g", 0, 1, 0.1, 0.3);
    153     IUFillNumberVector(GuideRateNP, GuideRateN, 2, deviceName(), "GUIDE_RATE", "Guiding Rate", MOTION_TAB, IP_RW, 0, IPS_IDLE);
     155    IUFillNumberVector(GuideRateNP, GuideRateN, 2, getDeviceName(), "GUIDE_RATE", "Guiding Rate", MOTION_TAB, IP_RW, 0, IPS_IDLE);
     156
     157    // Let's simulate it to be an F/10 8" telescope
     158    ScopeParametersN[0].value = 203;
     159    ScopeParametersN[1].value = 2000;
     160
     161    TrackState=SCOPE_IDLE;
    154162
    155163    /* Add debug controls so we may debug driver if necessary */
     
    197205        deleteProperty(EqPECNV->name);
    198206        deleteProperty(PECErrNSSP->name);
    199         deleteProperty(PECErrNSSP->name);
     207        deleteProperty(PECErrWESP->name);
    200208        deleteProperty(GuideRateNP->name);
    201209    }
     
    218226}
    219227
    220 bool ScopeSim::Connect(char *)
    221 {
    222     return true;
     228bool ScopeSim::Connect(char *port)
     229{
     230   return true;
    223231}
    224232
     
    292300    switch (TrackState)
    293301    {
    294     case SCOPE_IDLE:
     302    /*case SCOPE_IDLE:
    295303        EqNV->s = IPS_IDLE;
    296         break;
     304        break;*/
    297305    case SCOPE_SLEWING:
    298306    case SCOPE_PARKING:
     
    340348
    341349                EqNV->s = IPS_OK;
    342                 IDMessage(deviceName(), "Telescope slew is complete. Tracking...");
     350                IDMessage(getDeviceName(), "Telescope slew is complete. Tracking...");
    343351            }
    344352            else
     
    346354                TrackState = SCOPE_PARKED;
    347355                EqNV->s = IPS_IDLE;
    348                 IDMessage(deviceName(), "Telescope parked successfully.");
     356                IDMessage(getDeviceName(), "Telescope parked successfully.");
    349357            }
    350358        }
     
    352360        break;
    353361
     362    case SCOPE_IDLE:
    354363    case SCOPE_TRACKING:
    355364        /* tracking */
     
    491500    EqNV->s    = IPS_BUSY;
    492501
    493     IDMessage(deviceName(), "Slewing to RA: %s - DEC: %s", RAStr, DecStr);
     502    IDMessage(getDeviceName(), "Slewing to RA: %s - DEC: %s", RAStr, DecStr);
    494503    return true;
     504}
     505
     506bool ScopeSim::Sync(double ra, double dec)
     507{
     508    currentRA  = ra;
     509    currentDEC = dec;
     510
     511    EqPECN[RA_AXIS].value = ra;
     512    EqPECN[DEC_AXIS].value = dec;
     513    IDSetNumber(EqPECNV, NULL);
     514
     515    IDMessage(getDeviceName(), "Sync is successful.");
     516
     517    TrackState = SCOPE_IDLE;
     518    EqReqNV->s = IPS_OK;
     519    EqNV->s    = IPS_OK;
     520
     521
     522    NewRaDec(currentRA, currentDEC);
    495523}
    496524
     
    501529    Parked=true;
    502530    TrackState = SCOPE_PARKING;
    503     IDMessage(deviceName(), "Parking telescope in progress...");
     531    IDMessage(getDeviceName(), "Parking telescope in progress...");
    504532    return true;
    505533}
     
    509537    //  first check if it's for our device
    510538
    511     if(strcmp(dev,deviceName())==0)
     539    if(strcmp(dev,getDeviceName())==0)
    512540    {
    513541        //  This is for our device
     
    517545
    518546             // Unless we're in track mode, we don't obey guide commands.
    519              if (TrackState != SCOPE_TRACKING)
    520              {
    521                 GuideNSNP->s = IPS_IDLE;
    522                  IDSetNumber(GuideNSNP, NULL);
    523                  return true;
    524              }
     547             //if (TrackState != SCOPE_TRACKING)
     548             //{
     549                // GuideNSNP->s = IPS_IDLE;
     550                 //IDSetNumber(GuideNSNP, NULL);
     551                 //return true;
     552             //}
    525553
    526554             IUUpdateNumber(GuideNSNP, values, names, n);
     
    532560         {
    533561             // Unless we're in track mode, we don't obey guide commands.
    534              if (TrackState != SCOPE_TRACKING)
    535              {
    536                  GuideWENP->s = IPS_IDLE;
    537                  IDSetNumber(GuideWENP, NULL);
    538                  return true;
    539              }
     562             //if (TrackState != SCOPE_TRACKING)
     563             //{
     564                 //GuideWENP->s = IPS_IDLE;
     565                 //IDSetNumber(GuideWENP, NULL);
     566                 //return true;
     567             //}
    540568
    541569             IUUpdateNumber(GuideWENP, values, names, n);
     
    566594    //}
    567595
    568     if(strcmp(dev,deviceName())==0)
     596    if(strcmp(dev,getDeviceName())==0)
    569597    {
    570598        if(strcmp(name,"PEC_NS")==0)
  • BAORadio/libindi/libindi/drivers/telescope/telescope_simulator.h

    r642 r697  
    1818        INumber GuideNSN[2];
    1919        INumberVectorProperty *GuideNSNP;
    20 
    2120
    2221        INumber GuideWEN[2];
     
    5655        bool Goto(double,double);
    5756        bool Park();
     57        bool Sync(double ra, double dec);
    5858
    5959};
  • BAORadio/libindi/libindi/drivers/telescope/temmadriver.c

    r642 r697  
    3434#include <config.h>
    3535
    36 #include <libnova.h>
     36//le fichier include était à l'origine <libnova.h>
     37#include <libnova/libnova.h>
    3738
    3839#include "indicom.h"
Note: See TracChangeset for help on using the changeset viewer.