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 deleteMemory = false);
130 
132  virtual void closeScenario(DtFilename);
133 
135  virtual void createEnvironmentalObject(DtSimulationAddress addr,
137 
139  virtual void getMessageFilterStatus(std::map<std::string,bool>& statusMap) const;
140 
142  virtual void setMessageFilterStatus(const std::map<std::string,bool>& statusMap);
143 
145  virtual void getMessageProcessorStatus(std::map<std::string,bool>& statusMap) const;
146 
148  virtual void setMessageProcessorStatus(const std::map<std::string,bool>& statusMap);
149 
152  virtual void registerSimMessageCallbackFor(int t, bool reg);
153 
156  virtual void registerSimReportMessageCallbackFor(const DtSimReportMessageType& s, bool reg);
157 
158  virtual void registerSimTaskMessageCallbackFor(const DtSimTaskMessageType& s, bool reg);
159 
160  virtual void registerSetMessageCallbackFor(const DtSetMessageType& s, bool reg);
161 
164  virtual void registerAdminMessageCallbackFor(const DtAdminContentMessageType& t, bool reg);
165 
167  virtual void setTimeoutInterval(int i);
168 
170  virtual void sendMessageToObject(const DtVrfObjectMessage* m, DtSimulationAddress addr);
171 
174  virtual void sendMessage(const DtSimInterfaceContent* m, DtSimulationAddress addr);
175 
177  virtual void addSetCreatorFcn(const DtSetMessageType&, DtSetDataRequestCreatorFcn);
178 
180  virtual void addTaskCreatorFcn(const DtSimTaskMessageType&, DtSimTaskCreatorFcn);
181 
183  virtual void addInterfaceContentCreatorFcn(int, DtInterfaceContentCreatorFcn);
184 
186  virtual void addObjectMessageCreatorFcn(int, DtVrfObjectMessageCreatorFcn);
187 
189  virtual void addReportCreatorFcn(const DtSimReportMessageType&, DtSimReportCreatorFcn);
190 
192  virtual void addAdminContentCreatorFcn(const DtAdminContentMessageType&, DtAdminContentCreatorFcn);
193 
195  virtual void addSimulationCommandCreatorFcn(const DtSimCommandMessageType&, DtSimCommandCreatorFcn);
196 
198  virtual void addConditionCreatorFcn(std::string, int, DtCondExprCreatorFcn);
199 
200 #if DtHLA
201 
202  virtual void regsiterInfluenceIteractionCallback(DtInfluenceInterCb, void*);
203 
205  virtual void unregsiterInfluenceIteractionCallback(DtInfluenceInterCb, void*);
206 #endif
207 
209  virtual void startFreezeScenario(DtSimulationAddress, bool sendStart);
210 
212  virtual void sendSensorFieldOfViewControl(const DtSensorFieldOfViewControlInteractionData* d);
213 
215  virtual void registerCommentInteractionCallback(DtCommentCallbackFcn, void*);
216 
218  virtual void unregisterCommentInteractionCallback(DtCommentCallbackFcn, void*);
219 
221  virtual void importScenarioDescriptionFile(std::string file, DtSimulationAddress address, std::string format,
222  std::map<std::string, std::string> importData);
223 
225  virtual void exportScenarioDescriptionFile(std::string file, DtSimulationAddress address, std::string format,
226  std::map<std::string, std::string> importData);
227 
232  virtual DtSimpleTypedDictionary& extendedStateFor(makVrv::DtUniqueID id, bool forceUpdate = true);
233 
234  DtVrfObjectDataStateProcessor* vrfObjectDataProcessor()
235  {
236  return myVrfObjectDataStateDataProcessor;
237  }
238 
241  {
242  return myDataProcessor;
243  }
244 
245  DtEmitterSystemSimDataProcessor* emitterSystemDataProcessor()
246  {
247  return myEmitterSystemDataProcessor;
248  }
249 
250  DtVrfWeatherStateProcessor* weatherDataProcessor()
251  {
252  return myWeatherDataProcessor;
253  }
254 
255  DtActiveSonarSimDataProcessor* activeSonarDataProcessor()
256  {
257  return myActiveSonarDataProcessor;
258  }
259 
260  DtEnvironmentSimDataProcessor* environmentDataProcessor()
261  {
262  return myEnvironmentDataProcessor;
263  }
264 
265  DtAggregateSimDataProcessor* aggregtateDataProcessor()
266  {
267  return myAggregateDataProcessor;
268  }
269 
270  DtExtendedStateDataProcessor* extendedDataStateProcessor()
271  {
272  return myExtendedStateDataProcessor;
273  }
274 
275  DtSensorFieldOfViewSimDataProcessor* sensorFieldOfViewDataProcessor()
276  {
277  return mySensorFieldOfViewDataProcessor;
278  }
279 
280  void setUseThreadFlag(bool b)
281  {
282  myUseThreadFlag = b;
283  }
284 
285  bool connected() const
286  {
287  return myConnected;
288  }
289 
290  virtual bool onStop();
291 
292  virtual bool onTick();
295  virtual void receivedNetworkMessage(DtNetworkMessageInterface* iface);
296 
298  boost::signal<void ()> signal_connectionSetUp;
299  boost::signal<void ()> signal_connectionCleanedUp;
300  boost::signal<void ()> signal_connectionAboutToBeCleanedUp;
301 
302  public:
303 
306  virtual DtVrfRemoteController* remoteController();
307  virtual const DtVrfRemoteController* remoteController() const;
309 
312  virtual DtVrfMessageInterface* messageInterface();
313  virtual const DtVrfMessageInterface* messageInterface() const;
315 
317  const std::string& nonVrfObjectsUseUUIDScheme() const;
318 
319  protected:
320  virtual void onSetupExerciseConnection();
321  virtual void onCleanupExerciseConnection();
322 
323  virtual void connectionConnected();
324 
325  static void scenarioSavedCallback(DtSaveResult result, const DtString& error, void* usr);
326  virtual void processScenarioSaved(DtSaveResult, const DtString&);
327 
328  virtual void setupEntityData();
329  virtual void setupAggregateData();
330  virtual void setupEnvironmentalData();
331 
333  static void simMessageCallback(DtSimMessage* msg, void* usr);
334  virtual void processSimMessage(DtSimMessage* msg);
335 
337  static void radioMessageCallback(const DtVrfObjectMessage* msg, void* usr);
338  virtual void processRadioMessage(const DtVrfObjectMessage* msg);
339 
341  virtual void elementAttributeChangeRequested(
342  makVrv::DtUniqueID id, makVrv::DtUniqueID parentId, DtBoost::shared_ptr<const makVrv::DtElementAttribute> atr );
343 
344  makVrv::DtVrlinkElement* findElementWithId(makVrv::DtUniqueID id) const;
345 
346  virtual makVrv::DtConnection* createConnection();
347 
349  virtual void symbolDecorationsChanged();
350  virtual void slot_entityElementCreated(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEntityStateListener& l,
352 
353  protected:
359 
362 
371  DtSensorFieldOfViewSimDataProcessor* mySensorFieldOfViewDataProcessor;
372 
376 
379 
381 
383  std::string myHostAddressString;
386 
389 
391 
394 
397  DtNetworkMessageInterfaceHandlerAgent* myNetworkMessageInterfaceHandlerAgent;
398 
399  typedef std::map<unsigned int, bool> ContextMap;
400  typedef std::map<makVrv::DtUniqueID, ContextMap> ShowHideContextMap;
401 
405 
408 
409 #ifdef DtDIS
410  int mySiteId;
412 #endif
413  };
414 
416  {
417  return (myVrfMessageInterface);
418  }
419 
421  {
422  return (myVrfMessageInterface);
423  }
424 
426  {
427  return (myRemoteController);
428  }
429 
431  {
432  return (myRemoteController);
433  }
434 
435  inline const std::string& DtVrfDriver::nonVrfObjectsUseUUIDScheme() const
436  {
438  }
439  }
440 }

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)