CARMA C++
Rx.h
1 #ifndef SZA_UTIL_RX_H
2 #define SZA_UTIL_RX_H
3 
11 #include "carma/szautil/AntNum.h"
13 #include "carma/szautil/CalPos.h"
14 #include "carma/szautil/Frequency.h"
15 #include "carma/szautil/Voltage.h"
16 
17 namespace sza {
18  namespace util {
19 
20  class Rx {
21  public:
22 
26  enum Id {
27 
28  RXNONE = 0x0,
29  RXUNKNOWN = 0x0,
30 
31  // The following are duplicate names
32 
33  RX1CM = 0x1,
34  RX30GHZ = 0x1,
35  RXKABAND = 0x1,
36 
37  // The following are duplicate names
38 
39  RX3MM = 0x2,
40  RX90GHZ = 0x2,
41  RXWBAND = 0x2,
42 
43  // The following are duplicate names
44 
45  RX1MM = 0x4,
46  RX230GHZ = 0x4,
47 
48  // All receivers
49 
50  RXALL = RX1CM | RX3MM | RX1MM
51  };
52 
53  enum Stage {
54 
55  // 30 GHz Amp codes
56 
57  Amp30GHzRFStage1Vg = 0,
58  Amp30GHzRFStage2Vg = 1,
59  Amp30GHzRFStage3Vg = 2,
60  Amp30GHzRFStage4Vg = 3,
61 
62  Amp30GHzRFStage1Id = 4,
63  Amp30GHzRFStage2Id = 5,
64  Amp30GHzRFStage3Id = 6,
65  Amp30GHzRFStage4Id = 7,
66 
67  Amp30GHzIF1 = 8,
68 
69  // 90 GHz Amp codes
70 
71  Amp90GHzRF1Stage1Vg = 9,
72  Amp90GHzRF1Stage2Vg = 10,
73  Amp90GHzRF2Stage1Vg = 11,
74  Amp90GHzRF2Stage2Vg = 12,
75 
76  Amp90GHzRF1Vd = 13,
77  Amp90GHzRF2Vd = 14,
78 
79  Amp90GHzIFVd = 15,
80  Amp90GHzIFVg = 16,
81 
82  AmpInvalid = 17
83  };
84 
88  Rx(Id);
89 
93  Rx(AntNum::Id antId, Rx::Id rxId);
94 
98  virtual ~Rx();
99 
104  static Frequency getSkyFrequency(Id id);
105  Frequency getSkyFrequency();
106 
111  static Frequency getLOFrequency(Id id);
112  Frequency getLOFrequency();
113 
114  //-----------------------------------------------------------------------
115  // YIG frequency
116  //-----------------------------------------------------------------------
117 
118  // Public method to set the Yig center frequency, in Hz
119  // corresponding to this receiver.
120 
121  static void setYigFrequency(Frequency freq, AntNum::Id antId, Rx::Id id);
122 
123  // Public method to return the Yig frequency, corresponding to
124  // this receiver.
125 
126  static Frequency getYigFrequency(Id id);
127  static Frequency getYigFrequency(AntNum::Id, Id id);
128  Frequency getYigFrequency();
129 
133  static unsigned char rxToIFSwitchPos(Rx::Id rxId);
134  static Rx::Id switchPosToRx(unsigned char);
135 
136  //-----------------------------------------------------------------------
137  // GUNN voltage
138  //-----------------------------------------------------------------------
139 
140  // Public method to set the Gunn operating voltage corresponding
141  // to this receiver.
142 
143  static void setGunnVoltage(Voltage voltage, AntNum::Id antId);
144 
145  // Public method to return the Gunn operating voltage
146  // corresponding to this receiver.
147 
148  static Voltage getGunnVoltage(AntNum::Id antId);
149 
150  //-----------------------------------------------------------------------
151  // GUNN LO frequency
152  //-----------------------------------------------------------------------
153 
154  // Public method to set the Gunn operating frequency corresponding
155  // to this receiver.
156 
157  static void setGunnFrequency(Frequency freq, AntNum::Id antId);
158 
159  // Public method to return the Gunn operating frequency
160  // corresponding to this receiver.
161 
162  static Frequency getGunnFrequency(AntNum::Id antId);
163 
164  //-----------------------------------------------------------------------
165  // IF Attenuation
166  //-----------------------------------------------------------------------
167 
171  static void setIfTotalAtten(Attenuation atten, AntNum::Id antId, Rx::Id id, CalPos::Pos pos=CalPos::ALL);
172  static void setIfInputAtten(Attenuation atten, AntNum::Id antId, Rx::Id id, CalPos::Pos pos=CalPos::ALL);
173  static void setIfOutputAtten(Attenuation atten, AntNum::Id antId, Rx::Id id, CalPos::Pos pos=CalPos::ALL);
174 
175  // Return the IF attenuations for each antenna
176 
177  static Attenuation getIfTotalAtten(AntNum::Id antId, Rx::Id id, CalPos::Pos pos=CalPos::SKY);
178  static Attenuation getIfInputAtten(AntNum::Id antId, Rx::Id id, CalPos::Pos pos=CalPos::SKY);
179  static Attenuation getIfOutputAtten(AntNum::Id antId, Rx::Id id, CalPos::Pos pos=CalPos::SKY);
180 
181  // Return the IF attenuation for this object
182 
183  Attenuation getIfTotalAtten(CalPos::Pos pos=CalPos::SKY);
184  Attenuation getIfInputAtten(CalPos::Pos pos=CalPos::SKY);
185  Attenuation getIfOutputAtten(CalPos::Pos pos=CalPos::SKY);
186 
187  private:
188 
189  // When this object is used to describe a single receiver, these
190  // members will be set
191 
192  Rx::Id rxId_;
193  AntNum::Id antId_;
194 
195  bool rxIsSet_;
196  bool antIsSet_;
197 
198  // Rx sky frequencies
199 
200  static const Frequency rx30GHzLOFreq_;
201  static const Frequency rx90GHzLOFreq_;
202  static const Frequency rx230GHzLOFreq_;
203 
204  // Rx sky frequencies
205 
206  static const Frequency rx30GHzSkyFreq_;
207  static const Frequency rx90GHzSkyFreq_;
208  static const Frequency rx230GHzSkyFreq_;
209 
210  // Rx yig frequencies
211 
212  static const Frequency rx30GHzYigFreq_;
213  static const Frequency rx90GHzYigFreq_;
214  static const Frequency rx230GHzYigFreq_;
215 
216  // Rx yig frequencies for each antenna
217 
218  static Frequency rx30GHzYigFreqs_[AntNum::NANT];
219  static Frequency rx90GHzYigFreqs_[AntNum::NANT];
220  static Frequency rx230GHzYigFreqs_[AntNum::NANT];
221 
222  // 90 GHz Gunn voltages
223 
224  static Voltage gunnVoltages_[AntNum::NANT];
225 
226  // 90 GHz Gunn frequencies
227 
228  static Frequency gunnFrequencies_[AntNum::NANT];
229 
230  // IF switch positions corresponding to rxs
231 
232  static const unsigned char RX30GHZ_IFSWITCHPOS = 1;
233  static const unsigned char RX90GHZ_IFSWITCHPOS = 2;
234  static const unsigned char RX230GHZ_IFSWITCHPOS = 3;
235  static const unsigned char UNUSED_IFSWITCHPOS = 4;
236 
237  // IF Attenuator settings for each antenna, against the sky
238 
239  static Attenuation rx30GHzIfTotalAttensSky_[AntNum::NANT];
240  static Attenuation rx90GHzIfTotalAttensSky_[AntNum::NANT];
241  static Attenuation rx230GHzIfTotalAttensSky_[AntNum::NANT];
242 
243  static Attenuation rx30GHzIfInputAttensSky_[AntNum::NANT];
244  static Attenuation rx90GHzIfInputAttensSky_[AntNum::NANT];
245  static Attenuation rx230GHzIfInputAttensSky_[AntNum::NANT];
246 
247  static Attenuation rx30GHzIfOutputAttensSky_[AntNum::NANT];
248  static Attenuation rx90GHzIfOutputAttensSky_[AntNum::NANT];
249  static Attenuation rx230GHzIfOutputAttensSky_[AntNum::NANT];
250 
251  // IF Attenuator settings for each antenna, against the load
252 
253  static Attenuation rx30GHzIfTotalAttensLoad_[AntNum::NANT];
254  static Attenuation rx90GHzIfTotalAttensLoad_[AntNum::NANT];
255  static Attenuation rx230GHzIfTotalAttensLoad_[AntNum::NANT];
256 
257  static Attenuation rx30GHzIfInputAttensLoad_[AntNum::NANT];
258  static Attenuation rx90GHzIfInputAttensLoad_[AntNum::NANT];
259  static Attenuation rx230GHzIfInputAttensLoad_[AntNum::NANT];
260 
261  static Attenuation rx30GHzIfOutputAttensLoad_[AntNum::NANT];
262  static Attenuation rx90GHzIfOutputAttensLoad_[AntNum::NANT];
263  static Attenuation rx230GHzIfOutputAttensLoad_[AntNum::NANT];
264 
265  }; // End class Rx
266 
267  } // End namespace util
268 } // End namespace sza
269 
270 #endif // End #ifndef SZA_UTIL_RX_H
Tagged: Tue Mar 30 08:59:30 PST 2004.
Tagged: Thu Jun 17 21:05:13 UTC 2004.
Tagged: Fri Nov 14 12:39:31 UTC 2003.
Id
Enumerate known receivers.
Definition: AntNum.h:35
Tagged: Sun Mar 27 12:36:42 PST 2005.