My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
Control.h
1 #ifndef GCP_MEDIATOR_CONTROL_H
2 #define GCP_MEDIATOR_CONTROL_H
3 
11 #include <list>
12 #include <vector>
13 
14 // Shared control code includes
15 
16 #include "gcp/control/code/unix/libunix_src/specific/rtcnetcoms.h"
17 
18 // SZA antenna code includes
19 
20 #include "gcp/util/common/ArrayRegMapDataFrameManager.h"
21 #include "gcp/util/common/FdSet.h"
22 #include "gcp/util/common/GenericTask.h"
23 #include "gcp/util/common/Logger.h"
24 #include "gcp/util/common/LogMsgHandler.h"
25 #include "gcp/util/common/NetCommHandler.h"
26 #include "gcp/util/common/TcpClient.h"
27 
28 #include "gcp/mediator/specific/ControlMsg.h"
29 #include "gcp/mediator/specific/TransNetCmdForwarder.h"
30 
31 #define CONTROL_TASK_FWD_FN(fn) void (fn)(ControlMsg* msg)
32 
33 namespace gcp {
34  namespace mediator {
35 
40  class Master;
41  class MasterMsg;
42  class Control;
43  class AntennaControl;
44  class NetCmdToMsg;
45  class GrabberControl;
46  class ReceiverControl;
47  class WxControl;
48 
53  class Control :
54  public gcp::util::GenericTask<ControlMsg> {
55 
56  public:
57 
61  ~Control();
62 
63  //------------------------------------------------------------
64  // Task message forwarding methods
65  //------------------------------------------------------------
66 
71  CONTROL_TASK_FWD_FN(forwardAntennaControlMsg);
72 
76  CONTROL_TASK_FWD_FN(forwardControlMsg);
77 
82  CONTROL_TASK_FWD_FN(forwardGrabberControlMsg);
83 
88  CONTROL_TASK_FWD_FN(forwardReceiverControlMsg);
89 
94  CONTROL_TASK_FWD_FN(forwardWxControlMsg);
95 
100  void forwardMasterMsg(MasterMsg* msg);
101 
102  void forwardNetCmd(gcp::util::NetCmd* netCmd);
103 
104  gcp::util::RegMapDataFrameManager* getArrayShare();
105 
106  Master* parent() {return parent_;}
107 
108  std::string wxHost();
109 
110  private:
111 
115  friend class Master;
116  friend class AntennaControl;
117  friend class GrabberControl;
118  friend class ReceiverControl;
119  friend class WxControl;
120 
124  static Control* control_;
125 
130  gcp::util::NetCommHandler netCommHandler_;
131 
135  TransNetCmdForwarder* forwarder_;
136 
140  gcp::util::LogMsgHandler logMsgHandler_;
141 
142  //------------------------------------------------------------
143  // Declare startup functions for threads managed by this class.
144  //------------------------------------------------------------
145 
149  static THREAD_START(startAntennaControl);
150 
154  static THREAD_START(startGrabberControl);
155 
159  static THREAD_START(startReceiverControl);
160 
164  static THREAD_START(startWxControl);
165 
166  //------------------------------------------------------------
167  // Declare cleanup handlers for threads managed by this class.
168  //------------------------------------------------------------
169 
173  static THREAD_CLEAN(cleanAntennaControl);
174 
178  static THREAD_CLEAN(cleanGrabberControl);
179 
183  static THREAD_CLEAN(cleanReceiverControl);
184 
188  static THREAD_CLEAN(cleanWxControl);
189 
190  //------------------------------------------------------------
191  // Declare methods by which we can ping spawned threads
192  //------------------------------------------------------------
193 
197  static THREAD_PING(pingAntennaControl);
198 
202  static THREAD_PING(pingGrabberControl);
203 
207  static THREAD_PING(pingReceiverControl);
208 
212  static THREAD_PING(pingWxControl);
213 
217  Master* parent_;
218 
222  AntennaControl* antennaControl_;
223  GrabberControl* grabberControl_;
224  ReceiverControl* receiverControl_;
225  WxControl* wxControl_;
226 
230  gcp::util::TcpClient client_;
231 
235  std::string host_;
236 
240  bool connected_;
241 
246  Control(Master* master);
247 
251  bool isConnected();
252 
256  bool connect();
257 
261  void disconnect();
262 
266  void connectControl(bool reEnable);
267 
271  void disconnectControl();
272 
276  void serviceMsgQ();
277 
281  void sendHeartBeat();
282 
286  void sendControlConnectedMsg(bool connected);
287 
291  void sendScriptDoneMsg(unsigned seq);
292 
296  void sendAntennaInitMsg(bool start);
297 
301  static void sendNetLogMsg(std::string logStr, bool isErr);
302 
306  static LOG_HANDLER_FN(sendLogMsg);
307 
312  static LOG_HANDLER_FN(sendErrMsg);
313 
319  void processMsg(ControlMsg* taskMsg);
320 
324  void respondToHeartBeat();
325 
329  void packNetMsg(ControlMsg* msg);
330 
334  static NET_READ_HANDLER(readNetCmdHandler);
335 
339  static NET_SEND_HANDLER(sendNetMsgHandler);
340 
345  static NET_ERROR_HANDLER(networkErrorHandler);
346 
347  }; // End class Control
348 
349  } // End namespace mediator
350 } // End namespace gcp
351 
352 #endif // End #ifndef
Definition: GrabberControl.h:32
Definition: WxControl.h:45
Definition: ReceiverControl.h:43
Definition: TcpClient.h:18
~Control()
Definition: Control.cc:92
Definition: NetCmd.h:21
Definition: MasterMsg.h:22
Definition: Master.h:64
void forwardMasterMsg(MasterMsg *msg)
Definition: Control.cc:626
Definition: Control.h:53
Definition: LogMsgHandler.h:25
Definition: NetCommHandler.h:18
Definition: TransNetCmdForwarder.h:19
Definition: ControlMsg.h:22
Definition: AntennaControl.h:34
Definition: RegMapDataFrameManager.h:26
CONTROL_TASK_FWD_FN(forwardAntennaControlMsg)
Definition: GenericTask.h:33