KDIS  2-8-x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
FundamentalOperationalData_MarkXTransponder.h
Go to the documentation of this file.
1 /*********************************************************************
2 Copyright 2013 Karl Jones
3 All rights reserved.
4 
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions are met:
7 
8 1. Redistributions of source code must retain the above copyright notice, this
9  list of conditions and the following disclaimer.
10 2. Redistributions in binary form must reproduce the above copyright notice,
11  this list of conditions and the following disclaimer in the documentation
12  and/or other materials provided with the distribution.
13 
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
15 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
18 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 
25 For Further Information Please Contact me at
26 Karljj1@yahoo.com
27 http://p.sf.net/kdis/UserGuide
28 *********************************************************************/
29 
30 /********************************************************************
31  class: FundamentalOperationalData_MarkXTransponder
32  created: 2008/12/07
33  author: Karl Jones
34 
35  purpose: Specifies Fundamental Operational Data for system 1 =
36  Mark_X_XII_ATCRBS_ModeS_Transponder system.
37 
38  size: 128 bits / 16 octets
39 *********************************************************************/
40 
41 #pragma once
42 
43 #include "./../KDefines.h"
44 #include "./Enums/KDISEnums.h"
45 
46 namespace KDIS {
47 namespace DATA_TYPE {
48 
50 {
51 protected:
52 
53  union
54  {
55  struct
56  {
57  KUINT8 m_ui8SystemOnOff : 1;
58  KUINT8 m_ui8Param1 : 1;
59  KUINT8 m_ui8Param2 : 1;
60  KUINT8 m_ui8Param3 : 1;
61  KUINT8 m_ui8Param4 : 1;
62  KUINT8 m_ui8Param5 : 1;
63  KUINT8 m_ui8Param6 : 1;
64  KUINT8 m_ui8OpsStatus : 1;
65  };
66 
68  };
69 
71 
72  union
73  {
74  struct
75  {
76  KUINT8 m_ui8NotUsed1 : 1;
77  KUINT8 m_ui8Layer1 : 1;
78  KUINT8 m_ui8Layer2 : 1;
79  KUINT8 m_ui8NotUsed2 : 5;
80  };
81 
83  };
84 
85  union
86  {
87  struct
88  {
89  KUINT8 m_ui8Other : 1;
90  KUINT8 m_ui8Emergency : 1;
91  KUINT8 m_ui8IdentSquawkFlash : 1;
92  KUINT8 m_ui8STI : 1;
93  // 4-7 not used
94  };
95 
97  };
98 
99  union
100  {
101  struct
102  {
103  KUINT16 m_ui16Mode1CodeElement1 : 3;
104  KUINT16 m_ui16Mode1CodeElement2 : 3;
105  KUINT16 m_ui16Mode1NotUsed1 : 7;
106  KUINT16 m_ui16Mode1Status : 1;
107  KUINT16 m_ui16Mode1Dmg : 1;
108  KUINT16 m_ui16Mode1Malfunction : 1;
109  };
110 
111  KUINT16 m_ui16Param1; // Mode 1 Code/Status
112  };
113 
114  union
115  {
116  struct
117  {
118  KUINT16 m_ui16Mode2CodeElement1 : 3;
119  KUINT16 m_ui16Mode2CodeElement2 : 3;
120  KUINT16 m_ui16Mode2CodeElement3 : 3;
121  KUINT16 m_ui16Mode2CodeElement4 : 3;
122  KUINT16 m_ui16Mode2NotUsed1 : 1;
123  KUINT16 m_ui16Mode2Status : 1;
124  KUINT16 m_ui16Mode2Dmg : 1;
125  KUINT16 m_ui16Mode2Malfunction : 1;
126  };
127 
128  KUINT16 m_ui16Param2; // Mode 2 Code/Status
129  };
130 
131  union
132  {
133  struct
134  {
135  KUINT16 m_ui16Mode3CodeElement1 : 3;
136  KUINT16 m_ui16Mode3CodeElement2 : 3;
137  KUINT16 m_ui16Mode3CodeElement3 : 3;
138  KUINT16 m_ui16Mode3CodeElement4 : 3;
139  KUINT16 m_ui16Mode3NotUsed1 : 1;
140  KUINT16 m_ui16Mode3Status : 1;
141  KUINT16 m_ui16Mode3Dmg : 1;
142  KUINT16 m_ui16Mode3Malfunction : 1;
143  };
144 
145  KUINT16 m_ui16Param3; // Mode 3 Code/Status
146  };
147 
148  union
149  {
150  struct
151  {
152  KUINT16 m_ui16Mode4CodeElement1 : 12;
153  KUINT16 m_ui16Mode4NotUsed1 : 1;
154  KUINT16 m_ui16Mode4Status : 1;
155  KUINT16 m_ui16Mode4Dmg : 1;
156  KUINT16 m_ui16Mode4Malfunction : 1;
157  };
158 
159  KUINT16 m_ui16Param4; // Mode 4 Code/Status
160  };
161 
162  union
163  {
164  struct
165  {
166  KUINT16 m_ui16ModeCNegativeAltitude : 1;
167  KUINT16 m_ui16ModeCAltitude : 11;
168  KUINT16 m_ui16ModeCNotUsed1 : 1;
169  KUINT16 m_ui16ModeCStatus : 1;
170  KUINT16 m_ui16ModeCDmg : 1;
171  KUINT16 m_ui16ModeCMalfunction : 1;
172  };
173 
174  KUINT16 m_ui16Param5; // Mode C Code/Status
175  };
176 
177  union
178  {
179  struct
180  {
181  KUINT16 m_ui16ModeSToBeDefined : 12;
182  KUINT16 m_ui16ModeSTCAS : 1;
183  KUINT16 m_ui16ModeSStatus : 1;
184  KUINT16 m_ui16ModeSDmg : 1;
185  KUINT16 m_ui16ModeSMalfunction : 1;
186  };
187 
188  KUINT16 m_ui16Param6; // Mode S Code/Status
189  };
190 
191 public:
192 
193  //************************************
194  // FullName: KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::SetSystemStatus
195  // KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::GetSystemStatus
196  //!Description: Specifies whether the entire system is operational
197  //! and which modes it is capable of.
198  // Parameter: KBOOL, void
199  //************************************
200  void SetSystemStatus( KBOOL IsSystemOn, KBOOL IsParam1Capable, KBOOL IsParam2Capable,
201  KBOOL IsParam3Capable, KBOOL IsParam4Capable, KBOOL IsParam5Capable,
202  KBOOL IsParam6Capable, KBOOL IsOperational );
203  void SetSystemStatusSystemOn( KBOOL IsSystemOn );
204  void SetSystemStatusParam1Capable( KBOOL IsParamCapable );
205  void SetSystemStatusParam2Capable( KBOOL IsParamCapable );
206  void SetSystemStatusParam3Capable( KBOOL IsParamCapable );
207  void SetSystemStatusParam4Capable( KBOOL IsParamCapable );
208  void SetSystemStatusParam5Capable( KBOOL IsParamCapable );
209  void SetSystemStatusParam6Capable( KBOOL IsParamCapable );
210  void SetSystemStatusIsOperational( KBOOL IsOperational );
211  KBOOL GetSystemStatusSystemOn() const;
212  KBOOL GetSystemStatusParam1Capable() const;
213  KBOOL GetSystemStatusParam2Capable() const;
214  KBOOL GetSystemStatusParam3Capable() const;
215  KBOOL GetSystemStatusParam4Capable() const;
216  KBOOL GetSystemStatusParam5Capable() const;
217  KBOOL GetSystemStatusParam6Capable() const;
218  KBOOL GetSystemStatusIsOperational() const;
219 
220  //************************************
221  // FullName: KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::SetAlternateParameter4
222  // KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::GetAlternateParameter4
223  //!Description: Used for an alternative representation of parameter 4
224  // Parameter: AlternateParameter4 AP4
225  //************************************
226  void SetAlternateParameter4( KDIS::DATA_TYPE::ENUMS::AlternateParameter4 AP4 );
227  KDIS::DATA_TYPE::ENUMS::AlternateParameter4 GetAlternateParameter4() const;
228 
229  //************************************
230  // FullName: KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::SetInfomationLayer
231  // KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::IsInfomationLayerPresent
232  //!Description: Used for an alternative representation of parameter 4
233  // Parameter: KBOOL
234  //************************************
235  void SetInfomationLayersPresence( KBOOL IsLayer1Present, KBOOL IsLayer2Present );
236  void SetInfomationLayer1( KBOOL IsPresent );
237  void SetInfomationLayer2( KBOOL IsPresent );
238  KBOOL IsInfomationLayer1Present() const;
239  KBOOL IsInfomationLayer2Present() const;
240 
241  //************************************
242  // FullName: KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::SetModifier
243  // KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::IsModifier
244  //!Description: Contains specific data.
245  // Parameter: KBOOL, void
246  //************************************
247  void SetModifier( KBOOL IsEmergencyOn, KBOOL IsIdentSquawkFlashOn, KBOOL IsSTIOn );
248  void SetModifierEmergency( KBOOL IsOn );
249  void SetModifierIdentSquawkFlash( KBOOL IsOn );
250  void SetModifierSTI( KBOOL IsOn );
251  KBOOL IsModifierEmergencyOn() const;
252  KBOOL IsModifierIdentSquawkFlashOn() const;
253  KBOOL IsModifierSTIOn() const;
254 
255  //************************************
256  // FullName: KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::SetMode1
257  // KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::GetMode1
258  //!Description: Parameter 1 data - Mode 1 Code/Status
259  // Parameter: KBOOL, KUINT8
260  //************************************
261  void SetMode1CodeStatus( KUINT8 CodeElement1, KUINT8 CodeElement2, KBOOL IsStatusOn,
262  KBOOL IsDamaged, KBOOL IsMalfunctioning );
263  void SetMode1CodeElement1( KUINT8 CE );
264  void SetMode1CodeElement2( KUINT8 CE );
265  void SetMode1Status( KBOOL IsOn );
266  void SetMode1Damage( KBOOL IsDamaged );
267  void SetMode1Malfunction( KBOOL IsMalfunctioning );
268  KUINT8 GetMode1CodeElement1() const;
269  KUINT8 GetMode1CodeElement2() const;
270  KBOOL IsMode1StatusOn() const;
271  KBOOL IsMode1Damaged() const;
272  KBOOL IsMode1Malfunctioning() const;
273 
274  //************************************
275  // FullName: KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::SetMode2
276  // KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::GetMode2
277  //!Description: Parameter 2 data - Mode 2 Code/Status
278  // Parameter: KBOOL, KUINT8
279  //************************************
280  void SetMode2CodeStatus( KUINT8 CodeElement1, KUINT8 CodeElement2, KUINT8 CodeElement3,
281  KUINT8 CodeElement4, KBOOL IsStatusOn, KBOOL IsDamaged,
282  KBOOL IsMalfunctioning );
283  void SetMode2CodeElement1( KUINT8 CE );
284  void SetMode2CodeElement2( KUINT8 CE );
285  void SetMode2CodeElement3( KUINT8 CE );
286  void SetMode2CodeElement4( KUINT8 CE );
287  void SetMode2Status( KBOOL IsOn );
288  void SetMode2Damage( KBOOL IsDamaged );
289  void SetMode2Malfunction( KBOOL IsMalfunctioning );
290  KUINT8 GetMode2CodeElement1() const;
291  KUINT8 GetMode2CodeElement2() const;
292  KUINT8 GetMode2CodeElement3() const;
293  KUINT8 GetMode2CodeElement4() const;
294  KBOOL IsMode2StatusOn() const;
295  KBOOL IsMode2Damaged() const;
296  KBOOL IsMode2Malfunctioning() const;
297 
298  //************************************
299  // FullName: KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::SetMode3
300  // KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::GetMode3
301  //!Description: Parameter 3 data - Mode 3 Code/Status
302  // Parameter: KBOOL, KUINT8, void
303  //************************************
304  void SetMode3CodeStatus( KUINT8 CodeElement1, KUINT8 CodeElement2, KUINT8 CodeElement3,
305  KUINT8 CodeElement4, KBOOL IsStatusOn, KBOOL IsDamaged,
306  KBOOL IsMalfunctioning );
307  void SetMode3CodeElement1( KUINT8 CE );
308  void SetMode3CodeElement2( KUINT8 CE );
309  void SetMode3CodeElement3( KUINT8 CE );
310  void SetMode3CodeElement4( KUINT8 CE );
311  void SetMode3Status( KBOOL IsOn );
312  void SetMode3Damage( KBOOL IsDamaged );
313  void SetMode3Malfunction( KBOOL IsMalfunctioning );
314  KUINT8 GetMode3CodeElement1() const;
315  KUINT8 GetMode3CodeElement2() const;
316  KUINT8 GetMode3CodeElement3() const;
317  KUINT8 GetMode3CodeElement4() const;
318  KBOOL IsMode3StatusOn() const;
319  KBOOL IsMode3Damaged() const;
320  KBOOL IsMode3Malfunctioning() const;
321 
322  //************************************
323  // FullName: KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::SetMode4
324  // KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::GetMode4
325  //!Description: Parameter 4 data - Mode 4 Code/Status
326  //! Note: CodeElement1 value ranges = 0-4094 = "Pseudo-Crypto" value
327  //! 4095 = No Pseudo-Crypto value. Use Alternate Mode 4 value.
328  // Parameter: KBOOL, KUINT16
329  //************************************
330  void SetMode4CodeStatus( KUINT16 CodeElement1, KBOOL IsStatusOn, KBOOL IsDamaged,
331  KBOOL IsMalfunctioning );
332  void SetMode4CodeElement1( KUINT16 CE );
333  void SetMode4Status( KBOOL IsOn );
334  void SetMode4Damage( KBOOL IsDamaged );
335  void SetMode4Malfunction( KBOOL IsMalfunctioning );
336  KUINT16 GetMode4CodeElement1() const;
337  KBOOL IsMode4StatusOn() const;
338  KBOOL IsMode4Damaged() const;
339  KBOOL IsMode4Malfunctioning() const;
340 
341  //************************************
342  // FullName: KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::SetModeC
343  // KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::GetModeC
344  //!Description: Parameter 5 data - Mode C Code/Status
345  //! Note: For Negative Altitude:
346  //! 1 = Alternate Mode 5 (if altitude Bits = 2047)
347  //! Altitude value: Range 0-1260 in hundreds of feet.
348  //! 2047 = Not actual Mode C altitude value. Use
349  //! alternate Mode 5 (Bits 0-11 = 4095 i.e. all 1-s)
350  // Parameter: KBOOL, KUINT16
351  //************************************
352  void SetModeCCodeStatus( KBOOL IsAltitudeNegativeMeanSeaLevel, KUINT16 Altitude,
353  KBOOL IsStatusOn, KBOOL IsDamaged, KBOOL IsMalfunctioning );
354  void SetModeCAltitude( KBOOL IsAltitudeNegativeMeanSeaLevel, KUINT16 Altitude );
355  void SetModeCStatus( KBOOL IsOn );
356  void SetModeCDamage( KBOOL IsDamaged );
357  void SetModeCMalfunction( KBOOL IsMalfunctioning );
358  KBOOL IsModeCAltitudeNegativeMeanSeaLevel() const;
359  KUINT16 GetModeCAltitude() const;
360  KBOOL IsModeCAlternativeMode5() const;
361  KBOOL IsModeCStatusOn() const;
362  KBOOL IsModeCDamaged() const;
363  KBOOL IsModeCMalfunctioning() const;
364 
365  //************************************
366  // FullName: KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::SetModeS
367  // KDIS::DATA_TYPE::FundamentalOperationalData_MarkXTransponder::GetModeS
368  //!Description: Parameter 6 data - Mode S Code/Status
369  // Parameter: KBOOL
370  //************************************
371  void SetModeSCodeStatus( KDIS::DATA_TYPE::ENUMS::TCAS TCASVersion, KBOOL IsStatusOn, KBOOL IsDamaged,
372  KBOOL IsMalfunctioning );
373  void SetTCASVersion( KDIS::DATA_TYPE::ENUMS::TCAS TCASVersion );
374  void SetModeSStatus( KBOOL IsOn );
375  void SetModeSDamage( KBOOL IsDamaged );
376  void SetModeSMalfunction( KBOOL IsMalfunctioning );
377  KDIS::DATA_TYPE::ENUMS::TCAS GetTCASVersion() const;
378  KBOOL IsModeSStatusOn() const;
379  KBOOL IsModeSDamaged() const;
380  KBOOL IsModeSMalfunctioning() const;
381 
382  KBOOL operator == ( const FundamentalOperationalData_MarkXTransponder & Value ) const;
383  KBOOL operator != ( const FundamentalOperationalData_MarkXTransponder & Value ) const;
384 };
385 
386 } // END namespace DATA_TYPES
387 } // END namespace KDIS
388 
Definition: FundamentalOperationalData_MarkXTransponder.h:49
TCAS
Definition: EnumIFF.h:74
KUINT8 m_ui8InfoLayers
Definition: FundamentalOperationalData_MarkXTransponder.h:82
KUINT16 m_ui16Param5
Definition: FundamentalOperationalData_MarkXTransponder.h:174
AlternateParameter4
Definition: EnumIFF.h:53
unsigned short int KUINT16
Definition: KDefines.h:101
KUINT16 m_ui16Param1
Definition: FundamentalOperationalData_MarkXTransponder.h:111
KUINT16 m_ui16Param2
Definition: FundamentalOperationalData_MarkXTransponder.h:128
KUINT16 m_ui16Param4
Definition: FundamentalOperationalData_MarkXTransponder.h:159
bool KBOOL
Definition: KDefines.h:119
Definition: EnumBurstDescriptor.h:211
KUINT8 m_ui8Modifier
Definition: FundamentalOperationalData_MarkXTransponder.h:96
KUINT8 m_ui8SystemStatus
Definition: FundamentalOperationalData_MarkXTransponder.h:67
KUINT16 m_ui16Param3
Definition: FundamentalOperationalData_MarkXTransponder.h:145
KUINT16 m_ui16Param6
Definition: FundamentalOperationalData_MarkXTransponder.h:188
unsigned char KUINT8
Definition: KDefines.h:99
#define KDIS_EXPORT
Definition: KDefines.h:82
KUINT8 m_ui8AltParam4
Definition: FundamentalOperationalData_MarkXTransponder.h:70