VR-Link API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
natoIffEncoder.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 MAK Technologies, Inc
3 ** All rights reserved.
4 *********************************************************************/
5 
6 #if DtHLA
7 
8 #ifndef DtNatoIffEncoder_H_
9 #define DtNatoIffEncoder_H_
10 
11 #include "iffEncoder.h"
12 
16 
20 
23 
26 #define DtDECLARE_NATO_IFF_ATTR_CHECKER(attrName) \
27  DtDECLARE_ATTR_CHECKER(DtIffStateRepository, attrName)
28 
31 #define DtDECLARE_NATO_IFF_ATTR_ENCODER(attrName) \
32  DtDECLARE_ATTR_ENCODER(DtIffStateRepository, attrName)
33 
38 #define DtDEFINE_SIMPLE_NATO_IFF_ATTR_ENCODER( \
39  attrName, netType, inspector) \
40  DtDEFINE_SIMPLE_ATTR_ENCODER(DtNatoIffEncoder, \
41  DtIffStateRepository, attrName, netType, inspector)
42 
48 #define DtDEFINE_SIMPLE_NATO_IFF_ATTR_CHECKER( \
49  attrName, inspector) \
50  DtDEFINE_SIMPLE_ATTR_CHECKER(DtNatoIffEncoder, \
51  DtIffStateRepository, attrName, inspector)
52 
58 #define DtDEFINE_SIMPLE_NATO_IFF_ATTR_ENCODER_WITH_PARAM( \
59  attrName, netType, inspector, param) \
60  DtDEFINE_SIMPLE_IFF_ATTR_ENCODER_WITH_PARAM( \
61  DtNatoIffEncoder, attrName, netType, inspector, param)
62 
68 #define DtDEFINE_SIMPLE_NATO_IFF_ATTR_CHECKER_WITH_PARAM( \
69  attrName, inspector, param) \
70  DtDEFINE_SIMPLE_IFF_ATTR_CHECKER_WITH_PARAM( \
71  DtNatoIffEncoder, attrName, inspector, param)
72 
77 
80 
83 #define DtDECLARE_NATO_IFF_MODE4_ATTR_CHECKER(attrName) \
84  DtDECLARE_ATTR_CHECKER(DtIffStateRepository, attrName)
85 
88 #define DtDECLARE_NATO_IFF_MODE4_ATTR_ENCODER(attrName) \
89  DtDECLARE_ATTR_ENCODER(DtIffStateRepository, attrName)
90 
96 #define DtDEFINE_SIMPLE_MODE4_ATTR_ENCODER(\
97  encClass, stateRepClass, attrName, netType, inspector) \
98  void encClass::encode##attrName(const stateRepClass& rep, \
99  RTI::AttributeHandleValuePairSet* attrs, \
100  RTI::AttributeHandle attrHandle) \
101 { \
102  if (rep.mode4()) { \
103  netType netVal; \
104  netVal = rep.mode4()->inspector(); \
105  attrs->add(attrHandle, (char*) &netVal, sizeof(netType)); \
106  } \
107 }
108 
114 #define DtDEFINE_SIMPLE_MODE4_ATTR_CHECKER( \
115  encClass, stateRepClass, attrName, inspector) \
116 bool encClass::need##attrName(const stateRepClass& stateRep, \
117  const stateRepClass& asSeenByRemote) \
118 { \
119  return (bool) (stateRep.mode4() && asSeenByRemote.mode4() && !(stateRep.mode4()->inspector() == \
120  asSeenByRemote.mode4()->inspector())); \
121 }
122 
127 #define DtDEFINE_SIMPLE_NATO_IFF_MODE4_ATTR_ENCODER( \
128  attrName, netType, inspector) \
129  DtDEFINE_SIMPLE_MODE4_ATTR_ENCODER(DtNatoIffEncoder, \
130  DtIffStateRepository, attrName, netType, inspector)
131 
137 #define DtDEFINE_SIMPLE_NATO_IFF_MODE4_ATTR_CHECKER( \
138  attrName, inspector) \
139  DtDEFINE_SIMPLE_MODE4_ATTR_CHECKER(DtNatoIffEncoder, \
140  DtIffStateRepository, attrName, inspector)
141 
147 #define DtDEFINE_SIMPLE_NATO_IFF_MODE4_ATTR_ENCODER_WITH_PARAM( \
148  attrName, netType, inspector, param) \
149  DtDEFINE_SIMPLE_IFF_ATTR_ENCODER_WITH_PARAM( \
150  DtNatoIffEncoder, attrName, netType, inspector, param)
151 
157 #define DtDEFINE_SIMPLE_NATO_IFF_MODE4_ATTR_CHECKER_WITH_PARAM( \
158  attrName, inspector, param) \
159  DtDEFINE_SIMPLE_IFF_ATTR_CHECKER_WITH_PARAM( \
160  DtNatoIffEncoder, DtMode4StateRepository, attrName, inspector, param)
161 
163 /*************************************************/
164 
169 
172 
175 #define DtDECLARE_NATO_IFF_TCAS_ATTR_CHECKER(attrName) \
176  DtDECLARE_ATTR_CHECKER(DtIffStateRepository, attrName)
177 
180 #define DtDECLARE_NATO_IFF_TCAS_ATTR_ENCODER(attrName) \
181  DtDECLARE_ATTR_ENCODER(DtIffStateRepository, attrName)
182 
188 #define DtDEFINE_SIMPLE_TCAS_ATTR_ENCODER( \
189  encClass, stateRepClass, attrName, netType, inspector) \
190 void encClass::encode##attrName(const stateRepClass& rep, \
191  RTI::AttributeHandleValuePairSet* attrs, \
192  RTI::AttributeHandle attrHandle) \
193 { \
194  if (rep.tcasData()) { \
195  netType netVal; \
196  netVal = rep.tcasData()->inspector(); \
197  attrs->add(attrHandle, (char*) &netVal, sizeof(netType)); \
198  } \
199 }
200 
205 #define DtDEFINE_SIMPLE_NATO_IFF_TCAS_ATTR_ENCODER( \
206  attrName, netType, inspector) \
207  DtDEFINE_SIMPLE_TCAS_ATTR_ENCODER(DtNatoIffEncoder, \
208  DtIffStateRepository, attrName, netType, inspector)
209 
215 #define DtDEFINE_SIMPLE_TCAS_ATTR_CHECKER( \
216  encClass, stateRepClass, attrName, inspector) \
217 bool encClass::need##attrName(const stateRepClass& stateRep, \
218  const stateRepClass& asSeenByRemote) \
219 { \
220  return (bool) (stateRep.tcasData() && asSeenByRemote.tcasData() && !(stateRep.tcasData()->inspector() == \
221  asSeenByRemote.tcasData()->inspector())); \
222 }
223 
229 #define DtDEFINE_SIMPLE_NATO_IFF_TCAS_ATTR_CHECKER( \
230  attrName, inspector) \
231  DtDEFINE_SIMPLE_TCAS_ATTR_CHECKER(DtNatoIffEncoder, \
232  DtIffStateRepository, attrName, inspector)
233 
239 #define DtDEFINE_SIMPLE_NATO_IFF_TCAS_ATTR_ENCODER_WITH_PARAM( \
240  attrName, netType, inspector, param) \
241  DtDEFINE_SIMPLE_IFF_ATTR_ENCODER_WITH_PARAM( \
242  DtNatoIffEncoder, attrName, netType, inspector, param)
243 
249 #define DtDEFINE_SIMPLE_NATO_IFF_TCAS_ATTR_CHECKER_WITH_PARAM( \
250  attrName, inspector, param) \
251  DtDEFINE_SIMPLE_IFF_ATTR_CHECKER_WITH_PARAM( \
252  DtNatoIffEncoder, DtTCASDataStateRepository, attrName, inspector, param)
253 
257 {
258 public:
259 
262  DtExerciseConn* exConn,
263  DtObjClassDesc* classDesc);
264 
266  virtual ~DtNatoIffEncoder();
267 
269  DtNatoIffEncoder(const DtNatoIffEncoder& orig);
270 
273 
274 public:
275 
276  static DtHlaStateEncoder* create(
277  DtExerciseConn* exConn,
278  DtObjClassDesc* classDesc);
279 
280 protected:
281 
283 
284  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode1Enabled);
285  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode1IsDamaged);
286  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode1IsMalfunctioning);
288 
289  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode2Enabled);
290  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode2IsDamaged);
291  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode2IsMalfunctioning);
293 
294  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode3Enabled);
295  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode3IsDamaged);
296  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode3IsMalfunctioning);
298 
300  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode3AEnabled);
301  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode3AIsDamaged);
302  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode3AIsMalfunctioning);
304 
305  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode4Enabled);
306  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode4IsDamaged);
307  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode4IsMalfunctioning);
309  DtDECLARE_NATO_IFF_MODE4_ATTR_CHECKER(Mode4PseudoCrypto);
310  DtDECLARE_NATO_IFF_MODE4_ATTR_CHECKER(Mode4PseudoCryptoAvailable);
311 
313  DtDECLARE_NATO_IFF_ATTR_CHECKER(ModeCEnabled);
314  DtDECLARE_NATO_IFF_ATTR_CHECKER(ModeCIsDamaged);
315  DtDECLARE_NATO_IFF_ATTR_CHECKER(ModeCIsMalfunctioning);
317 
323  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode5CEnabled);
324  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode5CIsDamaged);
325  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode5CIsMalfunctioning);
327 
328  DtDECLARE_NATO_IFF_ATTR_CHECKER(ModeSEnabled);
329  DtDECLARE_NATO_IFF_ATTR_CHECKER(ModeSIsDamaged);
330  DtDECLARE_NATO_IFF_ATTR_CHECKER(ModeSIsMalfunctioning);
332 
334 
336 
337  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode1Enabled);
338  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode1IsDamaged);
339  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode1IsMalfunctioning);
341 
342  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode2Enabled);
343  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode2IsDamaged);
344  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode2IsMalfunctioning);
346 
347  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode3Enabled);
348  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode3IsDamaged);
349  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode3IsMalfunctioning);
351 
352  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode3AEnabled);
353  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode3AIsDamaged);
354  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode3AIsMalfunctioning);
356 
357  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode4Enabled);
358  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode4IsDamaged);
359  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode4IsMalfunctioning);
361  DtDECLARE_NATO_IFF_MODE4_ATTR_ENCODER(Mode4PseudoCrypto);
362  DtDECLARE_NATO_IFF_MODE4_ATTR_ENCODER(Mode4PseudoCryptoAvailable);
363 
364  DtDECLARE_NATO_IFF_ATTR_ENCODER(ModeCEnabled);
365  DtDECLARE_NATO_IFF_ATTR_ENCODER(ModeCIsDamaged);
366  DtDECLARE_NATO_IFF_ATTR_ENCODER(ModeCIsMalfunctioning);
368 
374  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode5CEnabled);
375  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode5CIsDamaged);
376  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode5CIsMalfunctioning);
378 
379  DtDECLARE_NATO_IFF_ATTR_ENCODER(ModeSEnabled);
380  DtDECLARE_NATO_IFF_ATTR_ENCODER(ModeSIsDamaged);
381  DtDECLARE_NATO_IFF_ATTR_ENCODER(ModeSIsMalfunctioning);
383 
385 
387 
388  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode5Enabled);
389  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode5IsDamaged);
390  DtDECLARE_NATO_IFF_ATTR_CHECKER(Mode5IsMalfunctioning);
392 
393  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode5Enabled);
394  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode5IsDamaged);
395  DtDECLARE_NATO_IFF_ATTR_ENCODER(Mode5IsMalfunctioning);
397 };
398 
399 #endif
400 #endif
401 
Instances of DtTCASDataStateRepository are used to store state data for IFFData.TCASData objects...
Definition: iffTCASDataStateRepository.h:29
Instances of DtExerciseConn are used to provide an application's interface or connection to the netwo...
Definition: exerciseConnHLA.h:61
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
This file provides a declaration of the class DtIffEncoder.
Defines a protocol independent repository of attributes for IFF objects.
Definition: iffStateRepository.h:39
DtHlaStateEncoder is used to provide encoding of a state repository into a state message in an HLA (a...
Definition: hlaStateEncoder.h:30
An instance of DtObjClassDesc is a "class descriptor" for an HLA Object class.
Definition: objClassDesc13.h:41
#define DtDECLARE_NATO_IFF_ATTR_CHECKER(attrName)
We define several macros that can be helpful in defining the class, and the individual decoding funct...
Definition: natoIffEncoder.h:26
#define DtDECLARE_NATO_IFF_MODE4_ATTR_CHECKER(attrName)
We define several macros that can be helpful in defining the class, and the individual decoding funct...
Definition: natoIffEncoder.h:83
#define DtDECLARE_NATO_IFF_TCAS_ATTR_CHECKER(attrName)
We define several macros that can be helpful in defining the class, and the individual decoding funct...
Definition: natoIffEncoder.h:175
#define DtDECLARE_NATO_IFF_TCAS_ATTR_ENCODER(attrName)
This is used to declare static member functions that perform attribute encoding.
Definition: natoIffEncoder.h:180
The DtIffEncoder class:
Definition: iffEncoder.h:69
Instances of DtMode4StateRepository are used to store state data for IFFData.Mode4 objects...
Definition: iffMode4StateRepository.h:29
Mode TCAS Specific Attribute Decoder Macros.
Definition: natoIffEncoder.h:256
static DtHlaStateEncoder * create(DtExerciseConn *exConn, DtObjClassDesc *classDesc)
DtIffEncoder & operator=(const DtIffEncoder &orig)
assignment operator
#define DtDECLARE_NATO_IFF_MODE4_ATTR_ENCODER(attrName)
This is used to declare static member functions that perform attribute encoding.
Definition: natoIffEncoder.h:88
#define DtDECLARE_NATO_IFF_ATTR_ENCODER(attrName)
This is used to declare static member functions that perform attribute encoding.
Definition: natoIffEncoder.h:31

Document ID: Generated on Thu Sep 19 02:12:35 EDT 2024 from SVN revision 269601
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)