VR-Link API Documentation for HLA 1.3
baseEntitySR.h
Go to the documentation of this file.
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 

Document ID: Generated on Mon May 14 08:06:18 EDT 2012 from SVN revision 114750
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)