12 #include <legionStandardOM/sets/readRadioTransmitterRepository.hpp>
13 #include <legionStandardOM/sets/writeRadioTransmitterRepository.hpp>
14 #include <matrix/vlVector.h>
15 #include <vlpi/entityType.h>
36 : myAntennaPatternType(0)
37 , myPseudoNoiseInUse(false)
38 , myTimeHopInUse(false)
39 , myModulationParams(0)
40 , myModulationParamsSize(0)
46 : myWorldAntennaLoc(orig.myWorldAntennaLoc)
47 , myRelativeAntennaLoc(orig.myRelativeAntennaLoc)
48 , myAntennaPatternType(orig.myAntennaPatternType)
49 , myPseudoNoiseInUse(orig.myPseudoNoiseInUse)
50 , myTimeHopInUse(orig.myTimeHopInUse)
51 , myModulationParams(0)
52 , myModulationParamsSize(0)
53 , myRadioId(orig.myRadioId)
65 if (myModulationParams)
67 free(myModulationParams);
80 if (myModulationParams)
82 free(myModulationParams);
83 myModulationParams = 0;
84 myModulationParamsSize = 0;
104 const
char* modulationParams()
const {
return myModulationParams; };
109 if (myModulationParams)
111 free(myModulationParams);
112 myModulationParamsSize = 0;
117 myModulationParams = (
char*)malloc(l);
118 memcpy(myModulationParams, p, l);
119 myModulationParamsSize = l;
152 virtual const
unsigned long long frequency()
const {
throw DtUnimplementedMethod(
"The const frequency() method is unimplemented"); };
161 virtual const
unsigned long long streamTag()
const {
throw DtUnimplementedMethod(
"The const streamTag() method is unimplemented"); };
178 virtual
void setModulationParams(const
char* params,
unsigned char length) {
throw DtUnimplementedMethod(
"The const setModulationParams() method is unimplemented"); };
193 const DtUUID hostId()
const;
195 const unsigned int transmitState()
const;
196 void setTransmitState(
const unsigned int&);
198 const unsigned int& antennaPatternType()
const;
199 void setAntennaPatternType(
const unsigned int&);
201 const UInt64 radioId()
const;
202 void setRadioId(
const UInt64&);
207 const unsigned long long frequency()
const;
208 void setFrequency(
unsigned long long);
210 const unsigned long streamTagUpper()
const;
211 const unsigned long streamTagLower()
const;
212 const unsigned long long streamTag()
const;
213 void setStreamTag(
unsigned long u,
unsigned long l);
214 void setStreamTag(
unsigned long long tag);
216 const float power()
const;
217 void setPower(
const float&);
219 const char* modulationParams()
const;
220 const unsigned char& modulationParamsSize()
const;
221 void setModulationParams(
const char* params,
unsigned char length);
223 const DtVector& relativeAntennaLoc()
const;
224 void setRelativeAntennaLoc(
const DtVector&);
226 const DtVector& worldAntennaLoc()
const;
227 void setWorldAntennaLoc(
const DtVector&);
229 const DtVector relativePosition()
const;
230 void setRelativePosition(
const DtVector&);
232 const unsigned int inputSource()
const;
233 void setInputSource(
const unsigned int&);
235 const unsigned int cryptoKey()
const;
236 void setCryptoKey(
const unsigned int&);
238 const unsigned int cryptoMode()
const;
239 void setCryptoMode(
const unsigned int&);
241 const unsigned int cryptoSystem()
const;
242 void setCryptoSystem(
const unsigned int&);
244 const unsigned int majorModulationType()
const;
245 void setMajorModulationType(
const unsigned int&);
247 const unsigned int modulationSystemType()
const;
248 void setModulationSystemType(
const unsigned int&);
250 const unsigned int detailedModulationType()
const;
251 void setDetailedModulationType(
const unsigned int&);
253 const float frequencyBandwidth()
const;
254 void setFrequencyBandwidth(
const float&);
256 const bool frequencyHopInUse()
const;
257 void setFrequencyHopInUse(
const bool&);
259 const bool& pseudoNoiseInUse()
const;
260 void setPseudoNoiseInUse(
const bool&);
262 const bool& timeHopInUse()
const;
263 void setTimeHopInUse(
const bool&);
266 virtual void makeWritable();
269 virtual void makeReadOnly();
274 Legion::WriteStateInstance writeStateInstance()
override;
275 virtual void updateStateData(
DtStateData*)
override;
277 void cleanupWriteState();
279 void setPublishingOnLegionNetwork(
bool b);
297 const DtUUID hostId()
const;
298 const unsigned int transmitState()
const;
300 const unsigned long long frequency()
const;
301 const unsigned long long streamTag()
const;
302 const unsigned long streamTagUpper()
const;
303 const unsigned long streamTagLower()
const;
304 const float power()
const;
305 const DtVector& worldAntennaLoc()
const;
306 const DtVector& relativeAntennaLoc()
const;
307 const DtVector relativePosition()
const;
308 const unsigned int inputSource()
const;
309 const unsigned int& antennaPatternType()
const;
310 const UInt64 radioId()
const;
311 const unsigned int cryptoKey()
const;
312 const unsigned int cryptoMode()
const;
313 const unsigned int cryptoSystem()
const;
314 const unsigned int detailedModulationType()
const;
315 const float frequencyBandwidth()
const;
316 const bool frequencyHopInUse()
const;
317 const bool& pseudoNoiseInUse()
const;
318 const bool& timeHopInUse()
const;
319 const unsigned int majorModulationType()
const;
320 const unsigned int modulationSystemType()
const;
321 const char* modulationParams()
const;
322 const unsigned char& modulationParamsSize()
const;
324 bool readComponentValid()
const;
325 bool findReadComponent();
326 Legion::ReadStateInstance readStateInstance()
const override;
330 virtual void updateStateData(
DtStateData*)
override;
359 if (!myFoundComponent)
361 myFoundComponent = myCurrentFrameState.findReadComponent();
364 if (myNextFrameState.isWritable())
366 myCurrentFrameState.advanceFrame(myNextFrameState.frameState());
369 myCurrentFrameState.emitComponentUpdated();
374 myCurrentFrameState.updateStateData(sd);
375 myNextFrameState.updateStateData(sd);
379 virtual bool forceAdvance();
382 virtual void firstFrameAdvance()
override;
387 myCurrentFrameState.aboutToBeDeleted();
388 myNextFrameState.aboutToBeDeleted();
391 virtual void completeSetup()
override;
392 virtual void removeAdditionalStateComponents()
override;
393 virtual void setPublishingOnLegionNetwork(
bool b)
override;
Definition: radioTransmitterStateComponent.h:27
UUID is a unique ID wrapper class.
Definition: uuid.h:59
DtRadioTransmitterStateComponentCurrentFrame myCurrentFrameState
Definition: radioTransmitterStateComponent.h:396
Definition: radioTransmitterStateComponent.h:24
Definition: stateDataTypes.h:23
virtual void aboutToBeDeleted() override
Definition: radioTransmitterStateComponent.h:384
3) Define the current frame class. This will be used for read access.
Definition: radioTransmitterStateComponent.h:289
bool isDoubleBuffered()
Definition: radioTransmitterStateComponent.h:352
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: radioTransmitterStateComponent.h:139
CryptoSystem
Definition: radioStateTypes.h:18
DtRadioTransmitterStateComponentData & frameState()
Definition: radioTransmitterStateComponent.h:191
Definition: radioTransmitterStateComponent.h:19
const DtFrameStateInterface * currentFrameState() const
Definition: radioTransmitterStateComponent.h:353
virtual void setFrequency(unsigned long long)
Definition: radioTransmitterStateComponent.h:153
const DtRadioTransmitterStateComponentData & frameState() const
Current frame state only can access current frame buffers. This ensures thread safety.
Definition: radioTransmitterStateComponent.h:295
virtual void setStreamTag(unsigned long long)
Definition: radioTransmitterStateComponent.h:163
Definition: stateComponent.h:266
virtual const DtFrameStateInterface * nextFrameState() const
Definition: radioTransmitterStateComponent.h:355
Definition: radioTransmitterStateComponent.h:30
ModulationSystemType
Definition: radioStateTypes.h:29
virtual DtFrameStateInterface * nextFrameState()
Definition: radioTransmitterStateComponent.h:354
Definition: radioTransmitterStateComponent.h:31
#define UNDEFINED_RETURNVALUE_ACCESSOR(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:31
TransmitState
Definition: radioStateTypes.h:34
DtRadioTransmitterStateComponentNextFrame myNextFrameState
Definition: radioTransmitterStateComponent.h:397
Contains the DtUUID class declaration.
#define UNDEFINED_RETURNREF_ACCESSOR(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:34
unsigned int myAntennaPatternType
Definition: radioTransmitterStateComponent.h:129
InputSource
Definition: radioStateTypes.h:20
2) Define the next frame class. This will be used for write access.
Definition: radioTransmitterStateComponent.h:182
char * myModulationParams
Definition: radioTransmitterStateComponent.h:124
Definition: radioTransmitterStateComponent.h:25
Definition: radioTransmitterStateComponent.h:23
UInt64 myRadioId
Definition: radioTransmitterStateComponent.h:134
LOM::WriteRadioTransmitterRepository myWriteRadioTransmitterRepository
Definition: radioTransmitterStateComponent.h:283
Definition: stateComponent.h:87
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:339
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:228
const unsigned char & modulationParamsSize() const
Definition: radioTransmitterStateComponent.h:105
CryptoMode
Definition: radioStateTypes.h:17
bool myPseudoNoiseInUse
Definition: radioTransmitterStateComponent.h:131
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:379
void setModulationParams(const char *p, unsigned char l)
Definition: radioTransmitterStateComponent.h:107
#define UNDEFINED_RETURNVALUE_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:53
DtVector myRelativeAntennaLoc
Definition: radioTransmitterStateComponent.h:128
unsigned long long UInt64
Definition: stateDataTypes.h:17
unsigned char myModulationParamsSize
Definition: radioTransmitterStateComponent.h:125
virtual void aboutToBeDeleted()
DtStateData * myStateData
Definition: radioTransmitterStateComponent.h:284
virtual ~DtRadioTransmitterStateComponentData()
Definition: radioTransmitterStateComponent.h:63
DtStateComponentCreator< DtRadioTransmitterStateComponentImplementation > DtRadioTransmitterStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: radioTransmitterStateComponent.h:403
DtVector myWorldAntennaLoc
Definition: radioTransmitterStateComponent.h:127
#define UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:57
#define DEFINE_ACCESSOR_MUTATOR(ReturnType, Accessor, Mutator)
Definition: doubleBufferedDataStorage.h:23
DtRadioTransmitterStateComponentData()
Definition: radioTransmitterStateComponent.h:35
bool myFoundComponent
Definition: radioTransmitterStateComponent.h:398
RadioInputSource
Definition: radioTransmitterStateComponent.h:21
bool myPublishingOnLegionNetwork
Definition: radioTransmitterStateComponent.h:282
Definition: radioTransmitterStateComponent.h:28
void updateStateData(DtStateData *sd)
Implement to update data storage to the new state data.
Definition: radioTransmitterStateComponent.h:372
DtRadioTransmitterStateComponentData & operator=(const DtRadioTransmitterStateComponentData &orig)
Definition: radioTransmitterStateComponent.h:71
virtual void setStreamTag(unsigned long u, unsigned long l)
Definition: radioTransmitterStateComponent.h:162
DT_DLL_VRVCORE double length(const makVrv::DtCoordinateSystem &, const std::vector< DtVector > &vertices)
Returns the total distance of a segmented line defined by the provided vector of vertices. Coordinates are in local database coordinates. The coordinate system is used to convert between the local database coordinates and geocentric. All distance is in 2D – the Z value is ignored.
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: radioTransmitterStateComponent.h:347
DtRadioTransmitterStateComponentData(const DtRadioTransmitterStateComponentData &orig)
Definition: radioTransmitterStateComponent.h:45
void advanceFrame(const DtRadioTransmitterStateComponentData &data)
Definition: radioTransmitterStateComponent.h:334
void updateDataStorage()
Implement to update data storage. Called from advanceFrame.
Definition: radioTransmitterStateComponent.h:357
#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
DtRadioTransmitterStateComponentData myData
Definition: radioTransmitterStateComponent.h:342
DtRadioTransmitterStateComponentData myData
Definition: radioTransmitterStateComponent.h:285
Definition: radioTransmitterStateComponent.h:29
AntennaPatternType
Definition: radioStateTypes.h:15
Definition: radioTransmitterStateComponent.h:26
Contains the DtStateComponent class declaration.
const DtRadioTransmitterStateComponentData & frameState() const
Next frame access write access. Ensure this is only used in a single thread (i.e.a controller thread)...
Definition: radioTransmitterStateComponent.h:190
DtStateData * myStateData
Definition: radioTransmitterStateComponent.h:341
bool myTimeHopInUse
Definition: radioTransmitterStateComponent.h:132
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:291
LOM::ReadRadioTransmitterRepository myReadRadioTransmitterRepository
Definition: radioTransmitterStateComponent.h:340