![]() |
Earth Observation Mission CFI Software DataHandling Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.13 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 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_BAR_MEAN_1950, 00145 XDCFI_GALACTIC, 00146 XDCFI_SAT_ACT_REF, 00147 XDCFI_QUASI_MEAN_DATE, 00148 XDCFI_PSE_TRUE_DATE, 00149 XDCFI_TOPOCENTRIC, 00150 XDCFI_SAT_REF, 00151 XDCFI_SAT_REL_REF 00152 } CoordinateSystemsEnum; // Updated for AN-509 00153 00155 typedef enum 00156 { 00157 XDCFI_3_ADJUST_NOMI = 1, 00158 XDCFI_4_ADJUST_DMAN, 00159 XDCFI_5_INTERP_DGAP, 00160 XDCFI_6_EXTRAP_LT1D, 00161 XDCFI_7_EXTRAP_1D2D, 00162 XDCFI_8_EXTRAP_GT2D, 00163 XDCFI_8_EXTRAP_AMAN, 00164 XDCFI_Q_INDEX_MAX_ENUM 00165 } QualityIndexEnum; 00166 00168 typedef enum 00169 { 00170 XDCFI_SCF_DRAW_SOLID, 00171 XDCFI_SCF_DRAW_DASHED, 00172 XDCFI_SCF_DRAW_DOTTED, 00173 XDCFI_SCF_DRAW_TIMELINE 00174 } SCFDrawModesEnum; 00175 00177 typedef enum 00178 { 00179 XDCFI_SCF_FILL_SOLID, 00180 XDCFI_SCF_FILL_HOLLOW 00181 } SCFFillModesEnum; 00182 00184 typedef enum 00185 { 00186 XDCFI_SEL_FILE = 0, 00187 XDCFI_SEL_TIME, 00188 XDCFI_SEL_ORBIT, 00189 XDCFI_SEL_DEFAULT, 00190 XDCFI_SEL_NONE 00191 } TimeInitModeEnum; 00192 00194 typedef enum 00195 { 00196 XDCFI_TIME_UNDEF = -1, 00197 XDCFI_TIME_TAI, 00198 XDCFI_TIME_UTC, 00199 XDCFI_TIME_UT1, 00200 XDCFI_TIME_GPS 00201 } TimeRefDataHandlingEnum; 00202 00204 typedef enum 00205 { 00206 XDCFI_EXTEND_NUM_OSV = 0, 00207 XDCFI_EXTEND_TIME 00208 } ExtendTypeEnum; 00209 00211 typedef enum 00212 { 00213 XDCFI_TIME_REF_OF_TAI = XDCFI_TIME_TAI, 00214 XDCFI_TIME_REF_OF_UTC = XDCFI_TIME_UTC, 00215 XDCFI_TIME_REF_OF_UT1 = XDCFI_TIME_UT1, 00216 XDCFI_TIME_REF_OF_GPS = XDCFI_TIME_GPS 00217 } TimeRefOfDataHandlingEnum; 00218 00220 typedef enum 00221 { 00222 XDCFI_READ_DB = 0, 00223 XDCFI_GNOMONIC = 1, 00224 XDCFI_RECTANGULAR = 2 00225 } ProjectionEnum; 00226 00228 typedef enum 00229 { 00230 XDCFI_ATT_NONE = 0, 00231 XDCFI_ATT_AOCS, 00232 XDCFI_ATT_PARAM, 00233 XDCFI_ATT_HARMONIC, 00234 XDCFI_ATT_FILE, 00235 XDCFI_ATT_ANGLE, 00236 XDCFI_ATT_MATRIX 00237 } AttModelEnum; 00238 00240 typedef enum 00241 { 00242 XDCFI_ORBIT_FILE, 00243 XDCFI_OSF_FILE, 00244 XDCFI_DORIS_FILE, 00245 XDCFI_IERS_BULLETIN_FILE, 00246 XDCFI_USER_OSV_LIST, 00247 XDCFI_SP3_FILE, // AN-550 00248 XDCFI_POF_FILE, 00249 XDCFI_ROF_FILE, 00250 XDCFI_SDF_FILE, 00251 XDCFI_STF_FILE, 00252 XDCFI_ATTITUDE_FILE, 00253 XDCFI_DEM_CONF_FILE, 00254 XDCFI_DEM_FILE, 00255 XDCFI_ZONE_FILE, 00256 XDCFI_STATION_FILE, 00257 XDCFI_STAR_FILE, 00258 XDCFI_ATT_STAR_TRACKER_CONF_FILE, 00259 XDCFI_ATT_STAR_TRACKER_FILE, 00260 XDCFI_TLE_FILE, 00261 XDCFI_ATTITUDE_DEFINITION_FILE, //AN-469 00262 XDCFI_OEM_FILE, //AN-578 00263 XDCFI_FOV_CONSTRAINTS_FILE //AN-628 00264 } FileEnum; // Updated for AN-527, to have it alligned with XD_data_file_type_enum 00265 00267 typedef enum 00268 { 00269 XDCFI_UNKNOWN_TYPE = -1, 00270 XDCFI_AUTO, 00271 XDCFI_ORBIT_CHANGE, 00272 XDCFI_STATE_VECTOR, 00273 XDCFI_OSF_TYPE, 00274 XDCFI_POF_TYPE, 00275 XDCFI_ROF_TYPE, 00276 XDCFI_DORIS_TYPE, 00277 XDCFI_POF_N_DORIS_TYPE, 00278 XDCFI_OEF_OSF_TYPE, 00279 XDCFI_OEF_POF_TYPE, 00280 XDCFI_IERS_B_TYPE, 00281 XDCFI_TLE_TYPE, 00282 XDCFI_STF_TYPE, 00283 XDCFI_DORISPREC_TYPE, 00284 XDCFI_DORISPREM_TYPE, 00285 XDCFI_ATT_TYPE, 00286 XDCFI_SCF_TYPE, 00287 XDCFI_PRECISE_PROPAG_TYPE, 00288 XDCFI_DEMCFG_TYPE, 00289 XDCFI_SATCFG_TYPE, 00290 XDCFI_GND_DB_TYPE, 00291 XDCFI_SW_DEF_TYPE, 00292 XDCFI_ZON_DB_TYPE, 00293 XDCFI_STR1ATT_TYPE, 00294 XDCFI_IERS_A_TYPE, 00295 XDCFI_IERS_B_AND_A_TYPE, 00296 XDCFI_ATT_DEF_TYPE, 00297 XDCFI_USER_OSV_LIST_TYPE, 00298 XDCFI_SP3_TYPE, /* AN-550 */ 00299 XDCFI_OSF_POF_MODE, // AN-527 00300 XDCFI_OSF_ROF_MODE, // AN-527 00301 XDCFI_OSF_DORIS_MODE, // AN-527 00302 XDCFI_OEM_TYPE, // AN-578 00303 XDCFI_OSF_OEM_MODE, // AN-578 00304 XDCFI_FILE_TYPE_MAX_VALUE 00305 } FileTypeEnum; 00306 00308 typedef enum 00309 { 00310 XDCFI_DEM_ACE_MODEL = 0, 00311 XDCFI_DEM_GETASSE30_V1, 00312 XDCFI_DEM_GETASSE30_V2, 00313 XDCFI_DEM_ACE2_9SEC, 00314 XDCFI_DEM_GETASSE30_V3, /*AN-503*/ 00315 XDCFI_DEM_GDEM_V2, /*AN-504*/ 00316 XDCFI_DEM_ACE2_30SEC, /*AN-615*/ 00317 XDCFI_DEM_ACE2_3SEC, // AN-619 00318 XDCFI_DEM_NUM_MODELS 00319 } DemModelEnum; 00320 00322 typedef enum 00323 { 00324 XDCFI_DEM_GETASSE30_SOURCE_ACE, /* land-ice/snow */ 00325 XDCFI_DEM_GETASSE30_SOURCE_MSS, /* sea */ 00326 XDCFI_DEM_GETASSE30_SOURCE_EGM96, /* sea-ice */ 00327 XDCFI_DEM_GETASSE30_SOURCE_SRTM30 /* land */ 00328 } DemGetasseDataSourceEnum; 00329 00330 /* DEM Data Source Types for ACE2: 9secs and 30secs */ 00331 typedef enum 00332 { 00333 XDCFI_DEM_ACE2_SOURCE_SRTM0, /* Pure SRTM (above 60�N pure GLOBE data, below 60S pure ACE [original] data) */ 00334 XDCFI_DEM_ACE2_SOURCE_SRTM1, /* SRTM voids filled by interpolation and/or altimeter data */ 00335 XDCFI_DEM_ACE2_SOURCE_SRTM2, /* SRTM data warped using the ERS-1 Geodetic Mission */ 00336 XDCFI_DEM_ACE2_SOURCE_SRTM3, /* SRTM data warped using EnviSat & ERS-2 data */ 00337 XDCFI_DEM_ACE2_SOURCE_SRTM_LAKE, /* Mean lake level data derived from Altimetry */ 00338 XDCFI_DEM_ACE2_SOURCE_SRTM_GLOBE, /* GLOBE/ACE data warped using combined altimetry (only above 60�N) */ 00339 XDCFI_DEM_ACE2_SOURCE_SRTM_ALT /* Pure altimetry data (derived from ERS-1 Geodetic Mission, 00340 ERS-2 and EnviSat data using Delaunay Triangulation and Bilinear interpolation) */ 00341 } DemAce2DataSourceEnum; 00342 00343 /* DEM Data Source Types for GDEM v2 */ 00344 typedef enum 00345 { 00346 XDCFI_DEM_GDEM_SOURCE_NO_SOURCE_FILE = -1, 00347 XDCFI_DEM_GDEM_SOURCE_SRTM3_V3 = 0, 00348 XDCFI_DEM_GDEM_SOURCE_SRTM3_V2, 00349 XDCFI_DEM_GDEM_SOURCE_NED, 00350 XDCFI_DEM_GDEM_SOURCE_CDED, 00351 XDCFI_DEM_GDEM_SOURCE_ALASKA_DEM 00352 } DemGdemV2DataSourceEnum; 00353 00355 typedef enum 00356 { 00357 XDCFI_CFI_READ_ATT_INIT_PARSER_ERR = 0, 00358 XDCFI_CFI_READ_ATT_READ_PARAM_ERR, 00359 XDCFI_CFI_READ_ATT_WRONG_FILE_TYPE_ERR, 00360 XDCFI_CFI_READ_XML_ATT_NAVIGATION_ERR, 00361 XDCFI_CFI_READ_ATT_WRONG_DATA_TYPE_ERR, 00362 XDCFI_CFI_READ_ATT_INCONSISTENT_DATA_TYPE_ERR, 00363 XDCFI_CFI_READ_ATT_XML_DATA_BLOCK_SIZE_ERR, 00364 XDCFI_CFI_READ_ATT_WRONG_REF_FRAME_ERR, 00365 XDCFI_CFI_READ_ATT_READ_LIST_ERR, 00366 XDCFI_CFI_READ_ATT_TIME_CONV_ERR, 00367 XDCFI_CFI_READ_ATT_MEMORY_ERR, 00368 XDCFI_CFI_READ_ATT_CLEANUP_PARSER_ERR, 00369 XDCFI_CFI_READ_ATT_WRONG_TIME_REF_ERR, 00370 XDCFI_CFI_READ_ATT_WRONG_QUATERNION_ERR, 00371 XDCFI_CFI_READ_ATT_WRONG_ANGLE_ERR, 00372 XDCFI_CFI_READ_ATT_MAX_GAP_ERR, 00373 XDCFI_CFI_READ_ATT_OBSOLETE_TAG_WARN //AN-516 00374 } ReadAttErrEnum; 00375 00377 typedef enum 00378 { 00379 XDCFI_DEFAULT_VALUES = 0, 00380 XDCFI_USER_VALUES = 1 00381 } PrecisePropagUserFlagEnum; 00382 00384 typedef enum 00385 { 00386 XDCFI_NOT_SELECT = 0, 00387 XDCFI_SELECT = 1 00388 } PrecisePropagSelectionFlagEnum; 00389 00391 typedef enum 00392 { 00393 XDCFI_SGA_USE_PARAMETERS = 0, 00394 XDCFI_SGA_READ_VALUES_FROM_FILE = 1 00395 } PrecisePropagSgaFlagEnum; 00396 00398 typedef enum 00399 { 00400 XDCFI_SAT_DEFAULT = 0, 00401 XDCFI_SAT_DEFAULT1 = 1, 00402 XDCFI_SAT_DEFAULT2 = 2, 00403 XDCFI_SAT_DEFAULT3 = 3, 00404 XDCFI_SAT_DEFAULT4 = 4, 00405 XDCFI_SAT_DEFAULT5 = 5, 00406 XDCFI_SAT_DEFAULT6 = 6, 00407 XDCFI_SAT_DEFAULT7 = 7, 00408 XDCFI_SAT_DEFAULT8 = 8, 00409 XDCFI_SAT_DEFAULT9 = 9, 00410 XDCFI_SAT_ERS1 = 11, 00411 XDCFI_SAT_ERS2 = 12, 00412 XDCFI_SAT_ENVISAT = 21, 00413 XDCFI_SAT_METOP1 = 31, 00414 XDCFI_SAT_METOP2 = 32, 00415 XDCFI_SAT_METOP3 = 33, 00416 XDCFI_SAT_CRYOSAT = 41, 00417 XDCFI_SAT_ADM = 51, 00418 XDCFI_SAT_GOCE = 61, 00419 XDCFI_SAT_SMOS = 71, 00420 XDCFI_SAT_TERRASAR = 81, 00421 XDCFI_SAT_EARTHCARE = 91, 00422 XDCFI_SAT_SWARM_A = 101, 00423 XDCFI_SAT_SWARM_B = 102, 00424 XDCFI_SAT_SWARM_C = 103, 00425 XDCFI_SAT_SENTINEL_1A = 110, 00426 XDCFI_SAT_SENTINEL_1B = 111, 00427 XDCFI_SAT_SENTINEL_2 = 112, 00428 XDCFI_SAT_SENTINEL_3 = 113, 00429 XDCFI_SAT_SEOSAT = 120, 00430 XDCFI_SAT_SENTINEL_1C = 125, 00431 XDCFI_SAT_SENTINEL_2A = 126, 00432 XDCFI_SAT_SENTINEL_2B = 127, 00433 XDCFI_SAT_SENTINEL_2C = 128, 00434 XDCFI_SAT_SENTINEL_3A = 129, 00435 XDCFI_SAT_SENTINEL_3B = 130, 00436 XDCFI_SAT_SENTINEL_3C = 131, 00437 XDCFI_SAT_JASON_CSA = 132, // AN-531 00438 XDCFI_SAT_JASON_CSB = 133, // AN-531 00439 XDCFI_SAT_METOP_SG_A1 = 134, // AN-530 00440 XDCFI_SAT_METOP_SG_A2 = 135, // AN-530 00441 XDCFI_SAT_METOP_SG_A3 = 136, // AN-530 00442 XDCFI_SAT_METOP_SG_B1 = 137, // AN-530 00443 XDCFI_SAT_METOP_SG_B2 = 138, // AN-530 00444 XDCFI_SAT_METOP_SG_B3 = 139, // AN-530 00445 XDCFI_SAT_SENTINEL_5P = 140, // AN-502 00446 XDCFI_SAT_BIOMASS = 141, // AN-601 00447 XDCFI_SAT_SENTINEL_5 = 142, // AN-639 00448 XDCFI_SAT_SAOCOM_CS = 143, // AN-640 00449 XDCFI_SAT_GENERIC = 200, 00450 XDCFI_SAT_GENERIC_GEO = 300, 00451 XDCFI_SAT_MTG = 301, 00452 XDCFI_SAT_GENERIC_MEO = 400 // AN-550 00453 } XDSatIdEnum; 00454 00456 typedef enum 00457 { 00458 XDCFI_BULLETIN_A = 0, 00459 XDCFI_BULLETIN_B 00460 } XDBulletinTypeEnum; 00461 00463 typedef enum 00464 { 00465 XDCFI_NO_CACHE = 0, 00466 XDCFI_PRELOAD_CACHE, 00467 XDCFI_FIFO_CACHE 00468 } DemCacheTypeEnum; // Added for AN-487 00469 00471 typedef enum 00472 { 00473 XDCFI_DEM_GEOID_COMPUTATION_DISABLED = 0, 00474 XDCFI_DEM_GEOID_COMPUTATION_ENABLED = 1 00475 } DemGeoidFlagEnum; // AN-466 00476 00478 typedef enum 00479 { 00480 XDCFI_ATT_NONE_MODEL = 0, 00481 XDCFI_ATT_AOCS_MODEL, 00482 XDCFI_ATT_PARAMETER_MODEL, 00483 XDCFI_ATT_HARMONIC_MODEL, 00484 XDCFI_ATT_FILE_MODEL, 00485 XDCFI_ATT_ANGLE_MODEL, 00486 XDCFI_ATT_MATRIX_MODEL, 00487 XDCFI_ATT_QUATERNION_ANGLE_MODEL, 00488 XDCFI_ATT_QUATERNION_MATRIX_MODEL 00489 } AttDefModelEnum; // AN-469 00490 00492 typedef enum 00493 { 00494 XDCFI_SAT_NOMINAL_ATT_DEF = 0, 00495 XDCFI_SAT_ATT_DEF, 00496 XDCFI_INSTR_ATT_DEF 00497 } XDAttDefFrameEnum; // AN-469 00498 00500 typedef enum 00501 { 00502 XDCFI_AOCS_GPM = 0, 00503 XDCFI_AOCS_LNP, 00504 XDCFI_AOCS_YSM, 00505 XDCFI_AOCS_ZDOPPLER 00506 } XDSatNominalAttAocsModeEnum; // AN-469 00507 00509 typedef enum 00510 { 00511 XDCFI_MODEL_GENERIC = 0, 00512 XDCFI_MODEL_ENVISAT, 00513 XDCFI_MODEL_CRYOSAT, 00514 XDCFI_MODEL_ADM, 00515 XDCFI_MODEL_SENTINEL1, 00516 XDCFI_MODEL_SENTINEL2, 00517 XDCFI_MODEL_GEO 00518 } XDSatNominalAttModelEnum; // AN-469 00519 00521 typedef enum 00522 { 00523 XDCFI_ANGLE_TYPE_TRUE_LAT_TOD = 0, 00524 XDCFI_ANGLE_TYPE_MEAN_LAT_TOD, 00525 XDCFI_ANGLE_TYPE_TRUE_LAT_EF /* AN-508 */ 00526 } XDAngleTypeEnum; // AN-469 00527 00529 typedef enum 00530 { 00531 XDCFI_FIT_TLE = 0, /*Used for POF, not valid for OSV LIST*/ 00532 XDCFI_FIT_TLE_LIST, 00533 XDCFI_ONE_TLE_PER_OSV 00534 } XDTLEFitmodeEnum; 00535 00537 typedef enum 00538 { 00539 XDCFI_SP3_POSITION_TYPE, 00540 XDCFI_SP3_POSITION_PLUS_VELOCITY_TYPE 00541 } XDCFISP3FileTypeEnum; // AN-550 00542 00544 typedef enum 00545 { 00546 XDCFI_SP3_GPS = 0, 00547 XDCFI_SP3_MIXED, 00548 XDCFI_SP3_GLONASS, 00549 XDCFI_SP3_LEO, 00550 XDCFI_SP3_GALILEO, 00551 XDCFI_SP3_COMPASS, 00552 XDCFI_SP3_QZSS 00553 } XDCFISP3FileDescriptorEnum; // AN-550 00554 00556 typedef enum 00557 { 00558 XDCFI_SP3_TIME_GPS = 0, 00559 XDCFI_SP3_TIME_GLONASS, 00560 XDCFI_SP3_TIME_GALILEO, 00561 XDCFI_SP3_TIME_TAI, 00562 XDCFI_SP3_TIME_UTC, 00563 XDCFI_SP3_TIME_QZSS 00564 } XDCFISP3TimeSystemEnum; 00565 00567 typedef enum 00568 { 00569 XDCFI_SAT_GPS = 0, 00570 XDCFI_SAT_GLONASS, 00571 XDCFI_SAT_LEO, 00572 XDCFI_SAT_GALILEO, 00573 XDCFI_SAT_COMPASS, 00574 XDCFI_SAT_QZSS 00575 } XDCFISATSP3SatDescriptorEnum; 00576 00578 typedef enum 00579 { 00580 XDCFI_DORIS_CRYOSAT_TYPE, 00581 XDCFI_DORIS_SENTINEL3_TYPE 00582 } XDDORISFileTypeEnum; //AN-524 00583 00585 typedef enum 00586 { 00587 XDCFI_FOV_CONSTRAINTS_SC_LINK, 00588 XDCFI_FOV_CONTRAINTS_MAX 00589 } XD_Fov_constraints_enum; // AN-628 00590 00592 typedef enum 00593 { 00594 XDCFI_FALSE = 0, 00595 XDCFI_TRUE = 1 00596 } XDCFI_Boolean; // AN-628 00597 00598 00599 /*ANR-638*/ 00600 typedef enum 00601 { 00602 XDCFI_FFS_DEFAULT = 0, 00603 XDCFI_FFS_V1, 00604 XDCFI_FFS_V2, 00605 XDCFI_FFS_V3, 00606 XDCFI_FFS_MAX, 00607 XD_FFS_ERROR 00608 } XDCFI_EOFFS_version; 00609 static const char file_format_standard_version[sizeof(XDCFI_EOFFS_version)+2][250] = {"DEFAULT", "1.0", "2.0", "3.0", "MAX", "ERROR"}; 00610 00611 //------------------------------------------------------ 00612 // DATA STRUCTURES 00613 //------------------------------------------------------ 00614 00618 class XD_DECL AngleModel 00619 { 00620 public: 00621 00622 //Attributes 00623 double angles[3]; 00624 double offsets[3]; 00625 00627 AngleModel(){}; 00628 00630 AngleModel( double *angle, double *offset) 00631 { 00632 for ( int i = 0 ; i < 3 ; ++i) 00633 { 00634 angles[i] = angle[i]; 00635 offsets[i] = offset[i]; 00636 }// end for i 00637 } 00638 }; 00639 00643 class XD_DECL Asar 00644 { 00645 public: 00646 //Attributes 00647 long asarType; 00648 double slantRangeLeft; 00649 double slantRangeRight; 00650 00652 Asar(){}; 00653 00658 Asar( const long asarTyp, double slantLeft, double slantRight) 00659 { 00660 asarType = asarTyp; 00661 slantRangeLeft = slantLeft; 00662 slantRangeRight = slantRight; 00663 } 00664 };//class Asar 00665 00666 00670 class XD_DECL BulbTable 00671 { 00672 public: 00673 double day; 00674 double ut1Utc; 00675 double ut1Tai; 00676 00678 BulbTable(){}; 00679 00681 BulbTable(double dayUtc, double diffUt1Utc, double diffUt1Tai) 00682 { 00683 day = dayUtc; 00684 ut1Utc = diffUt1Utc; 00685 ut1Tai = diffUt1Tai; 00686 } 00687 00688 }; 00689 00693 class XD_DECL DemPoint 00694 { 00695 public: 00696 00697 //Attributes 00698 double lon; 00699 double lat; 00700 double alt; 00701 00703 DemPoint(){}; 00704 00706 DemPoint( double longitude, double latitude, double altitude) 00707 { 00708 lon = longitude; 00709 lat = latitude; 00710 alt = altitude; 00711 } 00712 }; 00713 00717 class XD_DECL DorisHeader 00718 { 00719 public: 00720 //Atributtes 00721 string fileName; 00722 string sensingStart; // UTC 00723 string sensingStop; // UTC 00724 long relOrbit; 00725 long absOrbit; 00726 double deltaUt1; 00727 string leapUtc; 00728 int leapSign; 00729 int leapErr; 00730 long numDsd; 00731 long dsOffset; 00732 long numDsr; 00733 00734 // extra data: the following values are not read from the file. 00735 // but it must be provided for the writing function 00736 //MPH 00737 string procStageCode; 00738 string refDoc; 00739 string procTime; 00740 string softwareVersion; 00741 string phase; 00742 long cycle; 00743 string stateVectorTime; 00744 double xPosition; 00745 double yPosition; 00746 double zPosition; 00747 double xVelocity; 00748 double yVelocity; 00749 double zVelocity; 00750 string stateVectorSource; 00751 string productErr; 00752 long totSize; 00753 long numDataSets; 00754 00755 //SPH 00756 string sphDescriptor; 00757 string sensingStartTai; // TAI 00758 long absOrbitStart; 00759 double relTimeAscNodeStart; 00760 string sensingStopTai; // TAI 00761 long absOrbitStop; 00762 double relTimeAscNodeStop; 00763 string equatorCrossTime; 00764 long equatorCrossLong; 00765 string ascendingFlag; 00766 long startLat; 00767 long startLong; 00768 long stopLat; 00769 long stopLong; 00770 long numIsps; 00771 long numMissingIsps; 00772 long numErrorIsps; 00773 long numDiscardedIsps; 00774 long numRsIsps; 00775 long numRsCorrections; 00776 long dsrSize; 00777 00779 DorisHeader(); 00780 00782 DorisHeader(string fileNam, 00783 string senStart, 00784 string sensStop, 00785 long relOrbi, 00786 long absOrbi, 00787 double delta_Ut1, 00788 string leap_Utc, 00789 int leap_Sign, 00790 int leap_Err, 00791 long num_Dsd, 00792 long ds_Offset, 00793 long num_Dsr); 00794 00796 DorisHeader(string fileNam, 00797 string sensStart, 00798 string sensStop, 00799 long relOrbi, 00800 long absOrbi, 00801 double delta_Ut1, 00802 string leap_Utc, 00803 int leap_Sign, 00804 int leap_Err, 00805 long num_Dsd, 00806 long ds_Offset, 00807 long num_Dsr, 00808 string procStageCod, 00809 string ref_Doc, 00810 string procTim, 00811 string softVersion, 00812 string phaseIn, 00813 long cycleIn, 00814 string stateVectorTim, 00815 double xPos, 00816 double yPos, 00817 double zPos, 00818 double xVel, 00819 double yVel, 00820 double zVel, 00821 string stateVectSource, 00822 string prodErr, 00823 long tot_Size, 00824 long numDataSet, 00825 string sphDesc, 00826 string sensStartTai, 00827 long absOrbStart, 00828 double relTimAscNodeStart, 00829 string sensStopTai, 00830 long absOrbStop, 00831 double relTimAscNodeStop, 00832 string equator_CrossTime, 00833 long equator_CrossLong, 00834 string ascendFlag, 00835 long start_Lat, 00836 long start_Long, 00837 long stop_Lat, 00838 long stop_Long, 00839 long num_Isps, 00840 long numMissIsps, 00841 long numErrIsps, 00842 long numDiscardIsps, 00843 long num_RsIsps, 00844 long num_RsCorrections, 00845 long dsr_Size 00846 ); 00847 00848 }; 00849 00853 class XD_DECL FileModel 00854 { 00855 public: 00856 00857 //Attributes 00858 vector<string> files; 00859 string auxFile; 00860 long timeRef; 00861 double time0; 00862 double time1; 00863 00865 FileModel(){}; 00866 00868 FileModel( vector<string> &fileNames, 00869 const string auxiliaryFile, 00870 const long timeReference, 00871 const double timeZero, 00872 const double timeOne ) 00873 { 00874 files = fileNames; 00875 auxFile = auxiliaryFile; 00876 timeRef = timeReference; 00877 time0 = timeZero; 00878 time1 = timeOne; 00879 } 00880 00881 }; 00882 00886 class XD_DECL HarmonicData 00887 { 00888 public: 00889 00890 //Attributes 00891 vector<long> harmonicTypePitch; 00892 vector<long> harmonicTypeRoll; 00893 vector<long> harmonicTypeYaw; 00894 vector<double> harmonicCoeffPitch; 00895 vector<double> harmonicCoeffRoll; 00896 vector<double> harmonicCoeffYaw; 00897 00899 HarmonicData(){}; 00900 00902 HarmonicData( vector<long> &harmonicTypPitch, 00903 vector<long> &harmonicTypRoll, 00904 vector<long> &harmonicTypYaw, 00905 vector<double> &harmonicCoefPitch, 00906 vector<double> &harmonicCoefRoll, 00907 vector<double> &harmonicCoefYaw ) 00908 { 00909 harmonicTypePitch = harmonicTypPitch; 00910 harmonicTypeRoll = harmonicTypRoll; 00911 harmonicTypeYaw = harmonicTypYaw; 00912 harmonicCoeffPitch = harmonicCoefPitch; 00913 harmonicCoeffRoll = harmonicCoefRoll; 00914 harmonicCoeffYaw = harmonicCoefYaw; 00915 } 00916 00917 }; 00918 00922 class XD_DECL HarmonicModel 00923 { 00924 public: 00925 00926 //Attributes 00927 long angleType; 00928 HarmonicData harmonicData; 00929 double offsets[3]; 00930 00932 HarmonicModel(){}; 00933 00935 HarmonicModel( const long angleTyp, HarmonicData &harmonicDat, double *offset) 00936 { 00937 angleType = angleTyp; 00938 harmonicData = harmonicDat; 00939 00940 for ( int i = 0 ; i < 3 ; ++i ) 00941 { 00942 offsets[i] = offset[i]; 00943 } 00944 } 00945 }; 00946 00950 class XD_DECL MatrixModel 00951 { 00952 public: 00953 00954 //Attributes 00955 double attMatrix[3][3]; 00956 double offsets[3]; 00957 00959 MatrixModel(){}; 00960 00962 MatrixModel( double **matrix, double *offset ) 00963 { 00964 for ( int i = 0 ; i < 3 ; ++i) 00965 { 00966 for ( int j = 0 ; j < 3 ; ++j ) 00967 { 00968 attMatrix[i][j] = matrix[i][j]; 00969 }// end for j 00970 offsets[i] = offset[i]; 00971 }// end for i 00972 } 00973 }; 00974 00978 class XD_DECL MlstHarmonics 00979 { 00980 public: 00981 00982 //Attributes 00983 double refTime; 00984 double period; 00985 double sinAmplitude; 00986 double cosAmplitude; 00987 00989 MlstHarmonics() 00990 { 00991 refTime = 0.; 00992 period = 1.; 00993 sinAmplitude = 0.; 00994 cosAmplitude = 0.; 00995 }; 00996 00998 MlstHarmonics(double time_in, double period_in, 00999 double sinAmp_in, double cosAmp_in) 01000 { 01001 refTime = time_in; 01002 period = period_in; 01003 sinAmplitude = sinAmp_in; 01004 cosAmplitude = cosAmp_in; 01005 } 01006 }; 01007 01011 class XD_DECL MlstNonlinearDrift 01012 { 01013 public: 01014 01015 //Attributes 01016 long linearApproxValidity; 01017 double quadraticTerm; 01018 vector<MlstHarmonics> mlstHarmonics; 01019 01021 MlstNonlinearDrift() 01022 { 01023 long i; 01024 01025 linearApproxValidity = 99999; 01026 quadraticTerm = 0.; 01027 for (i = 0 ; i < 2 ; i ++ ) 01028 { 01029 mlstHarmonics.push_back(MlstHarmonics()); 01030 } 01031 }; 01032 01034 MlstNonlinearDrift(long linApprox, double quadratic, const vector<MlstHarmonics> &harmonics) 01035 { 01036 linearApproxValidity = linApprox; 01037 quadraticTerm = quadratic; 01038 mlstHarmonics = harmonics; 01039 } 01040 }; 01041 01045 class XD_DECL ParamModel 01046 { 01047 public: 01048 01049 //Attributes 01050 long model; 01051 vector<double> modelParam; 01052 01054 ParamModel(){}; 01055 01057 ParamModel( const long mod, vector<double> &modParam) 01058 { 01059 model = mod; 01060 modelParam = modParam; 01061 } 01062 }; 01063 01067 class XD_DECL SwathGeometry 01068 { 01069 public: 01070 01071 //Attributes 01072 long geometryType; 01073 double azimuth; 01074 double elevation; 01075 double altitude; 01076 double distance; 01077 01079 SwathGeometry(){}; 01080 01082 SwathGeometry( long geomType, double azim, double elevat, 01083 double alt, double dist) 01084 { 01085 geometryType = geomType; 01086 azimuth = azim; 01087 elevation = elevat; 01088 altitude = alt; 01089 distance = dist; 01090 } 01091 }; 01092 01096 class XD_DECL TrackerLimits 01097 { 01098 public: 01099 01100 //Attributes 01101 double maxPenalty; 01102 double normThr; 01103 double maxGap; 01104 01106 TrackerLimits(){}; 01107 01109 TrackerLimits( double maxPenal,double normThreshold, double maximumGap) 01110 { 01111 maxPenalty = maxPenal; 01112 normThr = normThreshold; 01113 maxGap = maximumGap; 01114 } 01115 }; 01116 01120 class XD_DECL StfPt 01121 { 01122 public: 01123 01124 //Attributes 01125 double lon; 01126 double lat; 01127 01129 StfPt(){}; 01130 01132 StfPt( double longitude, double latitude ) 01133 { 01134 lon = longitude; 01135 lat = latitude; 01136 } 01137 }; 01138 01142 class XD_DECL StfVhr 01143 { 01144 public: 01145 01146 //Attributes 01147 string stfName; 01148 string ReferenceOSF; 01149 string ReferenceSDF; 01150 long swathType; 01151 long swathPointType; 01152 01153 double timeStep; 01154 long refractionMode; 01155 double frequency; 01156 01157 long numPoints; 01158 vector<double> altitude; 01159 01160 bool geometryFlag; 01161 01162 long repCycle; 01163 long cycleLength; 01164 double mlstDrift; 01165 01166 long absOrbit; 01167 long orbitStart; 01168 long orbitStop; 01169 01170 double position[3]; 01171 double velocity[3]; 01172 01174 StfVhr(); 01175 01177 StfVhr( string stfNam, 01178 string refOSF, 01179 string refSDF, 01180 long swathTyp, 01181 long swathPointTyp, 01182 double timStep, 01183 long refrMode, 01184 double freq, 01185 long numP, 01186 const vector<double> &alt, 01187 bool geomFlag, 01188 long repCycl, 01189 long cyclLength, 01190 double meanlstDrift, 01191 long absOrb, 01192 long orbit0, 01193 long orbit1, 01194 double *pos, 01195 double *vel 01196 ); 01197 01199 StfVhr( const StfVhr &stfVhr ); 01200 01202 ~StfVhr(); 01203 01205 void operator=( const StfVhr &stfVhr ); 01206 01207 };//class StfVhr 01208 01212 class XD_DECL ZonePoint 01213 { 01214 public: 01215 01216 //Attributes 01217 double ptLong; 01218 double ptLat; 01219 01221 ZonePoint(){}; 01222 01224 ZonePoint( double ptLongitude, double ptLatitude) 01225 { 01226 ptLong = ptLongitude; 01227 ptLat = ptLatitude; 01228 } 01229 }; 01230 01234 class XD_DECL AttitudeModel 01235 { 01236 public: 01237 //Attributes 01238 long attitudeModel; 01239 long AOCS; 01240 ParamModel *paramModel; 01241 HarmonicModel *harmonicModel; 01242 FileModel *fileModel; 01243 AngleModel *angleModel; 01244 MatrixModel *matrixModel; 01245 01247 AttitudeModel(); 01248 01250 AttitudeModel( long attModel, 01251 long AOCSModel, 01252 ParamModel &parMod, 01253 HarmonicModel &harmMod, 01254 FileModel &fileMod, 01255 AngleModel &angleMod, 01256 MatrixModel &matrixMod 01257 ); 01258 01260 AttitudeModel( const AttitudeModel &attModel ); 01261 01263 ~AttitudeModel(); 01264 01266 void operator=( const AttitudeModel &attModel ); 01267 01268 protected: 01269 01270 private: 01272 void eraseAttitude(); 01273 }; 01274 01278 class XD_DECL PolarMotionParams 01279 { 01280 public: 01281 //Attributes 01282 double x; 01283 double y; 01284 01286 PolarMotionParams() 01287 { 01288 x = 0.; 01289 y = 0.; 01290 } 01291 01293 PolarMotionParams( double x1, double y1 ) 01294 { 01295 x = x1; 01296 y = y1; 01297 } 01298 01299 }; 01300 01304 class XD_DECL IersBulletinBrec 01305 { 01306 public: 01307 double day; 01308 double ut1Utc; 01309 double ut1Tai; 01310 PolarMotionParams polarMotionParams; 01311 01313 IersBulletinBrec() 01314 { 01315 day = 0.; 01316 ut1Utc = 0.; 01317 ut1Tai = 0.; 01318 } 01319 01321 IersBulletinBrec(double dayUtc, double diffUt1Utc, double diffUt1Tai, 01322 PolarMotionParams polarMotion) 01323 { 01324 day = dayUtc; 01325 ut1Utc = diffUt1Utc; 01326 ut1Tai = diffUt1Tai; 01327 polarMotionParams = polarMotion; 01328 } 01329 01330 }; 01331 01335 class XD_DECL IersBulletinArec 01336 { 01337 public: 01338 double day; 01339 double ut1Utc; 01340 double ut1Tai; 01341 PolarMotionParams polarMotionParams; 01342 01344 IersBulletinArec() 01345 { 01346 day = 0.; 01347 ut1Utc = 0.; 01348 ut1Tai = 0.; 01349 } 01350 01352 IersBulletinArec(double dayUtc, double diffUt1Utc, double diffUt1Tai, 01353 PolarMotionParams polarMotion) 01354 { 01355 day = dayUtc; 01356 ut1Utc = diffUt1Utc; 01357 ut1Tai = diffUt1Tai; 01358 polarMotionParams = polarMotion; 01359 } 01360 01361 }; 01362 01366 class XD_DECL PolarMotionFormula 01367 { 01368 public: 01369 01370 double ax; 01371 double bx; 01372 double cx; 01373 double dx; 01374 double ex; 01375 01376 double ay; 01377 double by; 01378 double cy; 01379 double dy; 01380 double ey; 01381 01382 double Aref; 01383 double Adiv; 01384 double Cref; 01385 double Cdiv; 01386 01388 PolarMotionFormula() 01389 { 01390 ax = 0.; 01391 bx = 0.; 01392 cx = 0.; 01393 dx = 0.; 01394 ex = 0.; 01395 01396 ay = 0.; 01397 by = 0.; 01398 cy = 0.; 01399 dy = 0.; 01400 ey = 0.; 01401 01402 Aref = 0.; 01403 Adiv = 0.; 01404 Cref = 0.; 01405 Cdiv = 0.; 01406 } 01407 01409 PolarMotionFormula(double a1, double b1, double c1, double d1, double e1, 01410 double a2, double b2, double c2, double d2, double e2, 01411 double Ar, double Ad, double Cr, double Cd) 01412 { 01413 ax = a1; 01414 bx = b1; 01415 cx = c1; 01416 dx = d1; 01417 ex = e1; 01418 01419 ay = a2; 01420 by = b2; 01421 cy = c2; 01422 dy = d2; 01423 ey = e2; 01424 01425 Aref = Ar; 01426 Adiv = Ad; 01427 Cref = Cr; 01428 Cdiv = Cd; 01429 } 01430 01431 }; 01432 01436 class XD_DECL TimeCorrelationFormula 01437 { 01438 public: 01439 01440 double a; 01441 double b; 01442 double bRef; 01443 01445 TimeCorrelationFormula() 01446 { 01447 a = 0.; 01448 b = 0.; 01449 bRef = 0.; 01450 } 01451 01453 TimeCorrelationFormula(double a1, double b1, double br) 01454 { 01455 a = a1; 01456 b = b1; 01457 bRef = br; 01458 } 01459 }; 01460 01464 class XD_DECL IersBulletinBFile 01465 { 01466 public: 01467 01468 string bulletinId; 01469 vector<IersBulletinBrec> finalTable; 01470 vector<IersBulletinBrec> preliminaryTable; 01471 01473 IersBulletinBFile() 01474 { 01475 bulletinId = ""; 01476 } 01477 01479 IersBulletinBFile(string bulId, 01480 vector<IersBulletinBrec> &vecFinal, 01481 vector<IersBulletinBrec> &vecPrel) 01482 { 01483 bulletinId = bulId; 01484 finalTable = vecFinal; 01485 preliminaryTable = vecPrel; 01486 } 01487 01488 };//class IersBulletinBFile 01489 01493 class XD_DECL IersBulletinAFile 01494 { 01495 public: 01496 01497 string bulletinId; 01498 vector<IersBulletinArec> predictionTable; 01499 PolarMotionFormula polarMotionFormula; 01500 TimeCorrelationFormula timeCorrelationFormula; 01501 01503 IersBulletinAFile() 01504 { 01505 bulletinId = ""; 01506 } 01507 01509 IersBulletinAFile(string bulId, 01510 vector<IersBulletinArec> &vecPred, 01511 PolarMotionFormula &polarFormula, 01512 TimeCorrelationFormula &timeFormula) 01513 { 01514 bulletinId = bulId; 01515 predictionTable = vecPred; 01516 polarMotionFormula = polarFormula; 01517 timeCorrelationFormula = timeFormula; 01518 } 01519 01520 };//class IersBulletinAFile 01521 01525 class XD_DECL DemMiniTiles 01526 { 01527 public: 01528 string fileName; 01529 double lonSize; 01530 double latSize; 01531 01533 DemMiniTiles() 01534 { 01535 fileName = ""; 01536 lonSize = 0.; 01537 latSize = 0.; 01538 } 01539 01541 DemMiniTiles(string fileN, double lon, double lat) 01542 { 01543 fileName = fileN; 01544 lonSize = lon; 01545 latSize = lat; 01546 } 01547 }; // AN-492 01548 01552 class XD_DECL QuaternionPlusAngle 01553 { 01554 public: 01555 01556 //Attributes 01557 string quatDefFile; 01558 01559 long inertialFrame; 01560 vector<AttRec> quat; 01561 AngleModel angleModel; 01562 01564 QuaternionPlusAngle(){}; 01565 01567 QuaternionPlusAngle( string file, AngleModel &angModel ) 01568 { 01569 quatDefFile = file; 01570 angleModel = angModel; 01571 } 01572 }; // AN-469 01573 01574 // 01577 class XD_DECL QuaternionPlusMatrix 01578 { 01579 public: 01580 01581 //Attributes 01582 string quatDefFile; 01583 MatrixModel matrixModel; 01584 01586 QuaternionPlusMatrix(){}; 01587 01589 QuaternionPlusMatrix( string file, MatrixModel &matModel ) 01590 { 01591 quatDefFile = file; 01592 matrixModel = matModel; 01593 } 01594 }; // AN-469 01595 01599 class XD_DECL AttitudeDefinitionModel 01600 { 01601 public: 01602 //Attributes 01603 long attitudeModel; 01604 long AOCS; 01605 ParamModel *paramModel; 01606 HarmonicModel *harmonicModel; 01607 FileModel *fileModel; 01608 AngleModel *angleModel; 01609 MatrixModel *matrixModel; 01610 QuaternionPlusAngle *quaternionAngleModel; 01611 QuaternionPlusMatrix * quaternionMatrixModel; 01612 01614 AttitudeDefinitionModel(); 01615 01617 AttitudeDefinitionModel( long attModel, 01618 long AOCSModel, 01619 ParamModel &parMod, 01620 HarmonicModel &harmMod, 01621 FileModel &fileMod, 01622 AngleModel &angleMod, 01623 MatrixModel &matrixMod, 01624 QuaternionPlusAngle &quatAngMod, 01625 QuaternionPlusMatrix &quatMatMod 01626 ); 01627 01629 AttitudeDefinitionModel( const AttitudeDefinitionModel &attModel ); 01630 01632 ~AttitudeDefinitionModel(); 01633 01635 void operator=( const AttitudeDefinitionModel &attModel ); 01636 01637 protected: 01638 01639 private: 01641 void eraseAttitude(); 01642 }; // AN-469 01643 01644 01646 class XD_DECL AzElMask 01647 { 01648 public: 01649 long numMaskPt; 01650 long status; 01651 01652 01653 01654 01655 01656 01657 01658 01659 01660 01661 01662 01663 double azimuth[MaxStationVertices]; 01664 double elevation[MaxStationVertices]; 01665 }; 01666 01668 class XD_DECL LinkMask 01669 { 01670 public: 01671 AzElMask inclMask; 01672 AzElMask exclMask; 01673 }; 01674 01676 class XD_DECL LinkData 01677 { 01678 public: 01679 LinkMask maskData; 01680 double minTgHeight; 01681 }; 01682 01684 union XD_DECL FovConstraintsUnion 01685 { 01686 public: 01687 LinkData SCLinkData; 01688 }; 01689 01690 }//end EECFI 01691 01692 #endif