VR-Forces 4.2 Class Documentation
DtVrfDriver.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
15 #include <vrvVrl/DtConnection.h>
16 #include <vrvUtil/DtSignalConnectionManager.h>
18 
23 
24 #include <vrvVrl/DtVrlinkConnection.h>
25 #include <vrvVrl/DtVrlinkEntityStateListener.h>
26 #include <vrvVrl/DtEntityExistenceListener.h>
27 #include <vrvVrl/DtEntityStateInterceptorCreator.h>
28 
29 #include <vrvCore/DtEntityState.h>
30 
31 #include <vlpi/entityType.h>
32 #include <matrix/vlVector.h>
33 
34 #include <vrftasks/setReqFact.h>
35 #include <vrftasks/taskFactory.h>
36 #include <vrfutil/ceFactory.h>
39 #include <vrfExtProtocol/ifContFactory.h>
41 #include <vrftasks/reportFactory.h>
43 
45 #include <vrfmsgs/msgExec.h>
46 #include <vrfplan/plan.h>
47 #include <vrfExtObjects/refExtEntList.h>
48 #include <vrfutil/scenario.h>
49 
50 #include <vl/commentInter.h>
51 
52 
53 class DtVrfObjectMessage;
54 
58 class DtSetDataRequest;
59 class DtSimTask;
62 
63 #if DtDIS
64 #define DtCommentCallbackFcn DtCommentPduCb
65 #elif DtHLA
66 #define DtCommentCallbackFcn DtCommentInteractionCb
67 #endif
68 
69 namespace makVrv
70 {
71  class DtVrlinkElement;
72 
73  namespace DT_PROTOCOL_NAMESPACE
74  {
76  }
77 }
78 
79 namespace makVrf
80 {
81  class DtNetworkMessageInterface;
82  class DtNetworkMessageInterfaceHandlerAgent;
83 
84  namespace VRF_PROTOCOL_NAMESPACE
85  {
86  class DtVrfBackendInterceptor;
87  class DtVrfConnectionHelper;
88  class DtVrfObjectDataStateProcessor;
89  class DtVrfEnvironmentObjectDataStateProcessor;
90  class DtEnvironmentSimDataProcessor;
91  class DtEmitterSystemSimDataProcessor;
92  class DtActiveSonarSimDataProcessor;
93  class DtVrfAggregateObjectDataStateProcessor;
94  class DtAggregateSimDataProcessor;
95  class DtVrfFogOfWarHandler;
96  class DtVrfEmbarkationProcessor;
97  class DtIffSimDataProcessor;
98  class DtPropulsionNoiseSimDataProcessor;
99 
100  class VRF_PROTOCOL_EXPORT DtVrfVrlinkEntityStateListener : public makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEntityStateListener,
102  {
103  public:
104  DtVrfVrlinkEntityStateListener(makVrv::DtUniqueID id);
105 
108 
109  protected:
110  virtual void postUpdate();
111  };
112 
113  class VRF_PROTOCOL_EXPORT DtVrfVrlinkEntityStateListenerCreator : public makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEntityStateListenerCreator
114  {
115  public:
116 
119  static DtVrfVrlinkEntityStateListenerCreator& instance(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim);
120 
123 
124  #ifdef DtHLA
125 
126  //functionality.
127  virtual makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEntityStateListener* create(DtHlaObject* object);
128  #endif
129 
130  #ifdef DtDIS
131 
132 
133  virtual makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEntityStateListener* create(const DtEntityIdentifier& id,
134  const DtEntityType& type);
135  #endif
136 
138  DtVrfVrlinkEntityStateListenerCreator(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection&);
139  };
140 
141 
142  class VRF_PROTOCOL_EXPORT DtVrfVrlinkAggregateStateListener : public makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkAggregateStateListener,
144  {
145  public:
146  DtVrfVrlinkAggregateStateListener(makVrv::DtUniqueID id);
147 
150  };
151 
152  class VRF_PROTOCOL_EXPORT DtVrfVrlinkAggregateStateListenerCreator : public makVrv::DT_PROTOCOL_NAMESPACE::DtAggregateStateListenerCreator
153  {
154  public:
155 
158  static DtVrfVrlinkAggregateStateListenerCreator& instance(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim);
159 
162 
163  #ifdef DtHLA
164 
165  //functionality.
166  virtual makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkAggregateStateListener* create(DtHlaObject* object);
167  #endif
168 
169  #ifdef DtDIS
170 
171 
172  virtual makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkAggregateStateListener* create(const DtEntityIdentifier& id,
173  const DtEntityType& type);
174  #endif
175 
177  DtVrfVrlinkAggregateStateListenerCreator(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection&);
178  };
179 
180  class VRF_PROTOCOL_EXPORT DtVrfEntityStateInterceptorCreator : public makVrv::DT_PROTOCOL_NAMESPACE::DtEntityStateInterceptorCreator
181  {
182  public:
183  static DtEntityStateInterceptorCreator& instance(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim)
184  {
186  dynamic_cast<DtVrfEntityStateInterceptorCreator*>(sim.findInstance(
187  "DtEntityStateInterceptorCreator"));
188  if(!creator)
189  {
191  sim.registerInstance("DtEntityStateInterceptorCreator",creator);
192  }
193  return *creator;
194  }
195 
198  {
199  }
200 
201  virtual DtEntityStateRepository* create(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEntityStateListener* listener);
202 
204  {
205  }
206  };
207 
208  class VRF_PROTOCOL_EXPORT DtVrfEntityReflectedListCreator : public makVrv::DT_PROTOCOL_NAMESPACE::DtVrvEntityReflectedListCreator
209  {
210  public:
211 
212  static makVrv::DT_PROTOCOL_NAMESPACE::DtVrvEntityReflectedListCreator&
213  instance(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim);
214 
215  virtual DtReflectedEntityList* create(makVrv::DT_PROTOCOL_NAMESPACE::DtEntityExistenceListener&);
216 
217  #if DtHLA
218  virtual DtReflectedEntityList* create(makVrv::DT_PROTOCOL_NAMESPACE::DtEntityExistenceListener&, DtDDMRegionSet&);
219  #endif
220 
221  protected:
222  DtVrfEntityReflectedListCreator(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim);
223  };
224 
227  {
228  public:
229  DtVrfDriver(makVrv::DtAgentManager& agentManager, const std::string& uniqueName);
230 
231  virtual ~DtVrfDriver();
232 
233  public:
234  virtual bool onStart();
235 
236  public:
238  virtual void realizeConfiguration(const makVrv::DtConfiguration& config);
239 
241  virtual void sendLoggerSetFilename(std::string filename);
242 
244  virtual void sendLoggerRecordMessage();
245 
247  virtual void sendLoggerStopMessage();
248 
251  virtual void newScenario(const DtScenario*, int startTimeOfDay = 12 * 3600);
252 
254  virtual void loadScenario(const DtScenarioLoadInformation*, bool deleteMemory = false);
255 
258  virtual void saveScenario(const DtScenario*, DtPreserveMappingsFcn fcn = 0, void* userData = 0,
259  bool deleteMemory = false);
260 
262  virtual void closeScenario();
263 
265  virtual void createEnvironmentalObject(DtSimulationAddress addr, DtEntityType, int force,
266  std::vector<DtVector>, DtEnvironmentalCreationData data );
267 
269  virtual void getMessageFilterStatus(std::map<std::string,bool>& statusMap) const;
270 
272  virtual void setMessageFilterStatus(const std::map<std::string,bool>& statusMap);
273 
275  virtual void getMessageProcessorStatus(std::map<std::string,bool>& statusMap) const;
276 
278  virtual void setMessageProcessorStatus(const std::map<std::string,bool>& statusMap);
279 
282  virtual void registerSimMessageCallbackFor(int t, bool reg);
283 
286  virtual void registerSimReportMessageCallbackFor(const DtSimReportMessageType& s, bool reg);
287 
288  virtual void registerSimTaskMessageCallbackFor(const DtSimTaskMessageType& s, bool reg);
289 
290  virtual void registerSetMessageCallbackFor(const DtSetMessageType& s, bool reg);
291 
294  virtual void registerAdminMessageCallbackFor(const DtAdminContentMessageType& t, bool reg);
295 
297  virtual void setTimeoutInterval(int i);
298 
300  virtual void sendMessageToObject(const DtVrfObjectMessage* m, DtSimulationAddress addr);
301 
304  virtual void sendMessage(const DtSimInterfaceContent* m, DtSimulationAddress addr);
305 
307  virtual void addSetCreatorFcn(const DtSetMessageType&, DtSetDataRequestCreatorFcn);
308 
310  virtual void addTaskCreatorFcn(const DtSimTaskMessageType&, DtSimTaskCreatorFcn);
311 
313  virtual void addInterfaceContentCreatorFcn(int, DtInterfaceContentCreatorFcn);
314 
316  virtual void addObjectMessageCreatorFcn(int, DtVrfObjectMessageCreatorFcn);
317 
319  virtual void addReportCreatorFcn(const DtSimReportMessageType&, DtSimReportCreatorFcn);
320 
322  virtual void addAdminContentCreatorFcn(const DtAdminContentMessageType&, DtAdminContentCreatorFcn);
323 
325  virtual void addSimulationCommandCreatorFcn(const DtSimCommandMessageType&, DtSimCommandCreatorFcn);
326 
328  virtual void addConditionCreatorFcn(std::string, int, DtCondExprCreatorFcn);
329 
331  virtual void registerCommentInteractionCallback(DtCommentCallbackFcn, void*);
332 
334  virtual void unregisterCommentInteractionCallback(DtCommentCallbackFcn, void*);
335 
337  virtual void importScenarioDescriptionFile(std::string file, DtSimulationAddress address, std::string format,
338  std::map<std::string, std::string> importData);
339 
341  virtual void exportScenarioDescriptionFile(std::string file, DtSimulationAddress address, std::string format,
342  std::map<std::string, std::string> importData);
343 
348  virtual DtSimpleTypedDictionary& extendedStateFor(makVrv::DtUniqueID id, bool forceUpdate = true);
349 
351  makVrv::DT_PROTOCOL_NAMESPACE::DtEntitySimDataProcessor* dataProcessor()
352  {
353  return myDataProcessor;
354  }
355 
356  DtEmitterSystemSimDataProcessor* emitterSystemDataProcessor()
357  {
358  return myEmitterSystemDataProcessor;
359  }
360 
361  DtActiveSonarSimDataProcessor* activeSonarDataProcessor()
362  {
363  return myActiveSonarDataProcessor;
364  }
365 
366  DtEnvironmentSimDataProcessor* environmentDataProcessor()
367  {
368  return myEnvironmentDataProcessor;
369  }
370 
371  DtAggregateSimDataProcessor* aggregtateDataProcessor()
372  {
373  return myAggregateDataProcessor;
374  }
375 
376  DtExtendedStateDataProcessor* extendedDataStateProcessor()
377  {
378  return myExtendedStateDataProcessor;
379  }
380 
381  void setUseThreadFlag(bool b)
382  {
383  myUseThreadFlag = b;
384  }
385 
386  virtual bool onTick();
389  virtual void receivedNetworkMessage(DtNetworkMessageInterface* iface);
390 
392  boost::signal<void ()> signal_connectionSetUp;
393  boost::signal<void ()> signal_connectionCleanedUp;
394  boost::signal<void ()> signal_connectionAboutToBeCleanedUp;
395 
396  public:
397 
400  DtVrfRemoteController* remoteController();
401  const DtVrfRemoteController* remoteController() const;
403 
404  protected:
405  virtual void onSetupExerciseConnection();
406  virtual void onCleanupExerciseConnection();
407 
408  virtual void setupEntityData();
409  virtual void setupAggregateData();
410  virtual void setupEnvironmentalData();
411 
413  static void simMessageCallback(DtSimMessage* msg, void* usr);
414  virtual void processSimMessage(DtSimMessage* msg);
415 
417  static void radioMessageCallback(const DtVrfObjectMessage* msg, void* usr);
418  virtual void processRadioMessage(const DtVrfObjectMessage* msg);
419 
421  virtual void elementAttributeChangeRequested(
422  makVrv::DtUniqueID id, makVrv::DtUniqueID parentId, DtBoost::shared_ptr<const makVrv::DtElementAttribute> atr );
423 
424  makVrv::DtVrlinkElement* findElementWithId(makVrv::DtUniqueID id) const;
425 
426  virtual makVrv::DtConnection* createConnection();
427 
428  protected:
434 
435  makVrv::DT_PROTOCOL_NAMESPACE::DtEntitySimDataProcessor* myDataProcessor;
437 
445 
448 
451 
453 
455  std::string myHostAddressString;
458 
460  makVrv::DtSignalConnectionManager myConnectionManager;
461 
464  DtNetworkMessageInterfaceHandlerAgent* myNetworkMessageInterfaceHandlerAgent;
465 
466  typedef std::map<unsigned int, bool> ContextMap;
467  typedef std::map<makVrv::DtUniqueID, ContextMap> ShowHideContextMap;
468 
472  };
473 
475  {
476  return (myRemoteController);
477  }
478 
480  {
481  return (myRemoteController);
482  }
483  }}

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)