VR-Forces 4.3 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>
23 
25 
26 #include <vlpi/entityType.h>
27 #include <matrix/vlVector.h>
28 
30 #include <vrfutil/scenario.h>
31 
32 #include <vl/commentInteraction.h>
33 
34 #if DtHLA
35 #include <vrfExtObjects/influenceInteractionHLA.h>
36 #endif
37 
38 class DtVrfObjectMessage;
39 
43 class DtSetDataRequest;
44 class DtSimTask;
47 
48 #if DtDIS
49 #define DtCommentCallbackFcn DtCommentPduCb
50 #elif DtHLA
51 #define DtCommentCallbackFcn DtCommentInteractionCb
52 #endif
53 
54 namespace makVrv
55 {
56  class DtVrlinkElement;
57 
58  namespace DT_PROTOCOL_NAMESPACE
59  {
61  class DtAggregateElement;
62  class DtEntityElement;
63  class DtEntitySimDataProcessor;
64  }
65 }
66 
67 namespace makVrf
68 {
69  class DtNetworkMessageInterface;
70  class DtNetworkMessageInterfaceHandlerAgent;
71 
72  namespace VRF_PROTOCOL_NAMESPACE
73  {
74  class DtVrfBackendInterceptor;
75  class DtVrfConnectionHelper;
76  class DtVrfObjectDataStateProcessor;
77  class DtVrfWeatherStateProcessor;
78  class DtVrfEnvironmentObjectDataStateProcessor;
79  class DtEnvironmentSimDataProcessor;
80  class DtEmitterSystemSimDataProcessor;
81  class DtActiveSonarSimDataProcessor;
82  class DtVrfAggregateObjectDataStateProcessor;
83  class DtAggregateSimDataProcessor;
84  class DtVrfFogOfWarHandler;
85  class DtVrfEmbarkationProcessor;
86  class DtIffSimDataProcessor;
87  class DtPropulsionNoiseSimDataProcessor;
88  class DtWeatherStateCacheManager;
89  class DtVrfWeatherProcessor;
90 
93  {
94  public:
95  DtVrfDriver(makVrv::DtAgentManager& agentManager, const std::string& uniqueName);
96 
97  virtual ~DtVrfDriver();
98 
99  public:
100  virtual bool onStart();
101 
102  public:
104  virtual void realizeConfiguration(const makVrv::DtConfiguration& config);
105 
107  virtual void sendLoggerSetFilename(std::string filename);
108 
110  virtual void sendLoggerRecordMessage();
111 
113  virtual void sendLoggerStopMessage();
114 
117  virtual void newScenario(const DtScenario*, time_t startTimeOfDay = 12 * 3600);
118 
120  virtual void loadScenario(const DtScenarioLoadInformation*, bool deleteMemory = false);
121 
124  virtual void saveScenario(const DtScenario*, DtPreserveMappingsFcn fcn = 0, void* userData = 0,
125  bool deleteMemory = false);
126 
128  virtual void closeScenario();
129 
131  virtual void createEnvironmentalObject(DtSimulationAddress addr,
133 
135  virtual void getMessageFilterStatus(std::map<std::string,bool>& statusMap) const;
136 
138  virtual void setMessageFilterStatus(const std::map<std::string,bool>& statusMap);
139 
141  virtual void getMessageProcessorStatus(std::map<std::string,bool>& statusMap) const;
142 
144  virtual void setMessageProcessorStatus(const std::map<std::string,bool>& statusMap);
145 
148  virtual void registerSimMessageCallbackFor(int t, bool reg);
149 
152  virtual void registerSimReportMessageCallbackFor(const DtSimReportMessageType& s, bool reg);
153 
154  virtual void registerSimTaskMessageCallbackFor(const DtSimTaskMessageType& s, bool reg);
155 
156  virtual void registerSetMessageCallbackFor(const DtSetMessageType& s, bool reg);
157 
160  virtual void registerAdminMessageCallbackFor(const DtAdminContentMessageType& t, bool reg);
161 
163  virtual void setTimeoutInterval(int i);
164 
166  virtual void sendMessageToObject(const DtVrfObjectMessage* m, DtSimulationAddress addr);
167 
170  virtual void sendMessage(const DtSimInterfaceContent* m, DtSimulationAddress addr);
171 
173  virtual void addSetCreatorFcn(const DtSetMessageType&, DtSetDataRequestCreatorFcn);
174 
176  virtual void addTaskCreatorFcn(const DtSimTaskMessageType&, DtSimTaskCreatorFcn);
177 
179  virtual void addInterfaceContentCreatorFcn(int, DtInterfaceContentCreatorFcn);
180 
182  virtual void addObjectMessageCreatorFcn(int, DtVrfObjectMessageCreatorFcn);
183 
185  virtual void addReportCreatorFcn(const DtSimReportMessageType&, DtSimReportCreatorFcn);
186 
188  virtual void addAdminContentCreatorFcn(const DtAdminContentMessageType&, DtAdminContentCreatorFcn);
189 
191  virtual void addSimulationCommandCreatorFcn(const DtSimCommandMessageType&, DtSimCommandCreatorFcn);
192 
194  virtual void addConditionCreatorFcn(std::string, int, DtCondExprCreatorFcn);
195 
196 #if DtHLA
197 
198  virtual void regsiterInfluenceIteractionCallback(DtInfluenceInterCb, void*);
199 
201  virtual void unregsiterInfluenceIteractionCallback(DtInfluenceInterCb, void*);
202 #endif
203 
205  virtual void startFreezeScenario(DtSimulationAddress, bool sendStart);
206 
208  virtual void registerCommentInteractionCallback(DtCommentCallbackFcn, void*);
209 
211  virtual void unregisterCommentInteractionCallback(DtCommentCallbackFcn, void*);
212 
214  virtual void importScenarioDescriptionFile(std::string file, DtSimulationAddress address, std::string format,
215  std::map<std::string, std::string> importData);
216 
218  virtual void exportScenarioDescriptionFile(std::string file, DtSimulationAddress address, std::string format,
219  std::map<std::string, std::string> importData);
220 
225  virtual DtSimpleTypedDictionary& extendedStateFor(makVrv::DtUniqueID id, bool forceUpdate = true);
226 
227  DtVrfObjectDataStateProcessor* vrfObjectDataProcessor()
228  {
229  return myVrfObjectDataStateDataProcessor;
230  }
231 
234  {
235  return myDataProcessor;
236  }
237 
238  DtEmitterSystemSimDataProcessor* emitterSystemDataProcessor()
239  {
240  return myEmitterSystemDataProcessor;
241  }
242 
243  DtVrfWeatherStateProcessor* weatherDataProcessor()
244  {
245  return myWeatherDataProcessor;
246  }
247 
248  DtActiveSonarSimDataProcessor* activeSonarDataProcessor()
249  {
250  return myActiveSonarDataProcessor;
251  }
252 
253  DtEnvironmentSimDataProcessor* environmentDataProcessor()
254  {
255  return myEnvironmentDataProcessor;
256  }
257 
258  DtAggregateSimDataProcessor* aggregtateDataProcessor()
259  {
260  return myAggregateDataProcessor;
261  }
262 
263  DtExtendedStateDataProcessor* extendedDataStateProcessor()
264  {
265  return myExtendedStateDataProcessor;
266  }
267 
268  void setUseThreadFlag(bool b)
269  {
270  myUseThreadFlag = b;
271  }
272 
273  bool connected() const
274  {
275  return myConnected;
276  }
277 
278  virtual bool onStop();
279 
280  virtual bool onTick();
283  virtual void receivedNetworkMessage(DtNetworkMessageInterface* iface);
284 
286  boost::signal<void ()> signal_connectionSetUp;
287  boost::signal<void ()> signal_connectionCleanedUp;
288  boost::signal<void ()> signal_connectionAboutToBeCleanedUp;
289 
290  public:
291 
294  virtual DtVrfRemoteController* remoteController();
295  virtual const DtVrfRemoteController* remoteController() const;
297 
298  protected:
299  virtual void onSetupExerciseConnection();
300  virtual void onCleanupExerciseConnection();
301 
302  static void scenarioSavedCallback(DtSaveResult result, const DtString& error, void* usr);
303  virtual void processScenarioSaved(DtSaveResult, const DtString&);
304 
305  virtual void setupEntityData();
306  virtual void setupAggregateData();
307  virtual void setupEnvironmentalData();
308 
310  static void simMessageCallback(DtSimMessage* msg, void* usr);
311  virtual void processSimMessage(DtSimMessage* msg);
312 
314  static void radioMessageCallback(const DtVrfObjectMessage* msg, void* usr);
315  virtual void processRadioMessage(const DtVrfObjectMessage* msg);
316 
318  virtual void elementAttributeChangeRequested(
319  makVrv::DtUniqueID id, makVrv::DtUniqueID parentId, DtBoost::shared_ptr<const makVrv::DtElementAttribute> atr );
320 
321  makVrv::DtVrlinkElement* findElementWithId(makVrv::DtUniqueID id) const;
322 
323  virtual makVrv::DtConnection* createConnection();
324 
326  virtual void symbolDecorationsChanged();
327  virtual void slot_entityElementCreated(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEntityStateListener& l,
329 
330  protected:
336 
339 
348 
352 
355 
357 
359  std::string myHostAddressString;
362 
365 
367 
370  DtNetworkMessageInterfaceHandlerAgent* myNetworkMessageInterfaceHandlerAgent;
371 
372  typedef std::map<unsigned int, bool> ContextMap;
373  typedef std::map<makVrv::DtUniqueID, ContextMap> ShowHideContextMap;
374 
378 
380 
382 
383 #ifdef DtDIS
384  int mySiteId;
386 #endif
387  };
388 
390  {
391  return (myRemoteController);
392  }
393 
395  {
396  return (myRemoteController);
397  }
398  }
399 }

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)