![]() |
Earth Observation Mission CFI Software DataHandling Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.15 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_NUM_MODELS 00320 } DemModelEnum; 00321 00323 typedef enum 00324 { 00325 XDCFI_DEM_GETASSE30_SOURCE_ACE, /* land-ice/snow */ 00326 XDCFI_DEM_GETASSE30_SOURCE_MSS, /* sea */ 00327 XDCFI_DEM_GETASSE30_SOURCE_EGM96, /* sea-ice */ 00328 XDCFI_DEM_GETASSE30_SOURCE_SRTM30 /* land */ 00329 } DemGetasseDataSourceEnum; 00330 00331 /* DEM Data Source Types for ACE2: 9secs and 30secs */ 00332 typedef enum 00333 { 00334 XDCFI_DEM_ACE2_SOURCE_SRTM0, /* Pure SRTM (above 60�N pure GLOBE data, below 60S pure ACE [original] data) */ 00335 XDCFI_DEM_ACE2_SOURCE_SRTM1, /* SRTM voids filled by interpolation and/or altimeter data */ 00336 XDCFI_DEM_ACE2_SOURCE_SRTM2, /* SRTM data warped using the ERS-1 Geodetic Mission */ 00337 XDCFI_DEM_ACE2_SOURCE_SRTM3, /* SRTM data warped using EnviSat & ERS-2 data */ 00338 XDCFI_DEM_ACE2_SOURCE_SRTM_LAKE, /* Mean lake level data derived from Altimetry */ 00339 XDCFI_DEM_ACE2_SOURCE_SRTM_GLOBE, /* GLOBE/ACE data warped using combined altimetry (only above 60�N) */ 00340 XDCFI_DEM_ACE2_SOURCE_SRTM_ALT /* Pure altimetry data (derived from ERS-1 Geodetic Mission, 00341 ERS-2 and EnviSat data using Delaunay Triangulation and Bilinear interpolation) */ 00342 } DemAce2DataSourceEnum; 00343 00344 /* DEM Data Source Types for GDEM v2 */ 00345 typedef enum 00346 { 00347 XDCFI_DEM_GDEM_SOURCE_NO_SOURCE_FILE = -1, 00348 XDCFI_DEM_GDEM_SOURCE_SRTM3_V3 = 0, 00349 XDCFI_DEM_GDEM_SOURCE_SRTM3_V2, 00350 XDCFI_DEM_GDEM_SOURCE_NED, 00351 XDCFI_DEM_GDEM_SOURCE_CDED, 00352 XDCFI_DEM_GDEM_SOURCE_ALASKA_DEM 00353 } DemGdemV2DataSourceEnum; 00354 00356 typedef enum 00357 { 00358 XDCFI_CFI_READ_ATT_INIT_PARSER_ERR = 0, 00359 XDCFI_CFI_READ_ATT_READ_PARAM_ERR, 00360 XDCFI_CFI_READ_ATT_WRONG_FILE_TYPE_ERR, 00361 XDCFI_CFI_READ_XML_ATT_NAVIGATION_ERR, 00362 XDCFI_CFI_READ_ATT_WRONG_DATA_TYPE_ERR, 00363 XDCFI_CFI_READ_ATT_INCONSISTENT_DATA_TYPE_ERR, 00364 XDCFI_CFI_READ_ATT_XML_DATA_BLOCK_SIZE_ERR, 00365 XDCFI_CFI_READ_ATT_WRONG_REF_FRAME_ERR, 00366 XDCFI_CFI_READ_ATT_READ_LIST_ERR, 00367 XDCFI_CFI_READ_ATT_TIME_CONV_ERR, 00368 XDCFI_CFI_READ_ATT_MEMORY_ERR, 00369 XDCFI_CFI_READ_ATT_CLEANUP_PARSER_ERR, 00370 XDCFI_CFI_READ_ATT_WRONG_TIME_REF_ERR, 00371 XDCFI_CFI_READ_ATT_WRONG_QUATERNION_ERR, 00372 XDCFI_CFI_READ_ATT_WRONG_ANGLE_ERR, 00373 XDCFI_CFI_READ_ATT_MAX_GAP_ERR, 00374 XDCFI_CFI_READ_ATT_OBSOLETE_TAG_WARN //AN-516 00375 } ReadAttErrEnum; 00376 00378 typedef enum 00379 { 00380 XDCFI_DEFAULT_VALUES = 0, 00381 XDCFI_USER_VALUES = 1 00382 } PrecisePropagUserFlagEnum; 00383 00385 typedef enum 00386 { 00387 XDCFI_NOT_SELECT = 0, 00388 XDCFI_SELECT = 1 00389 } PrecisePropagSelectionFlagEnum; 00390 00392 typedef enum 00393 { 00394 XDCFI_SGA_USE_PARAMETERS = 0, 00395 XDCFI_SGA_READ_VALUES_FROM_FILE = 1 00396 } PrecisePropagSgaFlagEnum; 00397 00399 typedef enum 00400 { 00401 XDCFI_SAT_DEFAULT = 0, 00402 XDCFI_SAT_DEFAULT1 = 1, 00403 XDCFI_SAT_DEFAULT2 = 2, 00404 XDCFI_SAT_DEFAULT3 = 3, 00405 XDCFI_SAT_DEFAULT4 = 4, 00406 XDCFI_SAT_DEFAULT5 = 5, 00407 XDCFI_SAT_DEFAULT6 = 6, 00408 XDCFI_SAT_DEFAULT7 = 7, 00409 XDCFI_SAT_DEFAULT8 = 8, 00410 XDCFI_SAT_DEFAULT9 = 9, 00411 XDCFI_SAT_ERS1 = 11, 00412 XDCFI_SAT_ERS2 = 12, 00413 XDCFI_SAT_ENVISAT = 21, 00414 XDCFI_SAT_METOP1 = 31, 00415 XDCFI_SAT_METOP2 = 32, 00416 XDCFI_SAT_METOP3 = 33, 00417 XDCFI_SAT_CRYOSAT = 41, 00418 XDCFI_SAT_ADM = 51, 00419 XDCFI_SAT_GOCE = 61, 00420 XDCFI_SAT_SMOS = 71, 00421 XDCFI_SAT_TERRASAR = 81, 00422 XDCFI_SAT_EARTHCARE = 91, 00423 XDCFI_SAT_SWARM_A = 101, 00424 XDCFI_SAT_SWARM_B = 102, 00425 XDCFI_SAT_SWARM_C = 103, 00426 XDCFI_SAT_SENTINEL_1A = 110, 00427 XDCFI_SAT_SENTINEL_1B = 111, 00428 XDCFI_SAT_SENTINEL_2 = 112, 00429 XDCFI_SAT_SENTINEL_3 = 113, 00430 XDCFI_SAT_SEOSAT = 120, 00431 XDCFI_SAT_SENTINEL_1C = 125, 00432 XDCFI_SAT_SENTINEL_2A = 126, 00433 XDCFI_SAT_SENTINEL_2B = 127, 00434 XDCFI_SAT_SENTINEL_2C = 128, 00435 XDCFI_SAT_SENTINEL_3A = 129, 00436 XDCFI_SAT_SENTINEL_3B = 130, 00437 XDCFI_SAT_SENTINEL_3C = 131, 00438 XDCFI_SAT_JASON_CSA = 132, // AN-531 00439 XDCFI_SAT_JASON_CSB = 133, // AN-531 00440 XDCFI_SAT_METOP_SG_A1 = 134, // AN-530 00441 XDCFI_SAT_METOP_SG_A2 = 135, // AN-530 00442 XDCFI_SAT_METOP_SG_A3 = 136, // AN-530 00443 XDCFI_SAT_METOP_SG_B1 = 137, // AN-530 00444 XDCFI_SAT_METOP_SG_B2 = 138, // AN-530 00445 XDCFI_SAT_METOP_SG_B3 = 139, // AN-530 00446 XDCFI_SAT_SENTINEL_5P = 140, // AN-502 00447 XDCFI_SAT_BIOMASS = 141, // AN-601 00448 XDCFI_SAT_SENTINEL_5 = 142, // AN-639 00449 XDCFI_SAT_SAOCOM_CS = 143, // AN-640 00450 XDCFI_SAT_FLEX = 144, /* AN-683 */ 00451 XDCFI_SAT_GENERIC = 200, 00452 XDCFI_SAT_GENERIC_GEO = 300, 00453 XDCFI_SAT_MTG = 301, 00454 XDCFI_SAT_GENERIC_MEO = 400 // AN-550 00455 } XDSatIdEnum; 00456 00458 typedef enum 00459 { 00460 XDCFI_BULLETIN_A = 0, 00461 XDCFI_BULLETIN_B 00462 } XDBulletinTypeEnum; 00463 00465 typedef enum 00466 { 00467 XDCFI_NO_CACHE = 0, 00468 XDCFI_PRELOAD_CACHE, 00469 XDCFI_FIFO_CACHE 00470 } DemCacheTypeEnum; // Added for AN-487 00471 00473 typedef enum 00474 { 00475 XDCFI_DEM_GEOID_COMPUTATION_DISABLED = 0, 00476 XDCFI_DEM_GEOID_COMPUTATION_ENABLED = 1 00477 } DemGeoidFlagEnum; // AN-466 00478 00480 typedef enum 00481 { 00482 XDCFI_ATT_NONE_MODEL = 0, 00483 XDCFI_ATT_AOCS_MODEL, 00484 XDCFI_ATT_PARAMETER_MODEL, 00485 XDCFI_ATT_HARMONIC_MODEL, 00486 XDCFI_ATT_FILE_MODEL, 00487 XDCFI_ATT_ANGLE_MODEL, 00488 XDCFI_ATT_MATRIX_MODEL, 00489 XDCFI_ATT_QUATERNION_ANGLE_MODEL, 00490 XDCFI_ATT_QUATERNION_MATRIX_MODEL 00491 } AttDefModelEnum; // AN-469 00492 00494 typedef enum 00495 { 00496 XDCFI_SAT_NOMINAL_ATT_DEF = 0, 00497 XDCFI_SAT_ATT_DEF, 00498 XDCFI_INSTR_ATT_DEF 00499 } XDAttDefFrameEnum; // AN-469 00500 00502 typedef enum 00503 { 00504 XDCFI_AOCS_GPM = 0, 00505 XDCFI_AOCS_LNP, 00506 XDCFI_AOCS_YSM, 00507 XDCFI_AOCS_ZDOPPLER 00508 } XDSatNominalAttAocsModeEnum; // AN-469 00509 00511 typedef enum 00512 { 00513 XDCFI_MODEL_GENERIC = 0, 00514 XDCFI_MODEL_ENVISAT, 00515 XDCFI_MODEL_CRYOSAT, 00516 XDCFI_MODEL_ADM, 00517 XDCFI_MODEL_SENTINEL1, 00518 XDCFI_MODEL_SENTINEL2, 00519 XDCFI_MODEL_GEO, 00520 XDCFI_MODEL_METOPSG /* AN-666 */ 00521 } XDSatNominalAttModelEnum; // AN-469 00522 00524 typedef enum 00525 { 00526 XDCFI_ANGLE_TYPE_TRUE_LAT_TOD = 0, 00527 XDCFI_ANGLE_TYPE_MEAN_LAT_TOD, 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_CONTRAINTS_MAX 00594 } XD_Fov_constraints_enum; // AN-628 00595 00597 typedef enum 00598 { 00599 XDCFI_FALSE = 0, 00600 XDCFI_TRUE = 1 00601 } XDCFI_Boolean; // AN-628 00602 00603 00604 /*ANR-638*/ 00605 typedef enum 00606 { 00607 XDCFI_FFS_DEFAULT = 0, 00608 XDCFI_FFS_V1, 00609 XDCFI_FFS_V2, 00610 XDCFI_FFS_V3, 00611 XDCFI_FFS_MAX, 00612 XD_FFS_ERROR 00613 } XDCFI_EOFFS_version; 00614 static const char file_format_standard_version[sizeof(XDCFI_EOFFS_version)+2][250] = {"DEFAULT", "1.0", "2.0", "3.0", "MAX", "ERROR"}; 00615 00616 //------------------------------------------------------ 00617 // DATA STRUCTURES 00618 //------------------------------------------------------ 00619 00623 class XD_DECL AngleModel 00624 { 00625 public: 00626 00627 //Attributes 00628 double angles[3]; 00629 double offsets[3]; 00630 00632 AngleModel(){}; 00633 00635 AngleModel( double *angle, double *offset) 00636 { 00637 for ( int i = 0 ; i < 3 ; ++i) 00638 { 00639 angles[i] = angle[i]; 00640 offsets[i] = offset[i]; 00641 }// end for i 00642 } 00643 }; 00644 00648 class XD_DECL Asar 00649 { 00650 public: 00651 //Attributes 00652 long asarType; 00653 double slantRangeLeft; 00654 double slantRangeRight; 00655 00657 Asar(){}; 00658 00663 Asar( const long asarTyp, double slantLeft, double slantRight) 00664 { 00665 asarType = asarTyp; 00666 slantRangeLeft = slantLeft; 00667 slantRangeRight = slantRight; 00668 } 00669 };//class Asar 00670 00671 00675 class XD_DECL BulbTable 00676 { 00677 public: 00678 double day; 00679 double ut1Utc; 00680 double ut1Tai; 00681 00683 BulbTable(){}; 00684 00686 BulbTable(double dayUtc, double diffUt1Utc, double diffUt1Tai) 00687 { 00688 day = dayUtc; 00689 ut1Utc = diffUt1Utc; 00690 ut1Tai = diffUt1Tai; 00691 } 00692 00693 }; 00694 00698 class XD_DECL DemPoint 00699 { 00700 public: 00701 00702 //Attributes 00703 double lon; 00704 double lat; 00705 double alt; 00706 00708 DemPoint(){}; 00709 00711 DemPoint( double longitude, double latitude, double altitude) 00712 { 00713 lon = longitude; 00714 lat = latitude; 00715 alt = altitude; 00716 } 00717 }; 00718 00722 class XD_DECL DorisHeader 00723 { 00724 public: 00725 //Atributtes 00726 string fileName; 00727 string sensingStart; // UTC 00728 string sensingStop; // UTC 00729 long relOrbit; 00730 long absOrbit; 00731 double deltaUt1; 00732 string leapUtc; 00733 int leapSign; 00734 int leapErr; 00735 long numDsd; 00736 long dsOffset; 00737 long numDsr; 00738 00739 // extra data: the following values are not read from the file. 00740 // but it must be provided for the writing function 00741 //MPH 00742 string procStageCode; 00743 string refDoc; 00744 string procTime; 00745 string softwareVersion; 00746 string phase; 00747 long cycle; 00748 string stateVectorTime; 00749 double xPosition; 00750 double yPosition; 00751 double zPosition; 00752 double xVelocity; 00753 double yVelocity; 00754 double zVelocity; 00755 string stateVectorSource; 00756 string productErr; 00757 long totSize; 00758 long numDataSets; 00759 00760 //SPH 00761 string sphDescriptor; 00762 string sensingStartTai; // TAI 00763 long absOrbitStart; 00764 double relTimeAscNodeStart; 00765 string sensingStopTai; // TAI 00766 long absOrbitStop; 00767 double relTimeAscNodeStop; 00768 string equatorCrossTime; 00769 long equatorCrossLong; 00770 string ascendingFlag; 00771 long startLat; 00772 long startLong; 00773 long stopLat; 00774 long stopLong; 00775 long numIsps; 00776 long numMissingIsps; 00777 long numErrorIsps; 00778 long numDiscardedIsps; 00779 long numRsIsps; 00780 long numRsCorrections; 00781 long dsrSize; 00782 00784 DorisHeader(); 00785 00787 DorisHeader(string fileNam, 00788 string senStart, 00789 string sensStop, 00790 long relOrbi, 00791 long absOrbi, 00792 double delta_Ut1, 00793 string leap_Utc, 00794 int leap_Sign, 00795 int leap_Err, 00796 long num_Dsd, 00797 long ds_Offset, 00798 long num_Dsr); 00799 00801 DorisHeader(string fileNam, 00802 string sensStart, 00803 string sensStop, 00804 long relOrbi, 00805 long absOrbi, 00806 double delta_Ut1, 00807 string leap_Utc, 00808 int leap_Sign, 00809 int leap_Err, 00810 long num_Dsd, 00811 long ds_Offset, 00812 long num_Dsr, 00813 string procStageCod, 00814 string ref_Doc, 00815 string procTim, 00816 string softVersion, 00817 string phaseIn, 00818 long cycleIn, 00819 string stateVectorTim, 00820 double xPos, 00821 double yPos, 00822 double zPos, 00823 double xVel, 00824 double yVel, 00825 double zVel, 00826 string stateVectSource, 00827 string prodErr, 00828 long tot_Size, 00829 long numDataSet, 00830 string sphDesc, 00831 string sensStartTai, 00832 long absOrbStart, 00833 double relTimAscNodeStart, 00834 string sensStopTai, 00835 long absOrbStop, 00836 double relTimAscNodeStop, 00837 string equator_CrossTime, 00838 long equator_CrossLong, 00839 string ascendFlag, 00840 long start_Lat, 00841 long start_Long, 00842 long stop_Lat, 00843 long stop_Long, 00844 long num_Isps, 00845 long numMissIsps, 00846 long numErrIsps, 00847 long numDiscardIsps, 00848 long num_RsIsps, 00849 long num_RsCorrections, 00850 long dsr_Size 00851 ); 00852 00853 }; 00854 00858 class XD_DECL FileModel 00859 { 00860 public: 00861 00862 //Attributes 00863 vector<string> files; 00864 string auxFile; 00865 long timeRef; 00866 double time0; 00867 double time1; 00868 00870 FileModel(){}; 00871 00873 FileModel( vector<string> &fileNames, 00874 const string auxiliaryFile, 00875 const long timeReference, 00876 const double timeZero, 00877 const double timeOne ) 00878 { 00879 files = fileNames; 00880 auxFile = auxiliaryFile; 00881 timeRef = timeReference; 00882 time0 = timeZero; 00883 time1 = timeOne; 00884 } 00885 00886 }; 00887 00891 class XD_DECL HarmonicData 00892 { 00893 public: 00894 00895 //Attributes 00896 vector<long> harmonicTypePitch; 00897 vector<long> harmonicTypeRoll; 00898 vector<long> harmonicTypeYaw; 00899 vector<double> harmonicCoeffPitch; 00900 vector<double> harmonicCoeffRoll; 00901 vector<double> harmonicCoeffYaw; 00902 00904 HarmonicData(){}; 00905 00907 HarmonicData( vector<long> &harmonicTypPitch, 00908 vector<long> &harmonicTypRoll, 00909 vector<long> &harmonicTypYaw, 00910 vector<double> &harmonicCoefPitch, 00911 vector<double> &harmonicCoefRoll, 00912 vector<double> &harmonicCoefYaw ) 00913 { 00914 harmonicTypePitch = harmonicTypPitch; 00915 harmonicTypeRoll = harmonicTypRoll; 00916 harmonicTypeYaw = harmonicTypYaw; 00917 harmonicCoeffPitch = harmonicCoefPitch; 00918 harmonicCoeffRoll = harmonicCoefRoll; 00919 harmonicCoeffYaw = harmonicCoefYaw; 00920 } 00921 00922 }; 00923 00927 class XD_DECL HarmonicModel 00928 { 00929 public: 00930 00931 //Attributes 00932 long angleType; 00933 HarmonicData harmonicData; 00934 double offsets[3]; 00935 00937 HarmonicModel(){}; 00938 00940 HarmonicModel( const long angleTyp, HarmonicData &harmonicDat, double *offset) 00941 { 00942 angleType = angleTyp; 00943 harmonicData = harmonicDat; 00944 00945 for ( int i = 0 ; i < 3 ; ++i ) 00946 { 00947 offsets[i] = offset[i]; 00948 } 00949 } 00950 }; 00951 00955 class XD_DECL MatrixModel 00956 { 00957 public: 00958 00959 //Attributes 00960 double attMatrix[3][3]; 00961 double offsets[3]; 00962 00964 MatrixModel(){}; 00965 00967 MatrixModel( double **matrix, double *offset ) 00968 { 00969 for ( int i = 0 ; i < 3 ; ++i) 00970 { 00971 for ( int j = 0 ; j < 3 ; ++j ) 00972 { 00973 attMatrix[i][j] = matrix[i][j]; 00974 }// end for j 00975 offsets[i] = offset[i]; 00976 }// end for i 00977 } 00978 }; 00979 00983 class XD_DECL MlstHarmonics 00984 { 00985 public: 00986 00987 //Attributes 00988 double refTime; 00989 double period; 00990 double sinAmplitude; 00991 double cosAmplitude; 00992 00994 MlstHarmonics() 00995 { 00996 refTime = 0.; 00997 period = 1.; 00998 sinAmplitude = 0.; 00999 cosAmplitude = 0.; 01000 }; 01001 01003 MlstHarmonics(double time_in, double period_in, 01004 double sinAmp_in, double cosAmp_in) 01005 { 01006 refTime = time_in; 01007 period = period_in; 01008 sinAmplitude = sinAmp_in; 01009 cosAmplitude = cosAmp_in; 01010 } 01011 }; 01012 01016 class XD_DECL MlstNonlinearDrift 01017 { 01018 public: 01019 01020 //Attributes 01021 long linearApproxValidity; 01022 double quadraticTerm; 01023 vector<MlstHarmonics> mlstHarmonics; 01024 01026 MlstNonlinearDrift() 01027 { 01028 long i; 01029 01030 linearApproxValidity = 99999; 01031 quadraticTerm = 0.; 01032 for (i = 0 ; i < 2 ; i ++ ) 01033 { 01034 mlstHarmonics.push_back(MlstHarmonics()); 01035 } 01036 }; 01037 01039 MlstNonlinearDrift(long linApprox, double quadratic, const vector<MlstHarmonics> &harmonics) 01040 { 01041 linearApproxValidity = linApprox; 01042 quadraticTerm = quadratic; 01043 mlstHarmonics = harmonics; 01044 } 01045 }; 01046 01050 class XD_DECL ParamModel 01051 { 01052 public: 01053 01054 //Attributes 01055 long model; 01056 vector<double> modelParam; 01057 01059 ParamModel(){}; 01060 01062 ParamModel( const long mod, vector<double> &modParam) 01063 { 01064 model = mod; 01065 modelParam = modParam; 01066 } 01067 }; 01068 01072 class XD_DECL SwathGeometry 01073 { 01074 public: 01075 01076 //Attributes 01077 long geometryType; 01078 double azimuth; 01079 double elevation; 01080 double altitude; 01081 double distance; 01082 double angle; 01083 01085 SwathGeometry(){}; 01086 01088 SwathGeometry( long geomType, double azim, double elevat, 01089 double alt, double dist, double ang) 01090 { 01091 geometryType = geomType; 01092 azimuth = azim; 01093 elevation = elevat; 01094 altitude = alt; 01095 distance = dist; 01096 angle = ang; // AN-665 01097 } 01098 }; 01099 01103 class XD_DECL TrackerLimits 01104 { 01105 public: 01106 01107 //Attributes 01108 double maxPenalty; 01109 double normThr; 01110 double maxGap; 01111 01113 TrackerLimits(){}; 01114 01116 TrackerLimits( double maxPenal,double normThreshold, double maximumGap) 01117 { 01118 maxPenalty = maxPenal; 01119 normThr = normThreshold; 01120 maxGap = maximumGap; 01121 } 01122 }; 01123 01127 class XD_DECL StfPt 01128 { 01129 public: 01130 01131 //Attributes 01132 double lon; 01133 double lat; 01134 01136 StfPt(){}; 01137 01139 StfPt( double longitude, double latitude ) 01140 { 01141 lon = longitude; 01142 lat = latitude; 01143 } 01144 }; 01145 01149 class XD_DECL StfVhr 01150 { 01151 public: 01152 01153 //Attributes 01154 string stfName; 01155 string ReferenceOSF; 01156 string ReferenceSDF; 01157 long swathType; 01158 long swathPointType; 01159 01160 double timeStep; 01161 long refractionMode; 01162 double frequency; 01163 01164 long numPoints; 01165 vector<double> altitude; 01166 01167 bool geometryFlag; 01168 01169 long repCycle; 01170 long cycleLength; 01171 double mlstDrift; 01172 01173 long absOrbit; 01174 long orbitStart; 01175 long orbitStop; 01176 01177 double position[3]; 01178 double velocity[3]; 01179 01181 StfVhr(); 01182 01184 StfVhr( string stfNam, 01185 string refOSF, 01186 string refSDF, 01187 long swathTyp, 01188 long swathPointTyp, 01189 double timStep, 01190 long refrMode, 01191 double freq, 01192 long numP, 01193 const vector<double> &alt, 01194 bool geomFlag, 01195 long repCycl, 01196 long cyclLength, 01197 double meanlstDrift, 01198 long absOrb, 01199 long orbit0, 01200 long orbit1, 01201 double *pos, 01202 double *vel 01203 ); 01204 01206 StfVhr( const StfVhr &stfVhr ); 01207 01209 ~StfVhr(); 01210 01212 void operator=( const StfVhr &stfVhr ); 01213 01214 };//class StfVhr 01215 01219 class XD_DECL ZonePoint 01220 { 01221 public: 01222 01223 //Attributes 01224 double ptLong; 01225 double ptLat; 01226 01228 ZonePoint(){}; 01229 01231 ZonePoint( double ptLongitude, double ptLatitude) 01232 { 01233 ptLong = ptLongitude; 01234 ptLat = ptLatitude; 01235 } 01236 }; 01237 01241 class XD_DECL AttitudeModel 01242 { 01243 public: 01244 //Attributes 01245 long attitudeModel; 01246 long AOCS; 01247 ParamModel *paramModel; 01248 HarmonicModel *harmonicModel; 01249 FileModel *fileModel; 01250 AngleModel *angleModel; 01251 MatrixModel *matrixModel; 01252 01254 AttitudeModel(); 01255 01257 AttitudeModel( long attModel, 01258 long AOCSModel, 01259 ParamModel &parMod, 01260 HarmonicModel &harmMod, 01261 FileModel &fileMod, 01262 AngleModel &angleMod, 01263 MatrixModel &matrixMod 01264 ); 01265 01267 AttitudeModel( const AttitudeModel &attModel ); 01268 01270 ~AttitudeModel(); 01271 01273 void operator=( const AttitudeModel &attModel ); 01274 01275 protected: 01276 01277 private: 01279 void eraseAttitude(); 01280 }; 01281 01285 class XD_DECL PolarMotionParams 01286 { 01287 public: 01288 //Attributes 01289 double x; 01290 double y; 01291 01293 PolarMotionParams() 01294 { 01295 x = 0.; 01296 y = 0.; 01297 } 01298 01300 PolarMotionParams( double x1, double y1 ) 01301 { 01302 x = x1; 01303 y = y1; 01304 } 01305 01306 }; 01307 01311 class XD_DECL IersBulletinBrec 01312 { 01313 public: 01314 double day; 01315 double ut1Utc; 01316 double ut1Tai; 01317 PolarMotionParams polarMotionParams; 01318 01320 IersBulletinBrec() 01321 { 01322 day = 0.; 01323 ut1Utc = 0.; 01324 ut1Tai = 0.; 01325 } 01326 01328 IersBulletinBrec(double dayUtc, double diffUt1Utc, double diffUt1Tai, 01329 PolarMotionParams polarMotion) 01330 { 01331 day = dayUtc; 01332 ut1Utc = diffUt1Utc; 01333 ut1Tai = diffUt1Tai; 01334 polarMotionParams = polarMotion; 01335 } 01336 01337 }; 01338 01342 class XD_DECL IersBulletinArec 01343 { 01344 public: 01345 double day; 01346 double ut1Utc; 01347 double ut1Tai; 01348 PolarMotionParams polarMotionParams; 01349 01351 IersBulletinArec() 01352 { 01353 day = 0.; 01354 ut1Utc = 0.; 01355 ut1Tai = 0.; 01356 } 01357 01359 IersBulletinArec(double dayUtc, double diffUt1Utc, double diffUt1Tai, 01360 PolarMotionParams polarMotion) 01361 { 01362 day = dayUtc; 01363 ut1Utc = diffUt1Utc; 01364 ut1Tai = diffUt1Tai; 01365 polarMotionParams = polarMotion; 01366 } 01367 01368 }; 01369 01373 class XD_DECL PolarMotionFormula 01374 { 01375 public: 01376 01377 double ax; 01378 double bx; 01379 double cx; 01380 double dx; 01381 double ex; 01382 01383 double ay; 01384 double by; 01385 double cy; 01386 double dy; 01387 double ey; 01388 01389 double Aref; 01390 double Adiv; 01391 double Cref; 01392 double Cdiv; 01393 01395 PolarMotionFormula() 01396 { 01397 ax = 0.; 01398 bx = 0.; 01399 cx = 0.; 01400 dx = 0.; 01401 ex = 0.; 01402 01403 ay = 0.; 01404 by = 0.; 01405 cy = 0.; 01406 dy = 0.; 01407 ey = 0.; 01408 01409 Aref = 0.; 01410 Adiv = 0.; 01411 Cref = 0.; 01412 Cdiv = 0.; 01413 } 01414 01416 PolarMotionFormula(double a1, double b1, double c1, double d1, double e1, 01417 double a2, double b2, double c2, double d2, double e2, 01418 double Ar, double Ad, double Cr, double Cd) 01419 { 01420 ax = a1; 01421 bx = b1; 01422 cx = c1; 01423 dx = d1; 01424 ex = e1; 01425 01426 ay = a2; 01427 by = b2; 01428 cy = c2; 01429 dy = d2; 01430 ey = e2; 01431 01432 Aref = Ar; 01433 Adiv = Ad; 01434 Cref = Cr; 01435 Cdiv = Cd; 01436 } 01437 01438 }; 01439 01443 class XD_DECL TimeCorrelationFormula 01444 { 01445 public: 01446 01447 double a; 01448 double b; 01449 double bRef; 01450 01452 TimeCorrelationFormula() 01453 { 01454 a = 0.; 01455 b = 0.; 01456 bRef = 0.; 01457 } 01458 01460 TimeCorrelationFormula(double a1, double b1, double br) 01461 { 01462 a = a1; 01463 b = b1; 01464 bRef = br; 01465 } 01466 }; 01467 01471 class XD_DECL IersBulletinBFile 01472 { 01473 public: 01474 01475 string bulletinId; 01476 vector<IersBulletinBrec> finalTable; 01477 vector<IersBulletinBrec> preliminaryTable; 01478 01480 IersBulletinBFile() 01481 { 01482 bulletinId = ""; 01483 } 01484 01486 IersBulletinBFile(string bulId, 01487 vector<IersBulletinBrec> &vecFinal, 01488 vector<IersBulletinBrec> &vecPrel) 01489 { 01490 bulletinId = bulId; 01491 finalTable = vecFinal; 01492 preliminaryTable = vecPrel; 01493 } 01494 01495 };//class IersBulletinBFile 01496 01500 class XD_DECL IersBulletinAFile 01501 { 01502 public: 01503 01504 string bulletinId; 01505 vector<IersBulletinArec> predictionTable; 01506 PolarMotionFormula polarMotionFormula; 01507 TimeCorrelationFormula timeCorrelationFormula; 01508 01510 IersBulletinAFile() 01511 { 01512 bulletinId = ""; 01513 } 01514 01516 IersBulletinAFile(string bulId, 01517 vector<IersBulletinArec> &vecPred, 01518 PolarMotionFormula &polarFormula, 01519 TimeCorrelationFormula &timeFormula) 01520 { 01521 bulletinId = bulId; 01522 predictionTable = vecPred; 01523 polarMotionFormula = polarFormula; 01524 timeCorrelationFormula = timeFormula; 01525 } 01526 01527 };//class IersBulletinAFile 01528 01532 class XD_DECL DemMiniTiles 01533 { 01534 public: 01535 string fileName; 01536 double lonSize; 01537 double latSize; 01538 01540 DemMiniTiles() 01541 { 01542 fileName = ""; 01543 lonSize = 0.; 01544 latSize = 0.; 01545 } 01546 01548 DemMiniTiles(string fileN, double lon, double lat) 01549 { 01550 fileName = fileN; 01551 lonSize = lon; 01552 latSize = lat; 01553 } 01554 }; // AN-492 01555 01559 class XD_DECL QuaternionPlusAngle 01560 { 01561 public: 01562 01563 //Attributes 01564 string quatDefFile; 01565 01566 long inertialFrame; 01567 vector<AttRec> quat; 01568 AngleModel angleModel; 01569 01571 QuaternionPlusAngle(){}; 01572 01574 QuaternionPlusAngle( string file, AngleModel &angModel ) 01575 { 01576 quatDefFile = file; 01577 angleModel = angModel; 01578 } 01579 01581 ~QuaternionPlusAngle() 01582 { 01583 // Nothing to be done 01584 } 01585 }; // AN-469 01586 01587 // 01590 class XD_DECL QuaternionPlusMatrix 01591 { 01592 public: 01593 01594 //Attributes 01595 string quatDefFile; 01596 MatrixModel matrixModel; 01597 01599 QuaternionPlusMatrix(){}; 01600 01602 QuaternionPlusMatrix( string file, MatrixModel &matModel ) 01603 { 01604 quatDefFile = file; 01605 matrixModel = matModel; 01606 } 01607 01609 ~QuaternionPlusMatrix() 01610 { 01611 // Nothing to be done 01612 } 01613 }; // AN-469 01614 01618 class XD_DECL AttitudeDefinitionModel 01619 { 01620 public: 01621 //Attributes 01622 long attitudeModel; 01623 long AOCS; 01624 ParamModel *paramModel; 01625 HarmonicModel *harmonicModel; 01626 FileModel *fileModel; 01627 AngleModel *angleModel; 01628 MatrixModel *matrixModel; 01629 QuaternionPlusAngle *quaternionAngleModel; 01630 QuaternionPlusMatrix * quaternionMatrixModel; 01631 01633 AttitudeDefinitionModel(); 01634 01636 AttitudeDefinitionModel( long attModel, 01637 long AOCSModel, 01638 ParamModel &parMod, 01639 HarmonicModel &harmMod, 01640 FileModel &fileMod, 01641 AngleModel &angleMod, 01642 MatrixModel &matrixMod, 01643 QuaternionPlusAngle &quatAngMod, 01644 QuaternionPlusMatrix &quatMatMod 01645 ); 01646 01648 AttitudeDefinitionModel( const AttitudeDefinitionModel &attModel ); 01649 01651 ~AttitudeDefinitionModel(); 01652 01654 void operator=( const AttitudeDefinitionModel &attModel ); 01655 01656 protected: 01657 01658 private: 01660 void eraseAttitude(); 01661 }; // AN-469 01662 01663 01665 class XD_DECL AzElMask 01666 { 01667 public: 01668 long numMaskPt; 01669 long status; 01670 01671 01672 01673 01674 01675 01676 01677 01678 01679 01680 01681 01682 double azimuth[MaxStationVertices]; 01683 double elevation[MaxStationVertices]; 01684 }; 01685 01687 class XD_DECL LinkMask 01688 { 01689 public: 01690 AzElMask inclMask; 01691 AzElMask exclMask; 01692 }; 01693 01695 class XD_DECL LinkData 01696 { 01697 public: 01698 LinkMask maskData; 01699 double minTgHeight; 01700 }; 01701 01703 union XD_DECL FovConstraintsUnion 01704 { 01705 public: 01706 LinkData SCLinkData; 01707 }; 01708 01709 }//end EECFI 01710 01711 #endif