VR-Forces 4.6 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfDriver.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
15 #include <vrvVrl/DtConnection.h>
25 
27 
28 #include <vlpi/entityType.h>
29 #include <matrix/vlVector.h>
30 
32 #include <vrfutil/scenario.h>
33 
34 #include <vl/commentInteraction.h>
35 
36 #if DtHLA
38 #endif
39 
40 class DtVrfObjectMessage;
41 
46 class DtSetDataRequest;
47 class DtSimTask;
50 class DtAddressMap;
51 class DtBackendMap;
52 
53 #if DtHLA
54 namespace makVrfVrlinkExtToolkit
55 {
56  class DtReflectedExtendedAttributesObjectList;
57 }
58 #endif
59 
60 #if DtDIS
61 #define DtCommentCallbackFcn DtCommentPduCb
62 #elif DtHLA
63 #define DtCommentCallbackFcn DtCommentInteractionCb
64 #endif
65 
66 namespace makVrv
67 {
68  class DtVrlinkElement;
69 
70  namespace DT_PROTOCOL_NAMESPACE
71  {
73  class DtAggregateElement;
74  class DtEntityElement;
75  class DtEntitySimDataProcessor;
76  class DtSensorFieldOfViewSimDataProcessor;
78  class DtSensorFieldOfViewSimDataProcessorAccessory;
79  }
80 }
81 
82 namespace makVrf
83 {
84  class DtNetworkMessageInterface;
85  class DtNetworkMessageInterfaceHandlerAgent;
86 
87  namespace VRF_PROTOCOL_NAMESPACE
88  {
89  class DtTDLMessageProcessor;
90  class DtVrfBackendInterceptor;
91  class DtVrfConnectionHelper;
92  class DtVrfObjectDataStateProcessor;
93  class DtVrfWeatherStateProcessor;
94  class DtVrfEnvironmentObjectDataStateProcessor;
95  class DtEnvironmentSimDataProcessor;
96  class DtEmitterSystemSimDataProcessor;
97  class DtActiveSonarSimDataProcessor;
98  class DtVrfAggregateObjectDataStateProcessor;
99  class DtAggregateSimDataProcessor;
100  class DtOrbatSimDataProcessor;
101  class DtVrfFogOfWarHandler;
102  class DtVrfEmbarkationProcessor;
103  class DtIffSimDataProcessor;
104  class DtPropulsionNoiseSimDataProcessor;
105  class DtWeatherStateCacheManager;
106  class DtVrfWeatherProcessor;
107  class DtVrfVrlinkGuiOrbatManager;
108 
111  {
112  public:
113  DtVrfDriver(makVrv::DtAgentManager& agentManager, const std::string& uniqueName);
114 
115  virtual ~DtVrfDriver();
116 
117  public:
118  virtual bool onStart();
119 
120  public:
122  virtual void realizeConfiguration(const makVrv::DtConfiguration& config);
123 
125  virtual void sendLoggerSetFilename(std::string filename);
126 
128  virtual void sendLoggerRecordMessage();
129 
131  virtual void sendLoggerStopMessage();
132 
135  virtual void newScenario(const DtScenario*, time_t startTimeOfDay = 12 * 3600, const DtChangeWeatherCommand& initialCondition = DtChangeWeatherCommand());
136 
138  virtual void rollbackToSnapshot(double);
139 
141  virtual void loadScenario(const DtScenarioLoadInformation*, bool deleteMemory = false);
142 
145  virtual void saveScenario(const DtScenario*, DtPreserveMappingsFcn fcn = 0, void* userData = 0,
146  bool deleteMemory = false, bool saveInZipFile = false, bool queueSave = false, int putIntoPlayMode = 0);
147 
150  virtual void saveCheckpoints(const std::vector<DtScenario*>&, const DtFilename& baseName);
151 
153  virtual void saveNextCheckpoint();
154 
156  virtual void clearSavingCheckpoints();
157 
159  virtual void closeScenario(DtFilename, bool forceCloseAll = false);
160 
162  virtual void createEnvironmentalObject(DtSimulationAddress addr,
164 
166  virtual void getMessageFilterStatus(std::map<std::string,bool>& statusMap) const;
167 
169  virtual void setMessageFilterStatus(const std::map<std::string,bool>& statusMap);
170 
172  virtual void getMessageProcessorStatus(std::map<std::string,bool>& statusMap) const;
173 
175  virtual void setMessageProcessorStatus(const std::map<std::string,bool>& statusMap);
176 
179  virtual void registerSimMessageCallbackFor(int t, bool reg);
180 
183  virtual void registerSimReportMessageCallbackFor(const DtSimReportMessageType& s, bool reg);
184 
185  virtual void registerSimTaskMessageCallbackFor(const DtSimTaskMessageType& s, bool reg);
186 
187  virtual void registerSetMessageCallbackFor(const DtSetMessageType& s, bool reg);
188 
191  virtual void registerAdminMessageCallbackFor(const DtAdminContentMessageType& t, bool reg);
192 
194  virtual void setTimeoutInterval(int i);
195 
197  virtual void sendMessageToObject(const DtVrfObjectMessage* m, DtSimulationAddress addr);
198 
201  virtual void sendMessage(const DtSimInterfaceContent* m, DtSimulationAddress addr);
202 
204  virtual void addSetCreatorFcn(const DtSetMessageType&, DtSetDataRequestCreatorFcn);
205 
207  virtual void addTaskCreatorFcn(const DtSimTaskMessageType&, DtSimTaskCreatorFcn);
208 
210  virtual void addInterfaceContentCreatorFcn(int, DtInterfaceContentCreatorFcn);
211 
213  virtual void addObjectMessageCreatorFcn(int, DtVrfObjectMessageCreatorFcn);
214 
216  virtual void addReportCreatorFcn(const DtSimReportMessageType&, DtSimReportCreatorFcn);
217 
219  virtual void addAdminContentCreatorFcn(const DtAdminContentMessageType&, DtAdminContentCreatorFcn);
220 
222  virtual void addSimulationCommandCreatorFcn(const DtSimCommandMessageType&, DtSimCommandCreatorFcn);
223 
225  virtual void addConditionCreatorFcn(std::string, int, DtCondExprCreatorFcn);
226 
228  virtual void requestOrbatList();
229 
231  virtual void clearOrbatList();
232 
234  virtual void executeGesture(std::string gesture, std::vector<makVrv::DtUniqueID>);
235 
236 #if DtHLA
237 
238  virtual void regsiterInfluenceIteractionCallback(DtInfluenceInterCb, void*);
239 
241  virtual void unregsiterInfluenceIteractionCallback(DtInfluenceInterCb, void*);
242 #endif
243 
245  virtual void startFreezeScenario(DtSimulationAddress, bool sendStart);
246 
248  virtual void sendSensorFieldOfViewControl(const DtSensorFieldOfViewControlInteractionData* d);
249 
251  virtual void sendDetonation(const DtDetonationInteractionData* d);
252 
254  virtual void registerCommentInteractionCallback(DtCommentCallbackFcn, void*);
255 
257  virtual void unregisterCommentInteractionCallback(DtCommentCallbackFcn, void*);
258 
260  virtual void importScenarioDescriptionFile(std::string file, DtSimulationAddress address, std::string format,
261  std::map<std::string, std::string> importData);
262 
264  virtual void exportScenarioDescriptionFile(std::string file, DtSimulationAddress address, std::string format,
265  std::map<std::string, std::string> importData);
266 
271  virtual DtSimpleTypedDictionary& extendedStateFor(makVrv::DtUniqueID id, bool forceUpdate = true);
272 
274  virtual void createGlobalDynamicTerrain(bool);
275 
277  virtual void createGlobalEnvironment(bool);
278 
279  DtVrfObjectDataStateProcessor* vrfObjectDataProcessor()
280  {
281  return myVrfObjectDataStateDataProcessor;
282  }
283 
286  {
287  return myDataProcessor;
288  }
289 
290  DtTDLMessageProcessor* tdlMessageProcessor()
291  {
292  return myTDLMessageProcessor;
293  }
294 
295  DtEmitterSystemSimDataProcessor* emitterSystemDataProcessor()
296  {
297  return myEmitterSystemDataProcessor;
298  }
299 
300  DtVrfWeatherStateProcessor* weatherDataProcessor()
301  {
302  return myWeatherDataProcessor;
303  }
304 
305  DtActiveSonarSimDataProcessor* activeSonarDataProcessor()
306  {
307  return myActiveSonarDataProcessor;
308  }
309 
310  DtEnvironmentSimDataProcessor* environmentDataProcessor()
311  {
312  return myEnvironmentDataProcessor;
313  }
314 
315  DtAggregateSimDataProcessor* aggregtateDataProcessor()
316  {
317  return myAggregateDataProcessor;
318  }
319 
320  DtOrbatSimDataProcessor* orbatDataProcessor()
321  {
322  return myOrbatDataProcessor;
323  }
324 
326  {
327  return myOrbatManager;
328  }
329 
330  DtExtendedStateDataProcessor* extendedDataStateProcessor()
331  {
332  return myExtendedStateDataProcessor;
333  }
334 
335  void setUseThreadFlag(bool b)
336  {
337  myUseThreadFlag = b;
338  }
339 
340  bool connected() const
341  {
342  return myConnected;
343  }
344 
345  virtual bool onStop();
346 
347  virtual bool onTick();
350  virtual void receivedNetworkMessage(DtNetworkMessageInterface* iface);
351 
353  boost::signal<void ()> signal_connectionSetUp;
354  boost::signal<void ()> signal_connectionCleanedUp;
355  boost::signal<void ()> signal_connectionAboutToBeCleanedUp;
357  boost::signal<void ()> signal_driverStarted;
358  boost::signal<void ()> signal_driverAboutToBeSetUp;
359 
360  public:
361 
364  virtual DtVrfRemoteController* remoteController();
365  virtual const DtVrfRemoteController* remoteController() const;
367 
370  virtual DtVrfMessageInterface* messageInterface();
371  virtual const DtVrfMessageInterface* messageInterface() const;
373 
376  virtual DtVrfTDLMessageInterface* vrfTDLMessageInterface();
377  virtual const DtVrfTDLMessageInterface* vrfTDLMessageInterface() const;
379 
381  const std::string& nonVrfObjectsUseUUIDScheme() const;
382 
383  protected:
384  virtual void onSetupExerciseConnection();
385  virtual void onCleanupExerciseConnection();
386 
387  virtual void connectionConnected();
388 
389  static void scenarioSavedCallback(DtSaveResult result, const DtString& error, void* usr);
390  virtual void processScenarioSaved(DtSaveResult, const DtString&);
391 
392  virtual void setupEntityData();
393  virtual void setupAggregateData();
394  virtual void setupEnvironmentalData();
395 
397  static void simMessageCallback(DtSimMessage* msg, void* usr);
398  virtual void processSimMessage(DtSimMessage* msg);
399 
401  static void radioMessageCallback(const DtVrfObjectMessage* msg, void* usr);
402  virtual void processRadioMessage(const DtVrfObjectMessage* msg);
403 
405  virtual void elementAttributeChangeRequested(
406  makVrv::DtUniqueID id, makVrv::DtUniqueID parentId, DtBoost::shared_ptr<const makVrv::DtElementAttribute> atr );
407 
408  makVrv::DtVrlinkElement* findElementWithId(makVrv::DtUniqueID id) const;
409 
410  virtual makVrv::DtConnection* createConnection();
411 
413  virtual void symbolDecorationsChanged();
414  virtual void slot_entityElementCreated(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEntityStateListener& l,
416 
417  static void scenarioCheckpointed(DtSaveResult result, double, void*);
418  virtual void processScenarioCheckpointed(DtSaveResult result, double);
419 
421  virtual void visualsLoaded();
422 
424  static void scenarioAboutToBeSaved(DtScenario&, void*);
425  virtual void processScenarioAboutToBeSaved(DtScenario&) const;
426 
427  protected:
434 
437 
447 
449 
451 
456 
459 
461 
463  std::string myHostAddressString;
467 
470 
472 
475 
478  DtNetworkMessageInterfaceHandlerAgent* myNetworkMessageInterfaceHandlerAgent;
479 
480  typedef std::map<unsigned int, bool> ContextMap;
481  typedef std::map<makVrv::DtUniqueID, ContextMap> ShowHideContextMap;
482 
486 
489 
491  typedef std::map<double,
492  std::pair<DtScenario, int> > CheckpointsToSave;
495 
496  std::set<int> mySimMessageCallbacks;
497  std::set<DtAdminContentMessageType> myAdminMessageCallbacks;
498  std::set<DtSimReportMessageType> myReportMessageCallbacks;
499  std::set<DtSimTaskMessageType> myTaskMessageCallbacks;
500  std::set<DtSetMessageType> mySetMessageCallbacks;
501 
502  std::map<DtSetMessageType, DtSetDataRequestCreatorFcn> mySetCreator;
503  std::map<DtSimTaskMessageType, DtSimTaskCreatorFcn> myTaskCreator;
504  std::map<int, DtInterfaceContentCreatorFcn> myInterfaceContentCreator;
505  std::map<DtAdminContentMessageType, DtAdminContentCreatorFcn> myAdminContentCreator;
506  std::map<DtSimCommandMessageType, DtSimCommandCreatorFcn> mySimulationCommandCreator;
507  std::map<std::string, std::pair<int, DtCondExprCreatorFcn> > myConditionCommandCreator;
508  std::map<int, DtVrfObjectMessageCreatorFcn> myObjectMessageCreator;
509  std::map<DtSimReportMessageType, DtSimReportCreatorFcn> myReportCreator;
510 
511 #if DtHLA
513 #endif
514 
515 
517 
518 #ifdef DtDIS
519  int mySiteId;
521 #endif
522  };
523 
525  {
526  return (myVrfMessageInterface);
527  }
528 
530  {
531  return (myVrfMessageInterface);
532  }
533 
535  {
536  return (myVrfTDLMessageInterface);
537  }
538 
540  {
541  return (myVrfTDLMessageInterface);
542  }
543 
545  {
546  return (myRemoteController);
547  }
548 
550  {
551  return (myRemoteController);
552  }
553 
554  inline const std::string& DtVrfDriver::nonVrfObjectsUseUUIDScheme() const
555  {
557  }
558  }
559 }

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)