VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
emitterSystemStateComponent.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
10 #include <tbb/spin_mutex.h>
11 #include <queue>
12 #include <vrfutil/rwUUID.h>
13 #include <matrix/vlVector.h>
14 #include <set>
15 
16 namespace makVrf
17 {
18  struct DtEmitterSystemBeamStateData;
19  class DtEmitterSystemStateComponent;
20 
21  typedef bool(*DtVerifyTrackJamTargetCallback)(const DtUUID& target, const DtEmitterSystemBeamStateData& beam, void * usr);
22 
25  {
26  enum BeamType
27  {
28  RegularBeam = -1,
29  RadarBeam = 1,
30  TrackBeam = 1,
31  JamBeam = 0
32  };
33 
35  : mySystemId(0)
36  , myBeamId(0)
37  , myBeamType(-1)
38  , myJammingModeSequence(0)
39  , myFrequency(0.)
40  , myFrequencyRange(0.)
41  , myERP(0.)
42  , myAzimuthCenter(0.)
43  , myAzimuthSweep(0.)
44  , myElevationCenter(0.)
45  , myElevationSweep(0.)
46  , myPRF(0.)
47  , myPulseWidth(0.)
48  , mySweepSync(0.)
49  , myBeamParameterIndex(0)
50  , myBeamFunction(0)
51  , myHighDensity(false)
52  {
53  }
54 
56  : mySystemId(orig.mySystemId)
57  , myBeamId(orig.myBeamId)
58  , myBeamType(orig.myBeamType)
59  , myJammingModeSequence(orig.myJammingModeSequence)
60  , myFrequency(orig.myFrequency)
61  , myFrequencyRange(orig.myFrequencyRange)
62  , myERP(orig.myERP)
63  , myAzimuthCenter(orig.myAzimuthCenter)
64  , myAzimuthSweep(orig.myAzimuthSweep)
65  , myElevationCenter(orig.myElevationCenter)
66  , myElevationSweep(orig.myElevationSweep)
67  , myPRF(orig.myPRF)
68  , myPulseWidth(orig.myPulseWidth)
69  , mySweepSync(orig.mySweepSync)
70  , myBeamParameterIndex(orig.myBeamParameterIndex)
71  , myBeamFunction(orig.myBeamFunction)
72  , myHighDensity(orig.myHighDensity)
73  , myTrackJamTargets(orig.myTrackJamTargets)
74  {
75  }
76 
78  {
79  mySystemId = rhs.mySystemId;
80  myBeamId = rhs.myBeamId;
81  myBeamType = rhs.myBeamType;
82  myJammingModeSequence = rhs.myJammingModeSequence;
83  myFrequency = rhs.myFrequency;
84  myFrequencyRange = rhs.myFrequencyRange;
85  myERP = rhs.myERP;
86  myAzimuthCenter = rhs.myAzimuthCenter;
87  myAzimuthSweep = rhs.myAzimuthSweep;
88  myElevationCenter = rhs.myElevationCenter;
89  myElevationSweep = rhs.myElevationSweep;
90  myPRF = rhs.myPRF;
91  myPulseWidth = rhs.myPulseWidth;
92  mySweepSync = rhs.mySweepSync;
93  myBeamParameterIndex = rhs.myBeamParameterIndex;
94  myBeamFunction = rhs.myBeamFunction;
95  myHighDensity = rhs.myHighDensity;
96  myTrackJamTargets = rhs.myTrackJamTargets;
97 
98  return *this;
99  }
100 
102  {
103  return ((mySystemId == rhs.mySystemId) &&
104  (myBeamId == rhs.myBeamId) &&
105  (myBeamType == rhs.myBeamType) &&
106  (myJammingModeSequence == rhs.myJammingModeSequence) &&
107  (myFrequency == rhs.myFrequency) &&
108  (myFrequencyRange == rhs.myFrequencyRange) &&
109  (myERP == rhs.myERP) &&
110  (myAzimuthCenter == rhs.myAzimuthCenter) &&
111  (myAzimuthSweep == rhs.myAzimuthSweep) &&
112  (myElevationCenter == rhs.myElevationCenter) &&
113  (myElevationSweep == rhs.myElevationSweep) &&
114  (myPRF == rhs.myPRF) &&
115  (myPulseWidth == rhs.myPulseWidth) &&
116  (mySweepSync == rhs.mySweepSync) &&
117  (myBeamParameterIndex == rhs.myBeamParameterIndex) &&
118  (myBeamFunction == rhs.myBeamFunction) &&
119  (myHighDensity == rhs.myHighDensity) &&
120  (myTrackJamTargets == rhs.myTrackJamTargets));
121  }
122 
123  bool operator!=(const DtEmitterSystemBeamStateData& rhs) const { return !(*this == rhs); };
124 
125  DEFINE_ACCESSOR_MUTATOR(unsigned short, beamId, BeamId)
126  DEFINE_ACCESSOR_MUTATOR(unsigned int, systemId, SystemId)
127  DEFINE_ACCESSOR_MUTATOR(int, beamType, BeamType)
128  DEFINE_ACCESSOR_MUTATOR(unsigned int, jammingModeSequence, JammingModeSequence)
129  DEFINE_ACCESSOR_MUTATOR(double, frequency, Frequency)
130  DEFINE_ACCESSOR_MUTATOR(double, frequencyRange, FrequencyRange)
131  DEFINE_ACCESSOR_MUTATOR(double, ERP, ERP)
132  DEFINE_ACCESSOR_MUTATOR(double, azimuthCenter, AzimuthCenter)
133  DEFINE_ACCESSOR_MUTATOR(double, azimuthSweep, AzimuthSweep)
134  DEFINE_ACCESSOR_MUTATOR(double, elevationCenter, ElevationCenter)
135  DEFINE_ACCESSOR_MUTATOR(double, elevationSweep, ElevationSweep)
136  DEFINE_ACCESSOR_MUTATOR(double, PRF, PRF)
137  DEFINE_ACCESSOR_MUTATOR(double, pulseWidth, PulseWidth)
138  DEFINE_ACCESSOR_MUTATOR(double, sweepSync, SweepSync)
139  DEFINE_ACCESSOR_MUTATOR(unsigned int, beamParameterIndex, BeamParameterIndex)
140  DEFINE_ACCESSOR_MUTATOR(unsigned int, beamFunction, BeamFunction)
141  DEFINE_ACCESSOR_MUTATOR(bool, highDensity, HighDensity)
142 
143  void addTrackJamTarget(const DtUUID& s) { myTrackJamTargets.insert(s); };
144  void removeTrackJamTarget(const DtUUID& s) { myTrackJamTargets.erase(s); };
145  const std::set<DtUUID>& trackJamTargets() const { return myTrackJamTargets; };
146  bool hasTrackJamTarget(const DtUUID& s) const { return (myTrackJamTargets.find(s) != myTrackJamTargets.end()); };
147  void clearTrackJamTargets() { myTrackJamTargets.clear(); };
148  void setTrackJamTargets(const std::set<DtUUID>& t) { myTrackJamTargets = t; };
149 
150  protected:
151  unsigned short myBeamId;
152  unsigned int mySystemId;
154  unsigned int myJammingModeSequence;
155  double myFrequency;
157  double myERP;
162  double myPRF;
163  double myPulseWidth;
164  double mySweepSync;
165  unsigned int myBeamParameterIndex;
166  unsigned int myBeamFunction;
168  std::set<DtUUID> myTrackJamTargets;
169  };
170 
172  {
174  {
175  public:
177  : nextId(0)
178  {};
179 
181  : beams(orig.beams)
182  {
183  };
184 
186  {
187  beams = rhs.beams;
188 
189  return *this;
190  }
191 
192  int size() const
193  {
194  return beams.size();
195  }
196 
197  DtEmitterSystemBeamStateData* operator[](unsigned short beamId)
198  {
199  std::vector<DtEmitterSystemBeamStateData>::iterator iter = beams.begin();
200  std::vector<DtEmitterSystemBeamStateData>::iterator end = beams.end();
201  while (iter != end)
202  {
203  if (iter->beamId() == beamId)
204  {
205  return &(*iter);
206  }
207 
208  ++iter;
209  }
210 
211  return 0;
212  }
213 
214  const DtEmitterSystemBeamStateData* operator[](unsigned short beamId) const
215  {
216  std::vector<DtEmitterSystemBeamStateData>::const_iterator iter = beams.begin();
217  std::vector<DtEmitterSystemBeamStateData>::const_iterator end = beams.end();
218  while (iter != end)
219  {
220  if (iter->beamId() == beamId)
221  {
222  return &(*iter);
223  }
224 
225  ++iter;
226  }
227 
228  return 0;
229  }
230 
231  void removeBeam(unsigned int beamIndex)
232  {
233  std::vector<DtEmitterSystemBeamStateData>::iterator iter = beams.begin();
234  std::vector<DtEmitterSystemBeamStateData>::iterator end = beams.end();
235  while (iter != end)
236  {
237  if (iter->beamId() == beamIndex)
238  {
239  beams.erase(iter);
240  break;
241  }
242 
243  ++iter;
244  }
245  }
246 
248  {
249  return (beamsTrackingObject(type, gid).size() != 0);
250  }
251 
252  std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(DtEmitterSystemBeamStateData::BeamType type, const DtUUID& gid) const
253  {
254  std::vector<DtEmitterSystemBeamStateData>::const_iterator iter = beams.begin();
255  std::vector<DtEmitterSystemBeamStateData>::const_iterator end = beams.end();
256  std::vector<const DtEmitterSystemBeamStateData*> lst;
257 
258  while (iter != beams.end())
259  {
260  if ((iter->beamType() == type) && iter->hasTrackJamTarget(gid))
261  {
262  lst.push_back(&(*iter));
263  }
264 
265  ++iter;
266  }
267 
268  return lst;
269  }
270 
272  {
273  unsigned short id = nextBeamId();
274 
276  data.setBeamId(id);
277 
278  beams.push_back(data);
279 
280  return &beams[beams.size() - 1];
281  }
282 
283  unsigned short nextBeamId() const
284  {
285  return ++nextId;
286  }
287 
289  {
290  return (*this)[beamId];
291  }
292 
293  const DtEmitterSystemBeamStateData* beamByBeamId(unsigned short beamId) const
294  {
295  return (*this)[beamId];
296  }
297 
299  {
300  if (index < beams.size())
301  {
302  return &beams[index];
303  }
304 
305  return 0;
306  }
307 
308  const DtEmitterSystemBeamStateData* beamByBeamIndex(unsigned short index) const
309  {
310  if (index < beams.size())
311  {
312  return &beams[index];
313  }
314 
315  return 0;
316  }
317 
319  {
320  nextId = 0;
321  beams.clear();
322  }
323 
324  std::vector<DtEmitterSystemBeamStateData> beams;
325  mutable unsigned short nextId;
326  };
327 
329  : myOn(true)
330  , mySystemName(0)
331  , myEmitterFunction(0)
332  , mySystemId(0)
333  {
334  }
335 
337  : myOn(orig.myOn)
338  , mySystemName(orig.mySystemName)
339  , myEmitterFunction(orig.myEmitterFunction)
340  , myMountLocation(orig.myMountLocation)
341  , myBeamsList(orig.myBeamsList)
342  , mySystemId(orig.mySystemId)
343  , myGlobalId(orig.myGlobalId)
344  {
345  }
346 
348  {
349  myOn = rhs.myOn;
350  mySystemName = rhs.mySystemName;
351  myEmitterFunction = rhs.myEmitterFunction;
352  myMountLocation = rhs.myMountLocation;
353  myBeamsList = rhs.myBeamsList;
354  mySystemId = rhs.mySystemId;
355  myGlobalId = rhs.myGlobalId;
356 
357  return *this;
358  }
359 
361  {
362  return myBeamsList.beamByBeamId(beamId);
363  }
364 
365  const DtEmitterSystemBeamStateData* beamByBeamId(unsigned short beamId) const
366  {
367  return myBeamsList.beamByBeamId(beamId);
368  }
369 
371  {
372  return myBeamsList.beamByBeamIndex(beamId);
373  }
374 
375  const DtEmitterSystemBeamStateData* beamByBeamIndex(unsigned short beamId) const
376  {
377  return myBeamsList.beamByBeamIndex(beamId);
378  }
379 
380  unsigned int numBeams() const { return myBeamsList.size(); };
381  DtEmitterSystemBeamStateData* addBeam() { return myBeamsList.addBeam(); };
382  DtEmitterSystemBeams& beams() { return myBeamsList; };
383  const DtEmitterSystemBeams& beams() const { return myBeamsList; };
384  const std::vector<DtEmitterSystemBeamStateData>& rawBeams() const { return myBeamsList.beams; };
385  std::vector<DtEmitterSystemBeamStateData>& rawBeams() { return myBeamsList.beams; };
386 
387  bool tracking(const DtUUID& gid) const
388  {
389  return myBeamsList.tracking(DtEmitterSystemBeamStateData::TrackBeam, gid);
390  }
391 
392  bool tracking(const DtUUID& gid)
393  {
394  return myBeamsList.tracking(DtEmitterSystemBeamStateData::TrackBeam, gid);
395  }
396 
397  std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(DtEmitterSystemBeamStateData::BeamType type, const DtUUID& gid) const
398  {
399  return myBeamsList.beamsTrackingObject(type, gid);
400  }
401 
402  std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(const DtUUID& gid) const
403  {
404  return myBeamsList.beamsTrackingObject(DtEmitterSystemBeamStateData::TrackBeam, gid);
405  }
406 
407  std::vector<const DtEmitterSystemBeamStateData*> beamsJammingObject(const DtUUID& gid) const
408  {
409  return myBeamsList.beamsTrackingObject(DtEmitterSystemBeamStateData::JamBeam, gid);
410  }
411 
412  bool jamming(const DtUUID& gid) const
413  {
414  return myBeamsList.tracking(DtEmitterSystemBeamStateData::JamBeam, gid);
415  }
416 
417  bool jamming(const DtUUID& gid)
418  {
419  return myBeamsList.tracking(DtEmitterSystemBeamStateData::JamBeam, gid);
420  }
421 
422  void removeAllBeams() { myBeamsList.removeAllBeams(); };
423  void removeBeam(unsigned short beamId) { myBeamsList.removeBeam(beamId); };
424 
425  DEFINE_ACCESSOR_MUTATOR(DtString, globalId, GlobalId)
426  DEFINE_ACCESSOR_MUTATOR(bool, on, On)
427  DEFINE_ACCESSOR_MUTATOR(unsigned int, systemId, SystemId)
428  DEFINE_ACCESSOR_MUTATOR(unsigned int, systemName, SystemName)
429  DEFINE_ACCESSOR_MUTATOR(unsigned int, emitterFunction, EmitterFunction)
430  DEFINE_ACCESSOR_MUTATOR(DtVector, mountLocation, MountLocation)
431 
432  protected:
433  DtString myGlobalId;
434  bool myOn;
435  unsigned int mySystemId;
436  unsigned int mySystemName;
437  unsigned int myEmitterFunction;
438  DtVector myMountLocation;
439  DtEmitterSystemBeams myBeamsList;
440  };
441 
447  {
448  public:
450 
452  : DtFrameStateInterface(storage)
453  {
454  }
455 
458  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned int, systemName, SystemName)
459  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned int, emitterFunction, EmitterFunction)
461  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(DtVector, mountLocation, MountLocation)
462  UNDEFINED_METHOD(void, removeAllBeams)
463  UNDEFINED_METHOD(void, removeBeam, unsigned short beamId)
464  UNDEFINED_RETURNVALUE_ACCESSOR(unsigned int, numBeams)
466  virtual const DtEmitterSystemBeamStateData* beamByBeamIndex(unsigned short beamIndex) const { throw DtUnimplementedMethod("The const beamByBeamIndex() const method is unimplemented"); };
467  virtual const DtEmitterSystemBeamStateData* beamByBeamId(unsigned short beamId) const { throw DtUnimplementedMethod("The const beamByBeamId() const method is unimplemented"); };
468  virtual DtEmitterSystemBeamStateData* beamByBeamIndex(unsigned short beamIndex) { throw DtUnimplementedMethod("The beamByBeamIndex() method is unimplemented"); };
469  virtual DtEmitterSystemBeamStateData* beamByBeamId(unsigned short beamId) { throw DtUnimplementedMethod("The beamByBeamId() method is unimplemented"); };
470  UNDEFINED_RETURNREF_ACCESSORS(std::vector<DtEmitterSystemBeamStateData>, beams)
471  virtual const std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(DtEmitterSystemBeamStateData::BeamType type, const DtUUID& gid) const { throw DtUnimplementedMethod("The const beamsTrackingObject() const method is unimplemented"); };
472  virtual const std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(const DtUUID& gid) const { throw DtUnimplementedMethod("The const beamsTrackingObject() const method is unimplemented"); };
473  virtual const std::vector<const DtEmitterSystemBeamStateData*> beamsJammingObject(const DtUUID& gid) const { throw DtUnimplementedMethod("The const beamsJammingObject() const method is unimplemented"); };
475  DtVerifyTrackJamTargetCallback = 0, void* userData = 0) { throw DtUnimplementedMethod("The addTrackJamTarget(const DtUUID& globalId, DtEmitterSystemBeamStateData::BeamType) const method is unimplemented"); };
476  virtual void removeTrackJamTarget(const DtUUID& globalId, DtEmitterSystemBeamStateData::BeamType) { throw DtUnimplementedMethod("The removeTrackJamTarget(const DtUUID& globalId, DtEmitterSystemBeamStateData::BeamType) const method is unimplemented"); };
477 
478  UNDEFINED_CONST_METHOD(bool, tracking, const DtUUID& gid)
479  UNDEFINED_CONST_METHOD(bool, jamming, const DtUUID& gid)
480  };
481 
484  {
485  public:
487 
489  const DtEmitterSystemStateComponentData& frameState() const { return myData; };
491 
492  const std::vector<DtEmitterSystemBeamStateData>& beams() const;
493  std::vector<DtEmitterSystemBeamStateData>& beams();
494 
495  const DtUUID hostId() const;
496 
497  const DtString& globalId() const;
498  void setGlobalId(const DtString&);
499 
500  const unsigned int& systemName() const;
501  void setSystemName(const unsigned int&);
502 
503  const unsigned int& emitterFunction() const;
504  void setEmitterFunction(const unsigned int&);
505 
506  const bool& on() const;
507  void setOn(const bool&);
508 
509  const DtVector& mountLocation() const;
510  void setMountLocation(const DtVector&);
511 
512  const unsigned int numBeams() const;
513 
514  const DtEmitterSystemBeamStateData* beamByBeamIndex(unsigned short beamIndex) const;
515  DtEmitterSystemBeamStateData* beamByBeamIndex(unsigned short beamIndex);
516 
517  const DtEmitterSystemBeamStateData* beamByBeamId(unsigned short beamId) const;
518  DtEmitterSystemBeamStateData* beamByBeamId(unsigned short beamId);
519 
520  void removeAllBeams();
521  void removeBeam(unsigned short beamId);
522  DtEmitterSystemBeamStateData* addBeam();
523 
524  const std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(DtEmitterSystemBeamStateData::BeamType type, const DtUUID& gid) const;
525  const std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(const DtUUID& gid) const;
526  const std::vector<const DtEmitterSystemBeamStateData*> beamsJammingObject(const DtUUID& gid) const;
527 
528  bool tracking(const DtUUID& gid) const;
529  bool jamming(const DtUUID& gid) const;
530 
531  void addTrackJamTarget(const DtUUID& globalId, DtEmitterSystemBeamStateData::BeamType, DtVerifyTrackJamTargetCallback = 0, void* userData = 0);
532  void removeTrackJamTarget(const DtUUID& globalId, DtEmitterSystemBeamStateData::BeamType);
533 
535  virtual void makeWritable() {};
536 
538  virtual void makeReadOnly() {};
539 
540  protected:
541  unsigned short myNextBeamId;
544  };
545 
548  {
549  public:
551 
553  const DtEmitterSystemStateComponentData& frameState() const { return myData; };
554 
555  const std::vector<DtEmitterSystemBeamStateData>& beams() const;
556  const DtUUID hostId() const;
557  const DtString& globalId() const;
558  const unsigned int& systemName() const;
559  const unsigned int& emitterFunction() const;
560  const bool& on() const;
561  const DtVector& mountLocation() const;
562  const unsigned int numBeams() const;
563  const DtEmitterSystemBeamStateData* beamByBeamIndex(unsigned short beamIndex) const;
564  const DtEmitterSystemBeamStateData* beamByBeamId(unsigned short beamId) const;
565  bool tracking(const DtUUID& gid) const;
566  bool jamming(const DtUUID& gid) const;
567  const std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(DtEmitterSystemBeamStateData::BeamType type, const DtUUID& gid) const;
568  const std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(const DtUUID& gid) const;
569  const std::vector<const DtEmitterSystemBeamStateData*> beamsJammingObject(const DtUUID& gid) const;
570 
571  protected:
574  {
575  myData = data;
576  }
577 
578  protected:
581  };
582 
586  {
587  public:
589 
590  bool isDoubleBuffered() { return true; };
591  const DtFrameStateInterface* currentFrameState() const { return &myCurrentFrameState; }
592  virtual DtFrameStateInterface* nextFrameState() { return &myNextFrameState; };
593  virtual const DtFrameStateInterface* nextFrameState() const { return &myNextFrameState; };
594 
596  virtual bool forceAdvance();
597 
599  {
600  if (myNextFrameState.isWritable())
601  {
602  myCurrentFrameState.advanceFrame(myNextFrameState.frameState());
603  }
604 
605  myCurrentFrameState.emitComponentUpdated();
606  }
607 
609  {
610  myCurrentFrameState.updateStateData(sd);
611  myNextFrameState.updateStateData(sd);
612  }
613 
614  virtual void aboutToBeDeleted() override
615  {
617  myCurrentFrameState.aboutToBeDeleted();
618  myNextFrameState.aboutToBeDeleted();
619  }
620 
621  protected:
624  };
625 
629 }
void updateDataStorage()
Implement to update data storage. Called from advanceFrame.
Definition: emitterSystemStateComponent.h:598
std::vector< DtEmitterSystemBeamStateData > beams
Definition: emitterSystemStateComponent.h:324
UUID is a unique ID wrapper class.
Definition: rwUUID.h:226
unsigned int mySystemName
Definition: emitterSystemStateComponent.h:436
const std::vector< DtEmitterSystemBeamStateData > & rawBeams() const
Definition: emitterSystemStateComponent.h:384
std::set< DtUUID > myTrackJamTargets
Definition: emitterSystemStateComponent.h:168
DtStateData * myStateData
Definition: emitterSystemStateComponent.h:579
void removeAllBeams()
Definition: emitterSystemStateComponent.h:318
virtual const DtEmitterSystemBeamStateData * beamByBeamId(unsigned short beamId) const
Definition: emitterSystemStateComponent.h:467
bool(* DtVerifyTrackJamTargetCallback)(const DtUUID &target, const DtEmitterSystemBeamStateData &beam, void *usr)
Definition: emitterSystemStateComponent.h:21
Definition: stateDataTypes.h:23
DtEmitterSystemBeamStateData * addBeam()
Definition: emitterSystemStateComponent.h:381
std::vector< const DtEmitterSystemBeamStateData * > beamsJammingObject(const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:407
3) Define the current frame class. This will be used for read access.
Definition: emitterSystemStateComponent.h:547
DtEmitterSystemBeamStateData * operator[](unsigned short beamId)
Definition: emitterSystemStateComponent.h:197
unsigned short myBeamId
Definition: emitterSystemStateComponent.h:148
#define UNDEFINED_METHOD(Type, Method,...)
Definition: doubleBufferedDataStorage.h:68
bool operator!=(const DtEmitterSystemBeamStateData &rhs) const
Definition: emitterSystemStateComponent.h:123
std::vector< const DtEmitterSystemBeamStateData * > beamsTrackingObject(DtEmitterSystemBeamStateData::BeamType type, const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:252
Definition: emitterSystemStateComponent.h:173
DtString myGlobalId
Definition: emitterSystemStateComponent.h:423
unsigned int mySystemId
Definition: emitterSystemStateComponent.h:152
double myAzimuthSweep
Definition: emitterSystemStateComponent.h:159
Definition: emitterSystemStateComponent.h:30
virtual void makeWritable()
Override to make component writable.
Definition: emitterSystemStateComponent.h:535
std::vector< const DtEmitterSystemBeamStateData * > beamsTrackingObject(const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:402
double myFrequency
Definition: emitterSystemStateComponent.h:155
double myPRF
Definition: emitterSystemStateComponent.h:162
bool myOn
This ID will uniquely identify the emitter. Patterned after the DIS/HLA global id.
Definition: emitterSystemStateComponent.h:434
Definition: stateComponent.h:257
const DtEmitterSystemBeamStateData * operator[](unsigned short beamId) const
Definition: emitterSystemStateComponent.h:214
DtEmitterSystemBeamStateData * beamByBeamId(unsigned short beamId)
Definition: emitterSystemStateComponent.h:288
void removeBeam(unsigned short beamId)
Definition: emitterSystemStateComponent.h:423
voidpf void uLong size
Definition: ioapi.h:39
virtual void aboutToBeDeleted() override
Definition: emitterSystemStateComponent.h:614
DtEmitterSystemStateComponentData myData
Definition: emitterSystemStateComponent.h:543
#define UNDEFINED_RETURNREF_ACCESSORS(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:40
#define UNDEFINED_RETURNVALUE_ACCESSOR(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:31
virtual const DtFrameStateInterface * nextFrameState() const
Definition: emitterSystemStateComponent.h:593
unsigned short nextId
Definition: emitterSystemStateComponent.h:325
virtual void removeTrackJamTarget(const DtUUID &globalId, DtEmitterSystemBeamStateData::BeamType)
Definition: emitterSystemStateComponent.h:476
virtual const std::vector< const DtEmitterSystemBeamStateData * > beamsTrackingObject(const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:472
Contains the DtUUID class declaration.
bool myHighDensity
Definition: emitterSystemStateComponent.h:167
DtEmitterSystemBeams myBeamsList
Definition: emitterSystemStateComponent.h:439
DtEmitterSystemBeamStateData(const DtEmitterSystemBeamStateData &orig)
Definition: emitterSystemStateComponent.h:55
void removeAllBeams()
Definition: emitterSystemStateComponent.h:422
DtEmitterSystemBeamStateData & operator=(const DtEmitterSystemBeamStateData &rhs)
Definition: emitterSystemStateComponent.h:77
virtual void addTrackJamTarget(const DtUUID &globalId, DtEmitterSystemBeamStateData::BeamType, DtVerifyTrackJamTargetCallback=0, void *userData=0)
Definition: emitterSystemStateComponent.h:474
Definition: emitterSystemStateComponent.h:171
bool tracking(DtEmitterSystemBeamStateData::BeamType type, const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:247
int myBeamType
Definition: emitterSystemStateComponent.h:153
DtEmitterSystemStateComponentData & operator=(const DtEmitterSystemStateComponentData &rhs)
Definition: emitterSystemStateComponent.h:347
virtual DtEmitterSystemBeamStateData * beamByBeamId(unsigned short beamId)
Definition: emitterSystemStateComponent.h:469
std::vector< const DtEmitterSystemBeamStateData * > beamsTrackingObject(DtEmitterSystemBeamStateData::BeamType type, const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:397
DtEmitterSystemBeamStateData()
Definition: emitterSystemStateComponent.h:34
const DtEmitterSystemStateComponentData & frameState() const
Next frame access write access. Ensure this is only used in a single thread (i.e.a controller thread)...
Definition: emitterSystemStateComponent.h:489
DtStateData * myStateData
Definition: emitterSystemStateComponent.h:542
DtEmitterSystemBeams & operator=(const DtEmitterSystemBeams &rhs)
Definition: emitterSystemStateComponent.h:185
unsigned int myBeamFunction
Definition: emitterSystemStateComponent.h:166
DtVector myMountLocation
Definition: emitterSystemStateComponent.h:438
DtEmitterSystemStateComponentData myData
Definition: emitterSystemStateComponent.h:580
void advanceFrame(const DtEmitterSystemStateComponentData &data)
Definition: emitterSystemStateComponent.h:573
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: emitterSystemStateComponent.h:585
DtEmitterSystemBeamStateData * beamByBeamIndex(unsigned short index)
Definition: emitterSystemStateComponent.h:298
#define UNDEFINED_CONST_METHOD(Type, Method,...)
Definition: doubleBufferedDataStorage.h:65
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:336
unsigned int myJammingModeSequence
Definition: emitterSystemStateComponent.h:154
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:219
virtual const std::vector< const DtEmitterSystemBeamStateData * > beamsJammingObject(const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:473
bool jamming(const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:412
bool operator==(const DtEmitterSystemBeamStateData &rhs) const
Definition: emitterSystemStateComponent.h:101
double myElevationSweep
Definition: emitterSystemStateComponent.h:161
double myPulseWidth
Definition: emitterSystemStateComponent.h:163
DtEmitterSystemBeams(const DtEmitterSystemBeams &orig)
Definition: emitterSystemStateComponent.h:180
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:365
double mySweepSync
Definition: emitterSystemStateComponent.h:164
void setTrackJamTargets(const std::set< DtUUID > &t)
Definition: emitterSystemStateComponent.h:148
int size() const
Definition: emitterSystemStateComponent.h:192
bool isDoubleBuffered()
Definition: emitterSystemStateComponent.h:590
DtEmitterSystemStateComponentNextFrame myNextFrameState
Definition: emitterSystemStateComponent.h:623
DtEmitterSystemStateComponentData(const DtEmitterSystemStateComponentData &orig)
Definition: emitterSystemStateComponent.h:336
const DtEmitterSystemBeamStateData * beamByBeamIndex(unsigned short beamId) const
Definition: emitterSystemStateComponent.h:375
BeamType
Definition: emitterSystemStateComponent.h:26
const DtEmitterSystemStateComponentData & frameState() const
Current frame state only can access current frame buffers. This ensures thread safety.
Definition: emitterSystemStateComponent.h:553
DtEmitterSystemStateComponentData & frameState()
Definition: emitterSystemStateComponent.h:490
const DtEmitterSystemBeamStateData * beamByBeamIndex(unsigned short index) const
Definition: emitterSystemStateComponent.h:308
virtual void aboutToBeDeleted()
virtual DtEmitterSystemBeamStateData * beamByBeamIndex(unsigned short beamIndex)
Definition: emitterSystemStateComponent.h:468
const DtEmitterSystemBeams & beams() const
Definition: emitterSystemStateComponent.h:383
bool jamming(const DtUUID &gid)
Definition: emitterSystemStateComponent.h:417
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: emitterSystemStateComponent.h:446
std::vector< DtEmitterSystemBeamStateData > & rawBeams()
Definition: emitterSystemStateComponent.h:385
DtEmitterSystemBeams & beams()
Definition: emitterSystemStateComponent.h:382
#define UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:57
bool tracking(const DtUUID &gid)
Definition: emitterSystemStateComponent.h:392
DtEmitterSystemBeamStateData * addBeam()
Definition: emitterSystemStateComponent.h:271
double myERP
Definition: emitterSystemStateComponent.h:157
const DtEmitterSystemBeamStateData * beamByBeamId(unsigned short beamId) const
Definition: emitterSystemStateComponent.h:365
DtEmitterSystemBeamStateData * beamByBeamId(unsigned short beamId)
Definition: emitterSystemStateComponent.h:360
#define DEFINE_ACCESSOR_MUTATOR(ReturnType, Accessor, Mutator)
Definition: doubleBufferedDataStorage.h:23
static const char * SystemName
Definition: vrfXmlTypes.h:48
2) Define the next frame class. This will be used for write access.
Definition: emitterSystemStateComponent.h:483
bool hasTrackJamTarget(const DtUUID &s) const
Definition: emitterSystemStateComponent.h:146
const DtEmitterSystemBeamStateData * beamByBeamId(unsigned short beamId) const
Definition: emitterSystemStateComponent.h:293
unsigned short nextBeamId() const
Definition: emitterSystemStateComponent.h:283
DtEmitterSystemStateComponentCurrentFrame myCurrentFrameState
Definition: emitterSystemStateComponent.h:622
unsigned int mySystemId
Definition: emitterSystemStateComponent.h:435
double myAzimuthCenter
Definition: emitterSystemStateComponent.h:158
unsigned int myEmitterFunction
Definition: emitterSystemStateComponent.h:437
void removeTrackJamTarget(const DtUUID &s)
Definition: emitterSystemStateComponent.h:144
unsigned int numBeams() const
Definition: emitterSystemStateComponent.h:380
DtStateComponentCreator< DtEmitterSystemStateComponentImplementation > DtEmitterSystemStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: emitterSystemStateComponent.h:628
#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
unsigned int myBeamParameterIndex
Definition: emitterSystemStateComponent.h:165
double myFrequencyRange
Definition: emitterSystemStateComponent.h:156
virtual DtFrameStateInterface * nextFrameState()
Definition: emitterSystemStateComponent.h:592
const DtFrameStateInterface * currentFrameState() const
Definition: emitterSystemStateComponent.h:591
Contains the DtStateComponent class declaration.
DtEmitterSystemBeamStateData * beamByBeamIndex(unsigned short beamId)
Definition: emitterSystemStateComponent.h:370
void removeBeam(unsigned int beamIndex)
Definition: emitterSystemStateComponent.h:231
void clearTrackJamTargets()
Definition: emitterSystemStateComponent.h:147
The DtEmitterSystemStateComponentList is a collection of emitter systems and the beams they represent...
Definition: emitterSystemStateComponent.h:24
Definition: emitterSystemStateComponent.h:31
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:282
bool tracking(const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:387
const std::set< DtUUID > & trackJamTargets() const
Definition: emitterSystemStateComponent.h:145
DtEmitterSystemStateComponentData()
Definition: emitterSystemStateComponent.h:328
void updateStateData(DtStateData *sd)
Implement to update data storage to the new state data.
Definition: emitterSystemStateComponent.h:608
DtEmitterSystemBeams()
Definition: emitterSystemStateComponent.h:176
double myElevationCenter
Definition: emitterSystemStateComponent.h:160

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)