KDIS  2-8-x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Designator_PDU.h
Go to the documentation of this file.
1 /*********************************************************************
2 
3 Copyright 2013 Karl Jones
4 All rights reserved.
5 
6 Redistribution and use in source and binary forms, with or without
7 modification, are permitted provided that the following conditions are met:
8 
9 1. Redistributions of source code must retain the above copyright notice, this
10  list of conditions and the following disclaimer.
11 2. Redistributions in binary form must reproduce the above copyright notice,
12  this list of conditions and the following disclaimer in the documentation
13  and/or other materials provided with the distribution.
14 
15 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
19 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 
26 For Further Information Please Contact me at
27 Karljj1@yahoo.com
28 http://p.sf.net/kdis/UserGuide
29 *********************************************************************/
30 
31 /********************************************************************
32  class: Designator_PDU
33  DIS: (5) 1278.1 - 1995 & (7) 1278.1-2012
34  created: 2008/10/21
35  author: Karl Jones
36 
37  purpose: Communicates designating operations.
38  E.G a laser designator for targeting.
39  size: 704 bits / 88 octets
40 *********************************************************************/
41 
42 #pragma once
43 
44 #include "./../Header.h"
45 #include "./../../DataTypes/EntityIdentifier.h"
46 #include "./../../DataTypes/Vector.h"
47 #include "./../../DataTypes/WorldCoordinates.h"
48 
49 namespace KDIS {
50 namespace PDU {
51 
53 {
54 protected:
55 
57 
59 
61 
63 
65 
67 
69 
71 
73 
75 
77 
79 
80 public:
81 
82  static const KUINT16 DESIGNATOR_PDU_SIZE = 88;
83 
85 
86  Designator_PDU( KDataStream & stream ) throw( KException );
87 
88  Designator_PDU( const Header & H, KDataStream & stream ) throw( KException );
89 
92  KFLOAT32 WaveLength, const KDIS::DATA_TYPE::Vector & SpotLocationRegardsToEntity,
94  const KDIS::DATA_TYPE::Vector & EntityLinearAcceleration );
95 
96  virtual ~Designator_PDU();
97 
98  //************************************
99  // FullName: KDIS::PDU::Designator_PDU::SetDesignatingEntityID
100  // KDIS::PDU::Designator_PDU::GetDesignatingEntityID
101  //!Description: Entity that is positioning the designator.
102  // Parameter: const EntityIdentifier & ID
103  //************************************
104  void SetDesignatingEntityID( const KDIS::DATA_TYPE::EntityIdentifier & ID );
105  const KDIS::DATA_TYPE::EntityIdentifier & GetDesignatingEntityID() const;
106  KDIS::DATA_TYPE::EntityIdentifier & GetDesignatingEntityID();
107 
108  //************************************
109  // FullName: KDIS::PDU::Designator_PDU::SetDesignatorCodeName
110  // KDIS::PDU::Designator_PDU::GetDesignatorCodeName
111  //!Description: Code name for designator
112  // Parameter: DesignatorCodeName CN
113  //************************************
114  void SetDesignatorCodeName( KDIS::DATA_TYPE::ENUMS::DesignatorCodeName CN );
115  KDIS::DATA_TYPE::ENUMS::DesignatorCodeName GetDesignatorCodeName() const;
116 
117  //************************************
118  // FullName: KDIS::PDU::Designator_PDU::SetDesignatedEntityID
119  // KDIS::PDU::Designator_PDU::GetDesignatedEntityID
120  //!Description: Object that is being designated, if not an entity
121  //! the value shall be set to the symbolic name: D_SPOT_NO_ENTITY
122  // Parameter: const EntityIdentifier & ID
123  //************************************
124  void SetDesignatedEntityID( const KDIS::DATA_TYPE::EntityIdentifier & ID );
125  const KDIS::DATA_TYPE::EntityIdentifier & GetDesignatedEntityID() const;
126  KDIS::DATA_TYPE::EntityIdentifier & GetDesignatedEntityID();
127 
128  //************************************
129  // FullName: KDIS::PDU::Designator_PDU::SetDesignatorCode
130  // KDIS::PDU::Designator_PDU::GetDesignatorCode
131  //!Description: Code used by designator
132  // Parameter: DesignatorCode C
133  //************************************
134  void SetDesignatorCode( KDIS::DATA_TYPE::ENUMS::DesignatorCode C );
135  KDIS::DATA_TYPE::ENUMS::DesignatorCode GetDesignatorCode() const;
136 
137  //************************************
138  // FullName: KDIS::PDU::Designator_PDU::SetDesignatingPower
139  // KDIS::PDU::Designator_PDU::GetDesignatingPower
140  //!Description: Output power in Watts
141  // Parameter: KFLOAT32 DP
142  //************************************
143  void SetDesignatingPower( KFLOAT32 DP );
144  KFLOAT32 GetDesignatingPower() const;
145 
146  //************************************
147  // FullName: KDIS::PDU::Designator_PDU::SetDesignatingWaveLength
148  // KDIS::PDU::Designator_PDU::GetDesignatingWaveLength
149  //!Description: Wave Length in units of microns
150  // Parameter: KFLOAT32 WL
151  //************************************
152  void SetDesignatingWaveLength( KFLOAT32 WL );
153  KFLOAT32 GetDesignatingWaveLength() const;
154 
155  //************************************
156  // FullName: KDIS::PDU::Designator_PDU::SetDesignatorSpotRespectToDesignatedEntity
157  // KDIS::PDU::Designator_PDU::GetDesignatorSpotRespectToDesignatedEntity
158  //!Description: Location of the designator spot with regards to the
159  //! designated entity coordinate system. If the designated
160  //! object is not an entity (I.E the Designated Entity ID contains
161  //! the symbolic value D_SPOT_NO_ENTITY) then the field shall contain
162  //! [0.0, 0.0, 0.0]. Represented as Entity Coordinate Vector
163  // Parameter: const Vector & DPL
164  //************************************
165  void SetDesignatorSpotRespectToDesignatedEntity( const KDIS::DATA_TYPE::Vector & DPL );
166  const KDIS::DATA_TYPE::Vector & GetDesignatorSpotRespectToDesignatedEntity() const;
167  KDIS::DATA_TYPE::Vector & GetDesignatorSpotRespectToDesignatedEntity();
168 
169  //************************************
170  // FullName: KDIS::PDU::Designator_PDU::SetSpotLocation
171  // KDIS::PDU::Designator_PDU::GetSpotLocation
172  //!Description: Location of designator spot in world coordinates
173  // Parameter: const WorldCoordinates & SL
174  //************************************
175  void SetSpotLocation( const KDIS::DATA_TYPE::WorldCoordinates & SL );
176  const KDIS::DATA_TYPE::WorldCoordinates & GetSpotLocation() const;
177  KDIS::DATA_TYPE::WorldCoordinates & GetSpotLocation();
178 
179  //************************************
180  // FullName: KDIS::PDU::Designator_PDU::SetDeadReckoningAlgorithm
181  // KDIS::PDU::Designator_PDU::GetDeadReckoningAlgorithm
182  //!Description: Used for dead reckoning the designator spot, also uses
183  //! entity linear acceleration in order to perform the dead
184  //! reckoning task.
185  // Parameter: DeadReckoningAlgorithm DRA
186  //************************************
187  void SetDeadReckoningAlgorithm( KDIS::DATA_TYPE::ENUMS::DeadReckoningAlgorithm DRA );
188  KDIS::DATA_TYPE::ENUMS::DeadReckoningAlgorithm GetDeadReckoningAlgorithm() const;
189 
190  //************************************
191  // FullName: KDIS::PDU::Designator_PDU::SetEntityLinearAcceleration
192  // KDIS::PDU::Designator_PDU::GetEntityLinearAcceleration
193  //!Description: Entity Linear Acceleration. Represented as Linear Acceleration Vector.
194  // Parameter: const Vector & ELA
195  //************************************
196  void SetEntityLinearAcceleration( const KDIS::DATA_TYPE::Vector & ELA );
197  const KDIS::DATA_TYPE::Vector & GetEntityLinearAcceleration() const;
198  KDIS::DATA_TYPE::Vector & GetEntityLinearAcceleration();
199 
200  //************************************
201  // FullName: KDIS::PDU::Designator_PDU::GetAsString
202  //!Description: Returns a string representation of the PDU.
203  //************************************
204  virtual KString GetAsString() const;
205 
206  //************************************
207  // FullName: KDIS::PDU::Designator_PDU::Decode
208  //!Description: Convert From Network Data.
209  // Parameter: KDataStream & stream
210  // Parameter: bool ignoreHeader = false - Decode the header from the stream?
211  //************************************
212  virtual void Decode( KDataStream & stream, bool ignoreHeader = false ) throw( KException );
213 
214  //************************************
215  // FullName: KDIS::PDU::Designator_PDU::Encode
216  //!Description: Convert To Network Data.
217  //************************************
218  virtual KDataStream Encode() const;
219  virtual void Encode( KDataStream & stream ) const;
220 
221  KBOOL operator == ( const Designator_PDU & Value ) const;
222  KBOOL operator != ( const Designator_PDU & Value ) const;
223 };
224 
225 } // END namespace PDU
226 } // END namespace KDIS
KUINT8 m_ui8Padding2
Definition: Designator_PDU.h:76
KFLOAT32 m_f32WaveLength
Definition: Designator_PDU.h:66
DesignatorCode
Definition: EnumDesignator.h:70
unsigned short int KUINT16
Definition: KDefines.h:101
KUINT8 m_ui8DeadReckoningAlgorithm
Definition: Designator_PDU.h:72
float KFLOAT32
Definition: KDefines.h:113
KDIS::DATA_TYPE::Vector m_SpotRegardsToEntity
Definition: Designator_PDU.h:68
Definition: EnumEmitter.h:949
DesignatorCodeName
Definition: EnumDesignator.h:53
KUINT16 m_ui16Padding1
Definition: Designator_PDU.h:74
Definition: Designator_PDU.h:52
KUINT16 m_ui16CodeName
Definition: Designator_PDU.h:58
Definition: Vector.h:71
Definition: KDefines.h:182
Definition: KDataStream.h:48
Definition: WorldCoordinates.h:52
KUINT16 m_ui16Code
Definition: Designator_PDU.h:62
bool KBOOL
Definition: KDefines.h:119
KDIS::DATA_TYPE::EntityIdentifier m_DesignatingEntityID
Definition: Designator_PDU.h:56
std::string KString
Definition: KDefines.h:116
KDIS::DATA_TYPE::Vector m_EntityLinearAcceleration
Definition: Designator_PDU.h:78
Definition: EntityIdentifier.h:49
Definition: Header7.h:142
unsigned char KUINT8
Definition: KDefines.h:99
KDIS::DATA_TYPE::WorldCoordinates m_SpotLocation
Definition: Designator_PDU.h:70
KDIS::DATA_TYPE::EntityIdentifier m_DesignatedEntityID
Definition: Designator_PDU.h:60
DeadReckoningAlgorithm
Definition: EnumEntityInfoInteraction.h:841
#define KDIS_EXPORT
Definition: KDefines.h:82
KFLOAT32 m_f32Power
Definition: Designator_PDU.h:64