![]() |
Earth Observation Mission CFI Software DataHandling Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.19 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: DataHandlingData.h,v 1.35 2014-03-25 07:51:58 cavm Exp $ 00007 //-------------------------------------------------------------------- 00008 00010 // This file contais generic data that can be used as input/output in 00011 // the classes of EXPCFI DataHandling library 00013 00014 #ifndef __EECFI_DATAHANDLINGDATA__ 00015 #define __EECFI_DATAHANDLINGDATA__ 00016 00017 //--INCLUDE----------------------------------------------------------- 00018 #include <string> 00019 #include <vector> 00020 00021 #include "AttRec.h" 00022 #include "DataHandlingDllExport.h" 00023 #define MaxStationVertices 999 00024 00025 //--NAMESPACES-------------------------------------------------------- 00026 00027 00028 namespace EECFI 00029 { 00030 //------------------------------------------------------ 00031 // CONSTANT DATA 00032 //------------------------------------------------------ 00033 00034 //------------------------------------------------------ 00035 // DATA ENUMERATION 00036 //------------------------------------------------------ 00037 00039 typedef enum 00040 { 00041 XDCFI_ATT_QUATERNIONS = 0, 00042 XDCFI_ATT_ANGLES 00043 } AttitudeDataTypeEnum; 00044 00046 typedef enum 00047 { 00048 XDCFI_LINE_GEOM = 0, 00049 XDCFI_POINT_GEOM, 00050 XDCFI_LIMB_GEOM, 00051 XDCFI_DISTANCE_GEOM 00052 } GeomTypeEnum; 00053 00055 typedef enum 00056 { 00057 XDCFI_NO_ASAR = 0, 00058 XDCFI_NARROW_ASAR, 00059 XDCFI_WIDE_ASAR 00060 } AsarTypeEnum; 00061 00063 typedef enum 00064 { 00065 XDCFI_NO_REF = 0, 00066 XDCFI_STD_REF, 00067 XDCFI_USER_REF, 00068 XDCFI_PRED_REF, 00069 XDCFI_STD_REF_N = 10, 00070 XDCFI_USER_REF_N = 20, 00071 XDCFI_PRED_REF_N = 30, 00072 XDCFI_US76_REF = 300, 00073 XDCFI_TROPIC_REF, 00074 XDCFI_MID_SUM_REF, 00075 XDCFI_MID_WIN_REF, 00076 XDCFI_SUBAR_SUM_REF, 00077 XDCFI_SUBAR_WIN_REF, 00078 XDCFI_LUT_REF = 400, 00079 XDCFI_US76_REF_N = 3000, 00080 XDCFI_TROPIC_REF_N, 00081 XDCFI_MID_SUM_REF_N, 00082 XDCFI_MID_WIN_REF_N, 00083 XDCFI_SUBAR_SUM_REF_N, 00084 XDCFI_SUBAR_WIN_REF_N, 00085 XDCFI_LUT_REF_N = 4000 00086 } TargetRayEnum; 00087 00089 typedef enum 00090 { 00091 XDCFI_OPEN_SWATH, 00092 XDCFI_CLOSED_SWATH 00093 } SwathTypecEnum; 00094 00096 typedef enum 00097 { 00098 XDCFI_GEODETIC_SWATH_TYPE, 00099 XDCFI_INERTIAL_SWATH_TYPE 00100 } SwathPointTypeEnum; 00101 00103 typedef enum 00104 { 00105 XDCFI_SWATH_POINTING_GEOM = 0, /* Algorithms of calculation of Swaths */ 00106 XDCFI_SWATH_DISTANCE_GEOM, 00107 XDCFI_SWATH_LIMB_GEOM, 00108 XDCFI_SWATH_INERTIAL_GEOM, 00109 XDCFI_SWATH_SUBSATELLITE_GEOM, 00110 XDCFI_SWATH_ASAR_GEOM, 00111 XDCFI_SWATH_ASAR_GEOM_RANGERATE_ALGO, 00112 XDCFI_SWATH_INCIDENCE_ANGLE_GEOM // AN-665 00113 } SwathGeomEnum; 00114 00116 typedef enum 00117 { 00118 XDCFI_NOT_DEFINED = -1, 00119 XDCFI_POINT = 0, 00120 XDCFI_CIRCLE = 1, 00121 XDCFI_SEGMENT = 2, 00122 XDCFI_POLYGON = 3 00123 } ZoneTypeEnum; 00124 00126 typedef enum 00127 { 00128 XDCFI_SAT_ORBITAL_REF = 0, 00129 XDCFI_SAT_NOMINAL_ATT, 00130 XDCFI_SAT_ATT, 00131 XDCFI_INSTR_ATT 00132 } AttitudeFrameEnum; 00133 00135 typedef enum 00136 { 00137 XDCFI_BAR_MEAN_2000 = 1, 00138 XDCFI_HEL_MEAN_2000, 00139 XDCFI_GEO_MEAN_2000, 00140 XDCFI_MEAN_DATE, 00141 XDCFI_TRUE_DATE, 00142 XDCFI_PSEUDO_EARTH_FIXED, 00143 XDCFI_EARTH_FIXED, 00144 XDCFI_LIF, 00145 XDCFI_BAR_MEAN_1950, 00146 XDCFI_GALACTIC, 00147 XDCFI_SAT_ACT_REF, 00148 XDCFI_QUASI_MEAN_DATE, 00149 XDCFI_PSE_TRUE_DATE, 00150 XDCFI_TOPOCENTRIC, 00151 XDCFI_SAT_REF, 00152 XDCFI_SAT_REL_REF 00153 } CoordinateSystemsEnum; // Updated for AN-509 00154 00156 typedef enum 00157 { 00158 XDCFI_3_ADJUST_NOMI = 1, 00159 XDCFI_4_ADJUST_DMAN, 00160 XDCFI_5_INTERP_DGAP, 00161 XDCFI_6_EXTRAP_LT1D, 00162 XDCFI_7_EXTRAP_1D2D, 00163 XDCFI_8_EXTRAP_GT2D, 00164 XDCFI_8_EXTRAP_AMAN, 00165 XDCFI_Q_INDEX_MAX_ENUM 00166 } QualityIndexEnum; 00167 00169 typedef enum 00170 { 00171 XDCFI_SCF_DRAW_SOLID, 00172 XDCFI_SCF_DRAW_DASHED, 00173 XDCFI_SCF_DRAW_DOTTED, 00174 XDCFI_SCF_DRAW_TIMELINE 00175 } SCFDrawModesEnum; 00176 00178 typedef enum 00179 { 00180 XDCFI_SCF_FILL_SOLID, 00181 XDCFI_SCF_FILL_HOLLOW 00182 } SCFFillModesEnum; 00183 00185 typedef enum 00186 { 00187 XDCFI_SEL_FILE = 0, 00188 XDCFI_SEL_TIME, 00189 XDCFI_SEL_ORBIT, 00190 XDCFI_SEL_DEFAULT, 00191 XDCFI_SEL_NONE 00192 } TimeInitModeEnum; 00193 00195 typedef enum 00196 { 00197 XDCFI_TIME_UNDEF = -1, 00198 XDCFI_TIME_TAI, 00199 XDCFI_TIME_UTC, 00200 XDCFI_TIME_UT1, 00201 XDCFI_TIME_GPS 00202 } TimeRefDataHandlingEnum; 00203 00205 typedef enum 00206 { 00207 XDCFI_EXTEND_NUM_OSV = 0, 00208 XDCFI_EXTEND_TIME 00209 } ExtendTypeEnum; 00210 00212 typedef enum 00213 { 00214 XDCFI_TIME_REF_OF_TAI = XDCFI_TIME_TAI, 00215 XDCFI_TIME_REF_OF_UTC = XDCFI_TIME_UTC, 00216 XDCFI_TIME_REF_OF_UT1 = XDCFI_TIME_UT1, 00217 XDCFI_TIME_REF_OF_GPS = XDCFI_TIME_GPS 00218 } TimeRefOfDataHandlingEnum; 00219 00221 typedef enum 00222 { 00223 XDCFI_READ_DB = 0, 00224 XDCFI_GNOMONIC = 1, 00225 XDCFI_RECTANGULAR = 2 00226 } ProjectionEnum; 00227 00229 typedef enum 00230 { 00231 XDCFI_ATT_NONE = 0, 00232 XDCFI_ATT_AOCS, 00233 XDCFI_ATT_PARAM, 00234 XDCFI_ATT_HARMONIC, 00235 XDCFI_ATT_FILE, 00236 XDCFI_ATT_ANGLE, 00237 XDCFI_ATT_MATRIX 00238 } AttModelEnum; 00239 00241 typedef enum 00242 { 00243 XDCFI_ORBIT_FILE, 00244 XDCFI_OSF_FILE, 00245 XDCFI_DORIS_FILE, 00246 XDCFI_IERS_BULLETIN_FILE, 00247 XDCFI_USER_OSV_LIST, 00248 XDCFI_SP3_FILE, // AN-550 00249 XDCFI_POF_FILE, 00250 XDCFI_ROF_FILE, 00251 XDCFI_SDF_FILE, 00252 XDCFI_STF_FILE, 00253 XDCFI_ATTITUDE_FILE, 00254 XDCFI_DEM_CONF_FILE, 00255 XDCFI_DEM_FILE, 00256 XDCFI_ZONE_FILE, 00257 XDCFI_STATION_FILE, 00258 XDCFI_STAR_FILE, 00259 XDCFI_ATT_STAR_TRACKER_CONF_FILE, 00260 XDCFI_ATT_STAR_TRACKER_FILE, 00261 XDCFI_TLE_FILE, 00262 XDCFI_ATTITUDE_DEFINITION_FILE, //AN-469 00263 XDCFI_OEM_FILE, //AN-578 00264 XDCFI_FOV_CONSTRAINTS_FILE //AN-628 00265 } FileEnum; // Updated for AN-527, to have it alligned with XD_data_file_type_enum 00266 00268 typedef enum 00269 { 00270 XDCFI_UNKNOWN_TYPE = -1, 00271 XDCFI_AUTO, 00272 XDCFI_ORBIT_CHANGE, 00273 XDCFI_STATE_VECTOR, 00274 XDCFI_OSF_TYPE, 00275 XDCFI_POF_TYPE, 00276 XDCFI_ROF_TYPE, 00277 XDCFI_DORIS_TYPE, 00278 XDCFI_POF_N_DORIS_TYPE, 00279 XDCFI_OEF_OSF_TYPE, 00280 XDCFI_OEF_POF_TYPE, 00281 XDCFI_IERS_B_TYPE, 00282 XDCFI_TLE_TYPE, 00283 XDCFI_STF_TYPE, 00284 XDCFI_DORISPREC_TYPE, 00285 XDCFI_DORISPREM_TYPE, 00286 XDCFI_ATT_TYPE, 00287 XDCFI_SCF_TYPE, 00288 XDCFI_PRECISE_PROPAG_TYPE, 00289 XDCFI_DEMCFG_TYPE, 00290 XDCFI_SATCFG_TYPE, 00291 XDCFI_GND_DB_TYPE, 00292 XDCFI_SW_DEF_TYPE, 00293 XDCFI_ZON_DB_TYPE, 00294 XDCFI_STR1ATT_TYPE, 00295 XDCFI_IERS_A_TYPE, 00296 XDCFI_IERS_B_AND_A_TYPE, 00297 XDCFI_ATT_DEF_TYPE, 00298 XDCFI_USER_OSV_LIST_TYPE, 00299 XDCFI_SP3_TYPE, /* AN-550 */ 00300 XDCFI_OSF_POF_MODE, // AN-527 00301 XDCFI_OSF_ROF_MODE, // AN-527 00302 XDCFI_OSF_DORIS_MODE, // AN-527 00303 XDCFI_OEM_TYPE, // AN-578 00304 XDCFI_OSF_OEM_MODE, // AN-578 00305 XDCFI_FILE_TYPE_MAX_VALUE 00306 } FileTypeEnum; 00307 00309 typedef enum 00310 { 00311 XDCFI_DEM_ACE_MODEL = 0, 00312 XDCFI_DEM_GETASSE30_V1, 00313 XDCFI_DEM_GETASSE30_V2, 00314 XDCFI_DEM_ACE2_9SEC, 00315 XDCFI_DEM_GETASSE30_V3, /*AN-503*/ 00316 XDCFI_DEM_GDEM_V2, /*AN-504*/ 00317 XDCFI_DEM_ACE2_30SEC, /*AN-615*/ 00318 XDCFI_DEM_ACE2_3SEC, // AN-619 00319 XDCFI_DEM_ACE2_5MIN, // AN-726 00320 XDCFI_DEM_GENERIC, // AN-740 00321 XDCFI_DEM_TANDEMX_90, // AN-767 00322 XDCFI_DEM_GDEM_V3, // AN-827 00323 XDCFI_DEM_NUM_MODELS 00324 } DemModelEnum; 00325 00327 typedef enum 00328 { 00329 XDCFI_DEM_GETASSE30_SOURCE_ACE, /* land-ice/snow */ 00330 XDCFI_DEM_GETASSE30_SOURCE_MSS, /* sea */ 00331 XDCFI_DEM_GETASSE30_SOURCE_EGM96, /* sea-ice */ 00332 XDCFI_DEM_GETASSE30_SOURCE_SRTM30 /* land */ 00333 } DemGetasseDataSourceEnum; 00334 00336 typedef enum 00337 { 00338 XDCFI_DEM_ACE2_SOURCE_SRTM0, /* Pure SRTM (above 60�N pure GLOBE data, below 60S pure ACE [original] data) */ 00339 XDCFI_DEM_ACE2_SOURCE_SRTM1, /* SRTM voids filled by interpolation and/or altimeter data */ 00340 XDCFI_DEM_ACE2_SOURCE_SRTM2, /* SRTM data warped using the ERS-1 Geodetic Mission */ 00341 XDCFI_DEM_ACE2_SOURCE_SRTM3, /* SRTM data warped using EnviSat & ERS-2 data */ 00342 XDCFI_DEM_ACE2_SOURCE_SRTM_LAKE, /* Mean lake level data derived from Altimetry */ 00343 XDCFI_DEM_ACE2_SOURCE_SRTM_GLOBE, /* GLOBE/ACE data warped using combined altimetry (only above 60�N) */ 00344 XDCFI_DEM_ACE2_SOURCE_SRTM_ALT /* Pure altimetry data (derived from ERS-1 Geodetic Mission, 00345 ERS-2 and EnviSat data using Delaunay Triangulation and Bilinear interpolation) */ 00346 } DemAce2DataSourceEnum; 00347 00349 typedef enum 00350 { 00351 XDCFI_DEM_GDEM_SOURCE_NO_SOURCE_FILE = -1, 00352 XDCFI_DEM_GDEM_SOURCE_SRTM3_V3 = 0, 00353 XDCFI_DEM_GDEM_SOURCE_SRTM3_V2, 00354 XDCFI_DEM_GDEM_SOURCE_NED, 00355 XDCFI_DEM_GDEM_SOURCE_CDED, 00356 XDCFI_DEM_GDEM_SOURCE_ALASKA_DEM 00357 } DemGdemV2DataSourceEnum; 00358 00360 typedef enum 00361 { 00362 XDCFI_DEM_CELL_CENTER, 00363 XDCFI_DEM_CELL_NORTHWEST, 00364 XDCFI_DEM_CELL_NORTHEAST, 00365 XDCFI_DEM_CELL_SOUTHEAST, 00366 XDCFI_DEM_CELL_SOUTHWEST, 00367 } DemCellLocationEnum; // AN-778 00368 00370 typedef enum 00371 { 00372 XDCFI_DEM_DATA_TYPE_INT16 = 0, 00373 XDCFI_DEM_DATA_TYPE_INT32, 00374 XDCFI_DEM_DATA_TYPE_INT64, 00375 XDCFI_DEM_DATA_TYPE_UINT16, 00376 XDCFI_DEM_DATA_TYPE_UINT32, 00377 XDCFI_DEM_DATA_TYPE_UINT64, 00378 XDCFI_DEM_DATA_TYPE_FLOAT32, 00379 XDCFI_DEM_DATA_TYPE_FLOAT64, 00380 XDCFI_DEM_DATA_TYPE_INT8, 00381 } DemDataTypesEnum; // AN-740 00382 00384 typedef enum 00385 { 00386 XDCFI_DEM_DATA_UNIT_METER = 0, 00387 XDCFI_DEM_DATA_UNIT_KILOMETER 00388 } DemDataUnitsEnum; // AN-740 00389 00391 typedef enum 00392 { 00393 XDCFI_DEM_DATA_REFERENCE_WGS84 = 0, 00394 XDCFI_DEM_DATA_REFERENCE_EGM96 00395 } DemDataReferencesEnum; // AN-740 00396 00398 typedef enum 00399 { 00400 XDCFI_CFI_READ_ATT_INIT_PARSER_ERR = 0, 00401 XDCFI_CFI_READ_ATT_READ_PARAM_ERR, 00402 XDCFI_CFI_READ_ATT_WRONG_FILE_TYPE_ERR, 00403 XDCFI_CFI_READ_XML_ATT_NAVIGATION_ERR, 00404 XDCFI_CFI_READ_ATT_WRONG_DATA_TYPE_ERR, 00405 XDCFI_CFI_READ_ATT_INCONSISTENT_DATA_TYPE_ERR, 00406 XDCFI_CFI_READ_ATT_XML_DATA_BLOCK_SIZE_ERR, 00407 XDCFI_CFI_READ_ATT_WRONG_REF_FRAME_ERR, 00408 XDCFI_CFI_READ_ATT_READ_LIST_ERR, 00409 XDCFI_CFI_READ_ATT_TIME_CONV_ERR, 00410 XDCFI_CFI_READ_ATT_MEMORY_ERR, 00411 XDCFI_CFI_READ_ATT_CLEANUP_PARSER_ERR, 00412 XDCFI_CFI_READ_ATT_WRONG_TIME_REF_ERR, 00413 XDCFI_CFI_READ_ATT_WRONG_QUATERNION_ERR, 00414 XDCFI_CFI_READ_ATT_WRONG_ANGLE_ERR, 00415 XDCFI_CFI_READ_ATT_MAX_GAP_ERR, 00416 XDCFI_CFI_READ_ATT_OBSOLETE_TAG_WARN //AN-516 00417 } ReadAttErrEnum; 00418 00420 typedef enum 00421 { 00422 XDCFI_DEFAULT_VALUES = 0, 00423 XDCFI_USER_VALUES = 1 00424 } PrecisePropagUserFlagEnum; 00425 00427 typedef enum 00428 { 00429 XDCFI_NOT_SELECT = 0, 00430 XDCFI_SELECT = 1 00431 } PrecisePropagSelectionFlagEnum; 00432 00434 typedef enum 00435 { 00436 XDCFI_SGA_USE_PARAMETERS = 0, 00437 XDCFI_SGA_READ_VALUES_FROM_FILE = 1 00438 } PrecisePropagSgaFlagEnum; 00439 00441 typedef enum 00442 { 00443 XDCFI_SAT_DEFAULT = 0, 00444 XDCFI_SAT_DEFAULT1 = 1, 00445 XDCFI_SAT_DEFAULT2 = 2, 00446 XDCFI_SAT_DEFAULT3 = 3, 00447 XDCFI_SAT_DEFAULT4 = 4, 00448 XDCFI_SAT_DEFAULT5 = 5, 00449 XDCFI_SAT_DEFAULT6 = 6, 00450 XDCFI_SAT_DEFAULT7 = 7, 00451 XDCFI_SAT_DEFAULT8 = 8, 00452 XDCFI_SAT_DEFAULT9 = 9, 00453 XDCFI_SAT_ERS1 = 11, 00454 XDCFI_SAT_ERS2 = 12, 00455 XDCFI_SAT_ENVISAT = 21, 00456 XDCFI_SAT_METOP1 = 31, 00457 XDCFI_SAT_METOP2 = 32, 00458 XDCFI_SAT_METOP3 = 33, 00459 XDCFI_SAT_CRYOSAT = 41, 00460 XDCFI_SAT_ADM = 51, 00461 XDCFI_SAT_GOCE = 61, 00462 XDCFI_SAT_SMOS = 71, 00463 XDCFI_SAT_TERRASAR = 81, 00464 XDCFI_SAT_EARTHCARE = 91, 00465 XDCFI_SAT_SWARM_A = 101, 00466 XDCFI_SAT_SWARM_B = 102, 00467 XDCFI_SAT_SWARM_C = 103, 00468 XDCFI_SAT_SENTINEL_1A = 110, 00469 XDCFI_SAT_SENTINEL_1B = 111, 00470 XDCFI_SAT_SENTINEL_2 = 112, 00471 XDCFI_SAT_SENTINEL_3 = 113, 00472 XDCFI_SAT_SEOSAT = 120, 00473 XDCFI_SAT_SENTINEL_1C = 125, 00474 XDCFI_SAT_SENTINEL_2A = 126, 00475 XDCFI_SAT_SENTINEL_2B = 127, 00476 XDCFI_SAT_SENTINEL_2C = 128, 00477 XDCFI_SAT_SENTINEL_3A = 129, 00478 XDCFI_SAT_SENTINEL_3B = 130, 00479 XDCFI_SAT_SENTINEL_3C = 131, 00480 XDCFI_SAT_JASON_CSA = 132, // AN-531 00481 XDCFI_SAT_JASON_CSB = 133, // AN-531 00482 XDCFI_SAT_METOP_SG_A1 = 134, // AN-530 00483 XDCFI_SAT_METOP_SG_A2 = 135, // AN-530 00484 XDCFI_SAT_METOP_SG_A3 = 136, // AN-530 00485 XDCFI_SAT_METOP_SG_B1 = 137, // AN-530 00486 XDCFI_SAT_METOP_SG_B2 = 138, // AN-530 00487 XDCFI_SAT_METOP_SG_B3 = 139, // AN-530 00488 XDCFI_SAT_SENTINEL_5P = 140, // AN-502 00489 XDCFI_SAT_BIOMASS = 141, // AN-601 00490 XDCFI_SAT_SENTINEL_5 = 142, // AN-639 00491 XDCFI_SAT_SAOCOM_CS = 143, // AN-640 00492 XDCFI_SAT_FLEX = 144, /* AN-683 */ 00493 XDCFI_SAT_GENERIC = 200, 00494 XDCFI_SAT_GENERIC_GEO = 300, 00495 XDCFI_SAT_MTG = 301, 00496 XDCFI_SAT_GENERIC_MEO = 400 // AN-550 00497 } XDSatIdEnum; 00498 00500 typedef enum 00501 { 00502 XDCFI_BULLETIN_A = 0, 00503 XDCFI_BULLETIN_B 00504 } XDBulletinTypeEnum; 00505 00507 typedef enum 00508 { 00509 XDCFI_NO_CACHE = 0, 00510 XDCFI_PRELOAD_CACHE, 00511 XDCFI_FIFO_CACHE 00512 } DemCacheTypeEnum; // Added for AN-487 00513 00515 typedef enum 00516 { 00517 XDCFI_DEM_GEOID_COMPUTATION_DISABLED = 0, 00518 XDCFI_DEM_GEOID_COMPUTATION_ENABLED = 1 00519 } DemGeoidFlagEnum; // AN-466 00520 00522 typedef enum 00523 { 00524 XDCFI_ATT_NONE_MODEL = 0, 00525 XDCFI_ATT_AOCS_MODEL, 00526 XDCFI_ATT_PARAMETER_MODEL, 00527 XDCFI_ATT_HARMONIC_MODEL, 00528 XDCFI_ATT_FILE_MODEL, 00529 XDCFI_ATT_ANGLE_MODEL, 00530 XDCFI_ATT_MATRIX_MODEL, 00531 XDCFI_ATT_QUATERNION_ANGLE_MODEL, 00532 XDCFI_ATT_QUATERNION_MATRIX_MODEL 00533 } AttDefModelEnum; // AN-469 00534 00536 typedef enum 00537 { 00538 XDCFI_SAT_NOMINAL_ATT_DEF = 0, 00539 XDCFI_SAT_ATT_DEF, 00540 XDCFI_INSTR_ATT_DEF 00541 } XDAttDefFrameEnum; // AN-469 00542 00544 typedef enum 00545 { 00546 XDCFI_AOCS_GPM = 0, 00547 XDCFI_AOCS_LNP, 00548 XDCFI_AOCS_YSM, 00549 XDCFI_AOCS_ZDOPPLER 00550 } XDSatNominalAttAocsModeEnum; // AN-469 00551 00553 typedef enum 00554 { 00555 XDCFI_MODEL_GENERIC = 0, 00556 XDCFI_MODEL_ENVISAT, 00557 XDCFI_MODEL_CRYOSAT, 00558 XDCFI_MODEL_ADM, 00559 XDCFI_MODEL_SENTINEL1, 00560 XDCFI_MODEL_SENTINEL2, 00561 XDCFI_MODEL_GEO, 00562 XDCFI_MODEL_METOPSG /* AN-666 */ 00563 } XDSatNominalAttModelEnum; // AN-469 00564 00566 typedef enum 00567 { 00568 XDCFI_ANGLE_TYPE_TRUE_LAT_TOD = 0, 00569 XDCFI_ANGLE_TYPE_TRUE_LAT_EF /* AN-508 */ 00570 } XDAngleTypeEnum; // AN-469 00571 00573 typedef enum 00574 { 00575 XDCFI_FIT_TLE = 0, /*Used for POF, not valid for OSV LIST*/ 00576 XDCFI_FIT_TLE_LIST, 00577 XDCFI_ONE_TLE_PER_OSV 00578 } XDTLEFitmodeEnum; 00579 00581 typedef enum 00582 { 00583 XDCFI_SP3_POSITION_TYPE, 00584 XDCFI_SP3_POSITION_PLUS_VELOCITY_TYPE 00585 } XDCFISP3FileTypeEnum; // AN-550 00586 00588 typedef enum 00589 { 00590 XDCFI_SP3_GPS = 0, 00591 XDCFI_SP3_MIXED, 00592 XDCFI_SP3_GLONASS, 00593 XDCFI_SP3_LEO, 00594 XDCFI_SP3_GALILEO, 00595 XDCFI_SP3_COMPASS, 00596 XDCFI_SP3_QZSS 00597 } XDCFISP3FileDescriptorEnum; // AN-550 00598 00600 typedef enum 00601 { 00602 XDCFI_SP3_TIME_GPS = 0, 00603 XDCFI_SP3_TIME_GLONASS, 00604 XDCFI_SP3_TIME_GALILEO, 00605 XDCFI_SP3_TIME_TAI, 00606 XDCFI_SP3_TIME_UTC, 00607 XDCFI_SP3_TIME_QZSS 00608 } XDCFISP3TimeSystemEnum; 00609 00611 typedef enum 00612 { 00613 XDCFI_SAT_GPS = 0, 00614 XDCFI_SAT_GLONASS, 00615 XDCFI_SAT_LEO, 00616 XDCFI_SAT_GALILEO, 00617 XDCFI_SAT_COMPASS, 00618 XDCFI_SAT_QZSS 00619 } XDCFISATSP3SatDescriptorEnum; 00620 00622 typedef enum 00623 { 00624 XDCFI_DORIS_CRYOSAT_TYPE, 00625 XDCFI_DORIS_SENTINEL3_TYPE, 00626 XDCFI_DORIS_JASON_TYPE, // AN-701 00627 XDCFI_DORIS_UNKNOWN_TYPE // AN-701 00628 } XDDORISFileTypeEnum; //AN-524 00629 00631 typedef enum 00632 { 00633 XDCFI_FOV_CONSTRAINTS_SC_LINK, 00634 XDCFI_FOV_CONSTRAINTS_CELESTIAL_BODY_LINK, // AN-677 00635 XDCFI_FOV_CONTRAINTS_MAX 00636 } XD_Fov_constraints_enum; // AN-628 00637 00639 typedef enum 00640 { 00641 XDCFI_FALSE = 0, 00642 XDCFI_TRUE = 1 00643 } XDCFI_Boolean; // AN-628 00644 00645 00646 /*ANR-638*/ 00647 typedef enum 00648 { 00649 XDCFI_FFS_DEFAULT = 0, 00650 XDCFI_FFS_V1, 00651 XDCFI_FFS_V2, 00652 XDCFI_FFS_V3, 00653 XDCFI_FFS_MAX, 00654 XD_FFS_ERROR 00655 } XDCFI_EOFFS_version; 00656 static const char file_format_standard_version[sizeof(XDCFI_EOFFS_version)+2][250] = {"DEFAULT", "1.0", "2.0", "3.0", "MAX", "ERROR"}; 00657 00658 //------------------------------------------------------ 00659 // DATA STRUCTURES 00660 //------------------------------------------------------ 00661 00665 class XD_DECL AngleModel 00666 { 00667 public: 00668 00669 //Attributes 00670 double angles[3]; 00671 double offsets[3]; 00672 00674 AngleModel(){}; 00675 00677 AngleModel( double *angle, double *offset) 00678 { 00679 for ( int i = 0 ; i < 3 ; ++i) 00680 { 00681 angles[i] = angle[i]; 00682 offsets[i] = offset[i]; 00683 }// end for i 00684 } 00685 }; 00686 00690 class XD_DECL Asar 00691 { 00692 public: 00693 //Attributes 00694 long asarType; 00695 double slantRangeLeft; 00696 double slantRangeRight; 00697 00699 Asar(){}; 00700 00705 Asar( const long asarTyp, double slantLeft, double slantRight) 00706 { 00707 asarType = asarTyp; 00708 slantRangeLeft = slantLeft; 00709 slantRangeRight = slantRight; 00710 } 00711 };//class Asar 00712 00713 00717 class XD_DECL BulbTable 00718 { 00719 public: 00720 double day; 00721 double ut1Utc; 00722 double ut1Tai; 00723 00725 BulbTable(){}; 00726 00728 BulbTable(double dayUtc, double diffUt1Utc, double diffUt1Tai) 00729 { 00730 day = dayUtc; 00731 ut1Utc = diffUt1Utc; 00732 ut1Tai = diffUt1Tai; 00733 } 00734 00735 }; 00736 00740 class XD_DECL DemPoint 00741 { 00742 public: 00743 00744 //Attributes 00745 double lon; 00746 double lat; 00747 double alt; 00748 00750 DemPoint(){}; 00751 00753 DemPoint( double longitude, double latitude, double altitude) 00754 { 00755 lon = longitude; 00756 lat = latitude; 00757 alt = altitude; 00758 } 00759 }; 00760 00764 class XD_DECL DorisHeader 00765 { 00766 public: 00767 //Atributtes 00768 std::string fileName; 00769 std::string sensingStart; // UTC 00770 std::string sensingStop; // UTC 00771 long relOrbit; 00772 long absOrbit; 00773 double deltaUt1; 00774 std::string leapUtc; 00775 int leapSign; 00776 int leapErr; 00777 long numDsd; 00778 long dsOffset; 00779 long numDsr; 00780 00781 // extra data: the following values are not read from the file. 00782 // but it must be provided for the writing function 00783 //MPH 00784 std::string procStageCode; 00785 std::string refDoc; 00786 std::string procTime; 00787 std::string softwareVersion; 00788 std::string phase; 00789 long cycle; 00790 std::string stateVectorTime; 00791 double xPosition; 00792 double yPosition; 00793 double zPosition; 00794 double xVelocity; 00795 double yVelocity; 00796 double zVelocity; 00797 std::string stateVectorSource; 00798 std::string productErr; 00799 long totSize; 00800 long numDataSets; 00801 00802 //SPH 00803 std::string sphDescriptor; 00804 std::string sensingStartTai; // TAI 00805 long absOrbitStart; 00806 double relTimeAscNodeStart; 00807 std::string sensingStopTai; // TAI 00808 long absOrbitStop; 00809 double relTimeAscNodeStop; 00810 std::string equatorCrossTime; 00811 long equatorCrossLong; 00812 std::string ascendingFlag; 00813 long startLat; 00814 long startLong; 00815 long stopLat; 00816 long stopLong; 00817 long numIsps; 00818 long numMissingIsps; 00819 long numErrorIsps; 00820 long numDiscardedIsps; 00821 long numRsIsps; 00822 long numRsCorrections; 00823 long dsrSize; 00824 00826 DorisHeader(); 00827 00829 DorisHeader(const std::string &fileNam, 00830 const std::string &senStart, 00831 const std::string &sensStop, 00832 long relOrbi, 00833 long absOrbi, 00834 double delta_Ut1, 00835 const std::string &leap_Utc, 00836 int leap_Sign, 00837 int leap_Err, 00838 long num_Dsd, 00839 long ds_Offset, 00840 long num_Dsr); 00841 00843 DorisHeader(const std::string &fileNam, 00844 const std::string &sensStart, 00845 const std::string &sensStop, 00846 long relOrbi, 00847 long absOrbi, 00848 double delta_Ut1, 00849 const std::string &leap_Utc, 00850 int leap_Sign, 00851 int leap_Err, 00852 long num_Dsd, 00853 long ds_Offset, 00854 long num_Dsr, 00855 const std::string &procStageCod, 00856 const std::string &ref_Doc, 00857 const std::string &procTim, 00858 const std::string &softVersion, 00859 const std::string &phaseIn, 00860 long cycleIn, 00861 const std::string &stateVectorTim, 00862 double xPos, 00863 double yPos, 00864 double zPos, 00865 double xVel, 00866 double yVel, 00867 double zVel, 00868 const std::string &stateVectSource, 00869 const std::string &prodErr, 00870 long tot_Size, 00871 long numDataSet, 00872 const std::string &sphDesc, 00873 const std::string &sensStartTai, 00874 long absOrbStart, 00875 double relTimAscNodeStart, 00876 const std::string &sensStopTai, 00877 long absOrbStop, 00878 double relTimAscNodeStop, 00879 const std::string &equator_CrossTime, 00880 long equator_CrossLong, 00881 const std::string &ascendFlag, 00882 long start_Lat, 00883 long start_Long, 00884 long stop_Lat, 00885 long stop_Long, 00886 long num_Isps, 00887 long numMissIsps, 00888 long numErrIsps, 00889 long numDiscardIsps, 00890 long num_RsIsps, 00891 long num_RsCorrections, 00892 long dsr_Size 00893 ); 00894 00895 }; 00896 00900 class XD_DECL FileModel 00901 { 00902 public: 00903 00904 //Attributes 00905 std::vector<std::string> files; 00906 std::string auxFile; 00907 long timeRef; 00908 double time0; 00909 double time1; 00910 00912 FileModel(){}; 00913 00915 FileModel( const std::vector<std::string> &fileNames, 00916 const std::string &auxiliaryFile, 00917 const long timeReference, 00918 const double timeZero, 00919 const double timeOne ) 00920 { 00921 files = fileNames; 00922 auxFile = auxiliaryFile; 00923 timeRef = timeReference; 00924 time0 = timeZero; 00925 time1 = timeOne; 00926 } 00927 00928 }; 00929 00933 class XD_DECL HarmonicData 00934 { 00935 public: 00936 00937 //Attributes 00938 std::vector<long> harmonicTypePitch; 00939 std::vector<long> harmonicTypeRoll; 00940 std::vector<long> harmonicTypeYaw; 00941 std::vector<double> harmonicCoeffPitch; 00942 std::vector<double> harmonicCoeffRoll; 00943 std::vector<double> harmonicCoeffYaw; 00944 00946 HarmonicData(){}; 00947 00949 HarmonicData( const std::vector<long> &harmonicTypPitch, 00950 const std::vector<long> &harmonicTypRoll, 00951 const std::vector<long> &harmonicTypYaw, 00952 const std::vector<double> &harmonicCoefPitch, 00953 const std::vector<double> &harmonicCoefRoll, 00954 const std::vector<double> &harmonicCoefYaw ) 00955 { 00956 harmonicTypePitch = harmonicTypPitch; 00957 harmonicTypeRoll = harmonicTypRoll; 00958 harmonicTypeYaw = harmonicTypYaw; 00959 harmonicCoeffPitch = harmonicCoefPitch; 00960 harmonicCoeffRoll = harmonicCoefRoll; 00961 harmonicCoeffYaw = harmonicCoefYaw; 00962 } 00963 00964 }; 00965 00969 class XD_DECL HarmonicModel 00970 { 00971 public: 00972 00973 //Attributes 00974 long angleType; 00975 HarmonicData harmonicData; 00976 double offsets[3]; 00977 00979 HarmonicModel(){}; 00980 00982 HarmonicModel( const long angleTyp, const HarmonicData &harmonicDat, double *offset) 00983 { 00984 angleType = angleTyp; 00985 harmonicData = harmonicDat; 00986 00987 for ( int i = 0 ; i < 3 ; ++i ) 00988 { 00989 offsets[i] = offset[i]; 00990 } 00991 } 00992 }; 00993 00997 class XD_DECL MatrixModel 00998 { 00999 public: 01000 01001 //Attributes 01002 double attMatrix[3][3]; 01003 double offsets[3]; 01004 01006 MatrixModel(){}; 01007 01009 MatrixModel( double **matrix, double *offset ) 01010 { 01011 for ( int i = 0 ; i < 3 ; ++i) 01012 { 01013 for ( int j = 0 ; j < 3 ; ++j ) 01014 { 01015 attMatrix[i][j] = matrix[i][j]; 01016 }// end for j 01017 offsets[i] = offset[i]; 01018 }// end for i 01019 } 01020 }; 01021 01025 class XD_DECL MlstHarmonics 01026 { 01027 public: 01028 01029 //Attributes 01030 double refTime; 01031 double period; 01032 double sinAmplitude; 01033 double cosAmplitude; 01034 01036 MlstHarmonics() 01037 { 01038 refTime = 0.; 01039 period = 1.; 01040 sinAmplitude = 0.; 01041 cosAmplitude = 0.; 01042 }; 01043 01045 MlstHarmonics(double time_in, double period_in, 01046 double sinAmp_in, double cosAmp_in) 01047 { 01048 refTime = time_in; 01049 period = period_in; 01050 sinAmplitude = sinAmp_in; 01051 cosAmplitude = cosAmp_in; 01052 } 01053 }; 01054 01058 class XD_DECL MlstNonlinearDrift 01059 { 01060 public: 01061 01062 //Attributes 01063 long linearApproxValidity; 01064 double quadraticTerm; 01065 std::vector<MlstHarmonics> mlstHarmonics; 01066 01068 MlstNonlinearDrift() 01069 { 01070 long i; 01071 01072 linearApproxValidity = 99999; 01073 quadraticTerm = 0.; 01074 for (i = 0 ; i < 2 ; i ++ ) 01075 { 01076 mlstHarmonics.push_back(MlstHarmonics()); 01077 } 01078 }; 01079 01081 MlstNonlinearDrift(long linApprox, double quadratic, const std::vector<MlstHarmonics> &harmonics) 01082 { 01083 linearApproxValidity = linApprox; 01084 quadraticTerm = quadratic; 01085 mlstHarmonics = harmonics; 01086 } 01087 }; 01088 01092 class XD_DECL ParamModel 01093 { 01094 public: 01095 01096 //Attributes 01097 long model; 01098 std::vector<double> modelParam; 01099 01101 ParamModel(){}; 01102 01104 ParamModel( const long mod, const std::vector<double> &modParam) 01105 { 01106 model = mod; 01107 modelParam = modParam; 01108 } 01109 }; 01110 01114 class XD_DECL SwathGeometry 01115 { 01116 public: 01117 01118 //Attributes 01119 long geometryType; 01120 double azimuth; 01121 double elevation; 01122 double altitude; 01123 double distance; 01124 double angle; 01125 01127 SwathGeometry(){}; 01128 01130 SwathGeometry( long geomType, double azim, double elevat, 01131 double alt, double dist, double ang) 01132 { 01133 geometryType = geomType; 01134 azimuth = azim; 01135 elevation = elevat; 01136 altitude = alt; 01137 distance = dist; 01138 angle = ang; // AN-665 01139 } 01140 }; 01141 01145 class XD_DECL TrackerLimits 01146 { 01147 public: 01148 01149 //Attributes 01150 double maxPenalty; 01151 double normThr; 01152 double maxGap; 01153 01155 TrackerLimits(){}; 01156 01158 TrackerLimits( double maxPenal,double normThreshold, double maximumGap) 01159 { 01160 maxPenalty = maxPenal; 01161 normThr = normThreshold; 01162 maxGap = maximumGap; 01163 } 01164 }; 01165 01169 class XD_DECL StfPt 01170 { 01171 public: 01172 01173 //Attributes 01174 double lon; 01175 double lat; 01176 01178 StfPt(){}; 01179 01181 StfPt( double longitude, double latitude ) 01182 { 01183 lon = longitude; 01184 lat = latitude; 01185 } 01186 }; 01187 01191 class XD_DECL StfVhr 01192 { 01193 public: 01194 01195 //Attributes 01196 std::string stfName; 01197 std::string ReferenceOSF; 01198 std::string ReferenceSDF; 01199 long swathType; 01200 long swathPointType; 01201 01202 double timeStep; 01203 long refractionMode; 01204 double frequency; 01205 01206 long numPoints; 01207 std::vector<double> altitude; 01208 01209 bool geometryFlag; 01210 01211 long repCycle; 01212 long cycleLength; 01213 double mlstDrift; 01214 01215 long absOrbit; 01216 long orbitStart; 01217 long orbitStop; 01218 01219 double position[3]; 01220 double velocity[3]; 01221 01223 StfVhr(); 01224 01226 StfVhr( const std::string &stfNam, 01227 const std::string &refOSF, 01228 const std::string &refSDF, 01229 long swathTyp, 01230 long swathPointTyp, 01231 double timStep, 01232 long refrMode, 01233 double freq, 01234 long numP, 01235 const std::vector<double> &alt, 01236 bool geomFlag, 01237 long repCycl, 01238 long cyclLength, 01239 double meanlstDrift, 01240 long absOrb, 01241 long orbit0, 01242 long orbit1, 01243 const double *pos, 01244 const double *vel 01245 ); 01246 01248 StfVhr( const StfVhr &stfVhr ); 01249 01251 ~StfVhr() NOEXCEPT; 01252 01254 void operator=( const StfVhr &stfVhr ); 01255 01256 };//class StfVhr 01257 01261 class XD_DECL ZonePoint 01262 { 01263 public: 01264 01265 //Attributes 01266 double ptLong; 01267 double ptLat; 01268 01270 ZonePoint(){}; 01271 01273 ZonePoint( double ptLongitude, double ptLatitude) 01274 { 01275 ptLong = ptLongitude; 01276 ptLat = ptLatitude; 01277 } 01278 }; 01279 01283 class XD_DECL AttitudeModel 01284 { 01285 public: 01286 //Attributes 01287 long attitudeModel; 01288 long AOCS; 01289 ParamModel *paramModel; 01290 HarmonicModel *harmonicModel; 01291 FileModel *fileModel; 01292 AngleModel *angleModel; 01293 MatrixModel *matrixModel; 01294 01296 AttitudeModel(); 01297 01299 AttitudeModel( long attModel, 01300 long AOCSModel, 01301 const ParamModel &parMod, 01302 const HarmonicModel &harmMod, 01303 const FileModel &fileMod, 01304 const AngleModel &angleMod, 01305 const MatrixModel &matrixMod 01306 ); 01307 01309 AttitudeModel( const AttitudeModel &attModel ); 01310 01312 ~AttitudeModel() NOEXCEPT; 01313 01315 void operator=( const AttitudeModel &attModel ); 01316 01317 protected: 01318 01319 private: 01321 void eraseAttitude(); 01322 }; 01323 01327 class XD_DECL PolarMotionParams 01328 { 01329 public: 01330 //Attributes 01331 double x; 01332 double y; 01333 01335 PolarMotionParams() 01336 { 01337 x = 0.; 01338 y = 0.; 01339 } 01340 01342 PolarMotionParams( double x1, double y1 ) 01343 { 01344 x = x1; 01345 y = y1; 01346 } 01347 01348 }; 01349 01353 class XD_DECL IersBulletinBrec 01354 { 01355 public: 01356 double day; 01357 double ut1Utc; 01358 double ut1Tai; 01359 PolarMotionParams polarMotionParams; 01360 01362 IersBulletinBrec() 01363 { 01364 day = 0.; 01365 ut1Utc = 0.; 01366 ut1Tai = 0.; 01367 } 01368 01370 IersBulletinBrec(double dayUtc, double diffUt1Utc, double diffUt1Tai, 01371 const PolarMotionParams &polarMotion) 01372 { 01373 day = dayUtc; 01374 ut1Utc = diffUt1Utc; 01375 ut1Tai = diffUt1Tai; 01376 polarMotionParams = polarMotion; 01377 } 01378 01379 }; 01380 01384 class XD_DECL IersBulletinArec 01385 { 01386 public: 01387 double day; 01388 double ut1Utc; 01389 double ut1Tai; 01390 PolarMotionParams polarMotionParams; 01391 01393 IersBulletinArec() 01394 { 01395 day = 0.; 01396 ut1Utc = 0.; 01397 ut1Tai = 0.; 01398 } 01399 01401 IersBulletinArec(double dayUtc, double diffUt1Utc, double diffUt1Tai, 01402 const PolarMotionParams &polarMotion) 01403 { 01404 day = dayUtc; 01405 ut1Utc = diffUt1Utc; 01406 ut1Tai = diffUt1Tai; 01407 polarMotionParams = polarMotion; 01408 } 01409 01410 }; 01411 01415 class XD_DECL PolarMotionFormula 01416 { 01417 public: 01418 01419 double ax; 01420 double bx; 01421 double cx; 01422 double dx; 01423 double ex; 01424 01425 double ay; 01426 double by; 01427 double cy; 01428 double dy; 01429 double ey; 01430 01431 double Aref; 01432 double Adiv; 01433 double Cref; 01434 double Cdiv; 01435 01437 PolarMotionFormula() 01438 { 01439 ax = 0.; 01440 bx = 0.; 01441 cx = 0.; 01442 dx = 0.; 01443 ex = 0.; 01444 01445 ay = 0.; 01446 by = 0.; 01447 cy = 0.; 01448 dy = 0.; 01449 ey = 0.; 01450 01451 Aref = 0.; 01452 Adiv = 0.; 01453 Cref = 0.; 01454 Cdiv = 0.; 01455 } 01456 01458 PolarMotionFormula(double a1, double b1, double c1, double d1, double e1, 01459 double a2, double b2, double c2, double d2, double e2, 01460 double Ar, double Ad, double Cr, double Cd) 01461 { 01462 ax = a1; 01463 bx = b1; 01464 cx = c1; 01465 dx = d1; 01466 ex = e1; 01467 01468 ay = a2; 01469 by = b2; 01470 cy = c2; 01471 dy = d2; 01472 ey = e2; 01473 01474 Aref = Ar; 01475 Adiv = Ad; 01476 Cref = Cr; 01477 Cdiv = Cd; 01478 } 01479 01480 }; 01481 01485 class XD_DECL TimeCorrelationFormula 01486 { 01487 public: 01488 01489 double a; 01490 double b; 01491 double bRef; 01492 01494 TimeCorrelationFormula() 01495 { 01496 a = 0.; 01497 b = 0.; 01498 bRef = 0.; 01499 } 01500 01502 TimeCorrelationFormula(double a1, double b1, double br) 01503 { 01504 a = a1; 01505 b = b1; 01506 bRef = br; 01507 } 01508 }; 01509 01513 class XD_DECL IersBulletinBFile 01514 { 01515 public: 01516 01517 std::string bulletinId; 01518 std::vector<IersBulletinBrec> finalTable; 01519 std::vector<IersBulletinBrec> preliminaryTable; 01520 01522 IersBulletinBFile() 01523 { 01524 bulletinId = ""; 01525 } 01526 01528 IersBulletinBFile(const std::string &bulId, 01529 const std::vector<IersBulletinBrec> &vecFinal, 01530 const std::vector<IersBulletinBrec> &vecPrel) 01531 { 01532 bulletinId = bulId; 01533 finalTable = vecFinal; 01534 preliminaryTable = vecPrel; 01535 } 01536 01537 };//class IersBulletinBFile 01538 01542 class XD_DECL IersBulletinAFile 01543 { 01544 public: 01545 01546 std::string bulletinId; 01547 std::vector<IersBulletinArec> predictionTable; 01548 PolarMotionFormula polarMotionFormula; 01549 TimeCorrelationFormula timeCorrelationFormula; 01550 01552 IersBulletinAFile() 01553 { 01554 bulletinId = ""; 01555 } 01556 01558 IersBulletinAFile(const std::string &bulId, 01559 const std::vector<IersBulletinArec> &vecPred, 01560 const PolarMotionFormula &polarFormula, 01561 const TimeCorrelationFormula &timeFormula) 01562 { 01563 bulletinId = bulId; 01564 predictionTable = vecPred; 01565 polarMotionFormula = polarFormula; 01566 timeCorrelationFormula = timeFormula; 01567 } 01568 01569 };//class IersBulletinAFile 01570 01574 class XD_DECL DemMiniTiles 01575 { 01576 public: 01577 std::string fileName; 01578 double lonSize; 01579 double latSize; 01580 01582 DemMiniTiles() 01583 { 01584 fileName = ""; 01585 lonSize = 0.; 01586 latSize = 0.; 01587 } 01588 01590 DemMiniTiles(std::string fileN, double lon, double lat) 01591 { 01592 fileName = fileN; 01593 lonSize = lon; 01594 latSize = lat; 01595 } 01596 }; // AN-492 01597 01601 class XD_DECL QuaternionPlusAngle 01602 { 01603 public: 01604 01605 //Attributes 01606 std::string quatDefFile; 01607 01608 long inertialFrame; 01609 std::vector<AttRec> quat; 01610 AngleModel angleModel; 01611 01613 QuaternionPlusAngle(){}; 01614 01616 QuaternionPlusAngle( const std::string &file, const AngleModel &angModel ) 01617 { 01618 quatDefFile = file; 01619 angleModel = angModel; 01620 } 01621 01623 ~QuaternionPlusAngle() NOEXCEPT 01624 { 01625 // Nothing to be done 01626 } 01627 }; // AN-469 01628 01629 // 01632 class XD_DECL QuaternionPlusMatrix 01633 { 01634 public: 01635 01636 //Attributes 01637 std::string quatDefFile; 01638 MatrixModel matrixModel; 01639 01641 QuaternionPlusMatrix(){}; 01642 01644 QuaternionPlusMatrix( const std::string &file, const MatrixModel &matModel ) 01645 { 01646 quatDefFile = file; 01647 matrixModel = matModel; 01648 } 01649 01651 ~QuaternionPlusMatrix() NOEXCEPT 01652 { 01653 // Nothing to be done 01654 } 01655 }; // AN-469 01656 01660 class XD_DECL AttitudeDefinitionModel 01661 { 01662 public: 01663 //Attributes 01664 long attitudeModel; 01665 long AOCS; 01666 ParamModel *paramModel; 01667 HarmonicModel *harmonicModel; 01668 FileModel *fileModel; 01669 AngleModel *angleModel; 01670 MatrixModel *matrixModel; 01671 QuaternionPlusAngle *quaternionAngleModel; 01672 QuaternionPlusMatrix * quaternionMatrixModel; 01673 01675 AttitudeDefinitionModel(); 01676 01678 AttitudeDefinitionModel( long attModel, 01679 long AOCSModel, 01680 const ParamModel &parMod, 01681 const HarmonicModel &harmMod, 01682 const FileModel &fileMod, 01683 const AngleModel &angleMod, 01684 const MatrixModel &matrixMod, 01685 const QuaternionPlusAngle &quatAngMod, 01686 const QuaternionPlusMatrix &quatMatMod 01687 ); 01688 01690 AttitudeDefinitionModel( const AttitudeDefinitionModel &attModel ); 01691 01693 ~AttitudeDefinitionModel() NOEXCEPT; 01694 01696 void operator=( const AttitudeDefinitionModel &attModel ); 01697 01698 protected: 01699 01700 private: 01702 void eraseAttitude(); 01703 }; // AN-469 01704 01705 01707 class XD_DECL AzElMask 01708 { 01709 public: 01710 long numMaskPt; 01711 long status; 01712 01713 01714 01715 01716 01717 01718 01719 01720 01721 01722 01723 01724 double azimuth[MaxStationVertices]; 01725 double elevation[MaxStationVertices]; 01726 }; 01727 01729 class XD_DECL LinkMask 01730 { 01731 public: 01732 AzElMask inclMask; 01733 AzElMask exclMask; 01734 }; 01735 01737 class XD_DECL LinkData 01738 { 01739 public: 01740 LinkMask maskData; 01741 double minTgHeight; 01742 }; 01743 01745 union XD_DECL FovConstraintsUnion 01746 { 01747 public: 01748 LinkData SCLinkData; 01749 LinkData CelestialBodyLinkData; 01750 }; 01751 01755 template <typename T> struct GenericInternals {}; // AN-823 01756 01757 }//end EECFI 01758 01759 #endif