VR-Link API Documentation for HLA Evolved
electromagneticEmissionPdu.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2013 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
5 
6 
9 
10 #pragma once
11 
12 #if DtDIS
13 
14 #include "hostStructs.h"
15 #include "eventId.h"
16 #include "stateMsg.h"
17 #include <matrix/vlMath.h>
18 #include "packets/elecEmitP.h"
19 
20 #define DtEMISSION_SUCCESS 0
21 #define DtBAD_SYS_NUM 1
22 #define DtBAD_BEAM_NUM 2
23 #define DtBAD_TARGET_NUM 3
24 #define DtBAD_SYS_ADDR 4
25 #define DtBAD_BEAM_ADDR 5
26 #define DtBAD_TARGET_ADDR 6
27 #define DtINCONSISTENT_SYS_LENGTHS_PDU_LENGTH 7
28 #define DtINCONSISTENT_BEAM_LENGTHS_SYS_LENGTH 8
29 #define DtINCONSISTENT_NUM_TARGETS_BEAM_LENGTH 9
30 
31 class DT_DLL_VL DtFundamentalParameterData
32 {
33 public:
34  float frequency;
35  float frequencyRange;
36  float effectiveRadiatedPower;
37  float pulseRepetitionFrequency;
38  float pulseWidth;
39  float beamAzCenter;
40  float beamAzSweep;
41  float beamElCenter;
42  float beamElSweep;
43  float beamSweepSync;
44  virtual void printData() const;
45  virtual void printDataToStream(std::ostream& stream) const;
46 };
47 
48 class DT_DLL_VL DtTrackJamTarget
49 {
50 public:
51  DtEntityIdentifier entityId;
52  int emitterId;
53  int beamId;
54  virtual void printData() const;
55  virtual void printDataToStream(std::ostream& stream) const;
56 };
57 
59 class DT_DLL_VL DtElectromagneticEmissionPdu;
60 
61 typedef void (*DtElectromagneticEmissionPduCb)(
62  DtElectromagneticEmissionPdu *pdu, void *usr);
63 
64 class DT_DLL_VL DtElectromagneticEmissionPdu : public DtStateMsg
65 {
66 public:
67 
68  enum
69  {
70  PduStaticSize=28,
71  DtEmitterSystemStaticSize=20,
72  DtEmitterBeamStaticSize=52
73  };
74 
75 public:
76 
77  DtElectromagneticEmissionPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
78 
79  DtElectromagneticEmissionPdu(const DtNetElectromagneticEmissionPdu *initial,
80  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
81 
82  static DtPdu *create(const DtNetPacket *initial,
83  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
84 
85  static void addCallback(DtExerciseConn *conn,
86  DtElectromagneticEmissionPduCb cb, void *usr);
87 
88  static void removeCallback(DtExerciseConn *conn,
89  DtElectromagneticEmissionPduCb cb, void *usr);
90 
91  const DtEntityIdentifier &emittingEntityId() const;
92  void setEmittingEntityId(const DtEntityIdentifier &id);
93 
94  const DtEventID &eventId() const;
95  void setEventId(const DtEventID &id);
96 
97  DtEmissionPduType stateUpdateIndicator() const;
98  void setStateUpdateIndicator(DtEmissionPduType indicator);
99 
100  int numSystems() const;
101  void setNumSystems(int num);
102 
103  /************ FOR A PARTICULAR SYSTEM **************/
104  int systemDataWords(int sysNum, int *retcode = 0) const;
105 
106  int numBeams(int sysNum, int *retcode = 0) const;
107  void setNumBeams(int sysNum, int numBeams, int *retcode = 0);
108 
109  DtEmitterSysName systemName(int sysNum, int *retcode = 0) const;
110  void setSystemName(int sysNum, DtEmitterSysName name, int *retcode = 0);
111 
112  DtEmissionFunc systemFunction(int sysNum, int *retcode = 0) const;
113  void setSystemFunction(int sysNum, DtEmissionFunc func, int *retcode = 0);
114 
115  int emitterId(int sysNum, int *retcode = 0) const;
116  void setEmitterId(int sysNum, int id, int *retcode = 0);
117 
118  const DtVector& location(int sysNum, int *retcode = 0) const;
119  void setLocation(int sysNum, const DtVector& loc, int *retcode = 0);
120 
121  /************ FOR A PARTICULAR BEAM **************/
122  int beamDataWords(int sysNum, int beamNum, int *retcode = 0) const;
123 
124  int beamId(int sysNum, int beamNum, int *retcode = 0) const;
125 
126  void setBeamId(int sysNum, int beamNum, int id, int *retcode = 0);
127 
128  int beamParameterIndex(int sysNum, int beamNum, int *retcode = 0) const;
129 
130  void setBeamParameterIndex(int sysNum, int beamNum, int bpIndex,
131  int *retcode = 0);
132 
133  const DtFundamentalParameterData& parameterData(int sysNum, int beamNum,
134  int *retcode = 0) const;
135 
136  void setParameterData(int sysNum, int beamNum,
137  const DtFundamentalParameterData &data, int *retcode = 0);
138 
139  int beamFunction(int sysNum, int beamNum, int *retcode = 0) const;
140 
141  void setBeamFunction(int sysNum, int beamNum, int func, int *retcode = 0);
142 
143  int numTargetsInBeam(int sysNum, int beamNum,int *retcode = 0) const;
144  void setNumTargetsInBeam(int sysNum, int beamNum, int num, int *retcode = 0);
145 
146  DtTrackingJamming trackingAllTargets(int sysNum, int beamNum,
147  int *retcode = 0) const;
148 
149  void setTrackingAllTargets(int sysNum, int beamNum,
150  DtTrackingJamming trackJamAll, int *retcode = 0);
151 
152  DtU8 beamStatus(int sysNum, int beamNum,
153  int *retcode = 0) const;
154 
155  void setBeamStatus(int sysNum, int beamNum, DtU8 seq,
156  int *retcode = 0);
157 
158  unsigned long jammingModeSequence(int sysNum, int beamNum,
159  int *retcode = 0) const;
160 
161  void setJammingModeSequence(int sysNum, int beamNum, unsigned long seq,
162  int *retcode = 0);
163 
164  const DtTrackJamTarget &trackJamTarget(int sysNum, int beamNum,
165  int targetNum, int *retcode = 0) const;
166 
167  void setTrackJamTarget(int sysNum, int beamNum, int targetNum,
168  const DtTrackJamTarget &targ, int *retcode = 0);
169 
170  virtual void printData() const;
171 
172  virtual void printDataToStream(std::ostream& stream) const;
173 
174 protected:
175 
176  DtPduKind internalGetPduKind() const {return DtElectromagneticEmissionPduKind;}
177 
178  DtNetSystemData *emitterSystemAddr(int sysNum, int *retcode = 0) const;
179 
180  DtNetBeamData *emitterBeamAddr(int sysNum, int beamNum,
181  int *retcode = 0) const;
182 
183  DtNetEmitterTrackJam *targetAddr(int sysNum, int beamNum, int targetNum,
184  int *retcode = 0) const;
185 
186  int computedSystemDataLength(int sysNum) const;
187  int computedBeamDataLength(int sysNum, int beamNum) const;
188  void printSystem(std::ostream& stream,int i) const;
189  void printBeam(std::ostream& stream,int i, int j) const;
190  int addressInPacket(void *addr) const;
191  int computeStatus() const;
192 
193 protected:
194 
195  // Hold native value when retrieved from PDU net buffer
197  mutable DtEntityIdentifier myEittingEntityId;
198  mutable DtEventID myEventId;
199  mutable DtVector myLocation;
200  mutable DtFundamentalParameterData myParameterData;
201  mutable DtTrackJamTarget myTrackJamTarget;
203 
204 };
205 
206 #endif

Document ID: Generated on Wed Oct 23 22:25:48 EDT 2013 from SVN revision 132765
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)