| Earth Observation Mission CFI Software Lib Software User Manual |

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List

# C:/Jenkins/workspace/CPP_create_documentation/slaves/windows8/lib_src/Lib/include/LibData.h

    00001 //--------------------------------------------------------
    00002 // Earth Observation Mission CFI Software. Version 4.11
    00003 //--------------------------------------------------------
    00004
    00005 //--------------------------------------------------------------------
    00006 // CVS Info: $Id: LibData.h,v 1.30 2014-02-26 13:00:48 paat Exp $
    00007 //--------------------------------------------------------------------
    00008
    00013
    00014 #ifndef __EECFI_LIBDATA__
    00015 #define __EECFI_LIBDATA__
    00016
    00017 //--INCLUDE-----------------------------------------------------------
    00018 #include <vector>
    00019 #include "DataHandlingData.h"
    00020 #include "LibDllExport.h"
    00021
    00022 //--NAMESPACES--------------------------------------------------------
    00023 using namespace std;
    00024
    00025 namespace EECFI
    00026 {
    00027
    00028   //------------------------------------------------------
    00029   // CONSTANTS
    00030   //------------------------------------------------------
    00032   #define MCFI_PI  3.14159265358979323846
    00033
    00034   //------------------------------------------------------
    00035   // DATA ENUMERATION
    00036   // Enumeration values are defined in an equivalent way to the C library
    00037   // except for the prefix that has been changed from XX_ to XXCFI_
    00038   //------------------------------------------------------
    00039
    00041   typedef enum
    00042   {
    00043     XLCFI_SAT_DEFAULT     = 0,
    00044     XLCFI_SAT_DEFAULT1    = 1,
    00045     XLCFI_SAT_DEFAULT2    = 2,
    00046     XLCFI_SAT_DEFAULT3    = 3,
    00047     XLCFI_SAT_DEFAULT4    = 4,
    00048     XLCFI_SAT_DEFAULT5    = 5,
    00049     XLCFI_SAT_DEFAULT6    = 6,
    00050     XLCFI_SAT_DEFAULT7    = 7,
    00051     XLCFI_SAT_DEFAULT8    = 8,
    00052     XLCFI_SAT_DEFAULT9    = 9,
    00053     XLCFI_SAT_ERS1        = 11,
    00054     XLCFI_SAT_ERS2        = 12,
    00055     XLCFI_SAT_ENVISAT     = 21,
    00056     XLCFI_SAT_METOP1      = 31,
    00057     XLCFI_SAT_METOP2      = 32,
    00058     XLCFI_SAT_METOP3      = 33,
    00059     XLCFI_SAT_CRYOSAT     = 41,
    00060     XLCFI_SAT_ADM         = 51,
    00061     XLCFI_SAT_GOCE        = 61,
    00062     XLCFI_SAT_SMOS        = 71,
    00063     XLCFI_SAT_TERRASAR    = 81,
    00064     XLCFI_SAT_EARTHCARE   = 91,
    00065     XLCFI_SAT_SWARM_A     = 101,
    00066     XLCFI_SAT_SWARM_B     = 102,
    00067     XLCFI_SAT_SWARM_C     = 103,
    00068     XLCFI_SAT_SENTINEL_1A = 110,
    00069     XLCFI_SAT_SENTINEL_1B = 111,
    00070     XLCFI_SAT_SENTINEL_2  = 112,
    00071     XLCFI_SAT_SENTINEL_3  = 113,
    00072     XLCFI_SAT_SEOSAT      = 120,
    00073     XLCFI_SAT_SENTINEL_1C = 125,
    00074     XLCFI_SAT_SENTINEL_2A = 126,
    00075     XLCFI_SAT_SENTINEL_2B = 127,
    00076     XLCFI_SAT_SENTINEL_2C = 128,
    00077     XLCFI_SAT_SENTINEL_3A = 129,
    00078     XLCFI_SAT_SENTINEL_3B = 130,
    00079     XLCFI_SAT_SENTINEL_3C = 131,
    00080         XLCFI_SAT_JASON_CSA       = 132, // AN-531
    00081         XLCFI_SAT_JASON_CSB   = 133, // AN-531
    00082     XLCFI_SAT_METOP_SG_A1 = 134, // AN-530
    00083     XLCFI_SAT_METOP_SG_A2 = 135, // AN-530
    00084         XLCFI_SAT_METOP_SG_A3 = 136, // AN-530
    00085         XLCFI_SAT_METOP_SG_B1 = 137, // AN-530
    00086         XLCFI_SAT_METOP_SG_B2 = 138, // AN-530
    00087         XLCFI_SAT_METOP_SG_B3 = 139, // AN-530
    00088         XLCFI_SAT_SENTINEL_5P = 140, // AN-502
    00089         XLCFI_SAT_BIOMASS     = 141, // AN-601
    00090         XLCFI_SAT_SENTINEL_5  = 142, // AN-639
    00091         XLCFI_SAT_SAOCOM_CS   = 143, // AN-640
    00092     XLCFI_SAT_GENERIC     = 200,
    00093     // AN-353
    00094     XLCFI_SAT_GENERIC_GEO = 300,
    00095     XLCFI_SAT_MTG         = 301,
    00096     // END AN-353
    00097     XLCFI_SAT_GENERIC_MEO = 400 // AN-550
    00098   } SatIdEnum;
    00099
    00100
    00102   typedef enum
    00103   {
    00104     XLCFI_TIMEMOD_AUTO = -2,
    00105     XLCFI_TIMEMOD_USER = -1,
    00106     XLCFI_TIMEMOD_NONE = 0,
    00107     XLCFI_TIMEMOD_IERS_B_PREDICTED = 1,
    00108     XLCFI_TIMEMOD_IERS_B_RESTITUTED,
    00109     XLCFI_TIMEMOD_FOS_PREDICTED,
    00110     XLCFI_TIMEMOD_FOS_RESTITUTED,
    00111     XLCFI_TIMEMOD_DORIS_PRELIMINARY,
    00112     XLCFI_TIMEMOD_DORIS_PRECISE,
    00113     XLCFI_TIMEMOD_DORIS_NAVIGATOR,
    00114     XLCFI_TIMEMOD_OSF,
    00115     XLCFI_TIMEMOD_IERS_A_ONLY_PREDICTION,
    00116     XLCFI_TIMEMOD_IERS_A_PREDICTION_AND_FORMULA,
    00117     XLCFI_TIMEMOD_IERS_B_AND_A_ONLY_PREDICTION
    00118   } TimeModelEnum;
    00119
    00120
    00122   typedef enum
    00123   {
    00124     XLCFI_TIME_UNDEF = -1,
    00125     XLCFI_TIME_TAI,
    00126     XLCFI_TIME_UTC,
    00127     XLCFI_TIME_UT1,
    00128     XLCFI_TIME_GPS
    00129   } XLTimeRefEnum;
    00130
    00131
    00133   typedef enum
    00134   {
    00135     XLCFI_PROC = 0
    00136   } TimeProcEnum;
    00137
    00139   typedef enum
    00140   {
    00141     XLCFI_TRANS_STD              = 0,
    00142     XLCFI_TRANS_ENVI_GS          = 11,
    00143     XLCFI_TRANS_CRYO_GS          = 21,
    00144     XLCFI_TRANS_CRYO_TM          = 22,
    00145     XLCFI_TRANS_CRYO_TM_SIRAL    = 23,
    00146     XLCFI_TRANS_SMOS_TM          = 31,
    00147     XLCFI_TRANS_GENERIC_GPS_SEC  = 41,
    00148     XLCFI_TRANS_GENERIC_GPS_WEEK = 42
    00149   } TimeTransEnum;
    00150
    00151
    00170   typedef enum
    00171   {
    00172     XLCFI_ASCII_UNDEF                       = -1,
    00173     XLCFI_ASCII_STD                         = 11,
    00174     XLCFI_ASCII_STD_REF                     = 12,
    00175     XLCFI_ASCII_STD_MICROSEC                = 13,
    00176     XLCFI_ASCII_STD_REF_MICROSEC            = 14,
    00177     XLCFI_ASCII_COMPACT                     = 21,
    00178     XLCFI_ASCII_COMPACT_REF                 = 22,
    00179     XLCFI_ASCII_COMPACT_MICROSEC            = 23,
    00180     XLCFI_ASCII_COMPACT_REF_MICROSEC        = 24,
    00181     XLCFI_ASCII_ENVI                        = 31,
    00182     XLCFI_ASCII_ENVI_REF                    = 32,
    00183     XLCFI_ASCII_ENVI_MICROSEC               = 33,
    00184     XLCFI_ASCII_ENVI_REF_MICROSEC           = 34,
    00185     XLCFI_ASCII_CCSDSA                      = 41,
    00186     XLCFI_ASCII_CCSDSA_REF                  = 42,
    00187     XLCFI_ASCII_CCSDSA_MICROSEC             = 43,
    00188     XLCFI_ASCII_CCSDSA_REF_MICROSEC         = 44,
    00189     XLCFI_ASCII_CCSDSA_COMPACT              = 51,
    00190     XLCFI_ASCII_CCSDSA_COMPACT_REF          = 52,
    00191     XLCFI_ASCII_CCSDSA_COMPACT_MICROSEC     = 53,
    00192     XLCFI_ASCII_CCSDSA_COMPACT_REF_MICROSEC = 54
    00193   } TimeAsciiEnum;
    00194
    00195
    00197   typedef enum  // Flag to indicate the grade of a derivative
    00198   {
    00199     XLCFI_NO_DER = 0,
    00200     XLCFI_DER_1ST,
    00201     XLCFI_DER_2ND,
    00202     XLCFI_ITER_NO_DER,
    00203     XLCFI_ITER_DER_1ST,
    00204     XLCFI_NO_ITER_NO_DER,
    00205     XLCFI_NO_ITER_DER_1ST
    00206   } DerivEnum;
    00207
    00208
    00210   typedef enum   // It defines a coordinate system
    00211   {
    00212     XLCFI_CS_UNDEF = 0,
    00213     XLCFI_CS_BM2000 = 1,
    00214     XLCFI_CS_HM2000,
    00215     XLCFI_CS_GM2000,
    00216     XLCFI_CS_MOD,
    00217     XLCFI_CS_TOD,
    00218     XLCFI_CS_PEF,
    00219     XLCFI_CS_EF,
    00220     XLCFI_CS_LIF,
    00221     XLCFI_CS_BM1950,
    00222     XLCFI_CS_GALACTIC,
    00223     XLCFI_CS_SAT_ACT_REF,
    00224     XLCFI_CS_QUASI_MEAN_DATE,
    00225     XLCFI_CS_PSE_TRUE_DATE,
    00226     XLCFI_CS_TOPOCENTRIC,
    00227     XLCFI_CS_SAT_REF,
    00228     XLCFI_CS_SAT_REL_REF
    00229   } CoordinateSystemEnum; // Updated for AN-509
    00230
    00232   typedef enum
    00233   {
    00234     XLCFI_CS_SAT_ORBITAL_REF = 0,
    00235     XLCFI_CS_SAT_NOMINAL_ATT,
    00236     XLCFI_CS_SAT_ATT,
    00237     XLCFI_CS_INSTR_ATT
    00238   } XLAttitudeFrameEnum; // AN-509
    00239
    00241   typedef enum
    00242   {
    00243     XLCFI_KEPLER_MEAN = 1,
    00244     XLCFI_KEPLER_OSC
    00245   } KeplerModeEnum;
    00246
    00248   typedef enum
    00249   {
    00250     XLCFI_MODE_FLAG_LOCATION = 0,
    00251     XLCFI_MODE_FLAG_DIRECTION
    00252   } ModeFlagEnum;
    00253
    00255   typedef enum
    00256   {
    00257     XLCFI_MERCURY = 1,
    00258     XLCFI_VENUS,
    00259     XLCFI_EM_BAR,
    00260     XLCFI_MARS,
    00261     XLCFI_JUPITER,
    00262     XLCFI_SATURN,
    00263     XLCFI_URANUS,
    00264     XLCFI_NEPTUNE
    00265   } PlanetEnum;
    00266
    00268   typedef enum
    00269   {
    00270     XLCFI_FK4 = 0,
    00271     XLCFI_FK5
    00272   } StarCatalogEnum;
    00273
    00274
    00276   typedef enum
    00277   {
    00278     XLCFI_ANGLE_TYPE_TRUE_LAT_TOD = 1,
    00279     XLCFI_ANGLE_TYPE_MEAN_LAT_TOD,
    00280     XLCFI_ANGLE_TYPE_TRUE_LAT_GM2000,
    00281     XLCFI_ANGLE_TYPE_TRUE_LAT_EF
    00282   } AngleTypeEnum;
    00283
    00285   typedef enum
    00286   {
    00287     XLCFI_MODEL_DEFAULT,
    00288     XLCFI_MODEL_CONFIG
    00289   } ModelSetsEnum;
    00290
    00292   typedef enum
    00293   {
    00294     XLCFI_MODEL_TYPE_EARTH,
    00295     XLCFI_MODEL_TYPE_SUN,
    00296     XLCFI_MODEL_TYPE_MOON,
    00297     XLCFI_MODEL_TYPE_PLANET,
    00298     XLCFI_MODEL_TYPE_STAR,
    00299     XLCFI_MODEL_TYPE_NUTATION,
    00300     XLCFI_MODEL_TYPE_PRECESSION,
    00301     XLCFI_MODEL_TYPE_CONSTANTS,
    00302     XLCFI_MODEL_TYPE_LIGHT_PROPAGATION, //AN-553
    00303     XLCFI_NUM_MODEL_TYPES_ENUM
    00304   } ModelTypesEnum;
    00305
    00307   typedef enum
    00308   {
    00309     XLCFI_MODEL_EARTH_DEFAULT
    00310   } ModelEarthEnum;
    00311
    00312
    00314   typedef enum
    00315   {
    00316     XLCFI_MODEL_SUN_DEFAULT,
    00317     XLCFI_MODEL_SUN_TRAVEL_TIME /* AN-517 */
    00318   } ModelSunEnum;
    00319
    00320
    00322   typedef enum
    00323   {
    00324     XLCFI_MODEL_MOON_DEFAULT
    00325   } ModelMoonEnum;
    00326
    00327
    00329   typedef enum
    00330   {
    00331     XLCFI_MODEL_PLANETS_DEFAULT
    00332   } ModelPlanetsEnum;
    00333
    00334
    00336   typedef enum
    00337   {
    00338     XLCFI_MODEL_STAR_DEFAULT
    00339   } ModelStarEnum;
    00340
    00341
    00343   typedef enum
    00344   {
    00345     XLCFI_MODEL_NUTATION_DEFAULT
    00346   } ModelNutationEnum;
    00347
    00348
    00350   typedef enum
    00351   {
    00352     XLCFI_MODEL_PRECESSION_DEFAULT
    00353   } ModelPrecessionEnum;
    00354
    00356   typedef enum
    00357   {
    00358     XLCFI_MODEL_CONSTANTS_DEFAULT
    00359   } ModelConstantsEnum;
    00360
    00362   typedef enum
    00363   {
    00364     XLCFI_MODEL_LIGHT_PROPAGATION_DISABLED,
    00365     XLCFI_MODEL_LIGHT_PROPAGATION_RECEIVER,
    00366     XLCFI_MODEL_LIGHT_PROPAGATION_TRANSMITTER
    00367   } ModelLightPropagationEnum; //AN-553
    00368
    00370   typedef enum
    00371   {
    00372     XLCFI_NO_BULLETIN = -1,
    00373     XLCFI_BULLETIN_B,
    00374     XLCFI_BULLETIN_A,
    00375     XLCFI_BULLETIN_B_AND_A
    00376   } XLBulletinTypeEnum;
    00377
    00379   typedef enum
    00380   {
    00381     XLCFI_FORMULA_ENABLED,
    00382     XLCFI_FORMULA_DISABLED
    00383   } IersFormulaFlagEnum;
    00384
    00385   /* AN-518 */
    00387   typedef enum
    00388   {
    00389     XLCFI_INTERPOL_SLERP
    00390   } QuaternionsInterpolationAlgoEnum;
    00391
    00392   //------------------------------------------------------
    00393   // DATA STRUCTURES
    00394   //------------------------------------------------------
    00395
    00397   class XL_DECL TimeInterval
    00398   {
    00399     public:
    00400       long   timeRef;
    00401       double startTime;
    00402       double stopTime;
    00403
    00405       TimeInterval()
    00406         {timeRef = -1, startTime = 0, stopTime = 0;};
    00407
    00409       TimeInterval(long ref, double start, double stop)
    00410         {timeRef = ref, startTime = start, stopTime = stop;};
    00411   };
    00412
    00414   class XL_DECL OrbitInterval
    00415   {
    00416     public:
    00417       long startOrbit;
    00418       long stopOrbit;
    00419
    00421       OrbitInterval() {startOrbit = 0, stopOrbit = 0;};
    00422
    00424       OrbitInterval(long start, long stop)
    00425         {startOrbit = start, stopOrbit = stop;};
    00426   };
    00427
    00429   class XL_DECL TimeData
    00430   {
    00431     public:
    00432       double   taiTime;
    00433       double   ut1Time;
    00434       double   tai_utc;
    00435       double   tai_ut1;
    00436       double   tai_gps;
    00437   };
    00438
    00440   class XL_DECL LeapSecondInfo
    00441   {
    00442     public:
    00443       long   flag;
    00444       double utcTime;
    00445   };
    00446
    00448   class XL_DECL LaunchInertialFrameConfig
    00449   {
    00450     public:
    00451       long enabledFlag;
    00452       double longitude;
    00453       double utcTime;
    00454
    00455     LaunchInertialFrameConfig()
    00456     {
    00457       utcTime = 0;  /* AN-341 */
    00458       enabledFlag = 0L; /* AN-341 */
    00459       longitude = 0;  /* AN-341 */
    00460     }
    00461   };
    00462
    00464   class XL_DECL TimeCorrelationData
    00465   {
    00466     public:
    00467       long                       iersBulletinType;
    00468       long                       iersFormulaFlag;
    00469       long                       predictionFirstRecord;
    00470       PolarMotionFormula         polarMotionFormula;
    00471       TimeCorrelationFormula     timeCorrelationFormula;
    00472       vector<TimeData>           timeCorrVector;
    00473       vector<PolarMotionParams>  polarMotionParams;
    00474       LeapSecondInfo             leapSecond;
    00475       LaunchInertialFrameConfig  launchInertialFrameConfig;
    00476
    00478       TimeCorrelationData()
    00479       {
    00480         iersBulletinType      = XLCFI_NO_BULLETIN;
    00481         iersFormulaFlag       = XLCFI_FORMULA_DISABLED;
    00482         predictionFirstRecord = 0L;
    00483       }
    00484
    00486       TimeCorrelationData(long bulType, long iersFormula, long predFirst,
    00487                           PolarMotionFormula &polarForm, TimeCorrelationFormula &timeForm,
    00488                           vector<TimeData> &timData, vector<PolarMotionParams> &polarData,
    00489                           LeapSecondInfo &leapInfo )
    00490       {
    00491         iersBulletinType       = bulType;
    00492         iersFormulaFlag        = iersFormula;
    00493         predictionFirstRecord  = predFirst;
    00494         polarMotionFormula     = polarForm;
    00495         timeCorrelationFormula = timeForm;
    00496         timeCorrVector         = timData;
    00497         polarMotionParams      = polarData;
    00498         leapSecond             = leapInfo;
    00499       }
    00500
    00502       TimeCorrelationData(long bulType, long iersFormula, long predFirst,
    00503                           PolarMotionFormula &polarForm, TimeCorrelationFormula &timeForm,
    00504                           vector<TimeData> &timData, vector<PolarMotionParams> &polarData,
    00505                           LeapSecondInfo &leapInfo, LaunchInertialFrameConfig &launchInertialFrameCfg )
    00506       {
    00507         iersBulletinType       = bulType;
    00508         iersFormulaFlag        = iersFormula;
    00509         predictionFirstRecord  = predFirst;
    00510         polarMotionFormula     = polarForm;
    00511         timeCorrelationFormula = timeForm;
    00512         timeCorrVector         = timData;
    00513         polarMotionParams      = polarData;
    00514         leapSecond             = leapInfo;
    00515         launchInertialFrameConfig = launchInertialFrameCfg;  /* AN-341 */
    00516       }
    00517   };
    00518
    00520   class XL_DECL Kepler
    00521   {
    00522     public:
    00523       long   mode;
    00524       long   cs;
    00525       double a;
    00526       double e;
    00527       double i;
    00528       double ra;
    00529       double w;
    00530       double m;
    00531   };
    00532
    00534   class XL_DECL Topocentric
    00535   {
    00536     public:
    00537       double azim;
    00538       double elev;
    00539       double range;
    00540       double azimDer;
    00541       double elevDer;
    00542       double rangeDer;
    00543   };
    00544
    00546   class XL_DECL ModelData
    00547   {
    00548     public:
    00549     long   earthModel;
    00550     long   sunModel;
    00551     long   moonModel;
    00552     long   planetModel;
    00553     long   starModel;
    00554     long   nutationModel;
    00555     long   precessionModel;
    00556     long   constantsModel;
    00557     long   lightPropagationModel;
    00558
    00559     /* Earth shape and gravity */
    00560     double re;
    00561     double mu;
    00562     double j2;
    00563     double j3;
    00564     double j4;
    00565
    00566     double majorAxis;
    00567     double minorAxis;
    00568     double ecc;
    00569     double flat;
    00570
    00571     /* Earth rotation */
    00572     double gcoef0;
    00573     double gcoef1;
    00574     double gcoef2;
    00575
    00576     double gcoefSim0;
    00577     double gcoefSim1;
    00578     double gcoefSim2;
    00579
    00580     /* constants */
    00581     double au;
    00582   };
    00583
    00585   class XL_DECL GeoidCalcOutputs
    00586   {
    00587     public:
    00588       double  undulation;
    00589   }; // AN-425
    00590
    00592   class XL_DECL QuaternionsInterpolationCfg
    00593   {
    00594     public:
    00595       QuaternionsInterpolationAlgoEnum  algo;
    00596   }; // AN-518
    00597
    00598
    00599
    00600 } // closing namespace
    00601
    00602 #endif