WSF
WsfDisPlatform.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11// ****************************************************************************
12// Updated by Infoscitex, a DCS Company.
13// ****************************************************************************
14
15#ifndef WSFDISPLATFORM_HPP
16#define WSFDISPLATFORM_HPP
17
18#include "wsf_export.h"
19
20#include <list>
21#include <map>
22#include <memory>
23#include <utility>
24#include <vector>
25
26class DisBeam;
27class DisEmission;
28#include "DisEntityState.hpp"
29class DisEventId;
31class DisSystem;
32#include "UtVec3.hpp"
33#include "WsfComponent.hpp"
35class WsfDisInterface;
36
37#include "WsfExchange.hpp"
38
39class WsfPlatform;
40#include "WsfSensor.hpp"
41class WsfTrack;
42#include "WsfTrackId.hpp"
43
44class WsfDisPlatform;
45
46namespace wsf
47{
48namespace comm
49{
50class Comm;
51class Result;
52} // namespace comm
53} // namespace wsf
54
55class WSF_EXPORT WsfDisPlatformComponent : public WsfComponentT<WsfDisPlatform>
56{
57public:
58 virtual void SendingEmission(double aSimTime, DisEmission* aEmissionPtr, DisEventId& aPreviousNumber) {}
59 virtual void TurnOffEmission(DisEmission* aEmissionPtr) {}
60 virtual void AllocateEmissionSystems(DisUint8& emitterId) {}
61};
62
63
65
67{
68public:
71
73 {
75 cPDUTYPE_SIGNAL = 0x00000010,
76 cPDUTYPE_EMISSION = 0x00000020,
79 };
80
81 WsfDisPlatform(double aSimTime,
82 WsfPlatform* aPlatformPtr,
83 WsfDisInterface* aInterfacePtr,
84 std::unique_ptr<DisEntityState> aEntityStatePtr,
85 const DisEntityId& aEntityId,
86 const DisEntityType& aEntityType,
87 bool aIsIncomingTransfer,
88 bool aIsOutgoingTransfer);
89
91
93
94
96 WsfPlatform* GetPlatform() const { return mPlatformPtr; }
97
99 void CreateEmission(double aSimTime, const DisEntityId& aDisEntityId);
100
102 bool IsIncomingTransfer() const { return mIsIncomingTransfer; }
103
105 bool HasBeenReplaced() const { return mHasBeenReplaced; }
106
108 void SetHasBeenReplaced(bool aHasBeenReplaced) { mHasBeenReplaced = aHasBeenReplaced; }
109
112 const DisEntityId& GetEntityId() const { return mEntityStatePtr->GetEntityId(); }
113
116 const DisEntityType& GetEntityType() const { return mEntityStatePtr->GetEntityType(); }
117
120 DisUint8 GetForceId() const { return mEntityStatePtr->GetForceId(); }
121
122 WsfPlatform* GetShadowPlatform() const { return mShadowPlatformPtr; }
123 void SetShadowPlatform(WsfPlatform* aPlatformPtr) { mShadowPlatformPtr = aPlatformPtr; }
124
126
127 WsfDisInterface* GetInterface() const { return mInterfacePtr; }
128
129 void AddComponent(Component* aComponentPtr) { mComponents.AddComponent(aComponentPtr); }
130
131 const ComponentList& GetComponents() const { return mComponents; }
132
134
135
136 int AddArticulation(int aType, int aParentType, unsigned int aPublishBitmap, WsfArticulatedPart* aPartPtr, int aStartCount);
137
138 void ForceUpdate(double aSimTime);
139
140 void GetEntityState(double& aEntityStateUpdateTime, DisEntityState*& aEntityStatePtr);
141
142 void SetEntityState(double aSimTime, DisEntityState* aEntityStatePtr);
143
145 DisEntityState* GetEntityState() { return mEntityStatePtr.get(); }
146
148 double GetEntityStateUpdateTime() const { return mEntityStateUpdateTime; }
149
151 void SetEntityStateUpdateTime(double aSimTime) { mEntityStateUpdateTime = aSimTime; }
152
154 double GetLastTimeEntityStateSent() const { return mLastTimeEntityStateSent; }
155
157 double GetInitialDistributionTime() const { return mInitialDistributionTime; }
158
160 double GetLastTimeMoverUpdated() const { return mLastTimeMoverUpdated; }
161
163
165
166
167 bool GetEmissionPDU() const { return mSendEmissionPDU; }
168 void SendEmissionsPDU(double aSimTime);
169
170 DisSystem* GetSensorSystem(WsfSensor* aSensorPtr);
171
173 using SB_Key = std::pair<unsigned char, unsigned char>;
174 using SB_MapType = std::map<SB_Key, unsigned int>;
175 using SB_MapTypeIterator = std::map<SB_Key, unsigned int>::iterator;
176 using SB_MapTypePair = std::pair<SB_Key, unsigned int>;
177
178 unsigned char GetPartIdToBeamId(unsigned int aUniqueId);
179
180 unsigned int GetSysBeamIdToPartId(SB_Key aSB_Key);
181 void SetSysBeamIdToPartId(SB_Key aSB_Key, unsigned int aUniqueId);
183
185
186
187 void Comment(double aSimTime, const std::string& aComment);
188
189 void CommFrequencyChanged(double aSimTime, wsf::comm::Comm* aCommPtr);
190 void CommTurnedOff(double aSimTime, wsf::comm::Comm* aCommPtr);
191 void CommTurnedOn(double aSimTime, wsf::comm::Comm* aCommPtr);
192
193
194 void MessageReceived(double aSimTime,
195 wsf::comm::Comm* aXmtrPtr,
196 wsf::comm::Comm* aRcvrPtr,
197 const WsfMessage& aMessage,
198 wsf::comm::Result& aResult);
199
200 void MessageTransmitted(double aSimTime, wsf::comm::Comm* aCommPtr, const WsfMessage& aMessage);
201
202 void MoverUpdated(double aSimTime, WsfExtEntityDeadReckon::PlatformDR& aDeadReckonData);
203
204 void PlatformDeleted(double aSimTime);
205
206 void PlatformInitialized(double aSimTime);
207
208 void SensorDetectionChanged(double aSimTime, WsfSensor* aSensorPtr, size_t aTargetPlatformIndex, WsfSensorResult& aResult);
209
210 void SensorFrequencyChanged(double aSimTime, WsfSensor* aSensorPtr, WsfSensorMode* aModePtr);
211
212 void SensorModeActivated(double aSimTime, WsfSensor* aSensorPtr, WsfSensorMode* aModePtr);
213
214 void SensorModeDeactivated(double aSimTime, WsfSensor* aSensorPtr, WsfSensorMode* aModePtr);
215
216 void SensorRequestCanceled(double aSimTime, WsfSensor* aSensorPtr, const WsfTrack* aTrackPtr);
217
218 void SensorRequestInitiated(double aSimTime, WsfSensor* aSensorPtr, WsfSensorMode* aModePtr, const WsfTrack* aTrackPtr);
219
220 void SensorRequestUpdated(double aSimTime, WsfSensor* aSensorPtr, WsfSensorMode* aModePtr, const WsfTrack* aTrackPtr);
221
222 void SensorScanUpdated(double aSimTime, WsfSensor* aSensorPtr);
223
224 void SensorTrackDropped(double aSimTime, WsfSensor* aSensorPtr, const WsfTrack* aTrackPtr);
225
226 void SensorTrackInitiated(double aSimTime, WsfSensor* aSensorPtr, const WsfTrack* aTrackPtr);
227
228 void SensorTurnedOff(double aSimTime, WsfSensor* aSensorPtr);
229 void SensorTurnedOn(double aSimTime, WsfSensor* aSensorPtr);
230
231 void ResetEntityId(const DisEntityId& aDisEntityId);
232
233 void SetEntityId(const DisEntityId& aDisEntityId);
234
236
238
239
241 bool PlatformBeingTracked(DisEntityId& anEntityId);
243 bool GetSendDis() const { return mSendDis; }
245 void SetSendDis(bool aFlag) { mSendDis = aFlag; }
248 void SetSendTransmitterPdus(bool aFlag) { mSendTransmitterPdus = aFlag; }
249
251 WsfExchange::Query* GetQueryPtr() { return mQueryPtr.get(); }
252 WSF_DEPRECATED void SetQueryPtr(WsfExchange::Query* aQueryPtr);
253 void SetQueryPtr(std::unique_ptr<WsfExchange::Query> aQueryPtr);
254
256
258 void SetDoExtrapolate(bool aFlag) { mDoExtrapolate = aFlag; }
259
260 void TrySendCMEData(double simTime);
261
262 void SendOrQueueEmissionsPDU(double aSimTime);
263
264 // Allow applications to set SendDIS status of platform at creation time.
265 using InitialSendDisStatusCallback = UtCallbackListN<void(WsfDisPlatform*, bool&)>;
267
268private:
269 class TrackingRequest
270 {
271 public:
272 WsfTrackId mTrackId;
273 size_t mTargetIndex;
274 WsfStringId mModeNameId;
275 };
276
278 class SensorData
279 {
280 public:
281 SensorData(WsfSensor* aSensorPtr, DisSystem* aSystemPtr)
282 : mSensorPtr(aSensorPtr)
283 , mSystemPtr(aSystemPtr)
284 , mScanUpdateTime(-1.0)
285 , mScanFraction(0.0)
286 , mScanRate(0.0)
287 , mBeamList()
288 , mBeamModeName()
289 , mDetectBeamPtr(nullptr)
290 , mDetectList()
291 , mTrackList()
292 , mTrackingRequestList()
293 , mLastBeamCountSent(0)
294 {
295 }
296
297 WsfSensor* mSensorPtr;
298 DisSystem* mSystemPtr;
300 double mScanUpdateTime;
303 double mScanFraction;
305 double mScanRate;
306
307 std::vector<DisBeam*> mBeamList;
311 std::vector<WsfStringId> mBeamModeName;
312
313 DisBeam* mDetectBeamPtr;
314
316 std::list<DisEntityId> mDetectList;
317
319 std::list<DisEntityId> mTrackList;
320
322 std::list<TrackingRequest> mTrackingRequestList;
323
325 DisUint8 mLastBeamCountSent;
326 };
327
328 class SendInitialCMEDataEvent : public WsfEvent
329 {
330 public:
331 SendInitialCMEDataEvent(double aSimTime, WsfDisInterface* aInterfacePtr, const DisEntityId& aEntityId);
332
333 EventDisposition Execute() override;
334
335 private:
336 WsfDisInterface* mInterfacePtr;
337 DisEntityId mEntityId;
338 };
339
340 struct SimpleAccelerationData
341 {
342 SimpleAccelerationData()
343 : mLastUpdate(0)
344 {
345 }
346 double mLastUpdate;
347 UtVec3d mPastVelocity;
348 UtVec3d mPastOrientationWCS;
349 };
350
351 SensorData* GetSensorData(WsfSensor* aSensorPtr);
352
353 void MarkSensorAsOff(SensorData& aSensorData);
354
355 void RebuildTrackJamLists(SensorData& aSensorData);
356
357 unsigned char SetPartIdToBeamIdP(unsigned int aUniqueId);
358
359 void SendInitialCMEData(double aSimTime);
360
361 void UpdateBeamConfiguration(double aSimTime, SensorData& aSensorData);
362
363 void UpdateBeamsWithSweepPosition(double aSimTime, SensorData& aSensorData);
364
365 void UpdateBeamsWithTrackingRequests(SensorData& aSensorData);
366
367 void UpdateSensorUpdateList(double aSimTime);
368
369 void UpdateSystemFromSensor(SensorData& aSensorData);
370
371 bool UpdateTrackingRequestList(double aSimTime, SensorData& aSensorData, WsfSensorMode* aModePtr, const WsfTrack* aTrackPtr);
372
373 void UpdateSimpleAccelerations(double aSimTime,
374 WsfExtEntityDeadReckon::PlatformDR& aDeadReckonData,
375 bool aDeadReckonChange);
376
377 // The heartbeat timer differs depending on how many times an entity state has
378 // been sent:
379 //
380 // a) It is zero when an entity state has yet to be sent. This forces the
381 // entity state to be sent on the first call to MoverUpdated.
382 // b) After MoverUpdate has been called once, it is set to a random value that
383 // is some fraction of the DIS heartbeat timer. This spreads entity state
384 // updates out for non-moving or very slow moving entities.
385 // c) On the second and subsequent updates it will be the DIS heartbeat timer
386 // +/- 10%. Again, this prevents clustering of updates.
387
388 double mHeartbeatTimer;
389
390 double mHeartbeatTimerOverride;
392 DisEmission* mEmissionPtr;
393
395 std::unique_ptr<DisEntityState> mEntityStatePtr;
396
398 double mEntityStateUpdateTime;
399
401 std::unique_ptr<DisEntityState> mPlaybackEntityStatePtr;
402
404 double mPlaybackEntityStateUpdateTime;
405
407 WsfDisInterface* mInterfacePtr;
408
410 double mLastTimeEmissionSent;
411
416 double mLastTimeEntityStateSent;
417
419 double mLastTimeMoverUpdated;
420
422 double mInitialDistributionTime;
423
425 SimpleAccelerationData* mSimpleAccelerationDataPtr;
426
428 WsfPlatform* mPlatformPtr;
429
431 bool mIsIncomingTransfer;
432
434 bool mIsOutgoingTransfer;
435
437 bool mHasBeenReplaced;
438
440 bool mSendEmissionPDU;
441
443 bool mScheduledInitialCMEData;
444
446 WsfPlatform* mShadowPlatformPtr;
447
448 std::vector<WsfDisArticulatedPart*> mArticulatedPartList;
449
450 using IdMap = std::map<unsigned int, unsigned char>;
451 using IdMapIterator = std::map<unsigned int, unsigned char>::iterator;
452 using IdMapPair = std::pair<unsigned int, unsigned char>;
453
454 IdMap mPartIdToBeamIdMap;
455 SB_MapType mSysBeamToPartIdMap;
456
457 std::vector<SensorData> mSensors;
458
460 bool mSendDis;
462 bool mSendTransmitterPdus;
464 bool mEntityStateSent;
465 bool mFirstUpdate;
466 bool mSendEmissionPdu;
467 bool mDoExtrapolate;
468
469 std::unique_ptr<WsfExchange::Query> mQueryPtr{nullptr};
470
471 ComponentList mComponents;
472};
473
474#endif
double simTime
Definition WsfScriptTrackClass.cpp:1880
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfArticulatedPart.hpp:36
A component list that stores only components of a specified type.
Definition WsfComponentList.hpp:343
WsfComponentT()
Definition WsfComponent.hpp:124
An internal class for maintaining articulated part information.
Definition WsfDisArticulatedPart.hpp:33
Definition WsfDisInterface.hpp:83
Definition WsfDisPlatform.hpp:56
virtual void TurnOffEmission(DisEmission *aEmissionPtr)
Definition WsfDisPlatform.hpp:59
virtual void SendingEmission(double aSimTime, DisEmission *aEmissionPtr, DisEventId &aPreviousNumber)
Definition WsfDisPlatform.hpp:58
virtual void AllocateEmissionSystems(DisUint8 &emitterId)
Definition WsfDisPlatform.hpp:60
An internal class used by WsfDisInterface to maintain information about a platform.
Definition WsfDisPlatform.hpp:67
WsfDisInterface * GetInterface() const
Definition WsfDisPlatform.hpp:127
void SetEntityId(const DisEntityId &aDisEntityId)
Definition WsfDisPlatform.cpp:1685
std::map< SB_Key, unsigned int >::iterator SB_MapTypeIterator
Definition WsfDisPlatform.hpp:175
void SensorScanUpdated(double aSimTime, WsfSensor *aSensorPtr)
Definition WsfDisPlatform.cpp:1253
void SetDoExtrapolate(bool aFlag)
Set do not extrapolate flag.
Definition WsfDisPlatform.hpp:258
std::pair< SB_Key, unsigned int > SB_MapTypePair
Definition WsfDisPlatform.hpp:176
WsfDisPlatformComponent Component
Definition WsfDisPlatform.hpp:69
void SetSendDis(bool aFlag)
Ability to set whether or not DIS PDUs are to be sent for this platform once the run has started.
Definition WsfDisPlatform.hpp:245
void SensorRequestUpdated(double aSimTime, WsfSensor *aSensorPtr, WsfSensorMode *aModePtr, const WsfTrack *aTrackPtr)
Definition WsfDisPlatform.cpp:1230
void CommTurnedOn(double aSimTime, wsf::comm::Comm *aCommPtr)
Definition WsfDisPlatform.cpp:529
unsigned char GetPartIdToBeamId(unsigned int aUniqueId)
Definition WsfDisPlatform.cpp:449
const ComponentList & GetComponents() const
Definition WsfDisPlatform.hpp:131
PDUTypeType
Definition WsfDisPlatform.hpp:73
@ cPDUTYPE_ENTITY_STATE
Definition WsfDisPlatform.hpp:77
@ cPDUTYPE_NOT_DEFINED
Definition WsfDisPlatform.hpp:74
@ cPDUTYPE_EMISSION
Definition WsfDisPlatform.hpp:76
@ cPDUTYPE_SIGNAL
Definition WsfDisPlatform.hpp:75
@ cPDUTYPE_TRANSMITTER
Definition WsfDisPlatform.hpp:78
WsfPlatform * GetShadowPlatform() const
Definition WsfDisPlatform.hpp:122
void SensorModeDeactivated(double aSimTime, WsfSensor *aSensorPtr, WsfSensorMode *aModePtr)
Definition WsfDisPlatform.cpp:1164
bool IsIncomingTransfer() const
Was this platform created in response to an incoming object transfer.
Definition WsfDisPlatform.hpp:102
const DisEntityType & GetEntityType() const
Definition WsfDisPlatform.hpp:116
bool GetSendDis() const
Returns indicator whether or not DIS PDUs will be sent for the platform.
Definition WsfDisPlatform.hpp:243
WsfComponentListT< WsfDisPlatformComponent > ComponentList
Definition WsfDisPlatform.hpp:70
void SensorModeActivated(double aSimTime, WsfSensor *aSensorPtr, WsfSensorMode *aModePtr)
Definition WsfDisPlatform.cpp:1141
void CommFrequencyChanged(double aSimTime, wsf::comm::Comm *aCommPtr)
Definition WsfDisPlatform.cpp:523
void SensorTrackInitiated(double aSimTime, WsfSensor *aSensorPtr, const WsfTrack *aTrackPtr)
Definition WsfDisPlatform.cpp:1296
void SetEntityStateUpdateTime(double aSimTime)
Store the time when the entity's state is updated.
Definition WsfDisPlatform.hpp:151
double GetEntityStateUpdateTime() const
Returns last time the entity's state was updated.
Definition WsfDisPlatform.hpp:148
void SensorTurnedOn(double aSimTime, WsfSensor *aSensorPtr)
Definition WsfDisPlatform.cpp:1374
DisUint8 GetForceId() const
Definition WsfDisPlatform.hpp:120
WsfExchange::Query * GetQueryPtr()
Get/Set the associated WsfExchange::Query information.
Definition WsfDisPlatform.hpp:251
void SensorFrequencyChanged(double aSimTime, WsfSensor *aSensorPtr, WsfSensorMode *aModePtr)
Definition WsfDisPlatform.cpp:1118
void PlatformInitialized(double aSimTime)
Definition WsfDisPlatform.cpp:968
void SensorDetectionChanged(double aSimTime, WsfSensor *aSensorPtr, size_t aTargetPlatformIndex, WsfSensorResult &aResult)
Definition WsfDisPlatform.cpp:1039
void SetSendTransmitterPdus(bool aFlag)
Definition WsfDisPlatform.hpp:248
void CommTurnedOff(double aSimTime, wsf::comm::Comm *aCommPtr)
Definition WsfDisPlatform.cpp:526
void SensorTurnedOff(double aSimTime, WsfSensor *aSensorPtr)
Definition WsfDisPlatform.cpp:1355
bool PlatformBeingTracked(DisEntityId &anEntityId)
Returns indicator whether or not other platform is being tracked by this one.
Definition WsfDisPlatform.cpp:1402
unsigned int GetSysBeamIdToPartId(SB_Key aSB_Key)
Definition WsfDisPlatform.cpp:470
void AddComponent(Component *aComponentPtr)
Definition WsfDisPlatform.hpp:129
WsfPlatform * GetPlatform() const
Get the associated platform.
Definition WsfDisPlatform.hpp:96
bool GetEmissionPDU() const
Definition WsfDisPlatform.hpp:167
void SensorRequestInitiated(double aSimTime, WsfSensor *aSensorPtr, WsfSensorMode *aModePtr, const WsfTrack *aTrackPtr)
Definition WsfDisPlatform.cpp:1207
void PlatformDeleted(double aSimTime)
Definition WsfDisPlatform.cpp:913
void SensorTrackDropped(double aSimTime, WsfSensor *aSensorPtr, const WsfTrack *aTrackPtr)
Definition WsfDisPlatform.cpp:1266
WsfDisPlatform(double aSimTime, WsfPlatform *aPlatformPtr, WsfDisInterface *aInterfacePtr, std::unique_ptr< DisEntityState > aEntityStatePtr, const DisEntityId &aEntityId, const DisEntityType &aEntityType, bool aIsIncomingTransfer, bool aIsOutgoingTransfer)
Definition WsfDisPlatform.cpp:79
bool HasBeenReplaced() const
Has this platform been replaced in response to an incoming object transfer.
Definition WsfDisPlatform.hpp:105
void MessageReceived(double aSimTime, wsf::comm::Comm *aXmtrPtr, wsf::comm::Comm *aRcvrPtr, const WsfMessage &aMessage, wsf::comm::Result &aResult)
Definition WsfDisPlatform.cpp:532
void SetHasBeenReplaced(bool aHasBeenReplaced)
Indicate if this platform has been replaced in response to an incoming object transfer.
Definition WsfDisPlatform.hpp:108
UtCallbackListN< void(WsfDisPlatform *, bool &)> InitialSendDisStatusCallback
Definition WsfDisPlatform.hpp:265
static InitialSendDisStatusCallback InitialSendDisStatus
Definition WsfDisPlatform.hpp:266
DisEntityState * GetEntityState()
Get the pointer to the entity state.
Definition WsfDisPlatform.hpp:145
const DisEntityId & GetEntityId() const
Definition WsfDisPlatform.hpp:112
std::pair< unsigned char, unsigned char > SB_Key
System-Beam key - a combination of the unique IDs.
Definition WsfDisPlatform.hpp:173
void ResetEntityId(const DisEntityId &aDisEntityId)
Definition WsfDisPlatform.cpp:1667
void MessageTransmitted(double aSimTime, wsf::comm::Comm *aCommPtr, const WsfMessage &aMessage)
Definition WsfDisPlatform.cpp:596
void SetSysBeamIdToPartId(SB_Key aSB_Key, unsigned int aUniqueId)
Definition WsfDisPlatform.cpp:484
void SensorRequestCanceled(double aSimTime, WsfSensor *aSensorPtr, const WsfTrack *aTrackPtr)
Definition WsfDisPlatform.cpp:1187
double GetLastTimeMoverUpdated() const
Return the last time the mover was updated.
Definition WsfDisPlatform.hpp:160
std::map< SB_Key, unsigned int > SB_MapType
Definition WsfDisPlatform.hpp:174
void SetShadowPlatform(WsfPlatform *aPlatformPtr)
Definition WsfDisPlatform.hpp:123
void MoverUpdated(double aSimTime, WsfExtEntityDeadReckon::PlatformDR &aDeadReckonData)
Definition WsfDisPlatform.cpp:679
double GetLastTimeEntityStateSent() const
Return the last time when an entity state PDU was sent.
Definition WsfDisPlatform.hpp:154
double GetInitialDistributionTime() const
Return the time the initial state PDU is to be sent.
Definition WsfDisPlatform.hpp:157
void Comment(double aSimTime, const std::string &aComment)
Definition WsfDisPlatform.cpp:509
Callback Query class.
Definition WsfExchange.hpp:164
Maintains a platform's dead reckon state.
Definition WsfExtEntityDeadReckon.hpp:108
A base class for messages sent among simulation communication objects, processors and sensors.
Definition WsfMessage.hpp:33
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
Definition WsfSensorMode.hpp:36
Definition WsfSensorResult.hpp:27
Definition WsfSensor.hpp:92
Definition WsfTrackId.hpp:33
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Definition WsfComm.hpp:43
Definition WsfCommResult.hpp:34
Definition WsfComm.cpp:34
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Copyrights Multiple, All Rights Reserved