KDIS  2-8-x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
EmitterBeam.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: EmitterBeam
32  created: 2008/010/19
33  author: Karl Jones
34 
35  purpose: Contains information about a emitter beam
36  size: 416 bits / 52 octets min size
37 *********************************************************************/
38 
39 #pragma once
40 
41 #include "./DataTypeBase.h"
43 #include <vector>
45 
46 namespace KDIS {
47 namespace DATA_TYPE {
48 
51 using std::vector;
52 
54 {
55 protected:
56 
58 
60 
62 
64 
66 
68 
70 
72 
74 
75  vector<TrackJamTargetIdentifier> m_vTrackJamTargets;
76 
77 public:
78 
79  static const KUINT16 EMITTER_BEAM_SIZE = 52; // Min Size
80 
81  EmitterBeam();
82 
83  EmitterBeam( KDataStream & stream )throw( KException );
84 
85  EmitterBeam( KUINT8 BeamID, KUINT16 BeamParamIndex, const FundamentalParameterData & FPD,
87  KUINT32 JammingModeSequence );
88 
89  virtual ~EmitterBeam();
90 
91  //************************************
92  // FullName: KDIS::DATA_TYPE::EmitterBeam::GetSystemDataLength
93  //!Description: Length of the emission system in 32 bit words.
94  //! E.G 1 = 32 bits / 4 octets. Calculated automatically.
95  //************************************
96  KUINT8 GetBeamDataLength() const;
97 
98  //************************************
99  // FullName: KDIS::DATA_TYPE::EmitterBeam::SetEmitterBeamIDNumber
100  // KDIS::DATA_TYPE::EmitterBeam::GetEmitterBeamIDNumber
101  //!Description: Unique ID for emitter beam, Once established for an exercise
102  //! no other beam may use this ID.
103  // Parameter: KUINT8 ID, void
104  //************************************
105  void SetEmitterBeamIDNumber( KUINT8 ID );
106  KUINT8 GetEmitterBeamIDNumber() const;
107 
108  //************************************
109  // FullName: KDIS::DATA_TYPE::EmitterBeam::SetBeamParamIndex
110  // KDIS::DATA_TYPE::EmitterBeam::GetBeamParamIndex
111  //!Description: Number used by receiving entities in conjunction with the
112  //! emitter name field to provide a pointer to the stored
113  //! database parameter required to regenerate the beam.
114  // Parameter: KUINT16 BPI, void
115  //************************************
116  void SetBeamParamIndex( KUINT16 BPI );
117  KUINT16 GetBeamParamIndex() const;
118 
119  //************************************
120  // FullName: KDIS::DATA_TYPE::EmitterBeam::SetFundamentalParameterData
121  // KDIS::DATA_TYPE::EmitterBeam::GetFundamentalParameterData
122  //!Description: Specifies dynamic parameters of the emitter.
123  // Parameter: const FundamentalParameterData & FPD, void
124  //************************************
125  void SetFundamentalParameterData( const FundamentalParameterData & FPD );
126  const FundamentalParameterData & GetFundamentalParameterData() const;
127  FundamentalParameterData & GetFundamentalParameterData();
128 
129  //************************************
130  // FullName: KDIS::DATA_TYPE::EmitterBeam::SetEmitterBeamFunction
131  // KDIS::DATA_TYPE::EmitterBeam::GetEmitterBeamFunction
132  //!Description: Specifies the function of a Emitter Beam
133  // Parameter: const EmitterFunction & FPD, void
134  //************************************
135  void SetEmitterBeamFunction( EmitterFunction EBF );
136  EmitterFunction GetEmitterBeamFunction() const;
137 
138  //************************************
139  // FullName: KDIS::DATA_TYPE::EmitterBeam::GetNumTargetInTrackJamField
140  //!Description: Number of targets being tracked/jammed
141  //************************************
142  KUINT8 GetNumTargetInTrackJamField() const;
143 
144  //************************************
145  // FullName: KDIS::DATA_TYPE::EmitterBeam::SetHighDensityTrackJam
146  // KDIS::DATA_TYPE::EmitterBeam::GetHighDensityTrackJam
147  //!Description: Indicates if the receiving simulation application can assume that all
148  //! targets, in the scan pattern which the sending emitter can track or
149  //! jam are being tracked/jammed/ When selected the system issuing the
150  //! PDU shall not include any entities in the track/jam field.
151  // Parameter: const HighDensityTrackJam & HDTJ, void
152  //************************************
153  void SetHighDensityTrackJam( HighDensityTrackJam HDTJ );
154  HighDensityTrackJam GetHighDensityTrackJam() const;
155 
156  //************************************
157  // FullName: KDIS::DATA_TYPE::EmitterBeam::SetJammingModeSequence
158  // KDIS::DATA_TYPE::EmitterBeam::GetJammingModeSequence
159  //!Description: Used to identify one or more multiple jamming techniques
160  //! being applied.
161  // Parameter: KUINT32 JMS, void
162  //************************************
163  void SetJammingModeSequence( KUINT32 JMS );
164  KUINT32 GetJammingModeSequence() const;
165 
166  //************************************
167  // FullName: KDIS::DATA_TYPE::EmitterBeam::AddTrackedJammedTarget
168  // KDIS::DATA_TYPE::EmitterBeam::SetTrackedJammedTargets
169  // KDIS::DATA_TYPE::EmitterBeam::GetTrackedJammedTargets
170  // KDIS::DATA_TYPE::EmitterBeam::ClearTrackedJammedTargets
171  //!Description: Tacked jammed targets.
172  // Parameter: const TrackJamTargetIdentifier & ID, const vector<TrackJamTargetIdentifier> & ID
173  //************************************
174  void AddTrackedJammedTarget( const TrackJamTargetIdentifier & ID );
175  void SetTrackedJammedTargets( const vector<TrackJamTargetIdentifier> & ID );
176  const vector<TrackJamTargetIdentifier> & GetTrackedJammedTargets() const;
177  void ClearTrackedJammedTargets();
178 
179  //************************************
180  // FullName: KDIS::DATA_TYPE::EmitterBeam::GetAsString
181  //!Description: Returns a string representation
182  //************************************
183  virtual KString GetAsString() const;
184 
185  //************************************
186  // FullName: KDIS::DATA_TYPE::EmitterBeam::Decode
187  //!Description: Convert From Network Data.
188  // Parameter: KDataStream & stream
189  //************************************
190  virtual void Decode( KDataStream & stream ) throw( KException );
191 
192  //************************************
193  // FullName: KDIS::DATA_TYPE::EmitterBeam::Encode
194  //!Description: Convert To Network Data.
195  // Parameter: KDataStream & stream
196  //************************************
197  virtual KDataStream Encode() const;
198  virtual void Encode( KDataStream & stream ) const;
199 
200  KBOOL operator == ( const EmitterBeam & Value ) const;
201  KBOOL operator != ( const EmitterBeam & Value ) const;
202 };
203 
204 } // END namespace DATA_TYPES
205 } // END namespace KDIS
unsigned int KUINT32
Definition: KDefines.h:103
Definition: TrackJamTargetIdentifier.h:48
Definition: EmitterBeam.h:53
unsigned short int KUINT16
Definition: KDefines.h:101
KUINT8 m_ui8BeamFunction
Definition: EmitterBeam.h:65
vector< TrackJamTargetIdentifier > m_vTrackJamTargets
Definition: EmitterBeam.h:75
KUINT8 m_ui8NumTargetInTrackJamField
Definition: EmitterBeam.h:67
FundamentalParameterData m_FundamentalParameterData
Definition: EmitterBeam.h:63
Definition: KDefines.h:182
Definition: KDataStream.h:48
Definition: DataTypeBase.h:49
bool KBOOL
Definition: KDefines.h:119
HighDensityTrackJam
Definition: EnumEmitter.h:1328
std::string KString
Definition: KDefines.h:116
KUINT8 m_ui8HighDensityTrackJam
Definition: EmitterBeam.h:69
KUINT8 m_ui8BeamDataLength
Definition: EmitterBeam.h:57
KUINT8 m_ui8EmitterBeamIDNumber
Definition: EmitterBeam.h:59
unsigned char KUINT8
Definition: KDefines.h:99
Definition: FundamentalParameterData.h:47
KUINT32 m_ui32JammingModeSequence
Definition: EmitterBeam.h:73
#define KDIS_EXPORT
Definition: KDefines.h:82
EmitterFunction
Definition: EnumEmitter.h:1225
KUINT8 m_ui8Padding
Definition: EmitterBeam.h:71
KUINT16 m_ui16BeamParamIndex
Definition: EmitterBeam.h:61