VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtCigiConnection.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 
19 
22 
23 #include <matrix/vlVector.h>
24 #include <vlutil/vlPerformanceStats.h>
26 
27 #include <CigiVersionID.h>
28 
29 
30 class CigiIGSession;
31 class CigiBasePacket;
32 
33 
34 namespace makVrv
35 {
36  class DtDe; // for the creator class
37  class DtCigiConnectionInitializer;
38  class DtCigiNetworkIO;
39  class DtAgentManagerInterface;
40  class DtCigiEntityVisualizer;
41  class DtCoordinateSystem;
42  class DtSharedSettingsManager;
43  class DtVirtualBaseClass;
44  class DtCigiIgControlProcessor;
45  class DtHatHotResponder;
46  class DtLosResponder;
47  class DtSensorResponder;
48  class DtCigiLosBasicResponse;
49  class DtCigiLosExtendedResponse;
50  class DtCigiViewManager;
51 
58  {
59  public:
60  enum DtIgMode
61  {
62  ResetStandby = 0,
63  Operate = 1,
64  Debug = 2
65  };
66 
68 
70  virtual ~DtCigiConnection();
71 
73  virtual void init();
74 
76  virtual bool tick( double elapsedTime );
77 
79  virtual bool connect();
80 
82  virtual bool disconnect();
83 
90  virtual void restart();
91 
93  virtual void setConnectionInitializer(const DtCigiConnectionInitializer& init);
94 
96  virtual void sendCigiMessages();
97 
99  virtual void setCoordinateSystem(const std::string& name,
100  const std::string& params);
101 
103  virtual DtCoordinateSystem& coordinateSystem();
104 
106  virtual const DtCigiEntityVisualizer& entityManager() const;
108  virtual DtCigiEntityVisualizer& entityManager();
110 
112  virtual const DtCigiIgControlProcessor& igControlProcessor() const;
114  virtual DtCigiIgControlProcessor& igControlProcessor();
116 
118  virtual const DtCigiNetworkIO& networkIO() const;
120  virtual DtCigiNetworkIO& networkIO();
122 
124  virtual const DtCigiViewManager& viewManager() const;
126  virtual DtCigiViewManager& viewManager();
128 
130  virtual const makArchives::DtCigiSettingsRecord& cigiSettings() const;
131 
133  virtual void setLastHostFrameNumber(unsigned int frameNumber);
134 
136  virtual unsigned int lastHostFrameNumber() const;
137 
139  inline bool useSynchronousMode() const
140  {
141  return myUseSynchronousMode;
142  }
143 
145  virtual void setIgMode(DtIgMode mode);
146 
148  inline DtIgMode igMode() const
149  {
150  return myMode;
151  }
152 
154  virtual void setDatabaseNumber(int number);
155 
157  virtual int databaseNumber() const;
158 
161  virtual void setLoadingDatabase();
162 
165  virtual void setDatabaseLoaded();
166 
168  virtual void setExtrapolationEnabled(bool enabled);
169 
171  virtual bool extrapolationEnabled() const;
172 
174  virtual void setTimestampValid(bool valid);
175 
177  virtual bool timestampValid() const;
178 
180  virtual void setLastTimestamp(unsigned int timestamp);
181 
183  virtual unsigned int lastTimestamp() const;
184 
186  virtual void sendHatHotResponse( const DtHatHotResponder::DtHatHotResponseData& hatHotResponse );
187 
189  virtual void sendLosBasicResponse(DtCigiLosBasicResponse* losResponse);
190 
192  virtual void sendLosExtendedResponse(DtCigiLosExtendedResponse* losResponse);
193 
195  virtual void sendPositionResponse( DtPositionResponder::DtPositionResponseData& posResponse );
196 
198  virtual void sendCollisionSegmentResponse( DtCollisionResponder::DtCollisionSegmentResponseData& collResponse );
199 
201  virtual void sendSensorResponse( DtSensorResponder::DtSensorResponseData& sensorResponse );
202 
207  virtual void sendUserPacket( CigiBasePacket* packet );
208 
210  virtual const DtHatHotResponder& hatHotResponder() const;
212  virtual DtHatHotResponder& hatHotResponder();
214 
216  virtual const DtLosResponder& losResponder() const;
218  virtual DtLosResponder& losResponder();
220 
222  virtual const DtPositionResponder& positionResponder() const;
224  virtual DtPositionResponder& positionResponder();
226 
228  virtual const DtCollisionResponder& collisionResponder() const;
230  virtual DtCollisionResponder& collisionResponder();
232 
234  virtual const DtSensorResponder& sensorResponder() const;
236  virtual DtSensorResponder& sensorResponder();
238 
240  virtual unsigned int currentIgFrame() const;
241 
243  virtual DtComponentSignaler& componentSignaler();
244 
246  virtual CigiIGSession& session();
249  virtual const CigiIGSession& session() const;
251 
253  bool cigiSessionExists() const;
254 
256  virtual bool registerUserPacket(CigiBasePacket *packet,
257  unsigned int packetId, bool hostSend, bool igSend);
258 
260  virtual bool useThreadFlag() const;
261 
263  virtual void queueDriverFunction(boost::function<void ()> func);
264 
268  virtual void queueConnectionFunction(boost::function<void ()> func);
269 
272  virtual DtCigiDriver& cigiDriver();
273 
275 
282  virtual void startOverloadTimer();
283 
285  virtual void stopOverloadTimer();
286 
288  virtual bool overloaded();
289 
292  virtual void setWarnOnOverload( bool b );
293 
295  virtual bool warnOnOverload() const;
296 
300  virtual void setDropMessagesOnOverload( bool b );
301 
303  virtual bool dropMessagesOnOverload() const;
304 
307  virtual double hostFrequency() const;
309 
311  boost::signalslib::signal<void (DtViewStateProcessor::ObserverAction&)>
313 
315  boost::signalslib::signal<void (int, DtUniqueID)> signal_alphaChanged;
316 
318  boost::signalslib::signal<void (int, int, int, int, int)> signal_timeSet;
319 
322  boost::signalslib::signal<void (bool)> signal_ephemerisEnableSet;
323 
325  boost::signalslib::signal<void (const std::string&)> signal_loadDatabase;
326 
328  boost::signalslib::signal<void ()> signal_connected;
329 
331  boost::signalslib::signal<void ()> signal_toBeDisconnected;
332 
334  boost::signalslib::signal<void ()> signal_coordinateSystemChanged;
335 
337  boost::signalslib::signal<void (bool)> signal_deadReckoningAllowedChanged;
338 
340  boost::signalslib::signal<void ()> signal_preTick;
341 
343  boost::signalslib::signal<void ()> signal_postTick;
344 
348  boost::signalslib::signal<void( int entityId )> signal_entityToBeDeleted;
349 
351  virtual const CigiVersionID getCigiVersion() const;
352 
357  virtual const bool connectionObjectId() const;
358 
361  virtual void getConnectionObjectIDFromString( unsigned int& connectionID, std::string connectionObjectIDString);
362  protected:
365  DtAgentManagerInterface& sceneInterface,
366  DtSharedSettingsManager& settingsManager,
367  DtCigiDriver& driver);
368 
369 
370 
371  protected:
372  typedef std::map<std::string,DtVirtualBaseClass*> InstanceMap;
373 
380 
386 
392 
393  unsigned int myIgFrame;
394  unsigned int myLastHostFrameNumber;
401  unsigned int myLastTimestamp;
402 
403  DtTimedSection myOverloadTimer;
407 
408  CigiVersionID myCigiVersion;
409  };
410 
414  {
415  public:
418 
420  virtual ~DtCigiConnectionCreator();
421 
423  static DtCigiConnectionCreator& instance( DtDe& de );
424 
426  virtual DtCigiConnection* create(const DtCigiConnectionInitializer& init,
427  DtAgentManagerInterface& sceneInterface,
428  DtSharedSettingsManager& settingsManager,
429  DtCigiDriver& driver) const;
430  };
431 }
DT_DLL_EXAMPLESCENEROOTPLUGIN void init(DtDe &anIG)
DtCigiDriver & myCigiDriver
Definition: DtCigiConnection.h:374
This class initializes the CIGI driver.
Definition: DtCigiConnectionInitializer.h:18
Virtual base class.
Definition: DtVirtualBaseClass.h:19
DtCoordinateSystem * myCoordinateSystem
Definition: DtCigiConnection.h:387
This class is responsible for processing various CIGI messages that pertain to CIGI entities and sett...
Definition: DtCigiEntityVisualizer.h:69
boost::signalslib::signal< void(const std::string &)> signal_loadDatabase
Emitted when the host tells the IG to load a database.
Definition: DtCigiConnection.h:325
boost::signalslib::signal< void()> signal_postTick
Signal emitted at the end of the tick function.
Definition: DtCigiConnection.h:343
A DtHatHotResponder receives HAT/HOT requests from CIGI and either initiates an immediate request or ...
Definition: DtHatHotResponder.h:35
double myHostFrequency
Definition: DtCigiConnection.h:391
bool myDropMessagesOnOverload
Definition: DtCigiConnection.h:406
bool myDatabaseLoading
Definition: DtCigiConnection.h:398
DtIgMode myMode
Definition: DtCigiConnection.h:396
unsigned int myLastHostFrameNumber
Definition: DtCigiConnection.h:394
This class is responsible for processing CIGI messages that &#39;control&#39; settings in the IG...
Definition: DtCigiIgControlProcessor.h:40
Contains makVrv::DtComponentSignaler class.
DtLosResponder * myLosResponder
Definition: DtCigiConnection.h:382
A DtComponentSignaler holds various signals that can be caught by the DtCigiDriver so that it can cha...
Definition: DtComponentSignaler.h:26
The shared settings manager, is the global object responsible for managing any shared settings object...
Definition: DtSharedSettingsManager.h:42
unsigned int myLastTimestamp
Definition: DtCigiConnection.h:401
Struct for HatHotResponseData.
Definition: DtHatHotResponder.h:70
CigiVersionID myCigiVersion
Definition: DtCigiConnection.h:408
boost::signalslib::signal< void(bool)> signal_deadReckoningAllowedChanged
Emitted when CIGI extrapolation is enabled.
Definition: DtCigiConnection.h:337
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
This class holds the CIGI settings used by the DtCigiConnection object.
Definition: DtCigiConnSettingsHandler.h:31
boost::signalslib::signal< void(int, DtUniqueID)> signal_alphaChanged
Emitted when an entity&#39;s alpha has changed.
Definition: DtCigiConnection.h:315
boost::signalslib::signal< void()> signal_coordinateSystemChanged
Emitted when the coordinate system changed.
Definition: DtCigiConnection.h:334
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:34
boost::signalslib::signal< void(DtViewStateProcessor::ObserverAction &)> signal_viewChanged
Emitted when a view control change is received.
Definition: DtCigiConnection.h:312
int myDatabaseNumber
Definition: DtCigiConnection.h:397
Contains makVrv::DtCollisionResponder &amp; creator class.
DtIgMode
Definition: DtCigiConnection.h:60
bool myUseSynchronousMode
Definition: DtCigiConnection.h:390
Contains makVrv::DtVirtualBaseClass class.
boost::signalslib::signal< void()> signal_preTick
Signal emitted at the beginning of the tick function.
Definition: DtCigiConnection.h:340
A DtPositionResponder processes CIGI Position request messages This class catches signals from the Dt...
Definition: DtPositionResponder.h:48
bool myExtrapolationEnabled
Definition: DtCigiConnection.h:399
Structure containing the data for the Sensor Response Packet.
Definition: DtSensorResponder.h:87
DtSensorResponder * mySensorResponder
Definition: DtCigiConnection.h:385
DtPositionResponder * myPositionResponder
Definition: DtCigiConnection.h:383
boost::signalslib::signal< void()> signal_connected
Emitted when the connection finished connecting.
Definition: DtCigiConnection.h:328
bool useSynchronousMode() const
Get whether the connection is using synchronous communications.
Definition: DtCigiConnection.h:139
The DtDriver for CIGI.
Definition: DtCigiDriver.h:46
Struct for Collision Response Data.
Definition: DtCollisionResponder.h:76
DtCigiEntityVisualizer * myEntityManager
Definition: DtCigiConnection.h:376
Contains makVrv::DtCigiViewController class.
Creator class for the DtCigiConnection.
Definition: DtCigiConnection.h:413
double myFrameTimeSoFar
Definition: DtCigiConnection.h:404
boost::signalslib::signal< void(int entityId)> signal_entityToBeDeleted
Emitted when this entity is about to be deleted.
Definition: DtCigiConnection.h:348
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Contains makVrv::DtHatHotResponder class.
DtCigiConnSettingsHandler mySettingsHandler
Definition: DtCigiConnection.h:389
DtComponentSignaler myComponentSignaler
Definition: DtCigiConnection.h:388
DtCigiConnectionInitializer myInitializer
Definition: DtCigiConnection.h:377
boost::signalslib::signal< void()> signal_toBeDisconnected
Emitted when the connection will be disconnecting.
Definition: DtCigiConnection.h:331
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
DtCigiViewManager * myViewManager
Definition: DtCigiConnection.h:379
This class catches Sesnor Control signals from the Cigi Signal handler, and processes them into V3 an...
Definition: DtSensorResponder.h:36
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:41
This class handles the processing of Collision Segment Defintion packets It catches signals from DtCi...
Definition: DtCollisionResponder.h:54
DtIgMode igMode() const
Gets the IG mode.
Definition: DtCigiConnection.h:148
Contains makVrv:DtBaseConnection class.
bool myWarnOnOverload
Definition: DtCigiConnection.h:405
Contains the declaration for makVrv::DtCigiConnSettingsHandler.
DtCigiNetworkIO * myNetworkIO
Definition: DtCigiConnection.h:375
boost::signalslib::signal< void(bool)> signal_ephemerisEnableSet
Emitted when the ephemeris model is enabled / disabled via CIGI Celestial Sphere Control message...
Definition: DtCigiConnection.h:322
unsigned int myIgFrame
Definition: DtCigiConnection.h:393
Contains makVrv::DtPositionResponderclass.
const char int mode
Definition: ioapi.h:38
DtCigiIgControlProcessor * myIgController
Definition: DtCigiConnection.h:378
boost::signalslib::signal< void(int, int, int, int, int)> signal_timeSet
Emitted when the time is set via CIGI Celestial Sphere Control message.
Definition: DtCigiConnection.h:318
The abstract interface necessary for agents.
Definition: DtAgentManagerInterface.h:33
A DtLosResponder processes CIGI LOS Segment Request and LOS Vector Request messages, and either immediately signals the DtCigiIntersectionHandler of a request or adds a periodic request to its queue.
Definition: DtLosResponder.h:41
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
std::map< std::string, DtVirtualBaseClass * > InstanceMap
Definition: DtCigiConnection.h:372
bool myTimestampValid
Definition: DtCigiConnection.h:400
#define DT_DLL_VRVCIGI
Definition: vrvCigi.h:19
Record of miscellaneous CIGI settings.
Definition: DtCigiSettingsRecord.h:28
This class manages mapping between CIGI views and VRV observers / channels.
Definition: DtCigiViewManager.h:36
DtTimedSection myOverloadTimer
Definition: DtCigiConnection.h:403
This class performs all of the network I/O for CIGI messages.
Definition: DtCigiNetworkIO.h:76
DtSignalConnectionManager mySignals
Definition: DtCigiConnection.h:395
DtHatHotResponder * myHatHotResponder
Definition: DtCigiConnection.h:381
DtCollisionResponder * myCollisionResponder
Definition: DtCigiConnection.h:384

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)