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_ACCESSORS_H_
7 #define OSKAR_VIS_HEADER_ACCESSORS_H_
8 
9 /**
10  * @file oskar_vis_header_accessors.h
11  */
12 
13 #include <oskar_global.h>
14 #include <mem/oskar_mem.h>
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 OSKAR_EXPORT
21 oskar_Mem* oskar_vis_header_telescope_path(oskar_VisHeader* vis);
22 
23 OSKAR_EXPORT
24 const oskar_Mem* oskar_vis_header_telescope_path_const(
25         const oskar_VisHeader* vis);
26 
27 OSKAR_EXPORT
28 oskar_Mem* oskar_vis_header_settings(oskar_VisHeader* vis);
29 
30 OSKAR_EXPORT
31 const oskar_Mem* oskar_vis_header_settings_const(const oskar_VisHeader* vis);
32 
33 OSKAR_EXPORT
34 int oskar_vis_header_num_tags_header(const oskar_VisHeader* vis);
35 
36 OSKAR_EXPORT
37 int oskar_vis_header_num_tags_per_block(const oskar_VisHeader* vis);
38 
39 OSKAR_EXPORT
40 int oskar_vis_header_write_auto_correlations(const oskar_VisHeader* vis);
41 
42 OSKAR_EXPORT
43 int oskar_vis_header_write_cross_correlations(const oskar_VisHeader* vis);
44 
45 OSKAR_EXPORT
46 int oskar_vis_header_amp_type(const oskar_VisHeader* vis);
47 
48 OSKAR_EXPORT
49 int oskar_vis_header_coord_precision(const oskar_VisHeader* vis);
50 
51 OSKAR_EXPORT
52 int oskar_vis_header_max_times_per_block(const oskar_VisHeader* vis);
53 
54 OSKAR_EXPORT
55 int oskar_vis_header_max_channels_per_block(const oskar_VisHeader* vis);
56 
57 OSKAR_EXPORT
58 int oskar_vis_header_num_blocks(const oskar_VisHeader* vis);
59 
60 OSKAR_EXPORT
61 int oskar_vis_header_num_channels_total(const oskar_VisHeader* vis);
62 
63 OSKAR_EXPORT
64 int oskar_vis_header_num_elements_in_station(
65         const oskar_VisHeader* vis, int station);
66 
67 OSKAR_EXPORT
68 int oskar_vis_header_num_times_total(const oskar_VisHeader* vis);
69 
70 OSKAR_EXPORT
71 int oskar_vis_header_num_stations(const oskar_VisHeader* vis);
72 
73 OSKAR_EXPORT
74 int oskar_vis_header_pol_type(const oskar_VisHeader* vis);
75 
76 OSKAR_EXPORT
77 int oskar_vis_header_phase_centre_coord_type(const oskar_VisHeader* vis);
78 
79 OSKAR_EXPORT
80 double oskar_vis_header_phase_centre_longitude_deg(const oskar_VisHeader* vis);
81 
82 OSKAR_EXPORT
83 double oskar_vis_header_phase_centre_latitude_deg(const oskar_VisHeader* vis);
84 
85 /* DEPRECATED. */
86 OSKAR_EXPORT
87 double oskar_vis_header_phase_centre_ra_deg(const oskar_VisHeader* vis);
88 
89 /* DEPRECATED. */
90 OSKAR_EXPORT
91 double oskar_vis_header_phase_centre_dec_deg(const oskar_VisHeader* vis);
92 
93 OSKAR_EXPORT
94 double oskar_vis_header_freq_start_hz(const oskar_VisHeader* vis);
95 
96 OSKAR_EXPORT
97 double oskar_vis_header_freq_inc_hz(const oskar_VisHeader* vis);
98 
99 OSKAR_EXPORT
100 double oskar_vis_header_channel_bandwidth_hz(const oskar_VisHeader* vis);
101 
102 OSKAR_EXPORT
103 double oskar_vis_header_time_start_mjd_utc(const oskar_VisHeader* vis);
104 
105 OSKAR_EXPORT
106 double oskar_vis_header_time_inc_sec(const oskar_VisHeader* vis);
107 
108 OSKAR_EXPORT
109 double oskar_vis_header_time_average_sec(const oskar_VisHeader* vis);
110 
111 OSKAR_EXPORT
112 double oskar_vis_header_telescope_lon_deg(const oskar_VisHeader* vis);
113 
114 OSKAR_EXPORT
115 double oskar_vis_header_telescope_lat_deg(const oskar_VisHeader* vis);
116 
117 OSKAR_EXPORT
118 double oskar_vis_header_telescope_alt_metres(const oskar_VisHeader* vis);
119 
120 OSKAR_EXPORT
121 oskar_Mem* oskar_vis_header_station_offset_ecef_metres(
122         oskar_VisHeader* vis, int dim);
123 
124 OSKAR_EXPORT
125 const oskar_Mem* oskar_vis_header_station_offset_ecef_metres_const(
126         const oskar_VisHeader* vis, int dim);
127 
128 OSKAR_EXPORT
129 oskar_Mem* oskar_vis_header_element_enu_metres(
130         oskar_VisHeader* vis, int dim, int station);
131 
132 OSKAR_EXPORT
133 const oskar_Mem* oskar_vis_header_element_enu_metres_const(
134         const oskar_VisHeader* vis, int dim, int station);
135 
136 
137 /* Setters. */
138 OSKAR_EXPORT
139 void oskar_vis_header_set_freq_start_hz(oskar_VisHeader* vis, double value);
140 
141 OSKAR_EXPORT
142 void oskar_vis_header_set_freq_inc_hz(oskar_VisHeader* vis, double value);
143 
144 OSKAR_EXPORT
145 void oskar_vis_header_set_channel_bandwidth_hz(oskar_VisHeader* vis,
146         double value);
147 
148 OSKAR_EXPORT
149 void oskar_vis_header_set_time_start_mjd_utc(oskar_VisHeader* vis,
150         double value);
151 
152 OSKAR_EXPORT
153 void oskar_vis_header_set_time_inc_sec(oskar_VisHeader* vis, double value);
154 
155 OSKAR_EXPORT
156 void oskar_vis_header_set_time_average_sec(oskar_VisHeader* vis, double value);
157 
158 OSKAR_EXPORT
159 void oskar_vis_header_set_phase_centre(oskar_VisHeader* vis,
160         int coord_type, double longitude_deg, double latitude_deg);
161 
162 OSKAR_EXPORT
163 void oskar_vis_header_set_telescope_centre(oskar_VisHeader* vis,
164         double longitude_deg, double latitude_deg, double alt_metres);
165 
166 OSKAR_EXPORT
167 void oskar_vis_header_set_pol_type(oskar_VisHeader* vis, int value,
168         int* status);
169 
170 #ifdef __cplusplus
171 }
172 #endif
173 
174 #endif /* include guard */
175