VR-Forces Developer's Guide
 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>
18 
20 
21 #include <vlutil/vlInetSocket.h>
22 
23 #include "CigiTypes.h"
24 #include <CigiVersionID.h>
25 
26 class CigiHatHotRespV3_2;
27 class CigiHatHotRespV4;
28 class CigiLosRespV3_2;
29 class CigiLosRespV4;
30 class CigiLosXRespV3_2;
31 class CigiLosXRespV4;
32 class CigiPositionRespV3;
33 class CigiPositionRespV4;
34 class CigiCollDetSegRespV3;
35 class CigiCollDetSegRespV4;
36 class CigiHatHotRespV3_2;
37 class CigiHatHotRespV4;
38 class CigiHatHotXRespV3_2;
39 class CigiHatHotXRespV4;
40 class CigiSensorRespV3;
41 class CigiSensorRespV4;
42 class CigiSensorXRespV3;
43 class CigiSensorXRespV4;
44 
45 class DtInetSocket;
46 class DtInetSocketMgr;
47 class DtInetTcpSocket;
48 class CigiIGSession;
49 class CigiBasePacket;
50 class CigiBaseIGCtrl;
51 
52 namespace makCigiExt
53 {
54  class DtCigiDiGuyCtrl;
55  class DtCigiDiGuyCtrlExt;
56  class DtCigiDiGuyExecuteGesture;
57  class DtCigiDiGuyEndGesture;
58  class DtCigiDiGuyCtrlExtV4;
59  class DtCigiDiGuyExecuteGestureV4;
60  class DtCigiDiGuyEndGestureV4;
61 }
62 
63 namespace makVrv
64 {
65  class DtCigiConnectionInitializer;
66  class DtCigiSignalProcessor;
67  class DtCigiConnection;
68  class DtCigiLosBasicResponse;
69  class DtCigiLosExtendedResponse;
70 
77  {
78  public:
79  friend class DtCigiNetworkIOCreator;
80 
82  virtual ~DtCigiNetworkIO();
83 
86  virtual bool receiveCigiMessages();
87 
96  virtual bool sendCigiMessages(unsigned int frameNumber, unsigned int lastHostFrameNumber,
97  int igMode, int databaseNumber);
98 
101  virtual void setSignalProcessor(DtCigiSignalProcessor& sigProcessor);
102 
104  virtual void sendHatHotResponse( const DtHatHotResponder::DtHatHotResponseData* hatHotResponse );
105 
107  virtual void sendLosBasicResponse(DtCigiLosBasicResponse* losResponse);
108 
110  virtual void sendLosExtendedResponse(DtCigiLosExtendedResponse* losResponse);
111 
113  virtual void sendPositionResponse( DtPositionResponder::DtPositionResponseData* posResponse );
114 
116  virtual void sendCollisionSegmentResponse( DtCollisionResponder::DtCollisionSegmentResponseData* collReponse );
117 
119  virtual void sendSensorResponse( DtSensorResponder::DtSensorResponseData* sensorResponse );
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 void packSensorResponseV3( const DtSensorResponder::DtSensorResponseData& response, CigiSensorRespV3& respPacket );
166  virtual void packSensorResponseV4( const DtSensorResponder::DtSensorResponseData& response, CigiSensorRespV4& respPacket );
167 
169  virtual void packSensorExtendedResponseV3( const DtSensorResponder::DtSensorResponseData& response, CigiSensorXRespV3& respPacket );
170  virtual void packSensorExtendedResponseV4( const DtSensorResponder::DtSensorResponseData& response, CigiSensorXRespV4& respPacket );
171 
173  virtual bool registerUserPacket(CigiBasePacket* packet,
174  unsigned int packetId, bool hostSend, bool igSend);
175 
177  static bool addSocketCb(DtInetSocket* sock, void* usr);
178 
180  static bool removeSocketCb(DtInetSocket* sock, void* usr);
181 
182  protected:
186  DtCigiNetworkIO(const DtCigiConnectionInitializer& initializer,
187  DtCigiConnection& connection );
188 
190  virtual void initializeUdpSocket(const DtInetEndpoint& endpoint,
191  unsigned int listenPort, DtInetDevice* device);
192 
194  virtual void initializeTcpSocket(const DtInetEndpoint& endpoint,
195  DtInetDevice* device, int localPort);
196 
198  virtual void addSocket(DtInetTcpSocket* sock);
199 
201  virtual void removeSocket(DtInetTcpSocket* sock);
202 
203  virtual DtInetAddr findFirstNetworkDeviceAddress(bool& found) const;
204 
207  CigiBaseIGCtrl* igControlPacket( Cigi_uint8* Dta );
208 
210  DtCigiNetworkIO(const DtCigiNetworkIO& orig);
211 
213  DtCigiNetworkIO& operator=(const DtCigiNetworkIO& orig);
214 
215  protected:
217 
219  DtInetSocket* mySocket;
220 
222  CigiIGSession* myCigiIgSession;
223 
225  DtInetBufferChain myReceiveBufferChain;
226 
228  DtInetBuffer myReceiveBuffer;
229 
231  unsigned int myReceiveBufferSize;
232 
234  DtInetEndpoint myDestinationAddress;
235 
238 
241  DtInetSocketMgr* mySocketMgr;
242 
246 
250 
254 
258  std::vector<const DtHatHotResponder::DtHatHotResponseData*> myHatHotBasicResponses;
259  std::vector<const DtHatHotResponder::DtHatHotResponseData*> myHatHotExtendedResponses;
260 
262  std::vector<DtCigiLosBasicResponse*> myLosBasicResponses;
263  std::vector<DtCigiLosExtendedResponse*> myLosExtendedResponses;
264 
266  std::vector<DtPositionResponder::DtPositionResponseData*> myPositionResponses;
267 
269  std::vector<DtCollisionResponder::DtCollisionSegmentResponseData*> myCollisionSegmentResponses;
270 
272  std::vector<DtSensorResponder::DtSensorResponseData*> mySensorResponses;
273  std::vector<DtSensorResponder::DtSensorResponseData*> mySensorExtendedResponses;
274 
275  std::vector<CigiBasePacket*> myUserPacketsToSend;
277 
279  double myTimeSlice;
280 
284 
286 
292 
297 
303 
305 
311 
316 
322 
323  };
324 
327  {
328  public:
331 
333  virtual ~DtCigiNetworkIOCreator();
334 
336  static DtCigiNetworkIOCreator& instance( DtDe& de );
337 
339  static DtCigiNetworkIOCreator& instance( DtCigiConnection& con );
340 
342  virtual DtCigiNetworkIOCreator* clone();
343 
345  static void copyInstance(DtCigiConnection& con, DtDe& de);
346 
348  virtual DtCigiNetworkIO* create( const DtCigiConnectionInitializer& initializer,
349  DtCigiConnection& connection ) const;
350  };
351 }
Contains makVrv::DtSensorResponder class.
makCigiExt::DtCigiDiGuyExecuteGesture * myDiGuyExecuteGesturePacket
This points to the sample DtCigiDiGuyExecuteGesture we create and that CIGI uses to decode these pack...
Definition: DtCigiNetworkIO.h:296
double myTimeSlice
Time alloted to check for packet buffers on the socket.
Definition: DtCigiNetworkIO.h:279
This class initializes the CIGI driver.
Definition: DtCigiConnectionInitializer.h:18
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
The end gesture packet class for CIGI V3.x.
Definition: DtCigiDiGuyEndGesture.h:35
This is the original DiGuy control packet for V3. It is maintained for backward compatibility, but is deprecated. New users should use DtCigiDiGuyCtrlExt for V3.x and DtCigiDiGuyCtrlExtV4 for V4.
Definition: DtCigiDiGuyCtrl.h:53
std::vector< DtCollisionResponder::DtCollisionSegmentResponseData * > myCollisionSegmentResponses
The Collision Response queue.
Definition: DtCigiNetworkIO.h:269
CigiIGSession * myCigiIgSession
The CIGI Session.
Definition: DtCigiNetworkIO.h:222
DtInetBuffer myReceiveBuffer
The buffer used to receive CIGI messages.
Definition: DtCigiNetworkIO.h:228
unsigned int myReceiveBufferSize
The size of the buffer used to receive CIGI messages.
Definition: DtCigiNetworkIO.h:231
bool myUseSynchronousMode
Whether we&#39;re using synchronous mode or not. Start of frame CIGI messages will only be sent in synchr...
Definition: DtCigiNetworkIO.h:253
DtCigiSignalProcessor * mySignalProcessor
Definition: DtCigiNetworkIO.h:237
makCigiExt::DtCigiDiGuyEndGesture * myDiGuyEndGesturePacket
This points to the sample DtCigiDiGuyEndGesture we create and that CIGI uses to decode these packets...
Definition: DtCigiNetworkIO.h:301
Creator class for the Network IO.
Definition: DtCigiNetworkIO.h:326
Struct for HatHotResponseData. Unused in this class, used by intersection handler and the networkIO...
Definition: DtHatHotResponder.h:73
Contains DLL export macros.
bool myUseTcpServer
Whether we&#39;re using TCP server mode. If this and myUseTcpClient are false, UDP is being used...
Definition: DtCigiNetworkIO.h:249
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:101
bool myUseTcpClient
Whether using TCP client mode. If this and myUseTcpServer are false, UDP is being used...
Definition: DtCigiNetworkIO.h:245
std::vector< const DtHatHotResponder::DtHatHotResponseData * > myHatHotBasicResponses
Queues to send to the host.The HAT/HOT Response queue.
Definition: DtCigiNetworkIO.h:258
The end gesture packet class for CIGI V4.
Definition: DtCigiDiGuyEndGestureV4.h:37
The execute gesture packet class for CIGI V.4.
Definition: DtCigiDiGuyExecuteGestureV4.h:44
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:315
DtCigiConnection & myConnection
Definition: DtCigiNetworkIO.h:216
Structure containing the data for the Sensor Response Packet.
Definition: DtSensorResponder.h:89
DtInetEndpoint myDestinationAddress
The address/port of the host.
Definition: DtCigiNetworkIO.h:234
DtInetBufferChain myReceiveBufferChain
The buffer chains used to receive CIGI messages.
Definition: DtCigiNetworkIO.h:225
Struct for Collision Response Data.
Definition: DtCollisionResponder.h:78
std::vector< DtCigiLosExtendedResponse * > myLosExtendedResponses
Queues to send to the host.The HAT/HOT Response queue.
Definition: DtCigiNetworkIO.h:263
Contains makVrv::DtHatHotResponder class.
std::vector< const DtHatHotResponder::DtHatHotResponseData * > myHatHotExtendedResponses
Queues to send to the host.The HAT/HOT Response queue.
Definition: DtCigiNetworkIO.h:259
makCigiExt::DtCigiDiGuyCtrlExt * myDiGuyCtrlExtPacket
CIGI V3 Extension Packets.
Definition: DtCigiNetworkIO.h:291
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. This holds the entity visualizer...
Definition: DtCigiConnection.h:57
std::vector< CigiBasePacket * > myUserPacketsToSend
Queues to send to the host.The HAT/HOT Response queue.
Definition: DtCigiNetworkIO.h:275
The execute gesture packet class for CIGI V3.x.
Definition: DtCigiDiGuyExecuteGesture.h:40
Contains makVrv::DtPositionResponderclass.
makCigiExt::DtCigiDiGuyCtrlExtV4 * myDiGuyCtrlExtPacketV4
CIGI V4 Extension Packets.
Definition: DtCigiNetworkIO.h:310
std::vector< DtSensorResponder::DtSensorResponseData * > mySensorResponses
The Sensor Response queue.
Definition: DtCigiNetworkIO.h:272
std::vector< DtCigiLosBasicResponse * > myLosBasicResponses
The LOS Response queues.
Definition: DtCigiNetworkIO.h:262
DtInetSocketMgr * mySocketMgr
The socket manager holds the TCP server socket and manages connections in TCP server mode...
Definition: DtCigiNetworkIO.h:241
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:72
The DiGuy Control (extended) packet class for V4.
Definition: DtCigiDiGuyCtrlExtV4.h:59
makCigiExt::DtCigiDiGuyCtrl * myDiGuyCtrlPacket
Deprecated - This points to the sample DtCigiDiGuyCtrl we create and that CIGI uses to decode these p...
Definition: DtCigiNetworkIO.h:283
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:320
#define DT_DLL_VRVCIGI
Definition: vrvCigi.h:19
The DiGuy Control (extended) packet class for V3.x.
Definition: DtCigiDiGuyCtrlExt.h:58
std::vector< DtPositionResponder::DtPositionResponseData * > myPositionResponses
The Position Response queue.
Definition: DtCigiNetworkIO.h:266
This class performs all of the network I/O for CIGI messages. This includes setting up the CIGI sessi...
Definition: DtCigiNetworkIO.h:76
DtInetSocket * mySocket
The socket. May be a UDP or TCP socket.
Definition: DtCigiNetworkIO.h:219
std::vector< DtSensorResponder::DtSensorResponseData * > mySensorExtendedResponses
Queues to send to the host.The HAT/HOT Response queue.
Definition: DtCigiNetworkIO.h:273

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)