VR-Forces Developer's Guide
 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) 2025 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  class DtRenderSideCigiFrameAgent;
52 
59  {
60  public:
61  enum DtIgMode
62  {
63  ResetStandby = 0,
64  Operate = 1,
65  Debug = 2
66  };
67 
69 
71  virtual ~DtCigiConnection();
72 
74  virtual void init();
75 
77  virtual bool tick( double elapsedTime );
78 
80  virtual bool connect();
81 
83  virtual bool disconnect();
84 
91  virtual void restart();
92 
96  virtual void reset();
97 
99  virtual void setConnectionInitializer(const DtCigiConnectionInitializer& init);
100 
102  virtual void sendCigiMessages();
103 
105  virtual const DtCigiEntityVisualizer& entityManager() const;
107  virtual DtCigiEntityVisualizer& entityManager();
109 
111  virtual const DtCigiIgControlProcessor& igControlProcessor() const;
113  virtual DtCigiIgControlProcessor& igControlProcessor();
115 
117  virtual const DtCigiNetworkIO& networkIO() const;
119  virtual DtCigiNetworkIO& networkIO();
121 
123  virtual const DtCigiViewManager& viewManager() const;
125  virtual DtCigiViewManager& viewManager();
127 
129  virtual const DtRenderSideCigiFrameAgent& renderSideCigiFrameAgent() const;
131  virtual DtRenderSideCigiFrameAgent& renderSideCigiFrameAgent();
133 
135  virtual const makArchives::DtCigiSettingsRecord& cigiSettings() const;
136 
138  virtual void setLastHostFrameNumber(unsigned int frameNumber);
139 
141  virtual unsigned int lastHostFrameNumber() const;
142 
144  inline bool useSynchronousMode() const
145  {
146  return myUseSynchronousMode;
147  }
148 
150  virtual void setIgMode(DtIgMode mode);
151 
153  inline DtIgMode igMode() const
154  {
155  return myMode;
156  }
157 
159  virtual void setDatabaseNumber(int number);
160 
162  virtual int databaseNumber() const;
163 
166  virtual void setLoadingDatabase();
167 
170  virtual void setDatabaseLoaded();
171 
173  virtual void setExtrapolationEnabled(bool enabled);
174 
176  virtual bool extrapolationEnabled() const;
177 
179  virtual void setTimestampValid(bool valid);
180 
182  virtual bool timestampValid() const;
183 
185  virtual void setLastTimestamp(unsigned int timestamp);
186 
188  virtual unsigned int lastTimestamp() const;
189 
191  virtual void sendHatHotResponse( const DtHatHotResponder::DtHatHotResponseData* hatHotResponse );
192 
194  virtual void sendLosBasicResponse(DtCigiLosBasicResponse* losResponse);
195 
197  virtual void sendLosExtendedResponse(DtCigiLosExtendedResponse* losResponse);
198 
200  virtual void sendPositionResponse( DtPositionResponder::DtPositionResponseData& posResponse );
201 
203  virtual void sendCollisionSegmentResponse( DtCollisionResponder::DtCollisionSegmentResponseData& collResponse );
204 
206  virtual void sendSensorResponse( DtSensorResponder::DtSensorResponseData& sensorResponse );
207 
212  virtual void sendUserPacket( CigiBasePacket* packet );
213 
215  virtual const DtHatHotResponder& hatHotResponder() const;
217  virtual DtHatHotResponder& hatHotResponder();
219 
221  virtual const DtLosResponder& losResponder() const;
223  virtual DtLosResponder& losResponder();
225 
227  virtual const DtPositionResponder& positionResponder() const;
229  virtual DtPositionResponder& positionResponder();
231 
233  virtual const DtCollisionResponder& collisionResponder() const;
235  virtual DtCollisionResponder& collisionResponder();
237 
239  virtual const DtSensorResponder& sensorResponder() const;
241  virtual DtSensorResponder& sensorResponder();
243 
245  virtual unsigned int currentIgFrame() const;
246 
248  virtual DtComponentSignaler& componentSignaler();
249 
251  virtual CigiIGSession& session();
254  virtual const CigiIGSession& session() const;
256 
258  bool cigiSessionExists() const;
259 
261  virtual bool registerUserPacket(CigiBasePacket *packet,
262  unsigned int packetId, bool hostSend, bool igSend);
263 
265  virtual bool useThreadFlag() const;
266 
268  virtual void queueDriverFunction(boost::function<void ()> func);
269 
273  virtual void queueConnectionFunction(boost::function<void ()> func);
274 
277  virtual DtCigiDriver& cigiDriver();
278 
280 
287  virtual void startOverloadTimer();
288 
290  virtual void stopOverloadTimer();
291 
293  virtual bool overloaded();
294 
297  virtual void setWarnOnOverload( bool b );
298 
300  virtual bool warnOnOverload() const;
301 
305  virtual void setDropMessagesOnOverload( bool b );
306 
308  virtual bool dropMessagesOnOverload() const;
309 
312  virtual double hostFrequency() const;
313  virtual void setHostFrequency( double freq );
315 
317  boost::signalslib::signal<void (DtViewStateProcessor::ObserverAction&)>
319 
321  boost::signalslib::signal<void (int, DtUniqueID)> signal_alphaChanged;
322 
324  boost::signalslib::signal<void (int, int, int, int, int)> signal_timeSet;
325 
328  boost::signalslib::signal<void (bool)> signal_ephemerisEnableSet;
329 
331  boost::signalslib::signal<void (const std::string&)> signal_loadDatabase;
332 
334  boost::signalslib::signal<void ()> signal_connected;
335 
337  boost::signalslib::signal<void ()> signal_toBeDisconnected;
338 
340  boost::signalslib::signal<void (bool)> signal_deadReckoningAllowedChanged;
341 
345  boost::signalslib::signal<void( int entityId )> signal_entityToBeDeleted;
346 
348  virtual const CigiVersionID getCigiVersion() const;
349 
354  virtual const bool connectionObjectId() const;
355 
358  virtual void getConnectionObjectIDFromString( unsigned int& connectionID, std::string connectionObjectIDString);
359 
362  DtCigiConnection() = delete;
363  DtCigiConnection( DtCigiConnection& ) = delete;
364  DtCigiConnection( DtCigiConnection&& ) = delete;
365  DtCigiConnection& operator=( DtCigiConnection& ) = delete;
366  DtCigiConnection& operator=( DtCigiConnection&& ) = delete;
368  protected:
371  DtAgentManagerInterface& sceneInterface,
372  DtSharedSettingsManager& settingsManager,
373  DtCigiDriver& driver);
374 
375  protected:
376  typedef std::map<std::string,DtVirtualBaseClass*> InstanceMap;
377 
384 
390 
391  DtRenderSideCigiFrameAgent* myRenderSideCigiFrameAgent;
392 
397 
398  unsigned int myIgFrame;
399  unsigned int myLastHostFrameNumber;
407  unsigned int myLastTimestamp;
408 
409  DtTimedSection myOverloadTimer;
414 
415  CigiVersionID myCigiVersion;
416  };
417 
421  {
422  public:
425 
427  virtual ~DtCigiConnectionCreator();
428 
430  static DtCigiConnectionCreator& instance( DtDe& de );
431 
433  virtual DtCigiConnection* create(const DtCigiConnectionInitializer& init,
434  DtAgentManagerInterface& sceneInterface,
435  DtSharedSettingsManager& settingsManager,
436  DtCigiDriver& driver) const;
437  };
438 }
DT_DLL_EXAMPLESCENEROOTPLUGIN void init(DtDe &anIG)
DtCigiDriver & myCigiDriver
Definition: DtCigiConnection.h:378
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
This class is responsible for processing various CIGI messages that pertain to CIGI entities and sett...
Definition: DtCigiEntityVisualizer.h:71
boost::signalslib::signal< void(const std::string &)> signal_loadDatabase
Emitted when the host tells the IG to load a database.
Definition: DtCigiConnection.h:331
A DtHatHotResponder receives HAT/HOT requests from CIGI and either initiates an immediate request or ...
Definition: DtHatHotResponder.h:38
double myHostFrequency
Definition: DtCigiConnection.h:396
bool myDropMessagesOnOverload
Definition: DtCigiConnection.h:412
bool myDatabaseLoading
Definition: DtCigiConnection.h:404
DtIgMode myMode
Definition: DtCigiConnection.h:402
unsigned int myLastHostFrameNumber
Definition: DtCigiConnection.h:399
This class is responsible for processing CIGI messages that &#39;control&#39; settings in the IG...
Definition: DtCigiIgControlProcessor.h:41
Contains makVrv::DtComponentSignaler class.
unsigned int myLastProcessedHostFrameNumber
Definition: DtCigiConnection.h:400
DtLosResponder * myLosResponder
Definition: DtCigiConnection.h:386
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:407
Struct for HatHotResponseData. Unused in this class, used by intersection handler and the networkIO...
Definition: DtHatHotResponder.h:73
CigiVersionID myCigiVersion
Definition: DtCigiConnection.h:415
boost::signalslib::signal< void(bool)> signal_deadReckoningAllowedChanged
Emitted when CIGI extrapolation is enabled.
Definition: DtCigiConnection.h:340
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
This class holds the CIGI settings used by the DtCigiConnection object. A named settings object is he...
Definition: DtCigiConnSettingsHandler.h:31
boost::signalslib::signal< void(int, DtUniqueID)> signal_alphaChanged
Emitted when an entity&#39;s alpha has changed.
Definition: DtCigiConnection.h:321
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:35
boost::signalslib::signal< void(DtViewStateProcessor::ObserverAction &)> signal_viewChanged
Emitted when a view control change is received.
Definition: DtCigiConnection.h:318
int myDatabaseNumber
Definition: DtCigiConnection.h:403
Contains makVrv::DtCollisionResponder &amp; creator class.
DtIgMode
Definition: DtCigiConnection.h:61
bool myUseSynchronousMode
Definition: DtCigiConnection.h:395
Contains makVrv::DtVirtualBaseClass class.
A DtPositionResponder processes CIGI Position request messages This class catches signals from the Dt...
Definition: DtPositionResponder.h:50
bool myExtrapolationEnabled
Definition: DtCigiConnection.h:405
Structure containing the data for the Sensor Response Packet.
Definition: DtSensorResponder.h:89
DtSensorResponder * mySensorResponder
Definition: DtCigiConnection.h:389
DtPositionResponder * myPositionResponder
Definition: DtCigiConnection.h:387
boost::signalslib::signal< void()> signal_connected
Emitted when the connection finished connecting.
Definition: DtCigiConnection.h:334
bool useSynchronousMode() const
Get whether the connection is using synchronous communications.
Definition: DtCigiConnection.h:144
The DtDriver for CIGI. Provides communication between the IG (DtDe) and the DtCigiConnection which do...
Definition: DtCigiDriver.h:46
Struct for Collision Response Data.
Definition: DtCollisionResponder.h:78
DtCigiEntityVisualizer * myEntityManager
Definition: DtCigiConnection.h:380
Contains makVrv::DtCigiViewController class.
Creator class for the DtCigiConnection.
Definition: DtCigiConnection.h:420
double myFrameTimeSoFar
Definition: DtCigiConnection.h:410
boost::signalslib::signal< void(int entityId)> signal_entityToBeDeleted
Emitted when this entity is about to be deleted. This is here rather than the entity visualiser as it...
Definition: DtCigiConnection.h:345
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Contains makVrv::DtHatHotResponder class.
DtCigiConnSettingsHandler mySettingsHandler
Definition: DtCigiConnection.h:394
DtComponentSignaler myComponentSignaler
Definition: DtCigiConnection.h:393
DtCigiConnectionInitializer myInitializer
Definition: DtCigiConnection.h:381
boost::signalslib::signal< void()> signal_toBeDisconnected
Emitted when the connection will be disconnecting.
Definition: DtCigiConnection.h:337
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:58
DtCigiViewManager * myViewManager
Definition: DtCigiConnection.h:383
This class catches Sesnor Control signals from the Cigi Signal handler, and processes them into V3 an...
Definition: DtSensorResponder.h:38
This class handles the processing of Collision Segment Defintion packets It catches signals from DtCi...
Definition: DtCollisionResponder.h:56
DtIgMode igMode() const
Gets the IG mode.
Definition: DtCigiConnection.h:153
Contains makVrv:DtBaseConnection class.
bool myWarnOnOverload
Definition: DtCigiConnection.h:411
Contains the declaration for makVrv::DtCigiConnSettingsHandler.
DtCigiNetworkIO * myNetworkIO
Definition: DtCigiConnection.h:379
boost::signalslib::signal< void(bool)> signal_ephemerisEnableSet
Emitted when the ephemeris model is enabled / disabled via CIGI Celestial Sphere Control message...
Definition: DtCigiConnection.h:328
unsigned int myIgFrame
Definition: DtCigiConnection.h:398
Contains makVrv::DtPositionResponderclass.
const char int mode
Definition: ioapi.h:38
DtCigiIgControlProcessor * myIgController
Definition: DtCigiConnection.h:382
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:324
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:43
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:76
bool myResetCigiConnection
Definition: DtCigiConnection.h:413
DtRenderSideCigiFrameAgent * myRenderSideCigiFrameAgent
Definition: DtCigiConnection.h:391
std::map< std::string, DtVirtualBaseClass * > InstanceMap
Definition: DtCigiConnection.h:376
bool myTimestampValid
Definition: DtCigiConnection.h:406
#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:409
This class performs all of the network I/O for CIGI messages. This includes setting up the CIGI sessi...
Definition: DtCigiNetworkIO.h:76
DtSignalConnectionManager mySignals
Definition: DtCigiConnection.h:401
DtHatHotResponder * myHatHotResponder
Definition: DtCigiConnection.h:385
DtCollisionResponder * myCollisionResponder
Definition: DtCigiConnection.h:388

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)