CARMA C++
AntennaRx.h
Go to the documentation of this file.
1 #ifndef ANTENNARX_H
2 #define ANTENNARX_H
3 
12 
15 #include "carma/szautil/Directives.h"
16 
17 #if DIR_HAVE_CARMA
21 #endif
22 
23 #include <map>
24 
25 namespace sza {
26  namespace antenna {
27 
28 #if DIR_HAVE_CARMA
29  namespace canbus {
30  class IFMod;
31  class BiasTunedGunn;
32  class CalTert;
33  class IntMod;
34  class Receiver;
35  class Thermal;
36  class TiltMeter;
37  class VaractorTunedGunn;
38  class Yig;
39  }
40 #endif
41 
42  namespace control {
43 
48  class AntennaMaster;
49 
55  class AntennaRx :
56  public SzaTask,
57  public sza::util::GenericTask<AntennaRxMsg> {
58 
59  public:
60 
64  void registerDone();
65 
66  void registerCarmaRequest(AntennaRxMsg* msg);
67  void sendCarmaSeqNoMsg(bool success);
68 
73  void sendCalTertDoneMsg(unsigned int seq);
74 
79  void sendIFModDoneMsg(unsigned int seq);
80 
81 #if DIR_HAVE_CARMA
82 
86  static CAN_EXECUTE_DONE_HANDLER(sendExecuteNextCanInstructionMsg);
87 
92  static CAN_COMMAND_DONE_HANDLER(sendCanCommandDoneMsg);
93 
98  static CAN_COMMAND_DONE_HANDLER(sendSelectRxCommandDoneMsg);
99 
104  static CAN_COMMAND_FAILED_HANDLER(canCommandFailed);
105 
106  static CAN_COMMAND_FAILED_HANDLER(selectRxCommandFailed);
107 
108 #endif
109 
110  sza::util::AntNum* getAnt();
111 
112  void setTuningPending(bool pending);
113 
114  AntennaMaster* parent() {
115  return parent_;
116  }
117 
118  private:
119 
123  sza::util::Rx::Id rxId_;
124 
130  friend class AntennaMaster;
131 
135  AntennaMaster* parent_;
136 
137  static AntennaRx* antennaRx_;
138 
139  std::map<sza::util::GenericTaskMsg::CarmaSeqNoType, unsigned long> lastReqCarmaSeqNo_;
140  std::map<sza::util::GenericTaskMsg::CarmaSeqNoType, unsigned long> lastAckCarmaSeqNo_;
141  sza::util::GenericTaskMsg::CarmaSeqNoType carmaSeqNoType_;
142 
143  // Declare CAN commands this class will execute
144 
145 #if DIR_HAVE_CARMA
146  friend class sza::antenna::canbus::SelectRxCommand;
147  class sza::antenna::canbus::SelectRxCommand selectRxCommand_;
148 
149  friend class sza::antenna::canbus::SetBiasCommand;
150  sza::antenna::canbus::SetBiasCommand setBiasCommand_;
151 #endif
152 
159  AntennaRx(AntennaMaster* parent);
160 
166  ~AntennaRx();
167 
173  void processMsg(AntennaRxMsg* msg);
174 
175 #if DIR_HAVE_CARMA
176 
179  sza::antenna::canbus::IFMod* IFMod_;
180  sza::antenna::canbus::BiasTunedGunn* gunn_;
181  sza::antenna::canbus::CalTert* calTert_;
182  sza::antenna::canbus::IntMod* intMod_;
183  sza::antenna::canbus::Receiver* receiver_;
184  sza::antenna::canbus::Thermal* thermal_;
185  sza::antenna::canbus::TiltMeter* tiltmeter_;
186  sza::antenna::canbus::VaractorTunedGunn* varactor_;
187  sza::antenna::canbus::Yig* yig_;
188 
193  void installCanDevices();
194 
198  void processCanMsg(AntennaRxMsg* msg);
199 
203  void processCalTertMsg(AntennaRxMsg* msg);
204 
208  void processIFModMsg(AntennaRxMsg* msg);
209 
213  void processIntModMsg(AntennaRxMsg* msg);
214 
218  void processThermalMsg(AntennaRxMsg* msg);
219 
223  void processTiltMeterMsg(AntennaRxMsg* msg);
224 
228  void processLoMsg(AntennaRxMsg* msg);
229 
233  void toggleLo(sza::util::LoOsc::Osc osc,
234  sza::util::LoStage::Stage stages,
235  bool on);
236 
237 
238  void stepCanCommand(AntennaRxMsg::MsgType type);
239 #endif
240 
245  void sendTrackerRxMsg(sza::util::Rx::Id rxId);
246 
247  bool moveTertiary(sza::util::Rx::Id rxId);
248 
249  }; // End class AntennaRx
250 
251  }; // End namespace control
252  }; // End namespace antenna
253 }; // End namespace sza
254 
255 #endif
256 
257 
258 
A class to enumerate a single Antenna, or a set of Antennas.
Definition: AntNum.h:21
void registerDone()
Register completion of a sequence-number marked transactionxo.
MsgType
Enumerate supported AntennaRx messages.
Definition: AntennaRxMsg.h:48
Tagged: Fri Nov 14 12:39:33 UTC 2003.
Class to encapsulate messages send to the Rx task.
Definition: AntennaRxMsg.h:40
Tagged: Mon Oct 25 23:55:05 PDT 2004.
Tagged: Thu Nov 13 16:53:31 UTC 2003.
AntennaRx class will handle all receiver functions.
Definition: AntennaRx.h:55
All tasks will have the following functionality:
Definition: GenericTask.h:32
Tagged: Sat Oct 23 13:49:19 PDT 2004.
void sendIFModDoneMsg(unsigned int seq)
Send a message to the parent that the IFMod has completed a transaction.
Tagged: Sat Oct 23 13:35:14 PDT 2004.
void sendCalTertDoneMsg(unsigned int seq)
Send a message to the parent that the caltert has completed a transaction.
Tagged: Thu Nov 13 16:53:54 UTC 2003.
Define a class to encapsulate the entire Antenna control system.