VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtCigiNetworkIO.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2020 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCigi/vrvCigi.h>
17 
19 
20 #include <vlutil/vlInetSocket.h>
21 
22 #include "CigiTypes.h"
23 #include <CigiVersionID.h>
24 
25 class CigiHatHotRespV3_2;
26 class CigiHatHotRespV4;
27 class CigiLosRespV3_2;
28 class CigiLosRespV4;
29 class CigiLosXRespV3_2;
30 class CigiLosXRespV4;
31 class CigiPositionRespV3;
32 class CigiPositionRespV4;
33 class CigiCollDetSegRespV3;
34 class CigiCollDetSegRespV4;
35 class CigiHatHotRespV3_2;
36 class CigiHatHotRespV4;
37 class CigiHatHotXRespV3_2;
38 class CigiHatHotXRespV4;
39 
40 class DtInetSocket;
41 class DtInetSocketMgr;
42 class DtInetTcpSocket;
43 class CigiIGSession;
44 class CigiBasePacket;
45 class CigiBaseIGCtrl;
46 
47 namespace makCigiExt
48 {
49  class DtCigiDiGuyCtrl;
50  class DtCigiDiGuyCtrlExt;
51  class DtCigiDiGuyExecuteGesture;
52  class DtCigiDiGuyEndGesture;
53  class DtCigiDiGuyCtrlExtV4;
54  class DtCigiDiGuyExecuteGestureV4;
55  class DtCigiDiGuyEndGestureV4;
56 }
57 
58 namespace makVrv
59 {
60  class DtCigiConnectionInitializer;
61  class DtCigiSignalProcessor;
62  class DtCigiConnection;
63  class DtCigiLosBasicResponse;
64  class DtCigiLosExtendedResponse;
65 
72  {
73  public:
74  friend class DtCigiNetworkIOCreator;
75 
77  virtual ~DtCigiNetworkIO();
78 
81  virtual bool receiveCigiMessages();
82 
91  virtual bool sendCigiMessages(unsigned int frameNumber, unsigned int lastHostFrameNumber,
92  int igMode, int databaseNumber);
93 
95  virtual void getCigiVersionFromPacket();
96 
100  virtual bool readyToSendCigiMessages() const;
101 
104  virtual void setSignalProcessor(DtCigiSignalProcessor& sigProcessor);
105 
107  virtual void sendHatHotResponse( const DtHatHotResponder::DtHatHotResponseData* hatHotResponse );
108 
110  virtual void sendLosBasicResponse(DtCigiLosBasicResponse* losResponse);
111 
113  virtual void sendLosExtendedResponse(DtCigiLosExtendedResponse* losResponse);
114 
116  virtual void sendPositionResponse( DtPositionResponder::DtPositionResponseData* posResponse );
117 
119  virtual void sendCollisionSegmentResponse( DtCollisionResponder::DtCollisionSegmentResponseData* collReponse );
120 
124  virtual void sendUserPacket( CigiBasePacket* packet );
125 
127  virtual CigiIGSession& session();
130  virtual const CigiIGSession& session() const;
132 
134  bool cigiSessionExists() const;
135 
137  virtual void packLosBasicResponseV3(const DtCigiLosBasicResponse& response, CigiLosRespV3_2& respPacket);
138 
140  virtual void packLosBasicResponseV4(const DtCigiLosBasicResponse& response, CigiLosRespV4& respPacket);
141 
143  virtual void packLosExtendedResponseV3(const DtCigiLosExtendedResponse& response, CigiLosXRespV3_2& respPacket);
144 
146  virtual void packLosExtendedResponseV4(const DtCigiLosExtendedResponse& response, CigiLosXRespV4& respPacket);
147 
149  virtual void packPositionResponseV3(const DtPositionResponder::DtPositionResponseData& response, CigiPositionRespV3& respPacket);
150  virtual void packPositionResponseV4(const DtPositionResponder::DtPositionResponseData& response, CigiPositionRespV4& respPacket);
151 
153  virtual void packCollisionSegmentResponseV3( const DtCollisionResponder::DtCollisionSegmentResponseData& response, CigiCollDetSegRespV3& respPacket );
154  virtual void packCollisionSegmentResponseV4( const DtCollisionResponder::DtCollisionSegmentResponseData& response, CigiCollDetSegRespV4& respPacket );
155 
157  virtual void packHatHotResponseV3( const DtHatHotResponder::DtHatHotResponseData& response, CigiHatHotRespV3_2& respPacket );
158  virtual void packHatHotResponseV4( const DtHatHotResponder::DtHatHotResponseData& response, CigiHatHotRespV4& respPacket );
159 
161  virtual void packHatHotExtendedResponseV3( const DtHatHotResponder::DtHatHotResponseData& response, CigiHatHotXRespV3_2& respPacket );
162  virtual void packHatHotExtendedResponseV4( const DtHatHotResponder::DtHatHotResponseData& response, CigiHatHotXRespV4& respPacket );
163 
165  virtual bool registerUserPacket(CigiBasePacket* packet,
166  unsigned int packetId, bool hostSend, bool igSend);
167 
169  static bool addSocketCb(DtInetSocket* sock, void* usr);
170 
172  static bool removeSocketCb(DtInetSocket* sock, void* usr);
173 
174  protected:
178  DtCigiNetworkIO(const DtCigiConnectionInitializer& initializer,
179  DtCigiConnection& connection );
180 
182  virtual void initializeUdpSocket(const DtInetEndpoint& endpoint,
183  unsigned int listenPort, DtInetDevice* device);
184 
186  virtual void initializeTcpSocket(const DtInetEndpoint& endpoint,
187  DtInetDevice* device, int localPort);
188 
190  virtual void addSocket(DtInetTcpSocket* sock);
191 
193  virtual void removeSocket(DtInetTcpSocket* sock);
194 
195  virtual DtInetAddr findFirstNetworkDeviceAddress(bool& found) const;
196 
199  CigiBaseIGCtrl* igControlPacket( Cigi_uint8* Dta );
200 
202  DtCigiNetworkIO(const DtCigiNetworkIO& orig);
203 
205  DtCigiNetworkIO& operator=(const DtCigiNetworkIO& orig);
206 
207  protected:
209 
211  DtInetSocket* mySocket;
212 
214  CigiIGSession* myCigiIgSession;
215 
217  DtInetBufferChain myReceiveBufferChain;
218 
220  DtInetBuffer myReceiveBuffer;
221 
223  unsigned int myReceiveBufferSize;
224 
226  DtInetEndpoint myDestinationAddress;
227 
230 
233  DtInetSocketMgr* mySocketMgr;
234 
238 
242 
246 
248  CigiVersionID myCigiVersion;
249 
252 
254  std::vector<const DtHatHotResponder::DtHatHotResponseData*> myHatHotBasicResponses;
255  std::vector<const DtHatHotResponder::DtHatHotResponseData*> myHatHotExtendedResponses;
256 
258  std::vector<DtCigiLosBasicResponse*> myLosBasicResponses;
259  std::vector<DtCigiLosExtendedResponse*> myLosExtendedResponses;
260 
262  std::vector<DtPositionResponder::DtPositionResponseData*> myPositionResponses;
263 
265  std::vector<DtCollisionResponder::DtCollisionSegmentResponseData*> myCollisionSegmentResponses;
266 
267  std::vector<CigiBasePacket*> myUserPacketsToSend;
268 
270  double myTimeSlice;
271 
275 
277 
283 
288 
294 
296 
302 
307 
313 
314  };
315 
318  {
319  public:
322 
324  virtual ~DtCigiNetworkIOCreator();
325 
327  static DtCigiNetworkIOCreator& instance( DtDe& de );
328 
330  static DtCigiNetworkIOCreator& instance( DtCigiConnection& con );
331 
333  virtual DtCigiNetworkIOCreator* clone();
334 
336  static void copyInstance(DtCigiConnection& con, DtDe& de);
337 
339  virtual DtCigiNetworkIO* create( const DtCigiConnectionInitializer& initializer,
340  DtCigiConnection& connection ) const;
341  };
342 }
makCigiExt::DtCigiDiGuyExecuteGesture * myDiGuyExecuteGesturePacket
This points to the sample DtCigiDiGuyExecuteGesture we create and that CIGI uses to decode these pack...
Definition: DtCigiNetworkIO.h:287
double myTimeSlice
Time alloted to check for packet buffers on the socket.
Definition: DtCigiNetworkIO.h:270
This class initializes the CIGI driver.
Definition: DtCigiConnectionInitializer.h:18
Virtual base class.
Definition: DtVirtualBaseClass.h:22
The base class for all packets.
Definition: DtCigiDiGuyEndGesture.h:39
The base class for all packets.
Definition: DtCigiDiGuyCtrl.h:54
std::vector< DtCollisionResponder::DtCollisionSegmentResponseData * > myCollisionSegmentResponses
The Collision Response queue.
Definition: DtCigiNetworkIO.h:265
CigiIGSession * myCigiIgSession
The CIGI Session.
Definition: DtCigiNetworkIO.h:214
DtInetBuffer myReceiveBuffer
The buffer used to receive CIGI messages.
Definition: DtCigiNetworkIO.h:220
unsigned int myReceiveBufferSize
The size of the buffer used to receive CIGI messages.
Definition: DtCigiNetworkIO.h:223
bool myUseSynchronousMode
Whether we&#39;re using synchronous mode or not.
Definition: DtCigiNetworkIO.h:245
DtCigiSignalProcessor * mySignalProcessor
Definition: DtCigiNetworkIO.h:229
makCigiExt::DtCigiDiGuyEndGesture * myDiGuyEndGesturePacket
This points to the sample DtCigiDiGuyEndGesture we create and that CIGI uses to decode these packets...
Definition: DtCigiNetworkIO.h:292
Creator class for the Network IO.
Definition: DtCigiNetworkIO.h:317
Struct for HatHotResponseData.
Definition: DtHatHotResponder.h:70
Contains DLL export macros.
bool myUseTcpServer
Whether we&#39;re using TCP server mode.
Definition: DtCigiNetworkIO.h:241
A DtCigiIntersectionHandler processes CIGI LOS Requests and packages the results into instances of th...
Definition: DtCigiLosExtendedResponse.h:29
Struct for all Position response data In degrees.
Definition: DtPositionResponder.h:99
bool myCigiVersionSet
Whether we have already set the CigiVersion for this session.
Definition: DtCigiNetworkIO.h:251
bool myUseTcpClient
Whether using TCP client mode.
Definition: DtCigiNetworkIO.h:237
std::vector< const DtHatHotResponder::DtHatHotResponseData * > myHatHotBasicResponses
The HAT/HOT Response queue.
Definition: DtCigiNetworkIO.h:254
The base class for all packets.
Definition: DtCigiDiGuyEndGestureV4.h:41
The base class for all packets.
Definition: DtCigiDiGuyExecuteGestureV4.h:48
Contains makVrv::DtCollisionResponder &amp; creator class.
Contains makVrv::DtVirtualBaseClass class.
makCigiExt::DtCigiDiGuyExecuteGestureV4 * myDiGuyExecuteGesturePacketV4
This points to the sample DtCigiDiGuyExecuteGestureV4 we create and that CIGI uses to decode these pa...
Definition: DtCigiNetworkIO.h:306
DtCigiConnection & myConnection
Definition: DtCigiNetworkIO.h:208
DtInetEndpoint myDestinationAddress
The address/port of the host.
Definition: DtCigiNetworkIO.h:226
DtInetBufferChain myReceiveBufferChain
The buffer chains used to receive CIGI messages.
Definition: DtCigiNetworkIO.h:217
Struct for Collision Response Data.
Definition: DtCollisionResponder.h:76
std::vector< DtCigiLosExtendedResponse * > myLosExtendedResponses
Definition: DtCigiNetworkIO.h:259
Contains makVrv::DtHatHotResponder class.
std::vector< const DtHatHotResponder::DtHatHotResponseData * > myHatHotExtendedResponses
Definition: DtCigiNetworkIO.h:255
makCigiExt::DtCigiDiGuyCtrlExt * myDiGuyCtrlExtPacket
CIGI V3 Extension Packets.
Definition: DtCigiNetworkIO.h:282
A DtCigiIntersectionHandler processes CIGI LOS Requests and packages the results into instances of th...
Definition: DtCigiLosBasicResponse.h:27
This class is responsible for the actual processing of CIGI data.
Definition: DtCigiConnection.h:56
std::vector< CigiBasePacket * > myUserPacketsToSend
Definition: DtCigiNetworkIO.h:267
CigiVersionID myCigiVersion
CigiVersion read and set from first packet.
Definition: DtCigiNetworkIO.h:248
The base class for all packets.
Definition: DtCigiDiGuyExecuteGesture.h:44
Contains makVrv::DtPositionResponderclass.
makCigiExt::DtCigiDiGuyCtrlExtV4 * myDiGuyCtrlExtPacketV4
CIGI V4 Extension Packets.
Definition: DtCigiNetworkIO.h:301
std::vector< DtCigiLosBasicResponse * > myLosBasicResponses
The LOS Response queues.
Definition: DtCigiNetworkIO.h:258
DtInetSocketMgr * mySocketMgr
The socket manager holds the TCP server socket and manages connections in TCP server mode...
Definition: DtCigiNetworkIO.h:233
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
The base class for all packets.
Definition: DtCigiDiGuyCtrlExtV4.h:63
makCigiExt::DtCigiDiGuyCtrl * myDiGuyCtrlPacket
Deprecated - This points to the sample DtCigiDiGuyCtrl we create and that CIGI uses to decode these p...
Definition: DtCigiNetworkIO.h:274
This class receives CIGI messages and sends signals that the driver can hook up to for processing...
Definition: DtCigiSignalProcessor.h:81
makCigiExt::DtCigiDiGuyEndGestureV4 * myDiGuyEndGesturePacketV4
This points to the sample DtCigiDiGuyEndGestureV4 we create and that CIGI uses to decode these packet...
Definition: DtCigiNetworkIO.h:311
#define DT_DLL_VRVCIGI
Definition: vrvCigi.h:19
The base class for all packets.
Definition: DtCigiDiGuyCtrlExt.h:62
std::vector< DtPositionResponder::DtPositionResponseData * > myPositionResponses
The Position Response queue.
Definition: DtCigiNetworkIO.h:262
This class performs all of the network I/O for CIGI messages.
Definition: DtCigiNetworkIO.h:71
DtInetSocket * mySocket
The socket. May be a UDP or TCP socket.
Definition: DtCigiNetworkIO.h:211

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)