![]() |
Earth Observation Mission CFI Software DataHandling Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.16 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 using namespace std; 00027 00028 00029 namespace EECFI 00030 { 00031 //------------------------------------------------------ 00032 // CONSTANT DATA 00033 //------------------------------------------------------ 00034 00035 //------------------------------------------------------ 00036 // DATA ENUMERATION 00037 //------------------------------------------------------ 00038 00040 typedef enum 00041 { 00042 XDCFI_ATT_QUATERNIONS = 0, 00043 XDCFI_ATT_ANGLES 00044 } AttitudeDataTypeEnum; 00045 00047 typedef enum 00048 { 00049 XDCFI_LINE_GEOM = 0, 00050 XDCFI_POINT_GEOM, 00051 XDCFI_LIMB_GEOM, 00052 XDCFI_DISTANCE_GEOM 00053 } GeomTypeEnum; 00054 00056 typedef enum 00057 { 00058 XDCFI_NO_ASAR = 0, 00059 XDCFI_NARROW_ASAR, 00060 XDCFI_WIDE_ASAR 00061 } AsarTypeEnum; 00062 00064 typedef enum 00065 { 00066 XDCFI_NO_REF = 0, 00067 XDCFI_STD_REF, 00068 XDCFI_USER_REF, 00069 XDCFI_PRED_REF, 00070 XDCFI_STD_REF_N = 10, 00071 XDCFI_USER_REF_N = 20, 00072 XDCFI_PRED_REF_N = 30, 00073 XDCFI_US76_REF = 300, 00074 XDCFI_TROPIC_REF, 00075 XDCFI_MID_SUM_REF, 00076 XDCFI_MID_WIN_REF, 00077 XDCFI_SUBAR_SUM_REF, 00078 XDCFI_SUBAR_WIN_REF, 00079 XDCFI_LUT_REF = 400, 00080 XDCFI_US76_REF_N = 3000, 00081 XDCFI_TROPIC_REF_N, 00082 XDCFI_MID_SUM_REF_N, 00083 XDCFI_MID_WIN_REF_N, 00084 XDCFI_SUBAR_SUM_REF_N, 00085 XDCFI_SUBAR_WIN_REF_N, 00086 XDCFI_LUT_REF_N = 4000 00087 } TargetRayEnum; 00088 00090 typedef enum 00091 { 00092 XDCFI_OPEN_SWATH, 00093 XDCFI_CLOSED_SWATH 00094 } SwathTypecEnum; 00095 00097 typedef enum 00098 { 00099 XDCFI_GEODETIC_SWATH_TYPE, 00100 XDCFI_INERTIAL_SWATH_TYPE 00101 } SwathPointTypeEnum; 00102 00104 typedef enum 00105 { 00106 XDCFI_SWATH_POINTING_GEOM = 0, /* Algorithms of calculation of Swaths */ 00107 XDCFI_SWATH_DISTANCE_GEOM, 00108 XDCFI_SWATH_LIMB_GEOM, 00109 XDCFI_SWATH_INERTIAL_GEOM, 00110 XDCFI_SWATH_SUBSATELLITE_GEOM, 00111 XDCFI_SWATH_ASAR_GEOM, 00112 XDCFI_SWATH_ASAR_GEOM_RANGERATE_ALGO, 00113 XDCFI_SWATH_INCIDENCE_ANGLE_GEOM // AN-665 00114 } SwathGeomEnum; 00115 00117 typedef enum 00118 { 00119 XDCFI_NOT_DEFINED = -1, 00120 XDCFI_POINT = 0, 00121 XDCFI_CIRCLE = 1, 00122 XDCFI_SEGMENT = 2, 00123 XDCFI_POLYGON = 3 00124 } ZoneTypeEnum; 00125 00127 typedef enum 00128 { 00129 XDCFI_SAT_ORBITAL_REF = 0, 00130 XDCFI_SAT_NOMINAL_ATT, 00131 XDCFI_SAT_ATT, 00132 XDCFI_INSTR_ATT 00133 } AttitudeFrameEnum; 00134 00136 typedef enum 00137 { 00138 XDCFI_BAR_MEAN_2000 = 1, 00139 XDCFI_HEL_MEAN_2000, 00140 XDCFI_GEO_MEAN_2000, 00141 XDCFI_MEAN_DATE, 00142 XDCFI_TRUE_DATE, 00143 XDCFI_PSEUDO_EARTH_FIXED, 00144 XDCFI_EARTH_FIXED, 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_NUM_MODELS 00321 } DemModelEnum; 00322 00324 typedef enum 00325 { 00326 XDCFI_DEM_GETASSE30_SOURCE_ACE, /* land-ice/snow */ 00327 XDCFI_DEM_GETASSE30_SOURCE_MSS, /* sea */ 00328 XDCFI_DEM_GETASSE30_SOURCE_EGM96, /* sea-ice */ 00329 XDCFI_DEM_GETASSE30_SOURCE_SRTM30 /* land */ 00330 } DemGetasseDataSourceEnum; 00331 00332 /* DEM Data Source Types for ACE2: 9secs and 30secs */ 00333 typedef enum 00334 { 00335 XDCFI_DEM_ACE2_SOURCE_SRTM0, /* Pure SRTM (above 60�N pure GLOBE data, below 60S pure ACE [original] data) */ 00336 XDCFI_DEM_ACE2_SOURCE_SRTM1, /* SRTM voids filled by interpolation and/or altimeter data */ 00337 XDCFI_DEM_ACE2_SOURCE_SRTM2, /* SRTM data warped using the ERS-1 Geodetic Mission */ 00338 XDCFI_DEM_ACE2_SOURCE_SRTM3, /* SRTM data warped using EnviSat & ERS-2 data */ 00339 XDCFI_DEM_ACE2_SOURCE_SRTM_LAKE, /* Mean lake level data derived from Altimetry */ 00340 XDCFI_DEM_ACE2_SOURCE_SRTM_GLOBE, /* GLOBE/ACE data warped using combined altimetry (only above 60�N) */ 00341 XDCFI_DEM_ACE2_SOURCE_SRTM_ALT /* Pure altimetry data (derived from ERS-1 Geodetic Mission, 00342 ERS-2 and EnviSat data using Delaunay Triangulation and Bilinear interpolation) */ 00343 } DemAce2DataSourceEnum; 00344 00345 /* DEM Data Source Types for GDEM v2 */ 00346 typedef enum 00347 { 00348 XDCFI_DEM_GDEM_SOURCE_NO_SOURCE_FILE = -1, 00349 XDCFI_DEM_GDEM_SOURCE_SRTM3_V3 = 0, 00350 XDCFI_DEM_GDEM_SOURCE_SRTM3_V2, 00351 XDCFI_DEM_GDEM_SOURCE_NED, 00352 XDCFI_DEM_GDEM_SOURCE_CDED, 00353 XDCFI_DEM_GDEM_SOURCE_ALASKA_DEM 00354 } DemGdemV2DataSourceEnum; 00355 00357 typedef enum 00358 { 00359 XDCFI_CFI_READ_ATT_INIT_PARSER_ERR = 0, 00360 XDCFI_CFI_READ_ATT_READ_PARAM_ERR, 00361 XDCFI_CFI_READ_ATT_WRONG_FILE_TYPE_ERR, 00362 XDCFI_CFI_READ_XML_ATT_NAVIGATION_ERR, 00363 XDCFI_CFI_READ_ATT_WRONG_DATA_TYPE_ERR, 00364 XDCFI_CFI_READ_ATT_INCONSISTENT_DATA_TYPE_ERR, 00365 XDCFI_CFI_READ_ATT_XML_DATA_BLOCK_SIZE_ERR, 00366 XDCFI_CFI_READ_ATT_WRONG_REF_FRAME_ERR, 00367 XDCFI_CFI_READ_ATT_READ_LIST_ERR, 00368 XDCFI_CFI_READ_ATT_TIME_CONV_ERR, 00369 XDCFI_CFI_READ_ATT_MEMORY_ERR, 00370 XDCFI_CFI_READ_ATT_CLEANUP_PARSER_ERR, 00371 XDCFI_CFI_READ_ATT_WRONG_TIME_REF_ERR, 00372 XDCFI_CFI_READ_ATT_WRONG_QUATERNION_ERR, 00373 XDCFI_CFI_READ_ATT_WRONG_ANGLE_ERR, 00374 XDCFI_CFI_READ_ATT_MAX_GAP_ERR, 00375 XDCFI_CFI_READ_ATT_OBSOLETE_TAG_WARN //AN-516 00376 } ReadAttErrEnum; 00377 00379 typedef enum 00380 { 00381 XDCFI_DEFAULT_VALUES = 0, 00382 XDCFI_USER_VALUES = 1 00383 } PrecisePropagUserFlagEnum; 00384 00386 typedef enum 00387 { 00388 XDCFI_NOT_SELECT = 0, 00389 XDCFI_SELECT = 1 00390 } PrecisePropagSelectionFlagEnum; 00391 00393 typedef enum 00394 { 00395 XDCFI_SGA_USE_PARAMETERS = 0, 00396 XDCFI_SGA_READ_VALUES_FROM_FILE = 1 00397 } PrecisePropagSgaFlagEnum; 00398 00400 typedef enum 00401 { 00402 XDCFI_SAT_DEFAULT = 0, 00403 XDCFI_SAT_DEFAULT1 = 1, 00404 XDCFI_SAT_DEFAULT2 = 2, 00405 XDCFI_SAT_DEFAULT3 = 3, 00406 XDCFI_SAT_DEFAULT4 = 4, 00407 XDCFI_SAT_DEFAULT5 = 5, 00408 XDCFI_SAT_DEFAULT6 = 6, 00409 XDCFI_SAT_DEFAULT7 = 7, 00410 XDCFI_SAT_DEFAULT8 = 8, 00411 XDCFI_SAT_DEFAULT9 = 9, 00412 XDCFI_SAT_ERS1 = 11, 00413 XDCFI_SAT_ERS2 = 12, 00414 XDCFI_SAT_ENVISAT = 21, 00415 XDCFI_SAT_METOP1 = 31, 00416 XDCFI_SAT_METOP2 = 32, 00417 XDCFI_SAT_METOP3 = 33, 00418 XDCFI_SAT_CRYOSAT = 41, 00419 XDCFI_SAT_ADM = 51, 00420 XDCFI_SAT_GOCE = 61, 00421 XDCFI_SAT_SMOS = 71, 00422 XDCFI_SAT_TERRASAR = 81, 00423 XDCFI_SAT_EARTHCARE = 91, 00424 XDCFI_SAT_SWARM_A = 101, 00425 XDCFI_SAT_SWARM_B = 102, 00426 XDCFI_SAT_SWARM_C = 103, 00427 XDCFI_SAT_SENTINEL_1A = 110, 00428 XDCFI_SAT_SENTINEL_1B = 111, 00429 XDCFI_SAT_SENTINEL_2 = 112, 00430 XDCFI_SAT_SENTINEL_3 = 113, 00431 XDCFI_SAT_SEOSAT = 120, 00432 XDCFI_SAT_SENTINEL_1C = 125, 00433 XDCFI_SAT_SENTINEL_2A = 126, 00434 XDCFI_SAT_SENTINEL_2B = 127, 00435 XDCFI_SAT_SENTINEL_2C = 128, 00436 XDCFI_SAT_SENTINEL_3A = 129, 00437 XDCFI_SAT_SENTINEL_3B = 130, 00438 XDCFI_SAT_SENTINEL_3C = 131, 00439 XDCFI_SAT_JASON_CSA = 132, // AN-531 00440 XDCFI_SAT_JASON_CSB = 133, // AN-531 00441 XDCFI_SAT_METOP_SG_A1 = 134, // AN-530 00442 XDCFI_SAT_METOP_SG_A2 = 135, // AN-530 00443 XDCFI_SAT_METOP_SG_A3 = 136, // AN-530 00444 XDCFI_SAT_METOP_SG_B1 = 137, // AN-530 00445 XDCFI_SAT_METOP_SG_B2 = 138, // AN-530 00446 XDCFI_SAT_METOP_SG_B3 = 139, // AN-530 00447 XDCFI_SAT_SENTINEL_5P = 140, // AN-502 00448 XDCFI_SAT_BIOMASS = 141, // AN-601 00449 XDCFI_SAT_SENTINEL_5 = 142, // AN-639 00450 XDCFI_SAT_SAOCOM_CS = 143, // AN-640 00451 XDCFI_SAT_FLEX = 144, /* AN-683 */ 00452 XDCFI_SAT_GENERIC = 200, 00453 XDCFI_SAT_GENERIC_GEO = 300, 00454 XDCFI_SAT_MTG = 301, 00455 XDCFI_SAT_GENERIC_MEO = 400 // AN-550 00456 } XDSatIdEnum; 00457 00459 typedef enum 00460 { 00461 XDCFI_BULLETIN_A = 0, 00462 XDCFI_BULLETIN_B 00463 } XDBulletinTypeEnum; 00464 00466 typedef enum 00467 { 00468 XDCFI_NO_CACHE = 0, 00469 XDCFI_PRELOAD_CACHE, 00470 XDCFI_FIFO_CACHE 00471 } DemCacheTypeEnum; // Added for AN-487 00472 00474 typedef enum 00475 { 00476 XDCFI_DEM_GEOID_COMPUTATION_DISABLED = 0, 00477 XDCFI_DEM_GEOID_COMPUTATION_ENABLED = 1 00478 } DemGeoidFlagEnum; // AN-466 00479 00481 typedef enum 00482 { 00483 XDCFI_ATT_NONE_MODEL = 0, 00484 XDCFI_ATT_AOCS_MODEL, 00485 XDCFI_ATT_PARAMETER_MODEL, 00486 XDCFI_ATT_HARMONIC_MODEL, 00487 XDCFI_ATT_FILE_MODEL, 00488 XDCFI_ATT_ANGLE_MODEL, 00489 XDCFI_ATT_MATRIX_MODEL, 00490 XDCFI_ATT_QUATERNION_ANGLE_MODEL, 00491 XDCFI_ATT_QUATERNION_MATRIX_MODEL 00492 } AttDefModelEnum; // AN-469 00493 00495 typedef enum 00496 { 00497 XDCFI_SAT_NOMINAL_ATT_DEF = 0, 00498 XDCFI_SAT_ATT_DEF, 00499 XDCFI_INSTR_ATT_DEF 00500 } XDAttDefFrameEnum; // AN-469 00501 00503 typedef enum 00504 { 00505 XDCFI_AOCS_GPM = 0, 00506 XDCFI_AOCS_LNP, 00507 XDCFI_AOCS_YSM, 00508 XDCFI_AOCS_ZDOPPLER 00509 } XDSatNominalAttAocsModeEnum; // AN-469 00510 00512 typedef enum 00513 { 00514 XDCFI_MODEL_GENERIC = 0, 00515 XDCFI_MODEL_ENVISAT, 00516 XDCFI_MODEL_CRYOSAT, 00517 XDCFI_MODEL_ADM, 00518 XDCFI_MODEL_SENTINEL1, 00519 XDCFI_MODEL_SENTINEL2, 00520 XDCFI_MODEL_GEO, 00521 XDCFI_MODEL_METOPSG /* AN-666 */ 00522 } XDSatNominalAttModelEnum; // AN-469 00523 00525 typedef enum 00526 { 00527 XDCFI_ANGLE_TYPE_TRUE_LAT_TOD = 0, 00528 XDCFI_ANGLE_TYPE_TRUE_LAT_EF /* AN-508 */ 00529 } XDAngleTypeEnum; // AN-469 00530 00532 typedef enum 00533 { 00534 XDCFI_FIT_TLE = 0, /*Used for POF, not valid for OSV LIST*/ 00535 XDCFI_FIT_TLE_LIST, 00536 XDCFI_ONE_TLE_PER_OSV 00537 } XDTLEFitmodeEnum; 00538 00540 typedef enum 00541 { 00542 XDCFI_SP3_POSITION_TYPE, 00543 XDCFI_SP3_POSITION_PLUS_VELOCITY_TYPE 00544 } XDCFISP3FileTypeEnum; // AN-550 00545 00547 typedef enum 00548 { 00549 XDCFI_SP3_GPS = 0, 00550 XDCFI_SP3_MIXED, 00551 XDCFI_SP3_GLONASS, 00552 XDCFI_SP3_LEO, 00553 XDCFI_SP3_GALILEO, 00554 XDCFI_SP3_COMPASS, 00555 XDCFI_SP3_QZSS 00556 } XDCFISP3FileDescriptorEnum; // AN-550 00557 00559 typedef enum 00560 { 00561 XDCFI_SP3_TIME_GPS = 0, 00562 XDCFI_SP3_TIME_GLONASS, 00563 XDCFI_SP3_TIME_GALILEO, 00564 XDCFI_SP3_TIME_TAI, 00565 XDCFI_SP3_TIME_UTC, 00566 XDCFI_SP3_TIME_QZSS 00567 } XDCFISP3TimeSystemEnum; 00568 00570 typedef enum 00571 { 00572 XDCFI_SAT_GPS = 0, 00573 XDCFI_SAT_GLONASS, 00574 XDCFI_SAT_LEO, 00575 XDCFI_SAT_GALILEO, 00576 XDCFI_SAT_COMPASS, 00577 XDCFI_SAT_QZSS 00578 } XDCFISATSP3SatDescriptorEnum; 00579 00581 typedef enum 00582 { 00583 XDCFI_DORIS_CRYOSAT_TYPE, 00584 XDCFI_DORIS_SENTINEL3_TYPE, 00585 XDCFI_DORIS_JASON_TYPE, // AN-701 00586 XDCFI_DORIS_UNKNOWN_TYPE // AN-701 00587 } XDDORISFileTypeEnum; //AN-524 00588 00590 typedef enum 00591 { 00592 XDCFI_FOV_CONSTRAINTS_SC_LINK, 00593 XDCFI_FOV_CONSTRAINTS_CELESTIAL_BODY_LINK, // AN-677 00594 XDCFI_FOV_CONTRAINTS_MAX 00595 } XD_Fov_constraints_enum; // AN-628 00596 00598 typedef enum 00599 { 00600 XDCFI_FALSE = 0, 00601 XDCFI_TRUE = 1 00602 } XDCFI_Boolean; // AN-628 00603 00604 00605 /*ANR-638*/ 00606 typedef enum 00607 { 00608 XDCFI_FFS_DEFAULT = 0, 00609 XDCFI_FFS_V1, 00610 XDCFI_FFS_V2, 00611 XDCFI_FFS_V3, 00612 XDCFI_FFS_MAX, 00613 XD_FFS_ERROR 00614 } XDCFI_EOFFS_version; 00615 static const char file_format_standard_version[sizeof(XDCFI_EOFFS_version)+2][250] = {"DEFAULT", "1.0", "2.0", "3.0", "MAX", "ERROR"}; 00616 00617 //------------------------------------------------------ 00618 // DATA STRUCTURES 00619 //------------------------------------------------------ 00620 00624 class XD_DECL AngleModel 00625 { 00626 public: 00627 00628 //Attributes 00629 double angles[3]; 00630 double offsets[3]; 00631 00633 AngleModel(){}; 00634 00636 AngleModel( double *angle, double *offset) 00637 { 00638 for ( int i = 0 ; i < 3 ; ++i) 00639 { 00640 angles[i] = angle[i]; 00641 offsets[i] = offset[i]; 00642 }// end for i 00643 } 00644 }; 00645 00649 class XD_DECL Asar 00650 { 00651 public: 00652 //Attributes 00653 long asarType; 00654 double slantRangeLeft; 00655 double slantRangeRight; 00656 00658 Asar(){}; 00659 00664 Asar( const long asarTyp, double slantLeft, double slantRight) 00665 { 00666 asarType = asarTyp; 00667 slantRangeLeft = slantLeft; 00668 slantRangeRight = slantRight; 00669 } 00670 };//class Asar 00671 00672 00676 class XD_DECL BulbTable 00677 { 00678 public: 00679 double day; 00680 double ut1Utc; 00681 double ut1Tai; 00682 00684 BulbTable(){}; 00685 00687 BulbTable(double dayUtc, double diffUt1Utc, double diffUt1Tai) 00688 { 00689 day = dayUtc; 00690 ut1Utc = diffUt1Utc; 00691 ut1Tai = diffUt1Tai; 00692 } 00693 00694 }; 00695 00699 class XD_DECL DemPoint 00700 { 00701 public: 00702 00703 //Attributes 00704 double lon; 00705 double lat; 00706 double alt; 00707 00709 DemPoint(){}; 00710 00712 DemPoint( double longitude, double latitude, double altitude) 00713 { 00714 lon = longitude; 00715 lat = latitude; 00716 alt = altitude; 00717 } 00718 }; 00719 00723 class XD_DECL DorisHeader 00724 { 00725 public: 00726 //Atributtes 00727 string fileName; 00728 string sensingStart; // UTC 00729 string sensingStop; // UTC 00730 long relOrbit; 00731 long absOrbit; 00732 double deltaUt1; 00733 string leapUtc; 00734 int leapSign; 00735 int leapErr; 00736 long numDsd; 00737 long dsOffset; 00738 long numDsr; 00739 00740 // extra data: the following values are not read from the file. 00741 // but it must be provided for the writing function 00742 //MPH 00743 string procStageCode; 00744 string refDoc; 00745 string procTime; 00746 string softwareVersion; 00747 string phase; 00748 long cycle; 00749 string stateVectorTime; 00750 double xPosition; 00751 double yPosition; 00752 double zPosition; 00753 double xVelocity; 00754 double yVelocity; 00755 double zVelocity; 00756 string stateVectorSource; 00757 string productErr; 00758 long totSize; 00759 long numDataSets; 00760 00761 //SPH 00762 string sphDescriptor; 00763 string sensingStartTai; // TAI 00764 long absOrbitStart; 00765 double relTimeAscNodeStart; 00766 string sensingStopTai; // TAI 00767 long absOrbitStop; 00768 double relTimeAscNodeStop; 00769 string equatorCrossTime; 00770 long equatorCrossLong; 00771 string ascendingFlag; 00772 long startLat; 00773 long startLong; 00774 long stopLat; 00775 long stopLong; 00776 long numIsps; 00777 long numMissingIsps; 00778 long numErrorIsps; 00779 long numDiscardedIsps; 00780 long numRsIsps; 00781 long numRsCorrections; 00782 long dsrSize; 00783 00785 DorisHeader(); 00786 00788 DorisHeader(string fileNam, 00789 string senStart, 00790 string sensStop, 00791 long relOrbi, 00792 long absOrbi, 00793 double delta_Ut1, 00794 string leap_Utc, 00795 int leap_Sign, 00796 int leap_Err, 00797 long num_Dsd, 00798 long ds_Offset, 00799 long num_Dsr); 00800 00802 DorisHeader(string fileNam, 00803 string sensStart, 00804 string sensStop, 00805 long relOrbi, 00806 long absOrbi, 00807 double delta_Ut1, 00808 string leap_Utc, 00809 int leap_Sign, 00810 int leap_Err, 00811 long num_Dsd, 00812 long ds_Offset, 00813 long num_Dsr, 00814 string procStageCod, 00815 string ref_Doc, 00816 string procTim, 00817 string softVersion, 00818 string phaseIn, 00819 long cycleIn, 00820 string stateVectorTim, 00821 double xPos, 00822 double yPos, 00823 double zPos, 00824 double xVel, 00825 double yVel, 00826 double zVel, 00827 string stateVectSource, 00828 string prodErr, 00829 long tot_Size, 00830 long numDataSet, 00831 string sphDesc, 00832 string sensStartTai, 00833 long absOrbStart, 00834 double relTimAscNodeStart, 00835 string sensStopTai, 00836 long absOrbStop, 00837 double relTimAscNodeStop, 00838 string equator_CrossTime, 00839 long equator_CrossLong, 00840 string ascendFlag, 00841 long start_Lat, 00842 long start_Long, 00843 long stop_Lat, 00844 long stop_Long, 00845 long num_Isps, 00846 long numMissIsps, 00847 long numErrIsps, 00848 long numDiscardIsps, 00849 long num_RsIsps, 00850 long num_RsCorrections, 00851 long dsr_Size 00852 ); 00853 00854 }; 00855 00859 class XD_DECL FileModel 00860 { 00861 public: 00862 00863 //Attributes 00864 vector<string> files; 00865 string auxFile; 00866 long timeRef; 00867 double time0; 00868 double time1; 00869 00871 FileModel(){}; 00872 00874 FileModel( vector<string> &fileNames, 00875 const string auxiliaryFile, 00876 const long timeReference, 00877 const double timeZero, 00878 const double timeOne ) 00879 { 00880 files = fileNames; 00881 auxFile = auxiliaryFile; 00882 timeRef = timeReference; 00883 time0 = timeZero; 00884 time1 = timeOne; 00885 } 00886 00887 }; 00888 00892 class XD_DECL HarmonicData 00893 { 00894 public: 00895 00896 //Attributes 00897 vector<long> harmonicTypePitch; 00898 vector<long> harmonicTypeRoll; 00899 vector<long> harmonicTypeYaw; 00900 vector<double> harmonicCoeffPitch; 00901 vector<double> harmonicCoeffRoll; 00902 vector<double> harmonicCoeffYaw; 00903 00905 HarmonicData(){}; 00906 00908 HarmonicData( vector<long> &harmonicTypPitch, 00909 vector<long> &harmonicTypRoll, 00910 vector<long> &harmonicTypYaw, 00911 vector<double> &harmonicCoefPitch, 00912 vector<double> &harmonicCoefRoll, 00913 vector<double> &harmonicCoefYaw ) 00914 { 00915 harmonicTypePitch = harmonicTypPitch; 00916 harmonicTypeRoll = harmonicTypRoll; 00917 harmonicTypeYaw = harmonicTypYaw; 00918 harmonicCoeffPitch = harmonicCoefPitch; 00919 harmonicCoeffRoll = harmonicCoefRoll; 00920 harmonicCoeffYaw = harmonicCoefYaw; 00921 } 00922 00923 }; 00924 00928 class XD_DECL HarmonicModel 00929 { 00930 public: 00931 00932 //Attributes 00933 long angleType; 00934 HarmonicData harmonicData; 00935 double offsets[3]; 00936 00938 HarmonicModel(){}; 00939 00941 HarmonicModel( const long angleTyp, HarmonicData &harmonicDat, double *offset) 00942 { 00943 angleType = angleTyp; 00944 harmonicData = harmonicDat; 00945 00946 for ( int i = 0 ; i < 3 ; ++i ) 00947 { 00948 offsets[i] = offset[i]; 00949 } 00950 } 00951 }; 00952 00956 class XD_DECL MatrixModel 00957 { 00958 public: 00959 00960 //Attributes 00961 double attMatrix[3][3]; 00962 double offsets[3]; 00963 00965 MatrixModel(){}; 00966 00968 MatrixModel( double **matrix, double *offset ) 00969 { 00970 for ( int i = 0 ; i < 3 ; ++i) 00971 { 00972 for ( int j = 0 ; j < 3 ; ++j ) 00973 { 00974 attMatrix[i][j] = matrix[i][j]; 00975 }// end for j 00976 offsets[i] = offset[i]; 00977 }// end for i 00978 } 00979 }; 00980 00984 class XD_DECL MlstHarmonics 00985 { 00986 public: 00987 00988 //Attributes 00989 double refTime; 00990 double period; 00991 double sinAmplitude; 00992 double cosAmplitude; 00993 00995 MlstHarmonics() 00996 { 00997 refTime = 0.; 00998 period = 1.; 00999 sinAmplitude = 0.; 01000 cosAmplitude = 0.; 01001 }; 01002 01004 MlstHarmonics(double time_in, double period_in, 01005 double sinAmp_in, double cosAmp_in) 01006 { 01007 refTime = time_in; 01008 period = period_in; 01009 sinAmplitude = sinAmp_in; 01010 cosAmplitude = cosAmp_in; 01011 } 01012 }; 01013 01017 class XD_DECL MlstNonlinearDrift 01018 { 01019 public: 01020 01021 //Attributes 01022 long linearApproxValidity; 01023 double quadraticTerm; 01024 vector<MlstHarmonics> mlstHarmonics; 01025 01027 MlstNonlinearDrift() 01028 { 01029 long i; 01030 01031 linearApproxValidity = 99999; 01032 quadraticTerm = 0.; 01033 for (i = 0 ; i < 2 ; i ++ ) 01034 { 01035 mlstHarmonics.push_back(MlstHarmonics()); 01036 } 01037 }; 01038 01040 MlstNonlinearDrift(long linApprox, double quadratic, const vector<MlstHarmonics> &harmonics) 01041 { 01042 linearApproxValidity = linApprox; 01043 quadraticTerm = quadratic; 01044 mlstHarmonics = harmonics; 01045 } 01046 }; 01047 01051 class XD_DECL ParamModel 01052 { 01053 public: 01054 01055 //Attributes 01056 long model; 01057 vector<double> modelParam; 01058 01060 ParamModel(){}; 01061 01063 ParamModel( const long mod, vector<double> &modParam) 01064 { 01065 model = mod; 01066 modelParam = modParam; 01067 } 01068 }; 01069 01073 class XD_DECL SwathGeometry 01074 { 01075 public: 01076 01077 //Attributes 01078 long geometryType; 01079 double azimuth; 01080 double elevation; 01081 double altitude; 01082 double distance; 01083 double angle; 01084 01086 SwathGeometry(){}; 01087 01089 SwathGeometry( long geomType, double azim, double elevat, 01090 double alt, double dist, double ang) 01091 { 01092 geometryType = geomType; 01093 azimuth = azim; 01094 elevation = elevat; 01095 altitude = alt; 01096 distance = dist; 01097 angle = ang; // AN-665 01098 } 01099 }; 01100 01104 class XD_DECL TrackerLimits 01105 { 01106 public: 01107 01108 //Attributes 01109 double maxPenalty; 01110 double normThr; 01111 double maxGap; 01112 01114 TrackerLimits(){}; 01115 01117 TrackerLimits( double maxPenal,double normThreshold, double maximumGap) 01118 { 01119 maxPenalty = maxPenal; 01120 normThr = normThreshold; 01121 maxGap = maximumGap; 01122 } 01123 }; 01124 01128 class XD_DECL StfPt 01129 { 01130 public: 01131 01132 //Attributes 01133 double lon; 01134 double lat; 01135 01137 StfPt(){}; 01138 01140 StfPt( double longitude, double latitude ) 01141 { 01142 lon = longitude; 01143 lat = latitude; 01144 } 01145 }; 01146 01150 class XD_DECL StfVhr 01151 { 01152 public: 01153 01154 //Attributes 01155 string stfName; 01156 string ReferenceOSF; 01157 string ReferenceSDF; 01158 long swathType; 01159 long swathPointType; 01160 01161 double timeStep; 01162 long refractionMode; 01163 double frequency; 01164 01165 long numPoints; 01166 vector<double> altitude; 01167 01168 bool geometryFlag; 01169 01170 long repCycle; 01171 long cycleLength; 01172 double mlstDrift; 01173 01174 long absOrbit; 01175 long orbitStart; 01176 long orbitStop; 01177 01178 double position[3]; 01179 double velocity[3]; 01180 01182 StfVhr(); 01183 01185 StfVhr( string stfNam, 01186 string refOSF, 01187 string refSDF, 01188 long swathTyp, 01189 long swathPointTyp, 01190 double timStep, 01191 long refrMode, 01192 double freq, 01193 long numP, 01194 const vector<double> &alt, 01195 bool geomFlag, 01196 long repCycl, 01197 long cyclLength, 01198 double meanlstDrift, 01199 long absOrb, 01200 long orbit0, 01201 long orbit1, 01202 double *pos, 01203 double *vel 01204 ); 01205 01207 StfVhr( const StfVhr &stfVhr ); 01208 01210 ~StfVhr(); 01211 01213 void operator=( const StfVhr &stfVhr ); 01214 01215 };//class StfVhr 01216 01220 class XD_DECL ZonePoint 01221 { 01222 public: 01223 01224 //Attributes 01225 double ptLong; 01226 double ptLat; 01227 01229 ZonePoint(){}; 01230 01232 ZonePoint( double ptLongitude, double ptLatitude) 01233 { 01234 ptLong = ptLongitude; 01235 ptLat = ptLatitude; 01236 } 01237 }; 01238 01242 class XD_DECL AttitudeModel 01243 { 01244 public: 01245 //Attributes 01246 long attitudeModel; 01247 long AOCS; 01248 ParamModel *paramModel; 01249 HarmonicModel *harmonicModel; 01250 FileModel *fileModel; 01251 AngleModel *angleModel; 01252 MatrixModel *matrixModel; 01253 01255 AttitudeModel(); 01256 01258 AttitudeModel( long attModel, 01259 long AOCSModel, 01260 ParamModel &parMod, 01261 HarmonicModel &harmMod, 01262 FileModel &fileMod, 01263 AngleModel &angleMod, 01264 MatrixModel &matrixMod 01265 ); 01266 01268 AttitudeModel( const AttitudeModel &attModel ); 01269 01271 ~AttitudeModel(); 01272 01274 void operator=( const AttitudeModel &attModel ); 01275 01276 protected: 01277 01278 private: 01280 void eraseAttitude(); 01281 }; 01282 01286 class XD_DECL PolarMotionParams 01287 { 01288 public: 01289 //Attributes 01290 double x; 01291 double y; 01292 01294 PolarMotionParams() 01295 { 01296 x = 0.; 01297 y = 0.; 01298 } 01299 01301 PolarMotionParams( double x1, double y1 ) 01302 { 01303 x = x1; 01304 y = y1; 01305 } 01306 01307 }; 01308 01312 class XD_DECL IersBulletinBrec 01313 { 01314 public: 01315 double day; 01316 double ut1Utc; 01317 double ut1Tai; 01318 PolarMotionParams polarMotionParams; 01319 01321 IersBulletinBrec() 01322 { 01323 day = 0.; 01324 ut1Utc = 0.; 01325 ut1Tai = 0.; 01326 } 01327 01329 IersBulletinBrec(double dayUtc, double diffUt1Utc, double diffUt1Tai, 01330 PolarMotionParams polarMotion) 01331 { 01332 day = dayUtc; 01333 ut1Utc = diffUt1Utc; 01334 ut1Tai = diffUt1Tai; 01335 polarMotionParams = polarMotion; 01336 } 01337 01338 }; 01339 01343 class XD_DECL IersBulletinArec 01344 { 01345 public: 01346 double day; 01347 double ut1Utc; 01348 double ut1Tai; 01349 PolarMotionParams polarMotionParams; 01350 01352 IersBulletinArec() 01353 { 01354 day = 0.; 01355 ut1Utc = 0.; 01356 ut1Tai = 0.; 01357 } 01358 01360 IersBulletinArec(double dayUtc, double diffUt1Utc, double diffUt1Tai, 01361 PolarMotionParams polarMotion) 01362 { 01363 day = dayUtc; 01364 ut1Utc = diffUt1Utc; 01365 ut1Tai = diffUt1Tai; 01366 polarMotionParams = polarMotion; 01367 } 01368 01369 }; 01370 01374 class XD_DECL PolarMotionFormula 01375 { 01376 public: 01377 01378 double ax; 01379 double bx; 01380 double cx; 01381 double dx; 01382 double ex; 01383 01384 double ay; 01385 double by; 01386 double cy; 01387 double dy; 01388 double ey; 01389 01390 double Aref; 01391 double Adiv; 01392 double Cref; 01393 double Cdiv; 01394 01396 PolarMotionFormula() 01397 { 01398 ax = 0.; 01399 bx = 0.; 01400 cx = 0.; 01401 dx = 0.; 01402 ex = 0.; 01403 01404 ay = 0.; 01405 by = 0.; 01406 cy = 0.; 01407 dy = 0.; 01408 ey = 0.; 01409 01410 Aref = 0.; 01411 Adiv = 0.; 01412 Cref = 0.; 01413 Cdiv = 0.; 01414 } 01415 01417 PolarMotionFormula(double a1, double b1, double c1, double d1, double e1, 01418 double a2, double b2, double c2, double d2, double e2, 01419 double Ar, double Ad, double Cr, double Cd) 01420 { 01421 ax = a1; 01422 bx = b1; 01423 cx = c1; 01424 dx = d1; 01425 ex = e1; 01426 01427 ay = a2; 01428 by = b2; 01429 cy = c2; 01430 dy = d2; 01431 ey = e2; 01432 01433 Aref = Ar; 01434 Adiv = Ad; 01435 Cref = Cr; 01436 Cdiv = Cd; 01437 } 01438 01439 }; 01440 01444 class XD_DECL TimeCorrelationFormula 01445 { 01446 public: 01447 01448 double a; 01449 double b; 01450 double bRef; 01451 01453 TimeCorrelationFormula() 01454 { 01455 a = 0.; 01456 b = 0.; 01457 bRef = 0.; 01458 } 01459 01461 TimeCorrelationFormula(double a1, double b1, double br) 01462 { 01463 a = a1; 01464 b = b1; 01465 bRef = br; 01466 } 01467 }; 01468 01472 class XD_DECL IersBulletinBFile 01473 { 01474 public: 01475 01476 string bulletinId; 01477 vector<IersBulletinBrec> finalTable; 01478 vector<IersBulletinBrec> preliminaryTable; 01479 01481 IersBulletinBFile() 01482 { 01483 bulletinId = ""; 01484 } 01485 01487 IersBulletinBFile(string bulId, 01488 vector<IersBulletinBrec> &vecFinal, 01489 vector<IersBulletinBrec> &vecPrel) 01490 { 01491 bulletinId = bulId; 01492 finalTable = vecFinal; 01493 preliminaryTable = vecPrel; 01494 } 01495 01496 };//class IersBulletinBFile 01497 01501 class XD_DECL IersBulletinAFile 01502 { 01503 public: 01504 01505 string bulletinId; 01506 vector<IersBulletinArec> predictionTable; 01507 PolarMotionFormula polarMotionFormula; 01508 TimeCorrelationFormula timeCorrelationFormula; 01509 01511 IersBulletinAFile() 01512 { 01513 bulletinId = ""; 01514 } 01515 01517 IersBulletinAFile(string bulId, 01518 vector<IersBulletinArec> &vecPred, 01519 PolarMotionFormula &polarFormula, 01520 TimeCorrelationFormula &timeFormula) 01521 { 01522 bulletinId = bulId; 01523 predictionTable = vecPred; 01524 polarMotionFormula = polarFormula; 01525 timeCorrelationFormula = timeFormula; 01526 } 01527 01528 };//class IersBulletinAFile 01529 01533 class XD_DECL DemMiniTiles 01534 { 01535 public: 01536 string fileName; 01537 double lonSize; 01538 double latSize; 01539 01541 DemMiniTiles() 01542 { 01543 fileName = ""; 01544 lonSize = 0.; 01545 latSize = 0.; 01546 } 01547 01549 DemMiniTiles(string fileN, double lon, double lat) 01550 { 01551 fileName = fileN; 01552 lonSize = lon; 01553 latSize = lat; 01554 } 01555 }; // AN-492 01556 01560 class XD_DECL QuaternionPlusAngle 01561 { 01562 public: 01563 01564 //Attributes 01565 string quatDefFile; 01566 01567 long inertialFrame; 01568 vector<AttRec> quat; 01569 AngleModel angleModel; 01570 01572 QuaternionPlusAngle(){}; 01573 01575 QuaternionPlusAngle( string file, AngleModel &angModel ) 01576 { 01577 quatDefFile = file; 01578 angleModel = angModel; 01579 } 01580 01582 ~QuaternionPlusAngle() 01583 { 01584 // Nothing to be done 01585 } 01586 }; // AN-469 01587 01588 // 01591 class XD_DECL QuaternionPlusMatrix 01592 { 01593 public: 01594 01595 //Attributes 01596 string quatDefFile; 01597 MatrixModel matrixModel; 01598 01600 QuaternionPlusMatrix(){}; 01601 01603 QuaternionPlusMatrix( string file, MatrixModel &matModel ) 01604 { 01605 quatDefFile = file; 01606 matrixModel = matModel; 01607 } 01608 01610 ~QuaternionPlusMatrix() 01611 { 01612 // Nothing to be done 01613 } 01614 }; // AN-469 01615 01619 class XD_DECL AttitudeDefinitionModel 01620 { 01621 public: 01622 //Attributes 01623 long attitudeModel; 01624 long AOCS; 01625 ParamModel *paramModel; 01626 HarmonicModel *harmonicModel; 01627 FileModel *fileModel; 01628 AngleModel *angleModel; 01629 MatrixModel *matrixModel; 01630 QuaternionPlusAngle *quaternionAngleModel; 01631 QuaternionPlusMatrix * quaternionMatrixModel; 01632 01634 AttitudeDefinitionModel(); 01635 01637 AttitudeDefinitionModel( long attModel, 01638 long AOCSModel, 01639 ParamModel &parMod, 01640 HarmonicModel &harmMod, 01641 FileModel &fileMod, 01642 AngleModel &angleMod, 01643 MatrixModel &matrixMod, 01644 QuaternionPlusAngle &quatAngMod, 01645 QuaternionPlusMatrix &quatMatMod 01646 ); 01647 01649 AttitudeDefinitionModel( const AttitudeDefinitionModel &attModel ); 01650 01652 ~AttitudeDefinitionModel(); 01653 01655 void operator=( const AttitudeDefinitionModel &attModel ); 01656 01657 protected: 01658 01659 private: 01661 void eraseAttitude(); 01662 }; // AN-469 01663 01664 01666 class XD_DECL AzElMask 01667 { 01668 public: 01669 long numMaskPt; 01670 long status; 01671 01672 01673 01674 01675 01676 01677 01678 01679 01680 01681 01682 01683 double azimuth[MaxStationVertices]; 01684 double elevation[MaxStationVertices]; 01685 }; 01686 01688 class XD_DECL LinkMask 01689 { 01690 public: 01691 AzElMask inclMask; 01692 AzElMask exclMask; 01693 }; 01694 01696 class XD_DECL LinkData 01697 { 01698 public: 01699 LinkMask maskData; 01700 double minTgHeight; 01701 }; 01702 01704 union XD_DECL FovConstraintsUnion 01705 { 01706 public: 01707 LinkData SCLinkData; 01708 LinkData CelestialBodyLinkData; 01709 }; 01710 01711 }//end EECFI 01712 01713 #endif