VR-Forces Development_Version 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>
24 
26 
27 #include <vlpi/entityType.h>
28 #include <matrix/vlVector.h>
29 
31 #include <vrfutil/scenario.h>
32 
33 #include <vl/commentInteraction.h>
34 
35 #if DtHLA
37 #endif
38 
39 class DtVrfObjectMessage;
40 
44 class DtSetDataRequest;
45 class DtSimTask;
48 class DtAddressMap;
49 class DtBackendMap;
50 
51 #if DtDIS
52 #define DtCommentCallbackFcn DtCommentPduCb
53 #elif DtHLA
54 #define DtCommentCallbackFcn DtCommentInteractionCb
55 #endif
56 
57 namespace makVrv
58 {
59  class DtVrlinkElement;
60 
61  namespace DT_PROTOCOL_NAMESPACE
62  {
64  class DtAggregateElement;
65  class DtEntityElement;
66  class DtEntitySimDataProcessor;
67  }
68 }
69 
70 namespace makVrf
71 {
72  class DtNetworkMessageInterface;
73  class DtNetworkMessageInterfaceHandlerAgent;
74 
75  namespace VRF_PROTOCOL_NAMESPACE
76  {
77  class DtVrfBackendInterceptor;
78  class DtVrfConnectionHelper;
79  class DtVrfObjectDataStateProcessor;
80  class DtVrfWeatherStateProcessor;
81  class DtVrfEnvironmentObjectDataStateProcessor;
82  class DtEnvironmentSimDataProcessor;
83  class DtEmitterSystemSimDataProcessor;
84  class DtActiveSonarSimDataProcessor;
85  class DtVrfAggregateObjectDataStateProcessor;
86  class DtAggregateSimDataProcessor;
87  class DtVrfFogOfWarHandler;
88  class DtVrfEmbarkationProcessor;
89  class DtIffSimDataProcessor;
90  class DtPropulsionNoiseSimDataProcessor;
91  class DtWeatherStateCacheManager;
92  class DtVrfWeatherProcessor;
93  class DtSensorFieldOfViewSimDataProcessor;
94 
97  {
98  public:
99  DtVrfDriver(makVrv::DtAgentManager& agentManager, const std::string& uniqueName);
100 
101  virtual ~DtVrfDriver();
102 
103  public:
104  virtual bool onStart();
105 
106  public:
108  virtual void realizeConfiguration(const makVrv::DtConfiguration& config);
109 
111  virtual void sendLoggerSetFilename(std::string filename);
112 
114  virtual void sendLoggerRecordMessage();
115 
117  virtual void sendLoggerStopMessage();
118 
121  virtual void newScenario(const DtScenario*, time_t startTimeOfDay = 12 * 3600);
122 
124  virtual void loadScenario(const DtScenarioLoadInformation*, bool deleteMemory = false);
125 
128  virtual void saveScenario(const DtScenario*, DtPreserveMappingsFcn fcn = 0, void* userData = 0,
129  bool queueSave = false, int putIntoPlayMode = 0, bool deleteMemory = false);
130 
133  virtual void saveCheckpoints(const std::vector<DtScenario*>&, const DtFilename& baseName);
134 
136  virtual void saveNextCheckpoint();
137 
139  virtual void clearSavingCheckpoints();
140 
142  virtual void closeScenario(DtFilename, bool forceCloseAll = false);
143 
145  virtual void createEnvironmentalObject(DtSimulationAddress addr,
147 
149  virtual void getMessageFilterStatus(std::map<std::string,bool>& statusMap) const;
150 
152  virtual void setMessageFilterStatus(const std::map<std::string,bool>& statusMap);
153 
155  virtual void getMessageProcessorStatus(std::map<std::string,bool>& statusMap) const;
156 
158  virtual void setMessageProcessorStatus(const std::map<std::string,bool>& statusMap);
159 
162  virtual void registerSimMessageCallbackFor(int t, bool reg);
163 
166  virtual void registerSimReportMessageCallbackFor(const DtSimReportMessageType& s, bool reg);
167 
168  virtual void registerSimTaskMessageCallbackFor(const DtSimTaskMessageType& s, bool reg);
169 
170  virtual void registerSetMessageCallbackFor(const DtSetMessageType& s, bool reg);
171 
174  virtual void registerAdminMessageCallbackFor(const DtAdminContentMessageType& t, bool reg);
175 
177  virtual void setTimeoutInterval(int i);
178 
180  virtual void sendMessageToObject(const DtVrfObjectMessage* m, DtSimulationAddress addr);
181 
184  virtual void sendMessage(const DtSimInterfaceContent* m, DtSimulationAddress addr);
185 
187  virtual void addSetCreatorFcn(const DtSetMessageType&, DtSetDataRequestCreatorFcn);
188 
190  virtual void addTaskCreatorFcn(const DtSimTaskMessageType&, DtSimTaskCreatorFcn);
191 
193  virtual void addInterfaceContentCreatorFcn(int, DtInterfaceContentCreatorFcn);
194 
196  virtual void addObjectMessageCreatorFcn(int, DtVrfObjectMessageCreatorFcn);
197 
199  virtual void addReportCreatorFcn(const DtSimReportMessageType&, DtSimReportCreatorFcn);
200 
202  virtual void addAdminContentCreatorFcn(const DtAdminContentMessageType&, DtAdminContentCreatorFcn);
203 
205  virtual void addSimulationCommandCreatorFcn(const DtSimCommandMessageType&, DtSimCommandCreatorFcn);
206 
208  virtual void addConditionCreatorFcn(std::string, int, DtCondExprCreatorFcn);
209 
210 #if DtHLA
211 
212  virtual void regsiterInfluenceIteractionCallback(DtInfluenceInterCb, void*);
213 
215  virtual void unregsiterInfluenceIteractionCallback(DtInfluenceInterCb, void*);
216 #endif
217 
219  virtual void startFreezeScenario(DtSimulationAddress, bool sendStart);
220 
222  virtual void sendSensorFieldOfViewControl(const DtSensorFieldOfViewControlInteractionData* d);
223 
225  virtual void registerCommentInteractionCallback(DtCommentCallbackFcn, void*);
226 
228  virtual void unregisterCommentInteractionCallback(DtCommentCallbackFcn, void*);
229 
231  virtual void importScenarioDescriptionFile(std::string file, DtSimulationAddress address, std::string format,
232  std::map<std::string, std::string> importData);
233 
235  virtual void exportScenarioDescriptionFile(std::string file, DtSimulationAddress address, std::string format,
236  std::map<std::string, std::string> importData);
237 
242  virtual DtSimpleTypedDictionary& extendedStateFor(makVrv::DtUniqueID id, bool forceUpdate = true);
243 
244  DtVrfObjectDataStateProcessor* vrfObjectDataProcessor()
245  {
246  return myVrfObjectDataStateDataProcessor;
247  }
248 
251  {
252  return myDataProcessor;
253  }
254 
255  DtEmitterSystemSimDataProcessor* emitterSystemDataProcessor()
256  {
257  return myEmitterSystemDataProcessor;
258  }
259 
260  DtVrfWeatherStateProcessor* weatherDataProcessor()
261  {
262  return myWeatherDataProcessor;
263  }
264 
265  DtActiveSonarSimDataProcessor* activeSonarDataProcessor()
266  {
267  return myActiveSonarDataProcessor;
268  }
269 
270  DtEnvironmentSimDataProcessor* environmentDataProcessor()
271  {
272  return myEnvironmentDataProcessor;
273  }
274 
275  DtAggregateSimDataProcessor* aggregtateDataProcessor()
276  {
277  return myAggregateDataProcessor;
278  }
279 
280  DtExtendedStateDataProcessor* extendedDataStateProcessor()
281  {
282  return myExtendedStateDataProcessor;
283  }
284 
285  DtSensorFieldOfViewSimDataProcessor* sensorFieldOfViewDataProcessor()
286  {
287  return mySensorFieldOfViewDataProcessor;
288  }
289 
290  void setUseThreadFlag(bool b)
291  {
292  myUseThreadFlag = b;
293  }
294 
295  bool connected() const
296  {
297  return myConnected;
298  }
299 
300  virtual bool onStop();
301 
302  virtual bool onTick();
305  virtual void receivedNetworkMessage(DtNetworkMessageInterface* iface);
306 
308  boost::signal<void ()> signal_connectionSetUp;
309  boost::signal<void ()> signal_connectionCleanedUp;
310  boost::signal<void ()> signal_connectionAboutToBeCleanedUp;
311 
312  public:
313 
316  virtual DtVrfRemoteController* remoteController();
317  virtual const DtVrfRemoteController* remoteController() const;
319 
322  virtual DtVrfMessageInterface* messageInterface();
323  virtual const DtVrfMessageInterface* messageInterface() const;
325 
327  const std::string& nonVrfObjectsUseUUIDScheme() const;
328 
329  protected:
330  virtual void onSetupExerciseConnection();
331  virtual void onCleanupExerciseConnection();
332 
333  virtual void connectionConnected();
334 
335  static void scenarioSavedCallback(DtSaveResult result, const DtString& error, void* usr);
336  virtual void processScenarioSaved(DtSaveResult, const DtString&);
337 
338  virtual void setupEntityData();
339  virtual void setupAggregateData();
340  virtual void setupEnvironmentalData();
341 
343  static void simMessageCallback(DtSimMessage* msg, void* usr);
344  virtual void processSimMessage(DtSimMessage* msg);
345 
347  static void radioMessageCallback(const DtVrfObjectMessage* msg, void* usr);
348  virtual void processRadioMessage(const DtVrfObjectMessage* msg);
349 
351  virtual void elementAttributeChangeRequested(
352  makVrv::DtUniqueID id, makVrv::DtUniqueID parentId, DtBoost::shared_ptr<const makVrv::DtElementAttribute> atr );
353 
354  makVrv::DtVrlinkElement* findElementWithId(makVrv::DtUniqueID id) const;
355 
356  virtual makVrv::DtConnection* createConnection();
357 
359  virtual void symbolDecorationsChanged();
360  virtual void slot_entityElementCreated(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEntityStateListener& l,
362 
363  static void scenarioCheckpointed(DtSaveResult result, double, void*);
364  virtual void processScenarioCheckpointed(DtSaveResult result, double);
365 
366  protected:
372 
375 
384  DtSensorFieldOfViewSimDataProcessor* mySensorFieldOfViewDataProcessor;
385 
389 
392 
394 
396  std::string myHostAddressString;
399 
402 
404 
407 
410  DtNetworkMessageInterfaceHandlerAgent* myNetworkMessageInterfaceHandlerAgent;
411 
412  typedef std::map<unsigned int, bool> ContextMap;
413  typedef std::map<makVrv::DtUniqueID, ContextMap> ShowHideContextMap;
414 
418 
421 
423  typedef std::map<double,
424  std::pair<DtScenario, int> > CheckpointsToSave;
427 
428 #ifdef DtDIS
429  int mySiteId;
431 #endif
432  };
433 
435  {
436  return (myVrfMessageInterface);
437  }
438 
440  {
441  return (myVrfMessageInterface);
442  }
443 
445  {
446  return (myRemoteController);
447  }
448 
450  {
451  return (myRemoteController);
452  }
453 
454  inline const std::string& DtVrfDriver::nonVrfObjectsUseUUIDScheme() const
455  {
457  }
458  }
459 }

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)