![]() |
VR-Link API Documentation for HLA 1516
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00009 #ifndef DtBaseEntityStateRepository_H_ 00010 #define DtBaseEntityStateRepository_H_ 00011 00012 #include "stateRep.h" 00013 #include <vlpi/thresholder.h> 00014 #include <vlutil/vlTime.h> 00015 #include <matrix/vlDcm.h> 00016 00017 class DT_DLL_VL DtApproximator; 00018 class DT_DLL_VL DtDeadReckoner; 00019 class DT_DLL_VL DtSmoother; 00020 00021 #if DtHLA 00022 class DT_DLL_VL DtHlaObjectManager; 00023 #else 00024 class DT_DLL_VL DtDisObjectManager; 00025 #endif 00026 00027 00035 class DT_DLL_VL DtBaseEntityStateRepository : public DtStateRepository 00036 { 00037 public: 00038 00040 DtBaseEntityStateRepository(); 00041 00043 virtual ~DtBaseEntityStateRepository(); 00044 00046 DtBaseEntityStateRepository(const DtBaseEntityStateRepository& orig); 00047 00049 DtBaseEntityStateRepository& operator=( 00050 const DtBaseEntityStateRepository& orig); 00051 00053 virtual DtStateRepository* clone(bool copy = false) const; 00054 00060 void setTimeStampType(DtTimeStampType type); 00061 DtTimeStampType timeStampType() const; 00062 00075 00076 00079 virtual void setLocation(const DtVector & location, DtTime aTime); 00082 virtual void setLocation(const DtVector & location); 00083 00084 00088 virtual const DtVector &location(DtTime aTime) const; 00093 virtual const DtVector &location() const; 00094 00095 00098 virtual const DtVector & lastSetLocation() const; 00099 00101 virtual void setVelocity(const DtVector & Velocity, DtTime aTime); 00104 virtual void setVelocity(const DtVector & Velocity); 00106 virtual const DtVector & velocity(DtTime aTime) const; 00108 virtual const DtVector & velocity() const; 00109 00110 00113 virtual const DtVector & lastSetVelocity() const; 00114 00116 virtual void setAcceleration(const DtVector & Acceleration, DtTime aTime); 00118 virtual void setAcceleration(const DtVector & Acceleration); 00120 virtual const DtVector & acceleration(DtTime aTime) const; 00122 virtual const DtVector & acceleration() const; 00123 00126 virtual const DtVector & lastSetAcceleration() const; 00127 00129 virtual void setOrientation(const DtTaitBryan& orient, DtTime aTime); 00131 virtual void setOrientation(const DtTaitBryan& orient); 00132 00134 virtual const DtTaitBryan& orientation(DtTime aTime) const; 00136 virtual const DtTaitBryan& orientation() const; 00137 00140 virtual const DtTaitBryan& lastSetOrientation() const; 00141 00143 virtual void setRotationalVelocity(const DtVector & BodyRates, DtTime aTime); 00145 virtual void setRotationalVelocity(const DtVector & BodyRates); 00147 virtual const DtVector & rotationalVelocity(DtTime aTime) const; 00149 virtual const DtVector & rotationalVelocity() const; 00150 00153 virtual const DtVector & lastSetRotationalVelocity() const; 00154 00156 virtual void setFrozen(bool on); 00158 virtual bool frozen() const; 00159 00161 virtual void setAlgorithm(DtDeadReckonTypes alg); 00163 00164 virtual DtDeadReckonTypes algorithm() const; 00166 00167 00168 00184 00185 00186 00188 virtual void setRelativeLocation(const DtVector & location, DtTime aTime); 00191 virtual void setRelativeLocation(const DtVector & location); 00194 virtual const DtVector & relativeLocation(DtTime aTime) const; 00197 virtual const DtVector & relativeLocation() const; 00198 00201 virtual const DtVector & lastSetRelativeLocation() const; 00202 00205 virtual void setRelativeVelocity(const DtVector & Velocity, DtTime aTime); 00208 virtual void setRelativeVelocity(const DtVector & Velocity); 00211 virtual const DtVector & relativeVelocity(DtTime aTime) const; 00214 virtual const DtVector & relativeVelocity() const; 00215 00218 virtual const DtVector & lastSetRelativeVelocity() const; 00219 00222 virtual void setRelativeAcceleration(const DtVector & Acceleration, 00223 DtTime aTime); 00226 virtual void setRelativeAcceleration(const DtVector & Acceleration); 00229 virtual const DtVector & relativeAcceleration(DtTime aTime) const; 00232 virtual const DtVector & relativeAcceleration() const; 00233 00236 virtual const DtVector & lastSetRelativeAcceleration() const; 00237 00239 virtual void setRelativeOrientation(const DtTaitBryan& orient, 00240 DtTime aTime); 00242 virtual void setRelativeOrientation(const DtTaitBryan& orient); 00244 virtual const DtTaitBryan& relativeOrientation(DtTime aTime) const; 00246 virtual const DtTaitBryan& relativeOrientation() const; 00247 00250 virtual const DtTaitBryan& lastSetRelativeOrientation() const; 00251 00253 virtual void setRelativeRotationalVelocity(const DtVector & BodyRates, 00254 DtTime aTime); 00256 virtual void setRelativeRotationalVelocity(const DtVector & BodyRates); 00258 virtual const DtVector & relativeRotationalVelocity(DtTime aTime) const; 00260 virtual const DtVector & relativeRotationalVelocity() const; 00261 00264 virtual const DtVector & lastSetRelativeRotationalVelocity() const; 00265 00267 virtual void setRelativeFrozen(bool onOff); 00269 virtual bool relativeFrozen() const; 00270 00272 virtual void setRelativeAlgorithm(DtDeadReckonTypes alg); 00274 virtual DtDeadReckonTypes relativeAlgorithm() const; 00275 00277 00287 00288 00290 virtual const DtGlobalObjectDesignator& hostGlobalId() const; 00291 00297 virtual void setHostGlobalId( const DtGlobalObjectDesignator& id ); 00298 00301 virtual void clearHostGlobalId(); 00302 00304 virtual const DtNature& nature() const; 00306 virtual void setNature( const DtNature newVal ); 00307 00309 virtual const DtPosition& partPosition() const; 00311 virtual void setPartPosition( const DtPosition newVal ); 00312 00314 virtual const DtStationName& stationName() const; 00316 virtual void setStationName( const DtStationName newVal ); 00317 00319 virtual const DtU16& stationNumber() const; 00321 virtual void setStationNumber( const DtU16 newVal ); 00322 00324 virtual const DtVector & relativePosition() const; 00326 virtual void setRelativePosition( const DtVector & newVal ); 00327 00329 virtual const DtFloat32& range() const; 00331 virtual void setRange( const DtFloat32 newVal ); 00332 00334 virtual const DtFloat32& bearing() const; 00336 virtual void setBearing( const DtFloat32 newVal ); 00337 00339 00340 00341 00348 00349 #if DtHLA 00350 virtual void setHlaObjectManager( DtHlaObjectManager* mgr ); 00351 #else 00352 virtual void setDisObjectManager( DtDisObjectManager* mgr ); 00353 #endif 00354 00361 virtual void setAmAsSeenByRemote( bool val ); 00362 00364 virtual const DtDcm & bodyToGeoc(DtTime aTime) const; 00366 virtual const DtDcm & bodyToGeoc() const; 00367 00369 virtual const DtDcm & relativeBodyToHost(DtTime aTime) const; 00371 virtual const DtDcm & relativeBodyToHost() const; 00372 00374 virtual void setEntityId(const DtEntityIdentifier& id); 00376 virtual const DtEntityIdentifier& entityId() const; 00377 00379 virtual void setEntityType(const DtEntityType& type); 00381 virtual const DtEntityType& entityType() const; 00382 00383 #if DtHLA 00384 00385 virtual void setFederateId(const DtFederateId& id); 00387 virtual const DtFederateId& federateId() const; 00388 #endif 00389 00396 virtual void setApproximator(DtApproximator* approx); 00397 virtual DtApproximator* approximator() const; 00398 00399 virtual void setRelativeApproximator(DtApproximator* approx); 00400 virtual DtApproximator* relativeApproximator() const; 00401 00402 00406 virtual void useDeadReckoner(DtDeadReckoner* dr); 00407 00411 virtual void useRelativeDeadReckoner(DtDeadReckoner* dr); 00412 00414 virtual void useDeadReckoner(bool yesNo = true); 00416 virtual void useRelativeDeadReckoner(bool yesNo = true); 00417 00419 virtual DtDeadReckoner* usingDeadReckoner(); 00421 virtual DtDeadReckoner* usingRelativeDeadReckoner(); 00422 00426 virtual void useSmoother(DtSmoother* sm); 00427 00431 virtual void useRelativeSmoother(DtSmoother* sm); 00432 00434 virtual void useSmoother(bool yesNo = true); 00436 virtual void useRelativeSmoother(bool yesNo = true); 00437 00439 virtual DtSmoother* usingSmoother(); 00441 virtual DtSmoother* usingRelativeSmoother(); 00442 00445 virtual DtThresholder* thresholder(); 00446 00449 virtual const DtThresholder& thresholder() const; 00450 00453 virtual DtClock* clock() const; 00456 virtual void setClock(DtClock* clock); 00457 00460 virtual void printData() const; 00461 00463 void printDataToStream(std::ostream &str) const; 00464 00466 friend class DtBaseEntityDecoder; 00467 virtual void setTimeForSets( DtTime time ); 00468 virtual DtTime timeForSets() const; 00469 00472 void computeSpatialFromRelativeSpatial(); 00473 00474 protected: 00475 00478 DtBaseEntityStateRepository* self() const; 00479 00480 public: 00481 00484 DtBaseEntityStateRepository* hostEsr() const; 00485 00486 protected: 00487 00490 DtClock* myClock; 00491 00493 DtApproximator* myApproximator; 00494 DtApproximator* myRelativeApproximator; 00495 00497 DtDeadReckoner* myDeadReckoner; 00498 DtDeadReckoner* myRelativeDeadReckoner; 00499 00501 DtSmoother* mySmoother; 00502 DtSmoother* myRelativeSmoother; 00503 00505 DtDeadReckoner* myDfltDeadReckoner; 00506 DtSmoother* myDfltSmoother; 00507 DtDeadReckoner* myDfltRelativeDeadReckoner; 00508 DtSmoother* myDfltRelativeSmoother; 00509 00511 DtVector myLocation; 00512 DtVector myVelocity; 00513 DtVector myAcceleration; 00514 DtTaitBryan myOrientation; 00515 DtVector myRotationalVelocity; 00516 DtDeadReckonTypes myAlgorithm; 00517 bool myFrozen; 00518 00520 DtVector myRelativeLocation; 00521 DtVector myRelativeVelocity; 00522 DtVector myRelativeAcceleration; 00523 DtTaitBryan myRelativeOrientation; 00524 DtVector myRelativeRotationalVelocity; 00525 DtDeadReckonTypes myRelativeAlgorithm; 00526 bool myRelativeFrozen; 00527 00532 DtGlobalObjectDesignator myHostGlobalId; 00533 bool myHostGlobalIdSetFlag; 00534 DtNature myNature; 00535 DtPosition myPartPosition; 00536 DtStationName myStationName; 00537 DtU16 myStationNumber; 00538 DtVector myRelativePosition; 00539 DtFloat32 myRange; 00540 DtFloat32 myBearing; 00541 00543 #if DtHLA 00544 00545 DtHlaObjectManager* myObjectManager; 00546 #else 00547 DtDisObjectManager* myObjectManager; 00548 #endif 00549 00552 bool myAmAsSeenByRemote; 00553 00556 DtVector myLastSetLocation; 00557 DtVector myLastSetVelocity; 00558 DtVector myLastSetAcceleration; 00559 DtTaitBryan myLastSetOrientation; 00560 DtVector myLastSetRotationalVelocity; 00561 00564 DtVector myLastSetRelativeLocation; 00565 DtVector myLastSetRelativeVelocity; 00566 DtVector myLastSetRelativeAcceleration; 00567 DtTaitBryan myLastSetRelativeOrientation; 00568 DtVector myLastSetRelativeRotationalVelocity; 00569 00570 DtDcm myBodyToGeoc; 00571 bool myBodyToGeocDirty; 00572 DtDcm myRelativeBodyToHost; 00573 bool myRelativeBodyToHostDirty; 00574 DtTimeStampType myTimeStampType; 00575 00576 DtEntityIdentifier myEntityId; 00577 #if DtHLA 00578 00579 mutable DtFederateId myFederateId; 00580 #endif 00581 DtEntityType myEntityType; 00582 DtThresholder myThresholder; 00583 00584 protected: 00585 DtTime myTimeForSets; 00586 }; 00587 00588 inline DtThresholder* DtBaseEntityStateRepository::thresholder() 00589 { 00590 return &myThresholder; 00591 } 00592 00593 inline const DtThresholder& DtBaseEntityStateRepository::thresholder() const 00594 { 00595 return myThresholder; 00596 } 00597 00598 inline void DtBaseEntityStateRepository::setTimeStampType( 00599 DtTimeStampType type) 00600 { 00601 myTimeStampType = type; 00602 } 00603 00604 inline DtTimeStampType DtBaseEntityStateRepository::timeStampType() const 00605 { 00606 return myTimeStampType; 00607 } 00608 00609 inline const DtEntityType& DtBaseEntityStateRepository::entityType() const 00610 { 00611 return myEntityType; 00612 } 00613 00614 inline void DtBaseEntityStateRepository::setEntityType( 00615 const DtEntityType& type) 00616 { 00617 myEntityType = type; 00618 } 00619 00620 inline const DtEntityIdentifier& 00621 DtBaseEntityStateRepository::entityId() const 00622 { 00623 return myEntityId; 00624 } 00625 00626 inline void DtBaseEntityStateRepository::setEntityId( 00627 const DtEntityIdentifier& id) 00628 { 00629 myEntityId = id; 00630 } 00631 00632 #if DtHLA 00633 inline const DtFederateId& DtBaseEntityStateRepository::federateId() const 00634 { 00635 myFederateId.setSiteId(myEntityId.site()); 00636 myFederateId.setApplicationId(myEntityId.host()); 00637 return myFederateId; 00638 } 00639 00640 inline void DtBaseEntityStateRepository::setFederateId( 00641 const DtFederateId& id) 00642 { 00643 myEntityId.setSite(id.siteId()); 00644 myEntityId.setHost(id.applicationId()); 00645 } 00646 #endif 00647 00649 00650 inline const DtVector & DtBaseEntityStateRepository::lastSetRotationalVelocity( 00651 ) const 00652 { 00653 return myLastSetRotationalVelocity; 00654 } 00655 00656 inline const DtTaitBryan& DtBaseEntityStateRepository::lastSetOrientation( 00657 ) const 00658 { 00659 return myLastSetOrientation; 00660 } 00661 00662 inline const DtVector & DtBaseEntityStateRepository::lastSetAcceleration( 00663 ) const 00664 { 00665 return myLastSetAcceleration; 00666 } 00667 00668 inline const DtVector & DtBaseEntityStateRepository::lastSetVelocity() const 00669 { 00670 return myLastSetVelocity; 00671 } 00672 00673 inline const DtVector & DtBaseEntityStateRepository::lastSetLocation() const 00674 { 00675 return myLastSetLocation; 00676 } 00677 00679 00680 inline const DtVector & 00681 DtBaseEntityStateRepository::lastSetRelativeRotationalVelocity() const 00682 { 00683 return myLastSetRelativeRotationalVelocity; 00684 } 00685 00686 inline const DtTaitBryan& 00687 DtBaseEntityStateRepository::lastSetRelativeOrientation() const 00688 { 00689 return myLastSetRelativeOrientation; 00690 } 00691 00692 inline const DtVector & 00693 DtBaseEntityStateRepository::lastSetRelativeAcceleration() const 00694 { 00695 return myLastSetRelativeAcceleration; 00696 } 00697 00698 inline const DtVector & 00699 DtBaseEntityStateRepository::lastSetRelativeVelocity() const 00700 { 00701 return myLastSetRelativeVelocity; 00702 } 00703 00704 inline const DtVector & 00705 DtBaseEntityStateRepository::lastSetRelativeLocation() const 00706 { 00707 return myLastSetRelativeLocation; 00708 } 00709 00710 inline void DtBaseEntityStateRepository::setAmAsSeenByRemote( bool val ) 00711 { 00712 myAmAsSeenByRemote = val; 00713 } 00714 00715 #endif //! DtBaseEntityStateRepository_H_ 00716 00717 00718