VR-Link API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
pdu.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
5 #pragma once
6 
9 
10 
11 
12 #include <stdlib.h>
13 #include "packets/pduHeader.h"
14 #include <vlpi/disEnums.h>
15 #include <vlutil/vlTimeStampType.h>
16 #include <vlutil/vlBaseMsg.h>
17 
18 
19 #define DtSTATUS_OK 0
20 #define DtSTATUS_NOT_OK 1
21 
25 
26 class DtPduEncoder;
27 class DtPduDecoder;
28 class DtPduFactory;
29 
33 class DT_DLL_VL DtPdu : public DtBaseMsg
34 {
35 public:
36 
38  virtual ~DtPdu();
39 
41  DtPdu(const DtPdu &pdu,
43 
45  DtPdu &operator=(const DtPdu &pdu);
46 
47 
50  virtual void* packet() const;
51 
54  virtual int status() const;
55 
57  virtual void setVersion(int vers);
58  virtual int protocolVersion() const;
59 
61  virtual void setExerciseId(int id);
62  virtual int exerciseId() const;
63 
65  virtual DtPduKind kind() const;
66 
68  virtual DtProtocolFamily protocolFamily() const;
69 
73  virtual void setTimeStamp(DtTime time,
75 
78  virtual DtTime timeStamp() const;
79 
81  virtual DtTimeStampType timeStampType() const;
82 
86  virtual void setPduLength(unsigned int length);
87 
89  virtual unsigned int pduLength() const;
90 
92  virtual void setPduStatus(int);
93 
95  virtual int pduStatus() const;
96 
100  virtual void setTransferredEntityIndicator(bool difference);
104  virtual bool transferredEntityIndicator() const;
105 
107  virtual void setLvcIndicator(DtPduStatusLVCIndicator lvcIndicator);
109  virtual DtPduStatusLVCIndicator lvcIndicator() const;
110 
114  virtual void setCoupledExtensionIndicator(bool coupled);
118  virtual bool coupledExtensionIndicator() const;
119 
121  virtual void setFireTypeIndicator(DtPduStatusFireTypeIndicator fireTypeIndicator);
123  virtual DtPduStatusFireTypeIndicator fireTypeIndicator() const;
124 
126  virtual void setDetonationTypeIndicator(DtPduStatusDetonationTypeIndicator detonationTypeIndicator);
128  virtual DtPduStatusDetonationTypeIndicator detonationTypeIndicator() const;
129 
131  virtual void setRadioAttachedIndicator(DtPduStatusRadioAttachedIndicator radioAttachedIndicator);
133  virtual DtPduStatusRadioAttachedIndicator radioAttachedIndicator() const;
134 
136  virtual void setIntercomAttachedIndicator(DtPduStatusIntercomAttachedIndicator intercomAttachedIndicator);
138  virtual DtPduStatusIntercomAttachedIndicator intercomAttachedIndicator() const;
139 
141  virtual void setIffSimulationMode(bool interactive);
143  virtual bool iffSimulationMode() const;
144 
146  virtual void setActiveInterrogationIndicator(bool active);
148  virtual bool activeInterrogationIndicator() const;
149 
154  virtual DtTime guessTimeValid(DtTime referenceTime) const;
155 
157  virtual DtNetPduHeader* netHeader() const;
158 
160  virtual void print() const;
161 
164  virtual void printToStream(std::ostream& stream) const;
165 
167  virtual void printHeader() const;
168 
170  virtual void printHeaderToStream(std::ostream& stream) const;
171 
172 
178  virtual void printData() const;
179  virtual void printDataToStream(std::ostream& stream) const;
180  virtual void printDataToString(DtString& str) const;
181 
183  virtual void printPduInHexToStream(std::ostream& stream, unsigned int numberOfColumns) const;
184 
186  virtual void encode();
187 
189  virtual void decode(DtPduFactory* pduFactory);
190 
193  virtual bool isTransientPdu() const;
194 
195 protected:
196 
199  DtPdu();
200 
202  virtual void setStatus(int okStatus);
203 
206  virtual void initPdu(int size, DtBufferPtr buffer);
207 
209  virtual void initPdu(const void* initial, DtBufferPtr buffer, DtPduFactory* pduFactory);
210 
212  virtual DtPduKind internalGetPduKind() const = 0;
213 
215  virtual DtProtocolFamily kindToFamily(DtPduKind kind) const;
216 
218  virtual void sizeChanged(int size);
219 
221  virtual void clearData();
222 
224  virtual void initHeader(DtPduKind kind, int size);
225 
228  virtual bool isTEIApplicable() const;
229  virtual bool isLVCApplicable() const;
230  virtual bool isCEIApplicable() const;
231  virtual bool isFTIApplicable() const;
232  virtual bool isDTIApplicable() const;
233  virtual bool isRAIApplicable() const;
234  virtual bool isIAIApplicable() const;
235  virtual bool isISMApplicable() const;
236  virtual bool isAIIApplicable() const;
237 
238 protected:
239 
243 };
244 
245 #define netPdu packet()
246 
248 {
249  return (DtNetPduHeader*) netRep();
250 }
251 
252 inline void* DtPdu::packet() const
253 {
254  return (void*) netRep();
255 }
256 
257 inline int DtPdu::protocolVersion() const
258 {
259  return netHeader()->version;
260 }
261 
262 inline int DtPdu::exerciseId() const
263 {
264  return netHeader()->DtExercise;
265 }
266 
267 inline DtPduKind DtPdu::kind() const
268 { return DtPduKind(netHeader()->DtKind);
269 }
270 
272 {
273  return DtProtocolFamily(netHeader()->family);
274 }
275 
276 inline DtTime DtPdu::timeStamp() const
277 {
278  return netHeader()->DtTime.time();
279 }
280 
282 {
283  return netHeader()->DtTime.type();
284 }
285 
286 inline void DtPdu::setExerciseId(int id)
287 {
288  netHeader()->DtExercise = id;
289 }
290 
291 inline void DtPdu::setTimeStamp(DtTime time, DtTimeStampType relOrAbs)
292 {
293  netHeader()->DtTime = DtNetTimeStamp(time, relOrAbs);
294 }
295 
296 
297 inline void DtPdu::setPduLength(unsigned int length)
298 {
300 }
301 
302 inline unsigned int DtPdu::pduLength() const
303 {
304  return netHeader()->DtLength;
305 }
306 
307 
308 inline int DtPdu::pduStatus() const
309 {
310  return netHeader()->pduStatus;
311 }
312 
313 inline void DtPdu::setPduStatus(int pduStatus)
314 {
316 }
317 
318 inline int DtPdu::status() const
319 {
320  return myOKStatus;
321 }
322 
323 inline void DtPdu::setStatus(int okStatus)
324 {
325  myOKStatus = okStatus;
326 }
327 
328 inline void DtPdu::setVersion(int vers)
329 {
330  netHeader()->version = (unsigned char) (DtU32) vers;
331 }
332 

Document ID: Generated on Fri May 15 06:36:13 EDT 2015 from SVN revision 153263
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)