My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
AntennaControl.h
1 #ifndef GCP_ANTENNA_CONTROL_ANTENNACONTROL_H
2 #define GCP_ANTENNA_CONTROL_ANTENNACONTROL_H
3 
11 #include <string>
12 #include <sys/socket.h>
13 
14 // Shared control code includes
15 
16 #include "gcp/util/specific/Directives.h"
17 #include "gcp/util/common/GenericTask.h"
18 #include "gcp/util/common/Logger.h"
19 #include "gcp/util/common/LogMsgHandler.h"
20 #include "gcp/util/common/NetCommHandler.h"
21 #include "gcp/util/common/TcpClient.h"
22 
23 #include "gcp/antenna/control/specific/AntennaControlMsg.h"
24 #include "gcp/antenna/control/specific/AntNetCmdForwarder.h"
25 #include "gcp/antenna/control/specific/FrameSender.h"
26 #include "gcp/antenna/control/specific/SpecificTask.h"
27 
28 #define ANTENNACONTROL_TASK_FWD_FN(fn) void (fn)(AntennaControlMsg* msg)
29 
30 namespace gcp {
31  namespace antenna {
32  namespace control {
33 
37  class AntennaMaster;
38  class AntennaGpib;
39  class LnaBiasMonitor;
40  class AdcMonitor;
41  class DlpTempSensors;
42 
44  public SpecificTask,
45  public gcp::util::GenericTask<AntennaControlMsg> {
46 
47  public:
48 
52  AntennaControl(AntennaMaster* parent, bool simGpib, bool simDlp, bool simLna, bool simAdc);
53 
57  virtual ~AntennaControl();
58 
63 
69 
70  void sendGpibConnectedMsg(bool connected);
71 
72  private:
73 
78  friend class AntennaMaster;
79 
83  static AntennaControl* control_;
84 
88  AntennaMaster* parent_;
89 
90  // The task that will be used to communicate with GPIB devices
91 
92  AntennaGpib* gpibTask_;
93 
94 
95  // The task that will be used to communicate with LNA power supply
96 
97  LnaBiasMonitor* lnaTask_;
98 
99 
100  // The task that will be used to communicate with the ADC labjack
101 
102  AdcMonitor* adcTask_;
103 
108  AntNetCmdForwarder* forwarder_;
109 
113  DlpTempSensors* dlp_;
114 
119  gcp::util::NetCommHandler netCommHandler_;
120 
124  gcp::util::TcpClient client_;
125 
129  FrameSender sender_;
130 
134  gcp::util::LogMsgHandler logMsgHandler_;
135 
139  bool connect();
140 
144  bool isConnected();
145 
149  void disconnect();
150 
154  void connectControl(bool reEnable);
155 
159  void disconnectControl();
160 
164  void serviceMsgQ();
165 
170  void sendControlConnectedMsg(bool connected);
171 
175  static LOG_HANDLER_FN(sendLogMsg);
176 
181  static LOG_HANDLER_FN(sendErrMsg);
182 
183  static void sendNetMsg(std::string& logStr, bool isErr);
184 
188  void processMsg(AntennaControlMsg* msg);
189 
193  void packNetMsg(AntennaControlMsg* msg);
194 
198  void sendGreeting();
199 
204  static NET_READ_HANDLER(netCmdReadHandler);
205 
210  static NET_SEND_HANDLER(netMsgReadHandler);
211 
216  static NET_SEND_HANDLER(netMsgSentHandler);
217 
222  static NET_ERROR_HANDLER(netErrorHandler);
223 
228  void sendAntennaIdMsg();
229 
234  void parseGreetingMsg(gcp::util::NetMsg* msg);
235 
236  //------------------------------------------------------------
237  // Thread management functions.
238  //------------------------------------------------------------
239 
240  static THREAD_START(startGpib);
241 
242  //------------------------------------------------------------
243  // Thread cleanup handlers methods
244 
245  static THREAD_CLEAN(cleanGpib);
246 
247  //------------------------------------------------------------
248  // Ping routines for the (pingable) subsystem threads
249 
250  static THREAD_PING(pingGpib);
251 
252  ANTENNACONTROL_TASK_FWD_FN(forwardGpibMsg);
253 
254  }; // End class AntennaControl
255 
256  } // End namespace control
257  } // End namespace antenna
258 } // End namespace gcp
259 
260 #endif // End #ifndef
261 
262 
263 
Definition: biasmon_save.h:43
FrameSender * getSender()
Definition: AntennaControl.cc:413
Definition: AntennaControl.h:43
Definition: DlpTempSensors.h:41
Definition: AntNetCmdForwarder.h:20
Definition: AdcMonitor.h:42
void sendGpibConnectedMsg(bool connected)
Definition: AntennaControl.cc:406
Definition: TcpClient.h:18
virtual ~AntennaControl()
Definition: AntennaControl.cc:92
SpecificShare * getShare()
Definition: AntennaControl.cc:587
Definition: FrameSender.h:25
Definition: NetMsg.h:26
Definition: SpecificTask.h:19
Definition: AntennaControlMsg.h:22
AntennaControl(AntennaMaster *parent, bool simGpib, bool simDlp, bool simLna, bool simAdc)
Definition: AntennaControl.cc:30
Definition: AntennaGpib.h:42
Definition: LogMsgHandler.h:25
Definition: NetCommHandler.h:18
Definition: AntennaMaster.h:179
Definition: GenericTask.h:33