1 /* 2 * Copyright (c) 2015-2021, The OSKAR Developers. 3 * See the LICENSE file at the top-level directory of this distribution. 4 */ 5 6 #ifndef OSKAR_VIS_HEADER_H_ 7 #define OSKAR_VIS_HEADER_H_ 8 9 /** 10 * @file oskar_vis_header.h 11 */ 12 13 /* Public interface. */ 14 15 #ifdef __cplusplus 16 extern "C" { 17 #endif 18 19 struct oskar_VisHeader; 20 #ifndef OSKAR_VIS_HEADER_TYPEDEF_ 21 #define OSKAR_VIS_HEADER_TYPEDEF_ 22 typedef struct oskar_VisHeader oskar_VisHeader; 23 #endif /* OSKAR_VIS_HEADER_TYPEDEF_ */ 24 25 /* To maintain binary compatibility, do not change the values 26 * in the list below. */ 27 enum OSKAR_VIS_HEADER_TAGS 28 { 29 OSKAR_VIS_HEADER_TAG_TELESCOPE_PATH = 1, 30 OSKAR_VIS_HEADER_TAG_NUM_TAGS_PER_BLOCK = 2, 31 OSKAR_VIS_HEADER_TAG_WRITE_AUTO_CORRELATIONS = 3, 32 OSKAR_VIS_HEADER_TAG_WRITE_CROSS_CORRELATIONS = 4, 33 OSKAR_VIS_HEADER_TAG_AMP_TYPE = 5, 34 OSKAR_VIS_HEADER_TAG_COORD_PRECISION = 6, 35 OSKAR_VIS_HEADER_TAG_MAX_TIMES_PER_BLOCK = 7, 36 OSKAR_VIS_HEADER_TAG_NUM_TIMES_TOTAL = 8, 37 OSKAR_VIS_HEADER_TAG_MAX_CHANNELS_PER_BLOCK = 9, 38 OSKAR_VIS_HEADER_TAG_NUM_CHANNELS_TOTAL = 10, 39 OSKAR_VIS_HEADER_TAG_NUM_STATIONS = 11, 40 OSKAR_VIS_HEADER_TAG_POL_TYPE = 12, 41 /* Tags 13-20 are reserved for future use. */ 42 OSKAR_VIS_HEADER_TAG_PHASE_CENTRE_COORD_TYPE = 21, 43 OSKAR_VIS_HEADER_TAG_PHASE_CENTRE_DEG = 22, 44 OSKAR_VIS_HEADER_TAG_FREQ_START_HZ = 23, 45 OSKAR_VIS_HEADER_TAG_FREQ_INC_HZ = 24, 46 OSKAR_VIS_HEADER_TAG_CHANNEL_BANDWIDTH_HZ = 25, 47 OSKAR_VIS_HEADER_TAG_TIME_START_MJD_UTC = 26, 48 OSKAR_VIS_HEADER_TAG_TIME_INC_SEC = 27, 49 OSKAR_VIS_HEADER_TAG_TIME_AVERAGE_SEC = 28, 50 OSKAR_VIS_HEADER_TAG_TELESCOPE_REF_LON_DEG = 29, 51 OSKAR_VIS_HEADER_TAG_TELESCOPE_REF_LAT_DEG = 30, 52 OSKAR_VIS_HEADER_TAG_TELESCOPE_REF_ALT_M = 31, 53 OSKAR_VIS_HEADER_TAG_STATION_X_OFFSET_ECEF = 32, 54 OSKAR_VIS_HEADER_TAG_STATION_Y_OFFSET_ECEF = 33, 55 OSKAR_VIS_HEADER_TAG_STATION_Z_OFFSET_ECEF = 34, 56 OSKAR_VIS_HEADER_TAG_ELEMENT_X_ENU = 35, 57 OSKAR_VIS_HEADER_TAG_ELEMENT_Y_ENU = 36, 58 OSKAR_VIS_HEADER_TAG_ELEMENT_Z_ENU = 37 59 }; 60 61 enum OSKAR_VIS_HEADER_POL_TYPE 62 { 63 OSKAR_VIS_POL_TYPE_STOKES_I_Q_U_V = 0, 64 OSKAR_VIS_POL_TYPE_STOKES_I = 1, 65 OSKAR_VIS_POL_TYPE_STOKES_Q = 2, 66 OSKAR_VIS_POL_TYPE_STOKES_U = 3, 67 OSKAR_VIS_POL_TYPE_STOKES_V = 4, 68 OSKAR_VIS_POL_TYPE_LINEAR_XX_XY_YX_YY = 10, 69 OSKAR_VIS_POL_TYPE_LINEAR_XX = 11, 70 OSKAR_VIS_POL_TYPE_LINEAR_XY = 12, 71 OSKAR_VIS_POL_TYPE_LINEAR_YX = 13, 72 OSKAR_VIS_POL_TYPE_LINEAR_YY = 14 73 }; 74 75 #ifdef __cplusplus 76 } 77 #endif 78 79 #include <vis/oskar_vis_header_accessors.h> 80 #include <vis/oskar_vis_header_create.h> 81 #include <vis/oskar_vis_header_free.h> 82 #include <vis/oskar_vis_header_read.h> 83 #include <vis/oskar_vis_header_write.h> 84 #include <vis/oskar_vis_header_write_ms.h> 85 86 #endif /* include guard */ 87