[504] | 1 | // Definition of the Astro BAOcontrol |
---|
| 2 | // Franck RICHARD |
---|
| 3 | // BAORadio |
---|
| 4 | |
---|
| 5 | #ifndef BAOcontrol_class |
---|
| 6 | #define BAOcontrol_class |
---|
| 7 | |
---|
| 8 | |
---|
[502] | 9 | #include <iostream> |
---|
| 10 | #include <string.h> |
---|
| 11 | #include <sstream> |
---|
| 12 | #include "ClientSocket.h" |
---|
| 13 | #include "SocketException.h" |
---|
| 14 | #include <stdio.h> |
---|
[504] | 15 | #include <stdlib.h> |
---|
[502] | 16 | #include <pthread.h> |
---|
| 17 | #include <X11/Xlib.h> |
---|
| 18 | #include "filetools.h" |
---|
[504] | 19 | #include "../drivers/telescope/astro.h" |
---|
[502] | 20 | #include "math.h" |
---|
| 21 | #include <time.h> |
---|
| 22 | #include <unistd.h> |
---|
| 23 | #include <sys/time.h> |
---|
| 24 | |
---|
| 25 | |
---|
[504] | 26 | // couleurs utilisées dans le terminal |
---|
[502] | 27 | |
---|
[504] | 28 | #define red1 "\033[0;31m" |
---|
| 29 | #define blue1 "\033[0;34m" |
---|
| 30 | #define green1 "\033[0;32m" |
---|
| 31 | #define black1 "\033[0;30m" |
---|
| 32 | #define grey1 "\033[1;30m" |
---|
| 33 | #define red2 "\033[1;31m" |
---|
| 34 | #define blue2 "\033[1;34m" |
---|
| 35 | #define green2 "\033[1;32m" |
---|
| 36 | #define black2 "\033[1;30m" |
---|
| 37 | #define grey2 "\033[1;37m" |
---|
| 38 | |
---|
| 39 | |
---|
| 40 | // limites des tableaux |
---|
| 41 | |
---|
[502] | 42 | #define MAXLOG 1000 |
---|
| 43 | #define MAXOBJETS 100 |
---|
[504] | 44 | #define MAXANTENNES 50 |
---|
[502] | 45 | |
---|
| 46 | |
---|
[504] | 47 | //dimensions de la fenêtre graphique |
---|
| 48 | |
---|
| 49 | #define haut_fenetre 10+22*10 |
---|
| 50 | #define larg_fenetre 605 |
---|
| 51 | |
---|
[502] | 52 | using namespace std; |
---|
| 53 | |
---|
| 54 | |
---|
| 55 | struct DefAntenne |
---|
| 56 | { |
---|
[504] | 57 | unsigned char ip; // Adresse ip d'une antenne |
---|
[502] | 58 | |
---|
[504] | 59 | char ok; // actuellement disponible ? |
---|
[502] | 60 | }; |
---|
| 61 | |
---|
[504] | 62 | // objets stockés dans le fichier de mouvements |
---|
| 63 | |
---|
[502] | 64 | struct DefObjets |
---|
| 65 | { |
---|
[504] | 66 | double JJ; // Jour julien où le télescope doit aller pointer vers l'objet |
---|
| 67 | double Duree; // Durée de l'observation de l'objet en sec |
---|
| 68 | string ad; // Ascension droite J2000 de l'objet |
---|
| 69 | string de; // déclinaison J2000 de l'objet |
---|
| 70 | bool exec; // En cours d'exécution ? |
---|
[502] | 71 | }; |
---|
| 72 | |
---|
| 73 | |
---|
| 74 | |
---|
[504] | 75 | class BAOcontrol : public Astro |
---|
| 76 | { |
---|
[502] | 77 | |
---|
[504] | 78 | public: |
---|
| 79 | BAOcontrol(); |
---|
| 80 | ~BAOcontrol(); |
---|
[502] | 81 | |
---|
[504] | 82 | void *my_thread_process (); |
---|
| 83 | int init(int argc, char **argv); |
---|
[502] | 84 | |
---|
| 85 | |
---|
[504] | 86 | private: |
---|
| 87 | void Affiche(string chaine, bool AfficheEcran); |
---|
| 88 | void Affiche(stringstream *Message, bool AfficheEcran); |
---|
| 89 | void Erreur(string chaine); |
---|
| 90 | void Erreur(stringstream *Message); |
---|
| 91 | void initialiserFenetre(); |
---|
| 92 | void Dessiner(); |
---|
| 93 | void rouler(); |
---|
| 94 | void LireReponse(); |
---|
| 95 | bool VerifReponse(string reponseattendue); |
---|
| 96 | void Update(); |
---|
| 97 | bool Decomposition(string chaine, char type, float *a1, float *a2, float *a3); |
---|
| 98 | bool DecompositionCommande(string chaine, string commande, string *chaine1, string *chaine2); |
---|
| 99 | bool EnvoyerCoordGeographiques(); |
---|
| 100 | bool Park(); |
---|
| 101 | bool Abort(); |
---|
| 102 | bool Goto(string ar, string dec, bool Transit, bool J2000); |
---|
| 103 | bool Connect(bool connect); |
---|
| 104 | bool LectureFichierMouvements(string fileName); |
---|
| 105 | void DecodageEntreesUtilisateur(string chaine); |
---|
| 106 | bool Run(string fichier); |
---|
| 107 | bool ChargementParametres(string fileName); |
---|
| 108 | Coordonnees ServeurNED(string objet); |
---|
| 109 | int readline (FILE * pfile, char *tab); |
---|
[502] | 110 | |
---|
| 111 | |
---|
| 112 | |
---|
[504] | 113 | // Variables globales |
---|
[502] | 114 | |
---|
[504] | 115 | XFontStruct * fd; // Police de caractÚres dans la fenêtre graphique |
---|
| 116 | |
---|
| 117 | char ChoixCouleurs; // 1-pour un terminal à fond blanc 2-pour un terminal à fond noir |
---|
| 118 | |
---|
| 119 | string logs[MAXLOG]; // Sauvegarde de toutes les actions et réponses dans un tableau logs |
---|
| 120 | |
---|
| 121 | int delaitransit; // Délai entre deux actualisations de la position en mode transit |
---|
| 122 | int delaitracking; // Délai entre deux actualisations de la position en mode tracking |
---|
| 123 | int lognum; // Nbre d'enregistrements dans le tableau logs |
---|
| 124 | int numAntenne; // Nbre d'antennes connectées |
---|
| 125 | int numobjets; // Nbre d'objets dans le dernier fichier de mouvements chargé |
---|
| 126 | int runnum; // Numéro de l'objet actuellement visé dans le fichier de mouvement |
---|
| 127 | |
---|
| 128 | double Pression; // Pression atmosphérique en mBar |
---|
| 129 | double Temperature; // température de l'atmosphÚre |
---|
| 130 | |
---|
| 131 | bool NoExit; // A-t-on tapé exit pour sortir ? Permet de fermer le thread à ce moment-là |
---|
| 132 | bool Transit; // Si oui, le mode transit est activé, sinon, c'est le mode tracking |
---|
| 133 | bool run; // execute actuellement un fichier de mouvements |
---|
| 134 | bool exitrun; // doit-on sortir du programme à la fin de l'execution de la commande run ? |
---|
| 135 | bool J2000; // est-ce que les coordonnées du fichier de mouvements sont en coordonnées J2000 ? |
---|
| 136 | |
---|
| 137 | struct DefAntenne *Antennes; // Sauvegarde de la situation actuelle de l'antenne i |
---|
| 138 | struct DefObjets *objets; // Liste des objets chargés depuis un fichier de mouvements |
---|
| 139 | |
---|
| 140 | string LatitudeChar; // Latitude du lieu d'observation. Chargée depuis le fichier de configuration |
---|
| 141 | string LongitudeChar; // Longitude du lieu d'observation. Chargée depuis le fichier de configuration |
---|
| 142 | string Serveur; // Nom ou IP du serveur faisant tourner indi_BAO. Par defaut c'est localhost |
---|
| 143 | string Port; // Port utilisé pour connecter le serveur indi_BAO |
---|
| 144 | |
---|
| 145 | ClientSocket *client_socket; // Socket permettant la connexion avec le pilote indi_BAO |
---|
| 146 | |
---|
| 147 | Display * d; // contexte graphique |
---|
| 148 | Window w; // fenêtre graphique |
---|
| 149 | Pixmap db; // copie de la fenêtre pour permettre une actualisation sans scintillement |
---|
| 150 | GC noir, vert, rouge, gris; // couleurs utilisées dans la fenêtre graphique |
---|
| 151 | |
---|
| 152 | }; |
---|
| 153 | |
---|
| 154 | #endif |
---|