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

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)