VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 
45 class DtSetDataRequest;
46 class DtSimTask;
49 class DtAddressMap;
50 class DtBackendMap;
51 
52 #if DtDIS
53 #define DtCommentCallbackFcn DtCommentPduCb
54 #elif DtHLA
55 #define DtCommentCallbackFcn DtCommentInteractionCb
56 #endif
57 
58 namespace makVrv
59 {
60  class DtVrlinkElement;
61 
62  namespace DT_PROTOCOL_NAMESPACE
63  {
65  class DtAggregateElement;
66  class DtEntityElement;
67  class DtEntitySimDataProcessor;
68  }
69 }
70 
71 namespace makVrf
72 {
73  class DtNetworkMessageInterface;
74  class DtNetworkMessageInterfaceHandlerAgent;
75 
76  namespace VRF_PROTOCOL_NAMESPACE
77  {
78  class DtVrfBackendInterceptor;
79  class DtVrfConnectionHelper;
80  class DtVrfObjectDataStateProcessor;
81  class DtVrfWeatherStateProcessor;
82  class DtVrfEnvironmentObjectDataStateProcessor;
83  class DtEnvironmentSimDataProcessor;
84  class DtEmitterSystemSimDataProcessor;
85  class DtActiveSonarSimDataProcessor;
86  class DtVrfAggregateObjectDataStateProcessor;
87  class DtAggregateSimDataProcessor;
88  class DtVrfFogOfWarHandler;
89  class DtVrfEmbarkationProcessor;
90  class DtIffSimDataProcessor;
91  class DtPropulsionNoiseSimDataProcessor;
92  class DtWeatherStateCacheManager;
93  class DtVrfWeatherProcessor;
94  class DtSensorFieldOfViewSimDataProcessor;
95 
98  {
99  public:
100  DtVrfDriver(makVrv::DtAgentManager& agentManager, const std::string& uniqueName);
101 
102  virtual ~DtVrfDriver();
103 
104  public:
105  virtual bool onStart();
106 
107  public:
109  virtual void realizeConfiguration(const makVrv::DtConfiguration& config);
110 
112  virtual void sendLoggerSetFilename(std::string filename);
113 
115  virtual void sendLoggerRecordMessage();
116 
118  virtual void sendLoggerStopMessage();
119 
122  virtual void newScenario(const DtScenario*, time_t startTimeOfDay = 12 * 3600, const DtChangeWeatherCommand& initialCondition = DtChangeWeatherCommand());
123 
125  virtual void rollbackToSnapshot(double);
126 
128  virtual void loadScenario(const DtScenarioLoadInformation*, bool deleteMemory = false);
129 
132  virtual void saveScenario(const DtScenario*, DtPreserveMappingsFcn fcn = 0, void* userData = 0,
133  bool deleteMemory = false, bool saveInZipFile = false, bool queueSave = false, int putIntoPlayMode = 0);
134 
137  virtual void saveCheckpoints(const std::vector<DtScenario*>&, const DtFilename& baseName);
138 
140  virtual void saveNextCheckpoint();
141 
143  virtual void clearSavingCheckpoints();
144 
146  virtual void closeScenario(DtFilename, bool forceCloseAll = false);
147 
149  virtual void createEnvironmentalObject(DtSimulationAddress addr,
151 
153  virtual void getMessageFilterStatus(std::map<std::string,bool>& statusMap) const;
154 
156  virtual void setMessageFilterStatus(const std::map<std::string,bool>& statusMap);
157 
159  virtual void getMessageProcessorStatus(std::map<std::string,bool>& statusMap) const;
160 
162  virtual void setMessageProcessorStatus(const std::map<std::string,bool>& statusMap);
163 
166  virtual void registerSimMessageCallbackFor(int t, bool reg);
167 
170  virtual void registerSimReportMessageCallbackFor(const DtSimReportMessageType& s, bool reg);
171 
172  virtual void registerSimTaskMessageCallbackFor(const DtSimTaskMessageType& s, bool reg);
173 
174  virtual void registerSetMessageCallbackFor(const DtSetMessageType& s, bool reg);
175 
178  virtual void registerAdminMessageCallbackFor(const DtAdminContentMessageType& t, bool reg);
179 
181  virtual void setTimeoutInterval(int i);
182 
184  virtual void sendMessageToObject(const DtVrfObjectMessage* m, DtSimulationAddress addr);
185 
188  virtual void sendMessage(const DtSimInterfaceContent* m, DtSimulationAddress addr);
189 
191  virtual void addSetCreatorFcn(const DtSetMessageType&, DtSetDataRequestCreatorFcn);
192 
194  virtual void addTaskCreatorFcn(const DtSimTaskMessageType&, DtSimTaskCreatorFcn);
195 
197  virtual void addInterfaceContentCreatorFcn(int, DtInterfaceContentCreatorFcn);
198 
200  virtual void addObjectMessageCreatorFcn(int, DtVrfObjectMessageCreatorFcn);
201 
203  virtual void addReportCreatorFcn(const DtSimReportMessageType&, DtSimReportCreatorFcn);
204 
206  virtual void addAdminContentCreatorFcn(const DtAdminContentMessageType&, DtAdminContentCreatorFcn);
207 
209  virtual void addSimulationCommandCreatorFcn(const DtSimCommandMessageType&, DtSimCommandCreatorFcn);
210 
212  virtual void addConditionCreatorFcn(std::string, int, DtCondExprCreatorFcn);
213 
214 #if DtHLA
215 
216  virtual void regsiterInfluenceIteractionCallback(DtInfluenceInterCb, void*);
217 
219  virtual void unregsiterInfluenceIteractionCallback(DtInfluenceInterCb, void*);
220 #endif
221 
223  virtual void startFreezeScenario(DtSimulationAddress, bool sendStart);
224 
226  virtual void sendSensorFieldOfViewControl(const DtSensorFieldOfViewControlInteractionData* d);
227 
229  virtual void sendDetonation(const DtDetonationInteractionData* d);
230 
232  virtual void registerCommentInteractionCallback(DtCommentCallbackFcn, void*);
233 
235  virtual void unregisterCommentInteractionCallback(DtCommentCallbackFcn, void*);
236 
238  virtual void importScenarioDescriptionFile(std::string file, DtSimulationAddress address, std::string format,
239  std::map<std::string, std::string> importData);
240 
242  virtual void exportScenarioDescriptionFile(std::string file, DtSimulationAddress address, std::string format,
243  std::map<std::string, std::string> importData);
244 
249  virtual DtSimpleTypedDictionary& extendedStateFor(makVrv::DtUniqueID id, bool forceUpdate = true);
250 
251  DtVrfObjectDataStateProcessor* vrfObjectDataProcessor()
252  {
253  return myVrfObjectDataStateDataProcessor;
254  }
255 
258  {
259  return myDataProcessor;
260  }
261 
262  DtEmitterSystemSimDataProcessor* emitterSystemDataProcessor()
263  {
264  return myEmitterSystemDataProcessor;
265  }
266 
267  DtVrfWeatherStateProcessor* weatherDataProcessor()
268  {
269  return myWeatherDataProcessor;
270  }
271 
272  DtActiveSonarSimDataProcessor* activeSonarDataProcessor()
273  {
274  return myActiveSonarDataProcessor;
275  }
276 
277  DtEnvironmentSimDataProcessor* environmentDataProcessor()
278  {
279  return myEnvironmentDataProcessor;
280  }
281 
282  DtAggregateSimDataProcessor* aggregtateDataProcessor()
283  {
284  return myAggregateDataProcessor;
285  }
286 
287  DtExtendedStateDataProcessor* extendedDataStateProcessor()
288  {
289  return myExtendedStateDataProcessor;
290  }
291 
292  DtSensorFieldOfViewSimDataProcessor* sensorFieldOfViewDataProcessor()
293  {
294  return mySensorFieldOfViewDataProcessor;
295  }
296 
297  void setUseThreadFlag(bool b)
298  {
299  myUseThreadFlag = b;
300  }
301 
302  bool connected() const
303  {
304  return myConnected;
305  }
306 
307  virtual bool onStop();
308 
309  virtual bool onTick();
312  virtual void receivedNetworkMessage(DtNetworkMessageInterface* iface);
313 
315  boost::signal<void ()> signal_connectionSetUp;
316  boost::signal<void ()> signal_connectionCleanedUp;
317  boost::signal<void ()> signal_connectionAboutToBeCleanedUp;
319  boost::signal<void ()> signal_driverStarted;
320  boost::signal<void ()> signal_driverAboutToBeSetUp;
321 
322  public:
323 
326  virtual DtVrfRemoteController* remoteController();
327  virtual const DtVrfRemoteController* remoteController() const;
329 
332  virtual DtVrfMessageInterface* messageInterface();
333  virtual const DtVrfMessageInterface* messageInterface() const;
335 
337  const std::string& nonVrfObjectsUseUUIDScheme() const;
338 
339  protected:
340  virtual void onSetupExerciseConnection();
341  virtual void onCleanupExerciseConnection();
342 
343  virtual void connectionConnected();
344 
345  static void scenarioSavedCallback(DtSaveResult result, const DtString& error, void* usr);
346  virtual void processScenarioSaved(DtSaveResult, const DtString&);
347 
348  virtual void setupEntityData();
349  virtual void setupAggregateData();
350  virtual void setupEnvironmentalData();
351 
353  static void simMessageCallback(DtSimMessage* msg, void* usr);
354  virtual void processSimMessage(DtSimMessage* msg);
355 
357  static void radioMessageCallback(const DtVrfObjectMessage* msg, void* usr);
358  virtual void processRadioMessage(const DtVrfObjectMessage* msg);
359 
361  virtual void elementAttributeChangeRequested(
362  makVrv::DtUniqueID id, makVrv::DtUniqueID parentId, DtBoost::shared_ptr<const makVrv::DtElementAttribute> atr );
363 
364  makVrv::DtVrlinkElement* findElementWithId(makVrv::DtUniqueID id) const;
365 
366  virtual makVrv::DtConnection* createConnection();
367 
369  virtual void symbolDecorationsChanged();
370  virtual void slot_entityElementCreated(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEntityStateListener& l,
372 
373  static void scenarioCheckpointed(DtSaveResult result, double, void*);
374  virtual void processScenarioCheckpointed(DtSaveResult result, double);
375 
377  virtual void visualsLoaded();
378 
379  protected:
385 
388 
397  DtSensorFieldOfViewSimDataProcessor* mySensorFieldOfViewDataProcessor;
398 
402 
405 
407 
409  std::string myHostAddressString;
412 
415 
417 
420 
423  DtNetworkMessageInterfaceHandlerAgent* myNetworkMessageInterfaceHandlerAgent;
424 
425  typedef std::map<unsigned int, bool> ContextMap;
426  typedef std::map<makVrv::DtUniqueID, ContextMap> ShowHideContextMap;
427 
431 
434 
436  typedef std::map<double,
437  std::pair<DtScenario, int> > CheckpointsToSave;
440 
441  std::set<int> mySimMessageCallbacks;
442  std::set<DtAdminContentMessageType> myAdminMessageCallbacks;
443  std::set<DtSimReportMessageType> myReportMessageCallbacks;
444  std::set<DtSimTaskMessageType> myTaskMessageCallbacks;
445  std::set<DtSetMessageType> mySetMessageCallbacks;
446 
447  std::map<DtSetMessageType, DtSetDataRequestCreatorFcn> mySetCreator;
448  std::map<DtSimTaskMessageType, DtSimTaskCreatorFcn> myTaskCreator;
449  std::map<int, DtInterfaceContentCreatorFcn> myInterfaceContentCreator;
450  std::map<DtAdminContentMessageType, DtAdminContentCreatorFcn> myAdminContentCreator;
451  std::map<DtSimCommandMessageType, DtSimCommandCreatorFcn> mySimulationCommandCreator;
452  std::map<std::string, std::pair<int, DtCondExprCreatorFcn> > myConditionCommandCreator;
453  std::map<int, DtVrfObjectMessageCreatorFcn> myObjectMessageCreator;
454  std::map<DtSimReportMessageType, DtSimReportCreatorFcn> myReportCreator;
455 
457 
458 #ifdef DtDIS
459  int mySiteId;
461 #endif
462  };
463 
465  {
466  return (myVrfMessageInterface);
467  }
468 
470  {
471  return (myVrfMessageInterface);
472  }
473 
475  {
476  return (myRemoteController);
477  }
478 
480  {
481  return (myRemoteController);
482  }
483 
484  inline const std::string& DtVrfDriver::nonVrfObjectsUseUUIDScheme() const
485  {
487  }
488  }
489 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)