13 #include <vlutil/vlString.h>
14 #include <matrix/vlVector.h>
29 static const int IFF_MODE_CODE_SIZE = 3;
33 , myHostId(
DtUUID::nullUUID())
35 , mySystemIsOperational(false)
36 , myIffSimulationMode(false)
37 , myInteractiveCapable(false)
38 , myMode4PseudoCrypto(0)
40 , myModeSIsTcasI( false )
41 , myEmergencyOn( false )
43 , myIdentSquawkFlashOn( false )
44 , myUnmannedAircraftOn( false )
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)
56 , myMessageFormatsPresent(0)
57 , myMode5TransponderStatus(0)
60 , mySupplementalData(0)
61 , myNavigationSource(0)
64 , myPowerReduction(false)
66 , myIsMalfunctioning(false)
68 , myRadarEnhancement(false)
69 , myMode4PseudoCryptoAvailable(false)
70 , myLayer2DataAvailable(false)
74 for (i = 0; i < 6; i++)
76 for (
int j = 0; j < 4; j++)
78 myModeParameterStatusValues[i][j] =
false;
82 memset(&myModeCode[0], 0,
sizeof(myModeCode));
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)
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)
129 memcpy(&myModeCode[0], &orig.
myModeCode[0],
sizeof(myModeCode));
177 memcpy(&myModeCode[0], &rhs.
myModeCode[0],
sizeof(myModeCode));
184 setModeOrParameterVal( modeType, Enabled, onOff );
189 return getModeOrParameterVal(modeType, Enabled);
194 setModeOrParameterVal(modeType, IsOn, onOff);
195 setIsOn(anyModeOrParameterOn(IsOn));
200 return getModeOrParameterVal(modeType, IsOn);
205 setModeOrParameterVal(modeType, IsDamaged, onOff);
206 setIsDamaged(anyModeOrParameterOn(IsDamaged));
211 return getModeOrParameterVal(modeType, IsDamaged);
216 setModeOrParameterVal(modeType, IsMalfunctioning, onOff);
217 setIsMalfunctioning(anyModeOrParameterOn(IsMalfunctioning));
222 return getModeOrParameterVal(modeType, IsMalfunctioning);
227 if ( modeCodeNum < 1 || modeCodeNum >
sizeof(myModeCode) )
232 myModeCode[modeCodeNum-1] = val;
237 if ( modeCodeNum < 1 || modeCodeNum >
sizeof(myModeCode) )
242 return myModeCode[modeCodeNum-1];
253 myModeParameterStatusValues[(type -
'0') - 1][status] = onOff;
256 myModeParameterStatusValues[4][status] = onOff;
259 myModeParameterStatusValues[5][status] = onOff;
267 for (i = 0; i < 6; i++)
269 if (myModeParameterStatusValues[i][status])
280 if ( type < 1 || type > 6 )
284 myModeParameterStatusValues[type-1][status] = onOff;
289 if ( type < 1 || type > 6 )
293 return myModeParameterStatusValues[type-1][status];
304 return myModeParameterStatusValues[(type-
'1')][status];
306 return myModeParameterStatusValues[4][status];
308 return myModeParameterStatusValues[5][status];
315 DtU16 oldValue = myMode5TransponderStatus;
319 myMode5TransponderStatus = (oldValue | (1 << bit));
323 myMode5TransponderStatus = (oldValue & ~(1 << bit));
329 return (
bool) ((myMode5TransponderStatus >> bit) & 1);
375 unsigned int mySystemType;
376 unsigned int mySystemName;
378 DtVector32 myRelativePosition;
380 bool mySystemIsOperational;
381 bool myIffSimulationMode;
382 bool myInteractiveCapable;
383 unsigned short myMode4PseudoCrypto;
384 unsigned int myAlternateMode4;
388 bool myPowerReduction;
389 bool myIdentSquawkFlashOn;
390 bool myUnmannedAircraftOn;
392 bool myIsMalfunctioning;
396 bool myModeCAltitudeAvailable;
399 bool myModeParameterStatusValues[6][4];
400 unsigned short myModeCode[IFF_MODE_CODE_SIZE];
402 unsigned char mySystemDesignator;
403 unsigned char mySystemSpecificData;
405 bool myLayer3DataAvailable;
406 bool myLayer4DataAvailable;
407 bool myLayer5DataAvailable;
408 bool myRadarEnhancement;
409 bool myMode4PseudoCryptoAvailable;
410 bool myLayer2DataAvailable;
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;
434 : DtFrameStateInterface(sd)
503 const unsigned int& systemType()
const;
504 void setSystemType(
const unsigned int&);
506 const unsigned int& systemName()
const;
507 void setSystemName(
const unsigned int&);
509 const DtUUID& hostId()
const;
510 void setHostId(
const DtUUID&);
512 const DtVector32& relativePosition()
const;
513 void setRelativePosition(
const DtVector32&);
515 const bool& systemIsOn()
const;
516 void setSystemIsOn(
const bool&);
518 const bool& powerReduction()
const;
519 void setPowerReduction(
const bool&);
521 const bool& isOn()
const;
522 void setIsOn(
const bool&);
524 const bool& isDamaged()
const;
525 void setIsDamaged(
const bool&);
527 const bool& isMalfunctioning()
const;
528 void setIsMalfunctioning(
const bool&);
530 const bool& systemIsOperational()
const;
531 void setSystemIsOperational(
const bool&);
533 const bool& iffSimulationMode()
const;
534 void setIffSimulationMode(
const bool&);
536 const bool& interactiveCapable()
const;
537 void setInteractiveCapable(
const bool&);
539 const unsigned short& mode4PseudoCrypto()
const;
540 void setMode4PseudoCrypto(
const unsigned short&);
542 const unsigned int& alternateMode4()
const;
543 void setAlternateMode4(
const unsigned int&);
545 const bool& modeSIsTcasI()
const;
546 void setModeSIsTcasI(
const bool&);
548 const bool& emergencyOn()
const;
549 void setEmergencyOn(
const bool&);
551 const bool& stiOn()
const;
552 void setStiOn(
const bool&);
554 const bool& radarEnhancement()
const;
555 void setRadarEnhancement(
const bool&);
557 const bool& mode4PseudoCryptoAvailable()
const;
558 void setMode4PseudoCryptoAvailable(
const bool&);
560 const bool& layer2DataAvailable()
const;
561 void setLayer2DataAvailable(
const bool&);
563 const bool& identSquawkFlashOn()
const;
564 void setIdentSquawkFlashOn(
const bool&);
566 const bool& unmannedAircraftOn()
const;
567 void setUnmannedAircraftOn(
const bool&);
569 const int& modeCAltitude()
const;
570 void setModeCAltitude(
const int&);
572 const bool& modeCAltitudeAvailable()
const;
573 void setModeCAltitudeAvailable(
const bool&);
575 const unsigned char& systemDesignator()
const;
576 void setSystemDesignator(
const unsigned char&);
578 const unsigned char& systemSpecificData()
const;
579 void setSystemSpecificData(
const unsigned char&);
581 const bool& layer3DataAvailable()
const;
582 void setLayer3DataAvailable(
const bool&);
584 const bool& layer4DataAvailable()
const;
585 void setLayer4DataAvailable(
const bool&);
587 const bool& layer5DataAvailable()
const;
588 void setLayer5DataAvailable(
const bool&);
590 const int& layer3SpecificInfo()
const;
591 void setLayer3SpecificInfo(
const int&);
593 const int& layer4SpecificInfo()
const;
594 void setLayer4SpecificInfo(
const int&);
596 const int& layer5SpecificInfo()
const;
597 void setLayer5SpecificInfo(
const int&);
599 const unsigned int& messageFormatsPresent()
const;
600 void setMessageFormatsPresent(
const unsigned int&);
602 const unsigned short& pin()
const;
603 void setPin(
const unsigned short&);
605 const unsigned short& mode5TransponderStatus()
const;
606 void setMode5TransponderStatus(
const unsigned short&);
608 const unsigned short& enhancedMode1()
const;
609 void setEnhancedMode1(
const unsigned short&);
611 const unsigned short& nationalOrigin()
const;
612 void setNationalOrigin(
const unsigned short&);
614 const unsigned char& supplementalData()
const;
615 void setSupplementalData(
const unsigned char&);
617 const unsigned int& navigationSource()
const;
618 void setNavigationSource(
const unsigned int&);
620 const unsigned char& figureOfMerit()
const;
621 void setFigureOfMerit(
const unsigned char&);
623 const unsigned char& code()
const;
624 void setCode(
const unsigned char&);
626 bool modeEnabled(
int modeType)
const;
627 void setModeEnabled(
int modeType,
bool onOff);
629 bool modeIsDamaged(
int modeType)
const;
630 void setModeIsDamaged(
int modeType,
bool onOff);
632 bool modeIsMalfunctioning(
int modeType)
const;
633 void setModeIsMalfunctioning(
int modeType,
bool onOff);
635 bool modeIsOn(
int modeType)
const;
636 void setModeIsOn(
int modeType,
bool onOff);
638 bool mode5TransponderStatusBit(
int bit)
const;
639 void setMode5TransponderStatusBit(
int bit,
bool onOff);
641 unsigned short modeCode(
int modeType)
const;
642 void setModeCode(
int modeType,
unsigned short code);
648 virtual void makeReadOnly() {};
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;
736 if (myNextFrameState.isWritable())
738 myCurrentFrameState.advanceFrame(myNextFrameState.frameState());
741 myCurrentFrameState.emitComponentUpdated();
746 myCurrentFrameState.updateStateData(sd);
747 myNextFrameState.updateStateData(sd);
753 myCurrentFrameState.aboutToBeDeleted();
754 myNextFrameState.aboutToBeDeleted();
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