VR-Forces 4.10 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>
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 
102  virtual bool readyToSendCigiMessages() const;
103 
106  virtual void setSignalProcessor(DtCigiSignalProcessor& sigProcessor);
107 
109  virtual void sendHatHotResponse( const DtHatHotResponder::DtHatHotResponseData* hatHotResponse );
110 
112  virtual void sendLosBasicResponse(DtCigiLosBasicResponse* losResponse);
113 
115  virtual void sendLosExtendedResponse(DtCigiLosExtendedResponse* losResponse);
116 
118  virtual void sendPositionResponse( DtPositionResponder::DtPositionResponseData* posResponse );
119 
121  virtual void sendCollisionSegmentResponse( DtCollisionResponder::DtCollisionSegmentResponseData* collReponse );
122 
124  virtual void sendSensorResponse( DtSensorResponder::DtSensorResponseData* sensorResponse );
125 
129  virtual void sendUserPacket( CigiBasePacket* packet );
130 
132  virtual CigiIGSession& session();
135  virtual const CigiIGSession& session() const;
137 
139  bool cigiSessionExists() const;
140 
142  virtual void packLosBasicResponseV3(const DtCigiLosBasicResponse& response, CigiLosRespV3_2& respPacket);
143 
145  virtual void packLosBasicResponseV4(const DtCigiLosBasicResponse& response, CigiLosRespV4& respPacket);
146 
148  virtual void packLosExtendedResponseV3(const DtCigiLosExtendedResponse& response, CigiLosXRespV3_2& respPacket);
149 
151  virtual void packLosExtendedResponseV4(const DtCigiLosExtendedResponse& response, CigiLosXRespV4& respPacket);
152 
154  virtual void packPositionResponseV3(const DtPositionResponder::DtPositionResponseData& response, CigiPositionRespV3& respPacket);
155  virtual void packPositionResponseV4(const DtPositionResponder::DtPositionResponseData& response, CigiPositionRespV4& respPacket);
156 
158  virtual void packCollisionSegmentResponseV3( const DtCollisionResponder::DtCollisionSegmentResponseData& response, CigiCollDetSegRespV3& respPacket );
159  virtual void packCollisionSegmentResponseV4( const DtCollisionResponder::DtCollisionSegmentResponseData& response, CigiCollDetSegRespV4& respPacket );
160 
162  virtual void packHatHotResponseV3( const DtHatHotResponder::DtHatHotResponseData& response, CigiHatHotRespV3_2& respPacket );
163  virtual void packHatHotResponseV4( const DtHatHotResponder::DtHatHotResponseData& response, CigiHatHotRespV4& respPacket );
164 
166  virtual void packHatHotExtendedResponseV3( const DtHatHotResponder::DtHatHotResponseData& response, CigiHatHotXRespV3_2& respPacket );
167  virtual void packHatHotExtendedResponseV4( const DtHatHotResponder::DtHatHotResponseData& response, CigiHatHotXRespV4& respPacket );
168 
170  virtual void packSensorResponseV3( const DtSensorResponder::DtSensorResponseData& response, CigiSensorRespV3& respPacket );
171  virtual void packSensorResponseV4( const DtSensorResponder::DtSensorResponseData& response, CigiSensorRespV4& respPacket );
172 
174  virtual void packSensorExtendedResponseV3( const DtSensorResponder::DtSensorResponseData& response, CigiSensorXRespV3& respPacket );
175  virtual void packSensorExtendedResponseV4( const DtSensorResponder::DtSensorResponseData& response, CigiSensorXRespV4& respPacket );
176 
178  virtual bool registerUserPacket(CigiBasePacket* packet,
179  unsigned int packetId, bool hostSend, bool igSend);
180 
182  static bool addSocketCb(DtInetSocket* sock, void* usr);
183 
185  static bool removeSocketCb(DtInetSocket* sock, void* usr);
186 
187  protected:
191  DtCigiNetworkIO(const DtCigiConnectionInitializer& initializer,
192  DtCigiConnection& connection );
193 
195  virtual void initializeUdpSocket(const DtInetEndpoint& endpoint,
196  unsigned int listenPort, DtInetDevice* device);
197 
199  virtual void initializeTcpSocket(const DtInetEndpoint& endpoint,
200  DtInetDevice* device, int localPort);
201 
203  virtual void addSocket(DtInetTcpSocket* sock);
204 
206  virtual void removeSocket(DtInetTcpSocket* sock);
207 
208  virtual DtInetAddr findFirstNetworkDeviceAddress(bool& found) const;
209 
212  CigiBaseIGCtrl* igControlPacket( Cigi_uint8* Dta );
213 
215  DtCigiNetworkIO(const DtCigiNetworkIO& orig);
216 
218  DtCigiNetworkIO& operator=(const DtCigiNetworkIO& orig);
219 
220  protected:
222 
224  DtInetSocket* mySocket;
225 
227  CigiIGSession* myCigiIgSession;
228 
230  DtInetBufferChain myReceiveBufferChain;
231 
233  DtInetBuffer myReceiveBuffer;
234 
236  unsigned int myReceiveBufferSize;
237 
239  DtInetEndpoint myDestinationAddress;
240 
243 
246  DtInetSocketMgr* mySocketMgr;
247 
251 
255 
259 
261  std::vector<const DtHatHotResponder::DtHatHotResponseData*> myHatHotBasicResponses;
262  std::vector<const DtHatHotResponder::DtHatHotResponseData*> myHatHotExtendedResponses;
263 
265  std::vector<DtCigiLosBasicResponse*> myLosBasicResponses;
266  std::vector<DtCigiLosExtendedResponse*> myLosExtendedResponses;
267 
269  std::vector<DtPositionResponder::DtPositionResponseData*> myPositionResponses;
270 
272  std::vector<DtCollisionResponder::DtCollisionSegmentResponseData*> myCollisionSegmentResponses;
273 
275  std::vector<DtSensorResponder::DtSensorResponseData*> mySensorResponses;
276  std::vector<DtSensorResponder::DtSensorResponseData*> mySensorExtendedResponses;
277 
278  std::vector<CigiBasePacket*> myUserPacketsToSend;
279 
281  double myTimeSlice;
282 
286 
288 
294 
299 
305 
307 
313 
318 
324 
325  };
326 
329  {
330  public:
333 
335  virtual ~DtCigiNetworkIOCreator();
336 
338  static DtCigiNetworkIOCreator& instance( DtDe& de );
339 
341  static DtCigiNetworkIOCreator& instance( DtCigiConnection& con );
342 
344  virtual DtCigiNetworkIOCreator* clone();
345 
347  static void copyInstance(DtCigiConnection& con, DtDe& de);
348 
350  virtual DtCigiNetworkIO* create( const DtCigiConnectionInitializer& initializer,
351  DtCigiConnection& connection ) const;
352  };
353 }
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:298
double myTimeSlice
Time alloted to check for packet buffers on the socket.
Definition: DtCigiNetworkIO.h:281
This class initializes the CIGI driver.
Definition: DtCigiConnectionInitializer.h:18
Virtual base class.
Definition: DtVirtualBaseClass.h:19
The end gesture packet class for CIGI V3.x.
Definition: DtCigiDiGuyEndGesture.h:39
This is the original DiGuy control packet for V3.
Definition: DtCigiDiGuyCtrl.h:57
std::vector< DtCollisionResponder::DtCollisionSegmentResponseData * > myCollisionSegmentResponses
The Collision Response queue.
Definition: DtCigiNetworkIO.h:272
CigiIGSession * myCigiIgSession
The CIGI Session.
Definition: DtCigiNetworkIO.h:227
DtInetBuffer myReceiveBuffer
The buffer used to receive CIGI messages.
Definition: DtCigiNetworkIO.h:233
unsigned int myReceiveBufferSize
The size of the buffer used to receive CIGI messages.
Definition: DtCigiNetworkIO.h:236
bool myUseSynchronousMode
Whether we&#39;re using synchronous mode or not.
Definition: DtCigiNetworkIO.h:258
DtCigiSignalProcessor * mySignalProcessor
Definition: DtCigiNetworkIO.h:242
makCigiExt::DtCigiDiGuyEndGesture * myDiGuyEndGesturePacket
This points to the sample DtCigiDiGuyEndGesture we create and that CIGI uses to decode these packets...
Definition: DtCigiNetworkIO.h:303
Creator class for the Network IO.
Definition: DtCigiNetworkIO.h:328
Struct for HatHotResponseData.
Definition: DtHatHotResponder.h:70
Contains DLL export macros.
bool myUseTcpServer
Whether we&#39;re using TCP server mode.
Definition: DtCigiNetworkIO.h:254
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 myUseTcpClient
Whether using TCP client mode.
Definition: DtCigiNetworkIO.h:250
std::vector< const DtHatHotResponder::DtHatHotResponseData * > myHatHotBasicResponses
The HAT/HOT Response queue.
Definition: DtCigiNetworkIO.h:261
The end gesture packet class for CIGI V4.
Definition: DtCigiDiGuyEndGestureV4.h:41
The execute gesture packet class for CIGI V.4.
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:317
DtCigiConnection & myConnection
Definition: DtCigiNetworkIO.h:221
Structure containing the data for the Sensor Response Packet.
Definition: DtSensorResponder.h:87
DtInetEndpoint myDestinationAddress
The address/port of the host.
Definition: DtCigiNetworkIO.h:239
DtInetBufferChain myReceiveBufferChain
The buffer chains used to receive CIGI messages.
Definition: DtCigiNetworkIO.h:230
Struct for Collision Response Data.
Definition: DtCollisionResponder.h:76
std::vector< DtCigiLosExtendedResponse * > myLosExtendedResponses
Definition: DtCigiNetworkIO.h:266
Contains makVrv::DtHatHotResponder class.
std::vector< const DtHatHotResponder::DtHatHotResponseData * > myHatHotExtendedResponses
Definition: DtCigiNetworkIO.h:262
makCigiExt::DtCigiDiGuyCtrlExt * myDiGuyCtrlExtPacket
CIGI V3 Extension Packets.
Definition: DtCigiNetworkIO.h:293
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:57
std::vector< CigiBasePacket * > myUserPacketsToSend
Definition: DtCigiNetworkIO.h:278
The execute gesture packet class for CIGI V3.x.
Definition: DtCigiDiGuyExecuteGesture.h:44
Contains makVrv::DtPositionResponderclass.
makCigiExt::DtCigiDiGuyCtrlExtV4 * myDiGuyCtrlExtPacketV4
CIGI V4 Extension Packets.
Definition: DtCigiNetworkIO.h:312
std::vector< DtSensorResponder::DtSensorResponseData * > mySensorResponses
The Sensor Response queue.
Definition: DtCigiNetworkIO.h:275
std::vector< DtCigiLosBasicResponse * > myLosBasicResponses
The LOS Response queues.
Definition: DtCigiNetworkIO.h:265
DtInetSocketMgr * mySocketMgr
The socket manager holds the TCP server socket and manages connections in TCP server mode...
Definition: DtCigiNetworkIO.h:246
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
The DiGuy Control (extended) packet class for V4.
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:285
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:322
#define DT_DLL_VRVCIGI
Definition: vrvCigi.h:19
The DiGuy Control (extended) packet class for V3.x.
Definition: DtCigiDiGuyCtrlExt.h:62
std::vector< DtPositionResponder::DtPositionResponseData * > myPositionResponses
The Position Response queue.
Definition: DtCigiNetworkIO.h:269
This class performs all of the network I/O for CIGI messages.
Definition: DtCigiNetworkIO.h:76
DtInetSocket * mySocket
The socket. May be a UDP or TCP socket.
Definition: DtCigiNetworkIO.h:224
std::vector< DtSensorResponder::DtSensorResponseData * > mySensorExtendedResponses
Definition: DtCigiNetworkIO.h:276

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)