Ignore:
Timestamp:
Feb 24, 2012, 12:37:36 PM (12 years ago)
Author:
frichard
Message:

-Alignement des antennes
-Version 0.0.9 de libindi

File:
1 edited

Legend:

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

    r619 r642  
    2323#include <fstream>
    2424
     25#include <termios.h>
     26#include <unistd.h>
     27
    2528#include <config.h>
    26 
    2729#include "indicom.h"
    28 
    29 #include "Socket.h"
    3030#include "indidevapi.h"
    3131#include "indicom.h"
    32 #include "ServerSocket.h"
    33 #include "SocketException.h"
    34 #include "astro.h"
    35 #include "filetools.h"
    36 
    37 #define MAXCARACTERES 1024
    38 
    39 #define MAXATTENTE 80                // Si une commande ne recoit pas d'acknowledge. Alors refaire 80 tentatives en renvoyant la commande
    40 #define MAXANOMALIES 2               // Si pas de réponse au bout de 80 tentatives -> erreur critique -> socket perdu ?
    41 #define MAXANOMALIESGOTO 1500
    42 
    43 #define NBREPASCODEURSAZ  4000
    44    
     32#include "../communs/const.h"
     33#include "../communs/Socket.h"
     34#include "../communs/ServerSocket.h"
     35#include "../communs/SocketException.h"
     36#include "../communs/astro.h"
     37#include "../communs/alignement.h"
     38
    4539
    4640using namespace std;
     41
    4742
    4843struct Position
     
    5247};
    5348
     49
    5450struct DefSocket
    5551{
    56     ServerSocket new_sock;           // socket permettant de gérer la connexion avec une antennes
    57 
    58     string IP;                       // IP de l'antenne
    59 
    60     bool Connected;                  // le micro-contrÃŽleur est-il connecté ?
    61     bool PosValides;                 // le micro-contrÃŽleur a-t-il donné une position des moteurs valide ?
    62     char status;                     // status='B' pour busy  'R' pour READY
    63     int sendalertes;                 // une requête 'send' a généré une erreur sur le réseau
    64     int AttenteExecution;            // L'antenne parvient-elle à executer un cycle de commandes ?
    65     int AnomaliesExecution;          // Erreur critique. L'antenne ne répond plus !
    66 
    67     Position Pos;                    // derniÚre position retournée par le microcontrÃŽleur
    68     Position Delta;                  // Corrections en Az et Ha
    69     int etape;                       // étape dans le cycle de commandes/réponses entre PC et microcontroleurs
    70 
    71     bool ack_status;                 // Etat des acknowledges ?
    72     bool ack_pos;                    // le PC a reçu une confirmation du microcont aprÚs un ordre POSITION
    73     bool ack_park;                   // le PC a reçu une confirmation du microcont aprÚs un ordre PARK
    74     bool ack_abort;                  // le PC a reçu une confirmation du microcont aprÚs un ordre ABORT
    75     bool ack_goto;                   // le PC a reçu une confirmation du microcont aprÚs un ordre GOTO
    76     bool GotoOk;                     // Est-ce que le dernier goto est OK ?
     52    ServerSocket new_sock;                  // socket permettant de gérer la connexion avec une antennes
     53
     54    string IP;                              // IP de l'antenne
     55
     56    char status;                            // status='B' pour bus,  'R' pour READY
     57
     58    int sendalertes;                        // une requête 'send' a généré une erreur sur le réseau
     59    int AttenteExecution;                   // L'antenne parvient-elle à executer un cycle de commandes ?
     60    int AnomaliesExecution;                 // Erreur critique. L'antenne ne répond plus !
     61    int etape;                              // étape dans le cycle de commandes/réponses entre PC et microcontroleurs
     62
     63    bool Connected;                         // le micro-contrÃŽleur est-il connecté ?
     64    bool PosValides;                        // le micro-contrÃŽleur a-t-il donné une position des moteurs valide ?
     65    bool ack_status;                        // Etat des acknowledges ?
     66    bool ack_pos;                           // le PC a-t-il reçu une confirmation du microcontroleurs aprÚs un ordre POSITION ?
     67    bool ack_park;                          // le PC a-t-il reçu une confirmation du microcontroleurs aprÚs un ordre PARK ?
     68    bool ack_abort;                         // le PC a-t-il reçu une confirmation du microcontroleurs aprÚs un ordre ABORT ?
     69    bool ack_goto;                          // le PC a-t-il reçu une confirmation du microcontroleurs aprÚs un ordre GOTO ?
     70    bool GotoOk;                            // Est-ce que le dernier goto est OK ?
     71
     72    Position TargetPosition;                // Position à atteindre
     73    Position Pos;                           // derniÚre position retournée par le microcontrÃŽleur
    7774   
    78    
    79 };
    80 
    81 
    82 ServerSocket server( 8000 );         // Le PC et les antennes communiquent par le biais du port 8000 sur le réseau tcp
     75    Alignement *AlignementAntenne;          // Contient les paramÚtres d'alignement de l'antenne 
     76};
     77
     78
     79// Le PC et les antennes communiquent par le biais du port 8000 sur le réseau Ethernet
     80
     81ServerSocket server( 8000 );         
    8382
    8483class BAO : public Astro
     
    8887    ~BAO();
    8988
     89    /*******************************************************/
     90    /* Gestion de l'interface intégrée dans KStars
     91    ********************************************************/
     92
    9093    void ISGetProperties (const char *dev);
    9194    void ISNewNumber (const char *dev, const char *name, double values[], char *names[], int n);
     
    9497    void ISPoll ();
    9598
     99    /*******************************************************/
     100    /* Gestion des threads
     101    ********************************************************/
     102
    96103    void *pThreadSocket ();
    97104    void *pThreadExit ();
    98105
     106    /*******************************************************/
     107    /* Les commandes
     108    ********************************************************/
     109
    99110    bool COMMANDE(int numsocket, char* Commande, char* Params);
    100111    bool ExtractPosition(string str, Position *result);
    101 
    102     void connection_lost();
    103     void connection_resumed();
    104 
    105112    bool STATUS(int numsocket);
    106113    bool POSITION(int numsocket);
     
    108115    bool PARK(int numsocket);
    109116    bool GOTO(int numsocket, int deltaAz, int deltaAlt);
    110     void ADDEC2Motor(double newRA, double newDEC);
     117
     118
     119    /*******************************************************/
     120    /* Connection Routines
     121    ********************************************************/
     122    void init_properties();
     123    void connect_telescope();
     124    bool is_connected(void);
    111125    int  AntennesConnectees();
    112126    void DeconnecterSocket(int num);
    113127    void InitAntennes();
    114     bool ChargementParametresAlignement(string fileName);
    115     bool is_readable( const std::string & file );
    116  
    117     /*******************************************************/
    118     /* Connection Routines
    119     ********************************************************/
    120     void init_properties();
    121     void get_initial_data();
    122     void connect_telescope();
    123     bool is_connected(void);
     128
    124129
    125130    /*******************************************************/
     
    127132    ********************************************************/
    128133    bool process_coords();
    129     int get_switch_index(ISwitchVectorProperty *sp);
     134    int  get_switch_index(ISwitchVectorProperty *sp);
     135    void ADDEC2Motor(double newRA, double newDEC);
    130136
    131137    /*******************************************************/
     
    137143    /* Error handling routines
    138144    ********************************************************/
    139     void slew_error(int slewCode);
    140145    void reset_all_properties();
    141146    void handle_error(INumberVectorProperty *nvp, int err, const char *msg);
    142147    void correct_fault();
    143 
     148    void connection_lost();
     149    void connection_resumed();
    144150
    145151
     
    147153
    148154    enum BAO_STATUS { BAO_TRANSIT, BAO_TRACKING, BAO_PARK };
     155
     156    // ParamÚtres par défaut d'un pilote indi
    149157
    150158    /* Switches */
    151159    ISwitch ConnectS[2];
    152160    ISwitch OnCoordSetS[2];
     161    ISwitch AlignmentS[3];
    153162    ISwitch AbortSlewS[1];
    154163    ISwitch ParkS[1];
     
    159168
    160169    /* Numbers */
    161     //INumber EquatorialCoordsRN[2];
    162170    INumber EquatorialCoordsWN[2];
    163171    INumber GeographicCoordsWN[2];
     172    INumber PressionTempWN[2];
    164173    INumber ActualisationN1[1];
    165174    INumber ActualisationN2[1];
    166 
    167     //INumber SlewAccuracyN[2];
    168     //INumber TrackAccuracyN[2];
    169175
    170176    /* Switch Vectors */
    171177    ISwitchVectorProperty ConnectSP;
    172178    ISwitchVectorProperty OnCoordSetSP;
     179    ISwitchVectorProperty AlignmentSP;
    173180    ISwitchVectorProperty AbortSlewSP;
    174181    ISwitchVectorProperty ParkSP;
    175182
    176183    /* Number Vectors */
    177     //INumberVectorProperty EquatorialCoordsRNP;
    178184    INumberVectorProperty EquatorialCoordsWNP;
    179185    INumberVectorProperty GeographicCoordsWNP;
    180     //INumberVectorProperty SlewAccuracyNP;
    181     //INumberVectorProperty TrackAccuracyNP;
     186    INumberVectorProperty PressionTempWNP;
    182187    INumberVectorProperty ActualisationNP1;
    183188    INumberVectorProperty ActualisationNP2;
     
    191196
    192197protected:
     198
    193199    int SocketsNumber;                   // nbre de sockets utilisés pour connecter les antennes
    194     bool InitThreadOK;                   // Le thread est bien actif
    195     DefSocket Sockets[MAXHOSTNAME + 1];  // Etat de chaque socket. Un socket permet la communication avec une antenne
     200    bool InitThreadOK;                   // Le thread est-t-il  actif ?
     201    DefSocket Sockets[MAXHOSTNAME + 1];  // Définit chaque socket. Un socket permet la communication avec une antenne
    196202    pthread_t th1;                       // le pointeur du thread
    197203
    198204    double JD;                           // Jour julien
    199     double lastRA;                       // Sauvegarde de la derniÚre position avant actualisation
    200     double lastDEC;
     205    double lastRA;                       // Sauvegarde de la derniÚre position avant actualisation, ici l'AD...
     206    double lastDEC;                      // ...et la déclinaison
    201207    double JJAnc;                        // Sauvegarde du jour julien lors de la derniÚre actualisation de la position (fct Goto)
    202     double ActualisationTM1;             // Délais entre deux actualisations dans les modes transit et tracking
    203     double ActualisationTM2;
     208    double ActualisationTMTransit;       // Délai entre deux actualisations dans les modes transit
     209    double ActualisationTMTracking;      //  "                 "                     "     tracking
    204210    double Longitude;                    // Longitude et latitude du lieu d'observation
    205211    double Latitude;
    206     bool   ActualisationPosition;        // Permet de faire les étapes nécessaires pour réaliser un mouvement
     212    double Pression;                     // Pression et température sur le lieu d'observation
     213    double Temp;   
     214    bool   RealisationGoto;              // Permet de réaliser les différentes étapes nécessaires à la réalisation d'un goto
     215                                         // tant qu'un goto n'est pas terminé, ActualisationPosition = true
    207216    bool   Abort;                        // Annulation du mouvement en cours
    208217    bool   Park;                         // On place les antennes dans une position de repos
    209     bool   Suivi;                        // Suivi d'un objet en cours...
    210     bool   UpdateGoto;                   // On peut exécuter un Goto
     218    bool   Suivi;                        // Est-ce que les antennes suivent actuellement un objet ?
     219    bool   UpdatedGoto;                  // On peut exécuter un Goto
    211220    bool   Exit;                         // On ferme le driver
    212221
    213     int    currentSet;                   // Variable interne de l'interface indi
    214     int    lastSet;                      // Variable interne de l'interface indi
    215     int    TrackingMode;                 //1 : Transit           2: Tracking
    216 
    217     Position TargetPosition;             //Position à atteindre en coordonnées équatoriales
     222    int    currentSet;                   // mode de suivi actuel - tracking ou transit
     223    int    lastSet;                      // Variable interne de l'interface indi - ne pas toucher
     224    int    TrackingMode;                 // 1 : Transit           2: Tracking
    218225};
    219226
Note: See TracChangeset for help on using the changeset viewer.