10 #include <legionStandardOM/sets/readDesignatorRepository.hpp>
11 #include <legionStandardOM/sets/writeDesignatorRepository.hpp>
13 #include <matrix/vlVector.h>
23 : myDesignatedObject(
DtUUID::nullUUID())
24 , myDesignatorId(
DtUUID::nullUUID())
29 : myDesignatedObject(orig.myDesignatedObject)
30 , myDesignatorId(orig.myDesignatorId)
31 , myGlobalId(orig.myGlobalId)
49 DtUUID myDesignatedObject;
50 DtUUID myDesignatorId;
62 : DtFrameStateInterface(storage)
91 const DtUUID& designatedObject()
const;
92 void setDesignatedObject(
const DtUUID&);
94 const DtUUID& designatorId()
const;
95 void setDesignatorId(
const DtUUID&);
97 const unsigned int designatorCode()
const;
98 void setDesignatorCode(
const unsigned int&);
100 const unsigned int drAlgorithm()
const;
101 void setDrAlgorithm(
const unsigned int&);
103 const unsigned int codeName()
const;
104 void setCodeName(
const unsigned int&);
106 const DtVector spotLinearAcceleration()
const;
107 void setSpotLinearAcceleration(
const DtVector&);
109 const double designatorPower()
const;
110 void setDesignatorPower(
const double&);
112 const double designatorWavelength()
const;
113 void setDesignatorWavelength(
const double&);
115 const DtVector designatorSpotLocation()
const;
116 void setDesignatorSpotLocation(
const DtVector&);
118 const DtVector relativeSpotLocation()
const;
119 void setRelativeSpotLocation(
const DtVector&);
121 const DtVector relativePosition()
const;
122 void setRelativePosition(
const DtVector&);
124 const DtString& globalId()
const;
125 void setGlobalId(
const DtString&);
128 virtual void makeWritable();
131 virtual void makeReadOnly();
132 void cleanupWriteState();
150 const DtUUID& designatedObject()
const;
151 const DtUUID& designatorId()
const;
152 const unsigned int designatorCode()
const;
153 const double designatorPower()
const;
154 const double designatorWavelength()
const;
155 const DtVector designatorSpotLocation()
const;
156 const DtVector relativeSpotLocation()
const;
157 const DtVector relativePosition()
const;
158 const unsigned int codeName()
const;
159 const DtVector spotLinearAcceleration()
const;
160 const unsigned int drAlgorithm()
const;
163 bool readComponentValid()
const;
164 bool findReadComponent();
167 void handleDataUpdated();
194 virtual bool forceAdvance()
override;
198 if (myNextFrameState.isWritable())
200 if (!myFoundComponent)
202 myFoundComponent = myCurrentFrameState.findReadComponent();
205 myCurrentFrameState.advanceFrame(myNextFrameState.frameState());
208 myCurrentFrameState.emitComponentUpdated();
213 myCurrentFrameState.updateStateData(sd);
214 myNextFrameState.updateStateData(sd);
220 myCurrentFrameState.aboutToBeDeleted();
221 myNextFrameState.aboutToBeDeleted();
224 virtual void firstFrameAdvance()
override;
225 virtual void removeAdditionalStateComponents()
override;
UUID is a unique ID wrapper class.
Definition: uuid.h:59
const DtLaserDesignatorStateComponentData & frameState() const
Current frame state only can access current frame buffers. This ensures thread safety.
Definition: laserDesignatorStateComponent.h:148
void updateStateData(DtStateData *sd)
Implement to update data storage to the new state data.
Definition: laserDesignatorStateComponent.h:211
Definition: stateComponent.h:81
DtLaserDesignatorStateComponentData myData
Definition: laserDesignatorStateComponent.h:176
DtUUID myDesignatedObject
Definition: laserDesignatorStateComponent.h:49
DtStateData * myStateData
Definition: laserDesignatorStateComponent.h:179
LOM::ReadDesignatorRepository myReadDesignatorRepository
Definition: laserDesignatorStateComponent.h:177
Definition: stateComponent.h:266
DtStateComponentCreator< DtLaserDesignatorStateComponentImplementation > DtLaserDesignatorStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: laserDesignatorStateComponent.h:235
DtLaserDesignatorStateComponentData & operator=(const DtLaserDesignatorStateComponentData &rhs)
Definition: laserDesignatorStateComponent.h:35
DtLaserDesignatorStateComponentNextFrame myNextFrameState
Definition: laserDesignatorStateComponent.h:229
Contains the DtUUID class declaration.
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: laserDesignatorStateComponent.h:184
void updateDataStorage()
Implement to update data storage. Called from advanceFrame.
Definition: laserDesignatorStateComponent.h:196
DtStateData * myStateData
Definition: laserDesignatorStateComponent.h:137
virtual DtFrameStateInterface * nextFrameState()
Definition: laserDesignatorStateComponent.h:191
The DtLaserDesignatorStateComponentList is a collection of laser designators. Each laser designator m...
Definition: laserDesignatorStateComponent.h:20
DtLaserDesignatorStateComponentData()
Definition: laserDesignatorStateComponent.h:22
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:339
1) Define the interface class that will be used to represent the next and curent frames. The UNDEFINED_ macros are convenience macros that will define methods that throw exceptions (until they are implemented)
Definition: laserDesignatorStateComponent.h:56
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:228
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:379
#define UNDEFINED_RETURNVALUE_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:53
LOM::WriteDesignatorRepository myWriteDesignatorRepository
Definition: laserDesignatorStateComponent.h:136
DtUUID myDesignatorId
Definition: laserDesignatorStateComponent.h:50
DtLaserDesignatorStateComponentData & frameState()
Definition: laserDesignatorStateComponent.h:89
2) Define the next frame class. This will be used for write access.
Definition: laserDesignatorStateComponent.h:81
virtual void aboutToBeDeleted()
bool isDoubleBuffered()
Definition: laserDesignatorStateComponent.h:189
3) Define the current frame class. This will be used for read access.
Definition: laserDesignatorStateComponent.h:141
#define UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:57
#define DEFINE_ACCESSOR_MUTATOR(ReturnType, Accessor, Mutator)
Definition: doubleBufferedDataStorage.h:23
DtLaserDesignatorStateComponentData myData
Definition: laserDesignatorStateComponent.h:135
virtual void aboutToBeDeleted() override
Definition: laserDesignatorStateComponent.h:217
int myCallbackHandle
Definition: laserDesignatorStateComponent.h:178
#define DT_DLL_vrfStateData
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfStateDataDefines.h:26
const DtLaserDesignatorStateComponentData & frameState() const
Next frame access write access. Ensure this is only used in a single thread (i.e.a controller thread)...
Definition: laserDesignatorStateComponent.h:88
const DtFrameStateInterface * currentFrameState() const
Definition: laserDesignatorStateComponent.h:190
DtLaserDesignatorStateComponentCurrentFrame myCurrentFrameState
Definition: laserDesignatorStateComponent.h:228
Contains the DtStateComponent class declaration.
bool myFoundComponent
Definition: laserDesignatorStateComponent.h:230
DtString myGlobalId
Definition: laserDesignatorStateComponent.h:51
DtLaserDesignatorStateComponentData(const DtLaserDesignatorStateComponentData &orig)
Definition: laserDesignatorStateComponent.h:28
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:291
void advanceFrame(const DtLaserDesignatorStateComponentData &data)
Definition: laserDesignatorStateComponent.h:170
virtual const DtFrameStateInterface * nextFrameState() const
Definition: laserDesignatorStateComponent.h:192