VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
iffStateComponent.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 
11 #include <vrfutil/rwUUID.h>
12 
13 #include <vlutil/vlString.h>
14 #include <matrix/vlVector.h>
15 
16 namespace makVrf
17 {
20  {
22  {
23  Enabled = 0,
26  IsOn
27  };
28 
29  static const int IFF_MODE_CODE_SIZE = 3;
30 
32  : mySystemType(0)
33  , myHostId(DtUUID::nullUUID())
34  , mySystemIsOn(false)
35  , mySystemIsOperational(false)
36  , myIffSimulationMode(false)
37  , myInteractiveCapable(false)
38  , myMode4PseudoCrypto(0)
39  , myAlternateMode4(0)
40  , myModeSIsTcasI( false )
41  , myEmergencyOn( false )
42  , myStiOn( false )
43  , myIdentSquawkFlashOn( false )
44  , myUnmannedAircraftOn( false )
45  , myModeCAltitude(0)
46  , myModeCAltitudeAvailable(false)
47  , mySystemDesignator(0)
48  , mySystemSpecificData(0)
49  , myLayer3DataAvailable(false)
50  , myLayer4DataAvailable(false)
51  , myLayer5DataAvailable(false)
52  , myLayer3SpecificInfo(0)
53  , myLayer4SpecificInfo(0)
54  , myLayer5SpecificInfo(0)
55  , myPin(0)
56  , myMessageFormatsPresent(0)
57  , myMode5TransponderStatus(0)
58  , myEnhancedMode1(0)
59  , myNationalOrigin(0)
60  , mySupplementalData(0)
61  , myNavigationSource(0)
62  , myCode(0)
63  , myFigureOfMerit(0)
64  , myPowerReduction(false)
65  , myIsOn(false)
66  , myIsMalfunctioning(false)
67  , myIsDamaged(false)
68  , myRadarEnhancement(false)
69  , myMode4PseudoCryptoAvailable(false)
70  , myLayer2DataAvailable(false)
71  {
72  int i;
73 
74  for (i = 0; i < 6; i++)
75  {
76  for (int j = 0; j < 4; j++)
77  {
78  myModeParameterStatusValues[i][j] = false;
79  }
80  }
81 
82  memset(&myModeCode[0], 0, sizeof(myModeCode));
83  }
84 
86  : mySystemType(orig.mySystemType)
87  , myHostId(orig.myHostId)
88  , myRelativePosition(orig.myRelativePosition)
89  , mySystemName(orig.mySystemName)
90  , mySystemIsOn(orig.mySystemIsOn)
91  , mySystemIsOperational(orig.mySystemIsOperational)
92  , myIffSimulationMode(orig.myIffSimulationMode)
93  , myInteractiveCapable(orig.myInteractiveCapable)
94  , myMode4PseudoCrypto(orig.myMode4PseudoCrypto)
95  , myAlternateMode4(orig.myAlternateMode4)
96  , myModeSIsTcasI( orig.myModeSIsTcasI )
97  , myEmergencyOn( orig.myEmergencyOn )
98  , myStiOn( orig.myStiOn )
99  , myIdentSquawkFlashOn( orig.myIdentSquawkFlashOn )
100  , myUnmannedAircraftOn( orig.myUnmannedAircraftOn )
101  , myModeCAltitude(orig.myModeCAltitude)
102  , myModeCAltitudeAvailable(orig.myModeCAltitudeAvailable)
103  , mySystemDesignator(orig.mySystemDesignator)
104  , mySystemSpecificData(orig.mySystemSpecificData)
105  , myLayer3DataAvailable(orig.myLayer3DataAvailable)
106  , myLayer4DataAvailable(orig.myLayer4DataAvailable)
107  , myLayer5DataAvailable(orig.myLayer5DataAvailable)
108  , myLayer3SpecificInfo(orig.myLayer3SpecificInfo)
109  , myLayer4SpecificInfo(orig.myLayer4SpecificInfo)
110  , myLayer5SpecificInfo(orig.myLayer5SpecificInfo)
111  , myPin(orig.myPin)
112  , myMessageFormatsPresent(orig.myMessageFormatsPresent)
113  , myMode5TransponderStatus(orig.myMode5TransponderStatus)
114  , myEnhancedMode1(orig.myEnhancedMode1)
115  , myNationalOrigin(orig.myNationalOrigin)
116  , mySupplementalData(orig.mySupplementalData)
117  , myNavigationSource(orig.myNavigationSource)
118  , myCode(orig.myCode)
119  , myFigureOfMerit(orig.myFigureOfMerit)
120  , myPowerReduction(orig.myPowerReduction)
121  , myIsOn(orig.myIsOn)
122  , myIsMalfunctioning(orig.myIsMalfunctioning)
123  , myIsDamaged(orig.myIsDamaged)
124  , myRadarEnhancement(orig.myRadarEnhancement)
125  , myMode4PseudoCryptoAvailable(orig.myMode4PseudoCryptoAvailable)
126  , myLayer2DataAvailable(orig.myLayer2DataAvailable)
127  {
128  memcpy(&myModeParameterStatusValues[0], &orig.myModeParameterStatusValues[0], sizeof(myModeParameterStatusValues));
129  memcpy(&myModeCode[0], &orig.myModeCode[0], sizeof(myModeCode));
130  }
131 
133  {
134  mySystemType = rhs.mySystemType;
135  mySystemName = rhs.mySystemName;
136  myHostId = rhs.myHostId;
137  myRelativePosition = rhs.myRelativePosition;
138  mySystemIsOn = rhs.mySystemIsOn;
139  mySystemIsOperational = rhs.mySystemIsOperational;
140  myIffSimulationMode = rhs.myIffSimulationMode;
141  myInteractiveCapable = rhs.myInteractiveCapable;
142  myMode4PseudoCrypto = rhs.myMode4PseudoCrypto;
143  myAlternateMode4 = rhs.myAlternateMode4;
144  myModeSIsTcasI = rhs.myModeSIsTcasI;
145  myEmergencyOn = rhs.myEmergencyOn;
146  myStiOn = rhs.myStiOn;
147  myIdentSquawkFlashOn = rhs.myIdentSquawkFlashOn;
148  myUnmannedAircraftOn = rhs.myUnmannedAircraftOn;
149  myModeCAltitude = rhs.myModeCAltitude;
150  myModeCAltitudeAvailable = rhs.myModeCAltitudeAvailable;
151  mySystemDesignator = rhs.mySystemDesignator;
152  mySystemSpecificData = rhs.mySystemSpecificData;
153  myLayer3DataAvailable = rhs.myLayer3DataAvailable;
154  myLayer4DataAvailable = rhs.myLayer4DataAvailable;
155  myLayer5DataAvailable = rhs.myLayer5DataAvailable;
156  myLayer3SpecificInfo = rhs.myLayer3SpecificInfo;
157  myLayer4SpecificInfo = rhs.myLayer4SpecificInfo;
158  myLayer5SpecificInfo = rhs.myLayer5SpecificInfo;
159  myPin = rhs.myPin;
160  myPowerReduction = rhs.myPowerReduction;
161  myMessageFormatsPresent = rhs.myMessageFormatsPresent;
162  myMode5TransponderStatus = rhs.myMode5TransponderStatus;
163  myEnhancedMode1 = rhs.myEnhancedMode1;
164  myNationalOrigin = rhs.myNationalOrigin;
165  mySupplementalData = rhs.mySupplementalData;
166  myNavigationSource = rhs.myNavigationSource;
167  myCode = rhs.myCode;
168  myFigureOfMerit = rhs.myFigureOfMerit;
169  myIsOn = rhs.myIsOn;
170  myIsMalfunctioning = rhs.myIsMalfunctioning;
171  myIsDamaged = rhs.myIsDamaged;
172  myRadarEnhancement = rhs.myRadarEnhancement;
173  myMode4PseudoCryptoAvailable = rhs.myMode4PseudoCryptoAvailable;
174  myLayer2DataAvailable = rhs.myLayer2DataAvailable;
175 
176  memcpy(&myModeParameterStatusValues[0], &rhs.myModeParameterStatusValues[0], sizeof(myModeParameterStatusValues));
177  memcpy(&myModeCode[0], &rhs.myModeCode[0], sizeof(myModeCode));
178 
179  return *this;
180  }
181 
182  void setModeEnabled( int modeType, bool onOff )
183  {
184  setModeOrParameterVal( modeType, Enabled, onOff );
185  }
186 
187  bool modeEnabled(int modeType) const
188  {
189  return getModeOrParameterVal(modeType, Enabled);
190  }
191 
192  void setModeIsOn(int modeType, bool onOff)
193  {
194  setModeOrParameterVal(modeType, IsOn, onOff);
195  setIsOn(anyModeOrParameterOn(IsOn));
196  }
197 
198  bool modeIsOn(int modeType) const
199  {
200  return getModeOrParameterVal(modeType, IsOn);
201  }
202 
203  void setModeIsDamaged(int modeType, bool onOff)
204  {
205  setModeOrParameterVal(modeType, IsDamaged, onOff);
206  setIsDamaged(anyModeOrParameterOn(IsDamaged));
207  }
208 
209  bool modeIsDamaged(int modeType) const
210  {
211  return getModeOrParameterVal(modeType, IsDamaged);
212  }
213 
214  void setModeIsMalfunctioning(int modeType, bool onOff)
215  {
216  setModeOrParameterVal(modeType, IsMalfunctioning, onOff);
217  setIsMalfunctioning(anyModeOrParameterOn(IsMalfunctioning));
218  }
219 
220  bool modeIsMalfunctioning(int modeType) const
221  {
222  return getModeOrParameterVal(modeType, IsMalfunctioning);
223  }
224 
225  void setModeCode( int modeCodeNum, unsigned short val )
226  {
227  if ( modeCodeNum < 1 || modeCodeNum > sizeof(myModeCode) )
228  {
229  return;
230  }
231 
232  myModeCode[modeCodeNum-1] = val;
233  }
234 
235  unsigned short modeCode( int modeCodeNum ) const
236  {
237  if ( modeCodeNum < 1 || modeCodeNum > sizeof(myModeCode) )
238  {
239  return 0;
240  }
241 
242  return myModeCode[modeCodeNum-1];
243  }
244 
245  void setModeOrParameterVal(char type, int status, bool onOff)
246  {
247  switch (type)
248  {
249  case '1':
250  case '2':
251  case '3':
252  case '4':
253  myModeParameterStatusValues[(type - '0') - 1][status] = onOff;
254  break;
255  case 'C':
256  myModeParameterStatusValues[4][status] = onOff;
257  break;
258  case 'S':
259  myModeParameterStatusValues[5][status] = onOff;
260  break;
261  }
262  }
263 
264  bool anyModeOrParameterOn(int status) const
265  {
266  int i;
267  for (i = 0; i < 6; i++)
268  {
269  if (myModeParameterStatusValues[i][status])
270  {
271  return true;
272  }
273  }
274 
275  return false;
276  }
277 
278  void setModeOrParameterVal(int type, int status, bool onOff )
279  {
280  if ( type < 1 || type > 6 )
281  {
282  return;
283  }
284  myModeParameterStatusValues[type-1][status] = onOff;
285  }
286 
287  bool getModeOrParameterVal(int type, int status ) const
288  {
289  if ( type < 1 || type > 6 )
290  {
291  return false;
292  }
293  return myModeParameterStatusValues[type-1][status];
294  }
295 
296  bool getModeOrParameterVal(char type, int status ) const
297  {
298  switch( type )
299  {
300  case '1':
301  case '2':
302  case '3':
303  case '4':
304  return myModeParameterStatusValues[(type-'1')][status];
305  case 'C':
306  return myModeParameterStatusValues[4][status];
307  case 'S':
308  return myModeParameterStatusValues[5][status];
309  }
310  return false;
311  }
312 
313  void setMode5TransponderStatusBit( int bit, bool value )
314  {
315  DtU16 oldValue = myMode5TransponderStatus;
316 
317  if (value == true)
318  {
319  myMode5TransponderStatus = (oldValue | (1 << bit));
320  }
321  else
322  {
323  myMode5TransponderStatus = (oldValue & ~(1 << bit));
324  }
325  }
326 
327  bool mode5TransponderStatusBit( int bit ) const
328  {
329  return (bool) ((myMode5TransponderStatus >> bit) & 1);
330  }
331 
332  DEFINE_ACCESSOR_MUTATOR(unsigned int, systemType, SystemType)
333  DEFINE_ACCESSOR_MUTATOR(unsigned int, systemName, SystemName)
334  DEFINE_ACCESSOR_MUTATOR(DtUUID, hostId, HostId)
335  DEFINE_ACCESSOR_MUTATOR(DtVector32, relativePosition, RelativePosition)
336  DEFINE_ACCESSOR_MUTATOR(bool, systemIsOn, SystemIsOn)
337  DEFINE_ACCESSOR_MUTATOR(bool, systemIsOperational, SystemIsOperational)
338  DEFINE_ACCESSOR_MUTATOR(bool, iffSimulationMode, IffSimulationMode)
339  DEFINE_ACCESSOR_MUTATOR(bool, interactiveCapable, InteractiveCapable)
340  DEFINE_ACCESSOR_MUTATOR(unsigned short, mode4PseudoCrypto, Mode4PseudoCrypto)
341  DEFINE_ACCESSOR_MUTATOR(unsigned int, alternateMode4, AlternateMode4)
342  DEFINE_ACCESSOR_MUTATOR(bool, modeSIsTcasI, ModeSIsTcasI)
343  DEFINE_ACCESSOR_MUTATOR(bool, emergencyOn, EmergencyOn)
344  DEFINE_ACCESSOR_MUTATOR(bool, stiOn, StiOn)
345  DEFINE_ACCESSOR_MUTATOR(bool, identSquawkFlashOn, IdentSquawkFlashOn)
346  DEFINE_ACCESSOR_MUTATOR(bool, unmannedAircraftOn, UnmannedAircraftOn)
347  DEFINE_ACCESSOR_MUTATOR(int, modeCAltitude, ModeCAltitude)
348  DEFINE_ACCESSOR_MUTATOR(bool, modeCAltitudeAvailable, ModeCAltitudeAvailable)
349  DEFINE_ACCESSOR_MUTATOR(unsigned char, systemDesignator, SystemDesignator)
350  DEFINE_ACCESSOR_MUTATOR(unsigned char, systemSpecificData, SystemSpecificData)
351  DEFINE_ACCESSOR_MUTATOR(bool, layer3DataAvailable, Layer3DataAvailable)
352  DEFINE_ACCESSOR_MUTATOR(int, layer3SpecificInfo, Layer3SpecificInfo)
353  DEFINE_ACCESSOR_MUTATOR(bool, layer4DataAvailable, Layer4DataAvailable)
354  DEFINE_ACCESSOR_MUTATOR(int, layer4SpecificInfo, Layer4SpecificInfo)
355  DEFINE_ACCESSOR_MUTATOR(bool, layer5DataAvailable, Layer5DataAvailable)
356  DEFINE_ACCESSOR_MUTATOR(int, layer5SpecificInfo, Layer5SpecificInfo)
357  DEFINE_ACCESSOR_MUTATOR(unsigned short, pin, Pin)
358  DEFINE_ACCESSOR_MUTATOR(unsigned short, mode5TransponderStatus, Mode5TransponderStatus)
359  DEFINE_ACCESSOR_MUTATOR(unsigned int, messageFormatsPresent, MessageFormatsPresent)
360  DEFINE_ACCESSOR_MUTATOR(unsigned short, enhancedMode1, EnhancedMode1)
361  DEFINE_ACCESSOR_MUTATOR(unsigned short, nationalOrigin, NationalOrigin)
362  DEFINE_ACCESSOR_MUTATOR(unsigned char, supplementalData, SupplementalData)
363  DEFINE_ACCESSOR_MUTATOR(unsigned char, figureOfMerit, FigureOfMerit)
364  DEFINE_ACCESSOR_MUTATOR(unsigned char, code, Code)
365  DEFINE_ACCESSOR_MUTATOR(unsigned int, navigationSource, NavigationSource)
366  DEFINE_ACCESSOR_MUTATOR(bool, powerReduction, PowerReduction)
367  DEFINE_ACCESSOR_MUTATOR(bool, isOn, IsOn)
368  DEFINE_ACCESSOR_MUTATOR(bool, isMalfunctioning, IsMalfunctioning)
369  DEFINE_ACCESSOR_MUTATOR(bool, isDamaged, IsDamaged)
370  DEFINE_ACCESSOR_MUTATOR(bool, radarEnhancement, RadarEnhancement)
371  DEFINE_ACCESSOR_MUTATOR(bool, mode4PseudoCryptoAvailable, Mode4PseudoCryptoAvailable)
372  DEFINE_ACCESSOR_MUTATOR(bool, layer2DataAvailable, Layer2DataAvailable)
373 
374  protected:
375  unsigned int mySystemType;
376  unsigned int mySystemName;
377  DtUUID myHostId;
378  DtVector32 myRelativePosition;
379  bool mySystemIsOn;
380  bool mySystemIsOperational;
381  bool myIffSimulationMode;
382  bool myInteractiveCapable;
383  unsigned short myMode4PseudoCrypto;
384  unsigned int myAlternateMode4;
385  bool myModeSIsTcasI;
386  bool myEmergencyOn;
387  bool myStiOn;
388  bool myPowerReduction;
389  bool myIdentSquawkFlashOn;
390  bool myUnmannedAircraftOn;
391  bool myIsOn;
392  bool myIsMalfunctioning;
393  bool myIsDamaged;
394 
395  int myModeCAltitude;
396  bool myModeCAltitudeAvailable;
397 
399  bool myModeParameterStatusValues[6][4];
400  unsigned short myModeCode[IFF_MODE_CODE_SIZE];
401 
402  unsigned char mySystemDesignator;
403  unsigned char mySystemSpecificData;
404 
405  bool myLayer3DataAvailable;
406  bool myLayer4DataAvailable;
407  bool myLayer5DataAvailable;
408  bool myRadarEnhancement;
409  bool myMode4PseudoCryptoAvailable;
410  bool myLayer2DataAvailable;
411 
412  int myLayer3SpecificInfo;
413  int myLayer4SpecificInfo;
414  int myLayer5SpecificInfo;
415  unsigned short myPin;
416  unsigned short myMode5TransponderStatus;
417  unsigned int myMessageFormatsPresent;
418  unsigned short myEnhancedMode1;
419  unsigned short myNationalOrigin;
420  unsigned char mySupplementalData;
421  unsigned int myNavigationSource;
422  unsigned char myFigureOfMerit;
423  unsigned char myCode;
424  };
425 
429  {
430  public:
432 
434  : DtFrameStateInterface(sd)
435  {
436  }
437 
438  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned int, systemType, SystemType)
439  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned int, systemName, SystemName)
441  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(DtVector32, relativePosition, RelativePosition)
442  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, systemIsOn, SystemIsOn)
443  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, systemIsOperational, SystemIsOperational)
444  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, iffSimulationMode, IffSimulationMode)
445  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, interactiveCapable, InteractiveCapable)
446  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned short, mode4PseudoCrypto, Mode4PseudoCrypto)
447  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned int, alternateMode4, AlternateMode4)
448  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, modeSIsTcasI, ModeSIsTcasI)
449  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, emergencyOn, EmergencyOn)
450  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, stiOn, StiOn)
451  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, identSquawkFlashOn, IdentSquawkFlashOn)
452  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, unmannedAircraftOn, UnmannedAircraftOn)
453  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, powerReduction, PowerReduction)
454  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, isOn, IsOn)
455  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, isMalfunctioning, IsMalfunctioning)
456  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, isDamaged, IsDamaged)
457  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(int, modeCAltitude, ModeCAltitude)
458  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, modeCAltitudeAvailable, ModeCAltitudeAvailable)
459  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned char, systemDesignator, SystemDesignator)
460  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned char, systemSpecificData, SystemSpecificData)
461  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, layer3DataAvailable, Layer3DataAvailable)
462  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, layer4DataAvailable, Layer4DataAvailable)
463  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, layer5DataAvailable, Layer5DataAvailable)
464  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(int, layer3SpecificInfo, Layer3SpecificInfo)
465  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(int, layer4SpecificInfo, Layer4SpecificInfo)
466  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(int, layer5SpecificInfo, Layer5SpecificInfo)
467  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned int, messageFormatsPresent, MessageFormatsPresent)
468  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned short, pin, Pin)
469  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned short, mode5TransponderStatus, Mode5TransponderStatus)
470  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned short, enhancedMode1, EnhancedMode1)
471  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned short, nationalOrigin, NationalOrigin)
472  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned char, supplementalData, SupplementalData)
473  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned int, navigationSource, NavigationSource)
474  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned char, figureOfMerit, FigureOfMerit)
475  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned char, code, Code)
476  UNDEFINED_CONST_METHOD(bool, modeEnabled, int modeType)
477  UNDEFINED_MUTATOR_METHOD(ModeEnabled, int modeType, bool onOff)
478  UNDEFINED_CONST_METHOD(bool, modeIsOn, int modeType)
479  UNDEFINED_MUTATOR_METHOD(ModeIsOn, int modeType, bool onOff)
480  UNDEFINED_CONST_METHOD(bool, modeIsDamaged, int modeType)
481  UNDEFINED_MUTATOR_METHOD(ModeIsDamaged, int modeType, bool onOff)
482  UNDEFINED_CONST_METHOD(unsigned short, modeCode, int modeType)
483  UNDEFINED_MUTATOR_METHOD(ModeCode, int modeType, unsigned short code)
484  UNDEFINED_CONST_METHOD(bool, modeIsMalfunctioning, int modeType)
485  UNDEFINED_CONST_METHOD(bool, mode5TransponderStatusBit, int bit)
486  UNDEFINED_MUTATOR_METHOD(ModeIsMalfunctioning, int modeType, bool onOff)
487  UNDEFINED_MUTATOR_METHOD(Mode5TransponderStatusBit, int bit, bool onOff)
488  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, radarEnhancement, RadarEnhancement)
489  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, mode4PseudoCryptoAvailable, Mode4PseudoCryptoAvailable)
490  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(bool, layer2DataAvailable, Layer2DataAvailable)
491  };
492 
495  {
496  public:
498 
500  const DtIffStateComponentData& frameState() const { return myData; };
501  DtIffStateComponentData& frameState() { return myData; };
502 
503  const unsigned int& systemType() const;
504  void setSystemType(const unsigned int&);
505 
506  const unsigned int& systemName() const;
507  void setSystemName(const unsigned int&);
508 
509  const DtUUID& hostId() const;
510  void setHostId(const DtUUID&);
511 
512  const DtVector32& relativePosition() const;
513  void setRelativePosition(const DtVector32&);
514 
515  const bool& systemIsOn() const;
516  void setSystemIsOn(const bool&);
517 
518  const bool& powerReduction() const;
519  void setPowerReduction(const bool&);
520 
521  const bool& isOn() const;
522  void setIsOn(const bool&);
523 
524  const bool& isDamaged() const;
525  void setIsDamaged(const bool&);
526 
527  const bool& isMalfunctioning() const;
528  void setIsMalfunctioning(const bool&);
529 
530  const bool& systemIsOperational() const;
531  void setSystemIsOperational(const bool&);
532 
533  const bool& iffSimulationMode() const;
534  void setIffSimulationMode(const bool&);
535 
536  const bool& interactiveCapable() const;
537  void setInteractiveCapable(const bool&);
538 
539  const unsigned short& mode4PseudoCrypto() const;
540  void setMode4PseudoCrypto(const unsigned short&);
541 
542  const unsigned int& alternateMode4() const;
543  void setAlternateMode4(const unsigned int&);
544 
545  const bool& modeSIsTcasI() const;
546  void setModeSIsTcasI(const bool&);
547 
548  const bool& emergencyOn() const;
549  void setEmergencyOn(const bool&);
550 
551  const bool& stiOn() const;
552  void setStiOn(const bool&);
553 
554  const bool& radarEnhancement() const;
555  void setRadarEnhancement(const bool&);
556 
557  const bool& mode4PseudoCryptoAvailable() const;
558  void setMode4PseudoCryptoAvailable(const bool&);
559 
560  const bool& layer2DataAvailable() const;
561  void setLayer2DataAvailable(const bool&);
562 
563  const bool& identSquawkFlashOn() const;
564  void setIdentSquawkFlashOn(const bool&);
565 
566  const bool& unmannedAircraftOn() const;
567  void setUnmannedAircraftOn(const bool&);
568 
569  const int& modeCAltitude() const;
570  void setModeCAltitude(const int&);
571 
572  const bool& modeCAltitudeAvailable() const;
573  void setModeCAltitudeAvailable(const bool&);
574 
575  const unsigned char& systemDesignator() const;
576  void setSystemDesignator(const unsigned char&);
577 
578  const unsigned char& systemSpecificData() const;
579  void setSystemSpecificData(const unsigned char&);
580 
581  const bool& layer3DataAvailable() const;
582  void setLayer3DataAvailable(const bool&);
583 
584  const bool& layer4DataAvailable() const;
585  void setLayer4DataAvailable(const bool&);
586 
587  const bool& layer5DataAvailable() const;
588  void setLayer5DataAvailable(const bool&);
589 
590  const int& layer3SpecificInfo() const;
591  void setLayer3SpecificInfo(const int&);
592 
593  const int& layer4SpecificInfo() const;
594  void setLayer4SpecificInfo(const int&);
595 
596  const int& layer5SpecificInfo() const;
597  void setLayer5SpecificInfo(const int&);
598 
599  const unsigned int& messageFormatsPresent() const;
600  void setMessageFormatsPresent(const unsigned int&);
601 
602  const unsigned short& pin() const;
603  void setPin(const unsigned short&);
604 
605  const unsigned short& mode5TransponderStatus() const;
606  void setMode5TransponderStatus(const unsigned short&);
607 
608  const unsigned short& enhancedMode1() const;
609  void setEnhancedMode1(const unsigned short&);
610 
611  const unsigned short& nationalOrigin() const;
612  void setNationalOrigin(const unsigned short&);
613 
614  const unsigned char& supplementalData() const;
615  void setSupplementalData(const unsigned char&);
616 
617  const unsigned int& navigationSource() const;
618  void setNavigationSource(const unsigned int&);
619 
620  const unsigned char& figureOfMerit() const;
621  void setFigureOfMerit(const unsigned char&);
622 
623  const unsigned char& code() const;
624  void setCode(const unsigned char&);
625 
626  bool modeEnabled(int modeType) const;
627  void setModeEnabled(int modeType, bool onOff);
628 
629  bool modeIsDamaged(int modeType) const;
630  void setModeIsDamaged(int modeType, bool onOff);
631 
632  bool modeIsMalfunctioning(int modeType) const;
633  void setModeIsMalfunctioning(int modeType, bool onOff);
634 
635  bool modeIsOn(int modeType) const;
636  void setModeIsOn(int modeType, bool onOff);
637 
638  bool mode5TransponderStatusBit(int bit) const;
639  void setMode5TransponderStatusBit(int bit, bool onOff);
640 
641  unsigned short modeCode(int modeType) const;
642  void setModeCode(int modeType, unsigned short code);
643 
645  virtual void makeWritable() {};
646 
648  virtual void makeReadOnly() {};
649 
650  protected:
652  };
653 
656  {
657  public:
659 
661  const DtIffStateComponentData& frameState() const { return myData; };
662 
663  const unsigned int& systemType() const;
664  const unsigned int& systemName() const;
665  const DtUUID& hostId() const;
666  const DtVector32& relativePosition() const;
667  const bool& systemIsOn() const;
668  const bool& systemIsOperational() const;
669  const bool& iffSimulationMode() const;
670  const bool& interactiveCapable() const;
671  const unsigned short& mode4PseudoCrypto() const;
672  const unsigned int& alternateMode4() const;
673  const bool& modeSIsTcasI() const;
674  const bool& emergencyOn() const;
675  const bool& stiOn() const;
676  const bool& powerReduction() const;
677  const bool& isOn() const;
678  const bool& isMalfunctioning() const;
679  const bool& isDamaged() const;
680  const bool& identSquawkFlashOn() const;
681  const bool& unmannedAircraftOn() const;
682  const int& modeCAltitude() const;
683  const bool& modeCAltitudeAvailable() const;
684  const bool& radarEnhancement() const;
685  const bool& mode4PseudoCryptoAvailable() const;
686  const bool& layer2DataAvailable() const;
687  const unsigned char& systemDesignator() const;
688  const unsigned char& systemSpecificData() const;
689  const bool& layer3DataAvailable() const;
690  const bool& layer4DataAvailable() const;
691  const bool& layer5DataAvailable() const;
692  const int& layer3SpecificInfo() const;
693  const int& layer4SpecificInfo() const;
694  const int& layer5SpecificInfo() const;
695  const unsigned int& messageFormatsPresent() const;
696  const unsigned short& pin() const;
697  const unsigned short& mode5TransponderStatus() const;
698  const unsigned short& enhancedMode1() const;
699  const unsigned short& nationalOrigin() const;
700  const unsigned char& supplementalData() const;
701  const unsigned int& navigationSource() const;
702  const unsigned char& figureOfMerit() const;
703  const unsigned char& code() const;
704  bool modeEnabled(int modeType) const;
705  bool modeIsDamaged(int modeType) const;
706  bool modeIsMalfunctioning(int modeType) const;
707  bool modeIsOn(int modeType) const;
708  bool mode5TransponderStatusBit(int bit) const;
709  unsigned short modeCode(int modeType) const;
710 
711  protected:
714  {
715  myData = data;
716  }
717 
718  protected:
720  };
721 
725  {
726  public:
728 
729  bool isDoubleBuffered() { return true; };
730  const DtFrameStateInterface* currentFrameState() const { return &myCurrentFrameState; }
731  virtual DtFrameStateInterface* nextFrameState() { return &myNextFrameState; };
732  virtual const DtFrameStateInterface* nextFrameState() const { return &myNextFrameState; };
733 
735  {
736  if (myNextFrameState.isWritable())
737  {
738  myCurrentFrameState.advanceFrame(myNextFrameState.frameState());
739  }
740 
741  myCurrentFrameState.emitComponentUpdated();
742  }
743 
745  {
746  myCurrentFrameState.updateStateData(sd);
747  myNextFrameState.updateStateData(sd);
748  }
749 
750  virtual void aboutToBeDeleted() override
751  {
753  myCurrentFrameState.aboutToBeDeleted();
754  myNextFrameState.aboutToBeDeleted();
755  }
756 
757  protected:
760  };
761 
765 }
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
Definition: iffStateComponent.h:24
void setModeCode(int modeCodeNum, unsigned short val)
Definition: iffStateComponent.h:225
bool myPowerReduction
Definition: iffStateComponent.h:388
void setModeIsDamaged(int modeType, bool onOff)
Definition: iffStateComponent.h:203
DtIffStateComponentData()
Definition: iffStateComponent.h:31
DtIffStateComponentNextFrame myNextFrameState
Definition: iffStateComponent.h:759
unsigned int myAlternateMode4
Definition: iffStateComponent.h:384
bool myIsMalfunctioning
Definition: iffStateComponent.h:392
const DtIffStateComponentData & frameState() const
Next frame access write access. Ensure this is only used in a single thread (i.e.a controller thread)...
Definition: iffStateComponent.h:500
bool mySystemIsOn
Definition: iffStateComponent.h:379
bool myIsDamaged
Definition: iffStateComponent.h:393
DtStateComponentCreator< DtIffStateComponentImplementation > DtIffStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: iffStateComponent.h:764
bool myStiOn
Definition: iffStateComponent.h:387
Definition: stateComponent.h:257
int myLayer4SpecificInfo
Definition: iffStateComponent.h:413
bool isDoubleBuffered()
Definition: iffStateComponent.h:729
unsigned int mySystemName
Definition: iffStateComponent.h:376
virtual const DtFrameStateInterface * nextFrameState() const
Definition: iffStateComponent.h:732
unsigned char mySupplementalData
Definition: iffStateComponent.h:420
unsigned int mySystemType
Definition: iffStateComponent.h:375
unsigned short myMode5TransponderStatus
Definition: iffStateComponent.h:416
bool myLayer4DataAvailable
Definition: iffStateComponent.h:406
unsigned short myMode4PseudoCrypto
Definition: iffStateComponent.h:383
bool myIsOn
Definition: iffStateComponent.h:391
bool myUnmannedAircraftOn
Definition: iffStateComponent.h:390
2) Define the next frame class. This will be used for write access.
Definition: iffStateComponent.h:494
3) Define the current frame class. This will be used for read access.
Definition: iffStateComponent.h:655
Contains the DtUUID class declaration.
const DtFrameStateInterface * currentFrameState() const
Definition: iffStateComponent.h:730
bool getModeOrParameterVal(char type, int status) const
Definition: iffStateComponent.h:296
DtIffStateComponentCurrentFrame myCurrentFrameState
Definition: iffStateComponent.h:758
bool getModeOrParameterVal(int type, int status) const
Definition: iffStateComponent.h:287
void updateStateData(DtStateData *sd)
Implement to update data storage to the new state data.
Definition: iffStateComponent.h:744
unsigned short myNationalOrigin
Definition: iffStateComponent.h:419
DtVector32 myRelativePosition
Definition: iffStateComponent.h:378
Definition: stateComponent.h:81
bool anyModeOrParameterOn(int status) const
Definition: iffStateComponent.h:264
void setModeOrParameterVal(int type, int status, bool onOff)
Definition: iffStateComponent.h:278
DtUUID myHostId
Definition: iffStateComponent.h:377
virtual void makeWritable()
Override to make component writable.
Definition: iffStateComponent.h:645
Definition: iffStateComponent.h:25
void setMode5TransponderStatusBit(int bit, bool value)
Definition: iffStateComponent.h:313
unsigned short myModeCode[IFF_MODE_CODE_SIZE]
Definition: iffStateComponent.h:400
virtual void aboutToBeDeleted() override
Definition: iffStateComponent.h:750
void updateDataStorage()
Implement to update data storage. Called from advanceFrame.
Definition: iffStateComponent.h:734
bool mySystemIsOperational
Definition: iffStateComponent.h:380
bool modeIsOn(int modeType) const
Definition: iffStateComponent.h:198
#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
void setModeOrParameterVal(char type, int status, bool onOff)
Definition: iffStateComponent.h:245
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:219
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:370
virtual DtFrameStateInterface * nextFrameState()
Definition: iffStateComponent.h:731
bool myModeCAltitudeAvailable
Definition: iffStateComponent.h:396
bool mode5TransponderStatusBit(int bit) const
Definition: iffStateComponent.h:327
The DtIFFStateComponentList is a collection of iff components.
Definition: iffStateComponent.h:19
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: iffStateComponent.h:724
virtual void aboutToBeDeleted()
bool modeIsMalfunctioning(int modeType) const
Definition: iffStateComponent.h:220
bool myLayer2DataAvailable
Definition: iffStateComponent.h:410
const DtIffStateComponentData & frameState() const
Current frame state only can access current frame buffers. This ensures thread safety.
Definition: iffStateComponent.h:661
unsigned int myMessageFormatsPresent
Definition: iffStateComponent.h:417
unsigned short modeCode(int modeCodeNum) const
Definition: iffStateComponent.h:235
void setModeIsMalfunctioning(int modeType, bool onOff)
Definition: iffStateComponent.h:214
#define UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:57
bool myModeParameterStatusValues[6][4]
Used for NatoIFF and SovietIFF mode and parameter values.
Definition: iffStateComponent.h:399
unsigned short myEnhancedMode1
Definition: iffStateComponent.h:418
bool myRadarEnhancement
Definition: iffStateComponent.h:408
#define DEFINE_ACCESSOR_MUTATOR(ReturnType, Accessor, Mutator)
Definition: doubleBufferedDataStorage.h:23
static const char * SystemName
Definition: vrfXmlTypes.h:48
DtModeOrParameterKind
Definition: iffStateComponent.h:21
DtIffStateComponentData(const DtIffStateComponentData &orig)
Definition: iffStateComponent.h:85
DtIffStateComponentData & operator=(const DtIffStateComponentData &rhs)
Definition: iffStateComponent.h:132
bool modeEnabled(int modeType) const
Definition: iffStateComponent.h:187
unsigned char mySystemDesignator
Definition: iffStateComponent.h:402
#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
int myModeCAltitude
Definition: iffStateComponent.h:395
int myLayer5SpecificInfo
Definition: iffStateComponent.h:414
unsigned int myNavigationSource
Definition: iffStateComponent.h:421
bool myEmergencyOn
Definition: iffStateComponent.h:386
unsigned char myFigureOfMerit
Definition: iffStateComponent.h:422
bool myLayer3DataAvailable
Definition: iffStateComponent.h:405
unsigned short myPin
Definition: iffStateComponent.h:415
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: iffStateComponent.h:428
void advanceFrame(const DtIffStateComponentData &data)
Definition: iffStateComponent.h:713
bool myMode4PseudoCryptoAvailable
Definition: iffStateComponent.h:409
bool myModeSIsTcasI
Definition: iffStateComponent.h:385
bool myLayer5DataAvailable
Definition: iffStateComponent.h:407
void setModeEnabled(int modeType, bool onOff)
Definition: iffStateComponent.h:182
unsigned char mySystemSpecificData
Definition: iffStateComponent.h:403
Contains the DtStateComponent class declaration.
DtIffStateComponentData & frameState()
Definition: iffStateComponent.h:501
bool myInteractiveCapable
Definition: iffStateComponent.h:382
bool myIffSimulationMode
Definition: iffStateComponent.h:381
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:282
DtIffStateComponentData myData
Definition: iffStateComponent.h:719
int myLayer3SpecificInfo
Definition: iffStateComponent.h:412
void setModeIsOn(int modeType, bool onOff)
Definition: iffStateComponent.h:192
unsigned char myCode
Definition: iffStateComponent.h:423
bool myIdentSquawkFlashOn
Definition: iffStateComponent.h:389
bool modeIsDamaged(int modeType) const
Definition: iffStateComponent.h:209
#define UNDEFINED_MUTATOR_METHOD(Set,...)
Definition: doubleBufferedDataStorage.h:50

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)