docs: fix typo
[KDIS.git] / CHANGELOG.md
blobb005a08a047daee508575f5fdc7d5fbee96ca589
1 # Changelog
3 All notable changes to this project will be documented in this file.
5 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
6 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
8 ## Unreleased
10 ### Added
12 -   `ApplyFilterBeforeDecodingPDUBody` to `PDU_Factory_Filter`. It can be used to reject PDU's before the body has been decoded enhancing performance or for rejecting custom or non-standard PDU's
13 -   `RadioAppearance` struct
14 -   `SupplyAppearance` struct
15 -   `VariableParameter` type `SeparationPart`
16 -   `BeamStateEnum` to the `EnumEmitter` file based on the `UID 318` contents of `SISO-REF-010-2016-v22` document
17 -   Additional enums (`SISO 10-2015`) for `ModulationType`, `BeamAntennaPatternReferenceSystem`, `ModulationSystem`, `TDLType`, `SystemType`, `SystemMode`, and `SystemName`
18 -   `DIS 7` support added for `SystemIdentifier`,`BeamAntennaPattern`, and `ExpendableDescriptor`
19 -   `SendOnly` option to `Connection` class. `Connection` will not bind if this is `true`
20 -   Support for `unique_ptr` when `C++11` is supported
21 -   Implementation of getter and setter running lights to `SubSurfacePlatformAppearance`
22 -   More unit tests
23 -   Guard in case `_USE_MATH_DEFINES` is already defined in `KUtils.h`
24 -   `CMAKE_INSTALL_PREFIX` to define alternative install location (defaults to `/usr/include/KDIS`)
25 -   Non-Human Life Form Appearance
26 -   `Simulation_Management_Header` explicit constructor and copy constructor
27 -   Missing enums `16` and `17` for `EventTypeEnum` ([#89](https://sourceforge.net/p/kdis/bugs/89))
28 -   Additional Time Shared enums ([#103](https://sourceforge.net/p/kdis/bugs/103))
29 -   Incorrect conversion from bits to bytes in `Signal_PDU`
31 ### Changed
33 -   `EmitterBeam` class to use `DIS_VERSION` definition when defining or declaring member variables and method. For `DIS 7`, introduced the `BeamStatus` and `JammingTechnique` classes to replicate the v7 PDU structure
34 -   `PDU_Factory_Filter` virtual destructor to prevent undefined behavior
35 -   `LifeFormAppearance` struct with additional fields
36 -   `AirPlatformAppearance` struct with additional fields
37 -   `GuidedMunitionAppearance` struct with additional fields
38 -   Improved `GetAsString` function for `NonHumanLifeFormAppearance`
39 -   `CulturalFeatureAppearance` incorrectly supports Engine Smoke bit. Modified the struct to eliminate bit-6 tracking
40 -   `Connection` functions to be `virtual` allowing further derivation
42 ### Deprecated
44 ### Removed
46 ### Fixed
48 -   `EllipsoidRecord2::Decode` should not have included `EllipsoidRecord1::Decode`
49 -   Inaccuracy in `GeocentricToGeodetic` calculations
50 -   Unit test compilation issues on Linux
51 -   Corrected some old tutorial links
52 -   Ordering of orientation and `dt` sigma fields in `EllipsoidRecord2`
53 -   Whitespace and comment cleaning
54 -   Incorrect PDU length calculation when calling `Comment_PDU::SetVariableDatum`
55 -   `Action_Response_PDU` constructor not populating all fields and incorrect length calculation
56 -   Incorrect erasing loop in `Connection::RemoveSubscriber` where duplicates were not always removed ([#49](https://sourceforge.net/p/kdis/bugs/49))
57 -   Rounding error in `GeocentricToGeodetic`
58 -   Incorrect PDU length comment ([#50](https://sourceforge.net/p/kdis/bugs/50))
59 -   `AttributeRecordSet::GetRecordLength` not including all fields in size calculation ([#51](https://sourceforge.net/p/kdis/bugs/51))
60 -   Divide by `0` in `DeadReckoningCalculator::computeRotationAxis` when axis were `0`
61 -   Bug in `Connection::GetNextPDU` when a PDU was not decoded. Now the stream is cleared and flow continues
62 -   Bug in `OrientationError::SetElevationError` ndue to no value was assigned
63 -   `Minefield_Data_PDU::Encode` not correctly increment the detonation wires
64 -   Memory leak in `PDU_Factory` when applyFilters rejected the PDU
65 -   Memory leak in `Entity_State_PDU::operator=` when assigning a new `DeadReckoningCalculator`
66 -   Conversion Near Poles and Casting in `KCOnversion.h` (thanks Kyle)
67 -   Logic error in detecting polar regions for the coordinate conversion code
68 -   Bug in `Intercom_Control_PDU::Decode`
69 -   Type mismatch between `EntityAppearance` types (class to structs)
70 -   Memory leak in `Entity_State_PDU` when calling `SetDeadReckoningCalculator`
71 -   `CryptoSystem` byte ordering
72 -   `MarkXTransponder` negative altitude detection
73 -   Potential stream overrun in `DetonationPDU`
74 -   `Layer2` and `Layer3` incorrectly double decoding the header due to constructors not ignoring the header even when one is provided
75 -   Enum functions not being exported to `dll` ([#94](https://sourceforge.net/p/kdis/bugs/94))
76 -   Incorrect enums for Beam Function ([#103](https://sourceforge.net/p/kdis/bugs/103))
78 ### Security
80 ## 2.9.0 - 2016-01-21
82 ### Added
84 -   Unit tests via [`googletest`](https://github.com/google/googletest) framework
85 -   Bool operator for convenience to `KRef_Ptr`
86 -   `Connection::SetBlockingTimeOut` allowing for setting a timeout for blocking mode
87 -   Copy constructor and assignment operator to `Entity_State_PDU`
88 -   Getter and setter functions to `EntityKind` that support integers as well as enums for kind, domain and country simplifying the overall usage
89 -   `GetEnumSize` and `GetEnumDescriptor` exposing the internal `EnumDescriptor` arrays used for `GetEnumAsString` and `GetEnumFromString` allowing to iterate through an enumeration using these two functions
90 -   Implicit conversion support to `KRef_Ptr`
91 -   Implementation of `LifeFormAppearance::SetEntityLifeformState`
92 -   `PDU_FactoryLink16` to `Link 16` example
93 -   Padding to `SilentAggregateSystem`
94 -   Padding to `Mode5TransponderBasicData`
96 ### Changed
98 -   Format in `RelativeWorldCoordinates::GetAsString()`
99 -   Improved `Connection` socket error messages
100 -   Improved debugging information in header when a PDU has a buffer that is too small
101 -   `Link 16` example is built as a dynamic library
102 -   `Link16` example code to support partial decoding
104 ### Fixed
106 -   Incorrect size was assigned to `LE_VECTOR_SIZE`
107 -   `KRef_Ptr` compilation bug when using weak references
108 -   `AggregateMarking::Decode` not setting the last char to `\0` in `m_sAggregateMarkingString` casuing comparison issues
109 -   Bug decode and encode functions in `Entity_State_Update_PDU` that not handled padding correctly
110 -   Bug in `Appearance_PDU` decode function when no flags were used
111 -   Bug in `AttachedPart` not encoding and decoding the part type
112 -   Bug in `FixedDatum:GetDatumValue` was using `strncpy` to return data which causes issues when the data was not a `string`
113 -   Bug in `IFF_PDU::Decode`
114 -   Bug in `Intercom Control` PDU and `IntercomCommunicationParameters` where some values were not initialized causing unexpected behaviours during encoding and deconding
115 -   Bug in `Underwater_Acoustic_PDU::Decode` was encoding by mistake
116 -   Bug in `SphereRecord2::Encode()` was calling the wrong encoding function internally
117 -   Bug in `GED_BasicFixedWingAircraft` and `GED_BasicFixedWingAircraft` that used `8 bit` int instead of `16 bit` for speed
118 -   `CMake` for `KDIS_LIB` that was causing building a shared library instead of static
119 -   `CMake` for `MinGW` when building `lib` and `dll` version of `KDIS`
120 -   Comparison operator `==` in `Set_Data_R_PDU`
121 -   Comparison operator `==` in `KFIXED`
122 -   Decoding bug in `Intercom_Control_PDU`
123 -   Deconding bug when handling padding in `Aggregate_State_PDU`
124 -   Encoding bug in `Receiver_PDU`
125 -   Encoding and deconding bug in `Entity_Damage_Status_PDU` was not including padding
126 -   Exception handling bug in `Connection` and `IsGroupOf_PDU`
127 -   Incorrect PDU minimum size for `GridDataType` `0` and `1`
128 -   Incorrect PDU size in `Underwater_Acoustic_PDU`
129 -   Incorrect PDU size in `IFF_ATC_NAVAIDS_FundamentalParameterData`
130 -   Missing padding in `IO_Report_PDU`
131 -   `null` reference crash when encoding `IntercomCommunicationParameters` with no record
132 -   Protocol version not being set in `Intercom_Control_PDU`
133 -   `SilentEntitySystem` not initializing `m_ui16NumOfAppearanceRecords` to `0` casuing enconding and deconding failure
134 -   Size calculation in `SetFixedDatum` and `SetVariableDatum`
135 -   `TSPI_PDU::m_ui8SSDLen` not being initialised to `0` in some constructors
136 -   Uninitialized variables in `SetData_R_PDU`
137 -   `VariableDatum::GetPDULength` returning the incorrect value
138 -   Several fixes for `LE_FIRE_PDU` and `LE_Detonation_PDU` from public submission (thanks G�ran)
140 ## 2.8.0 - 2014-06-27
142 ### Added
144 -   `IFF_PDU` PDU which replaces `IFF_ATC_NAVAIDS_L1_PDU` PDU
145 -   `IFF_Layer3Transponder` and `IFF_Layer3Interrogator` classes
146 -   `VariableParamaters` class. This replaces all `ArticulationParamaters` classes as the base class
147 -   `AttachedPart` class
148 -   `CryptoSystem::SetKeyID` and `CryptoSystem::GetKeyID`
149 -   Implementations of `LinearVelocity`, `EntityLocation`, `EntityOrientation`, `EntityAppearance` in `Entity_State_Update_PDU`
150 -   Implementation of `SetPDUStatusFireType` and `GetPDUStatusFireType` in `Fire_PDU`
151 -   Getter and setter for `ResponseCode`, `ResponsePowerReduction`, and `ResponseRadarEnhancement` in `FundamentalOperationalData_RRB`
152 -   Getter and setter for `NumBurst` in `PointObjectAppearance`
153 -   Getter and setter for `AttackerEntityID` to `AttackerEntityID`
154 -   `WorldCoordinates::Set` to set all values in one call
155 -   `Vector::Set` to set all values in one call
156 -   `Vector::Lerp`
157 -   `WorldCoordinates::Lerp`
158 -   `SystemDesignator` and `SystemSpecificData` to `IFF_ATC_NAVAIDS_L1_PDU`
159 -   `SetTCASVersion` to `FundamentalOperationalData_MarkXTransponder` and `FundamentalOperationalData_MarkXInterrogator`
160 -   Missing enums to `StationName`
161 -   Missing enums to `WarfareType`
162 -   Missing enums to `EncodingType`
163 -   `Automatic Dependent Surveillance` broadcast to `EntityCapabilities`
164 -   `make install` target for Linux (thanks Bud Davis)
166 ### Changed
168 -   Renamed `ArticulationParamaters` to `ArticulatedPart`
169 -   `BurstDescriptor` in `LE Fire` and `LE Detonation` PDU with `MunitionDescriptor`. This class is the same except for the `SetMunition` and `GetMunition` functions which are now named `SetType` and `GetType`
170 -   Renamed `ArticulationParameters` to `ArticulatedPart`
171 -   Renamed `TypeVariantHighBits` to `TypeVariantClass` in `ArticulatedPart`
172 -   Renamed `TypeVariantLowBits` to `TypeVariantMetric` in `ArticulatedPart`
173 -   `FactoryDecoder` uses `KRef_Ptr` class
174 -   Renamed `EnumFundamentalOperationalData.h` to `EnumIFF.h` and `EnumFundamentalOperationalData.cpp` to `EnumIFF.cpp`
175 -   Renamed enum `WarheadType::GlassBladsWarhead` to `WarheadType::GlassBeadsWarhead`
176 -   Renamed enum `EncodingType::_16_bit_linear_PCM` to `EncodingType::_16_bit_linear_PCM2sComplementBigEndian`
177 -   From defintion `COMM_CHANNEL_TYPE` to `static KUINT16 COMM_CHANNEL_TYPE_SIZE`
178 -   Cleaned namespaces
179 -   Cleaned `GetAsString` for many classes
180 -   Performance improvements in decoding. Parameter `ignoreHeader` added to `Decode` function on PDU's, this will help performance by not decoding the Header twice each time a PDU is received. `PDU_Factory` uses this technique
181 -   Improved comments
182 -   _Copyright 2013 KDIS_ to _Copyright 2013 Karl Jones_
183 -   `UNLICENSE` statement to examples excepts `Link16`
185 ### Removed
187 -   `BurstDescriptor`. Fire PDU and Detonation PDU now use the Descriptor class. Fire PDU has Munition and Expendable descriptor. Detonation has Munition, Expendable or Explosion descriptor. This is in line with the `DIS 7` standard. To support `< DIS 7` then use the Munition Descriptor class
188 -   `IFF_ATC_NAVAIDS_L2_PDU` PDU. Now a data type class called `IFF_Layer2` which is a property of `IFF_PDU`
189 -   Removed `OtherCollision` from enum `CollisionType`
190 -   Macro `KDIS_VERSION`
192 ### Fixed
194 -   No operation bug in `CryptoSystem::SetCryptoSystemType`
195 -   No operation bug in `Aggregate_State_PDU::SetAggregateState`
196 -   Incorrect size values for `DATA_R_PDU`, `SET_RECORD_R_PDU_SIZE`, and `STOP_FREEZE_R_PDU_SIZE`
197 -   Bug in `Set_Record_R_PDU::Decode` and `Set_Record_R_PDU::Encode` due to not enough padding
198 -   Error checking bug in `Resupply_Received_PDU::Decode` and `Service_Request_PDU::Decode`
199 -   Bug in `Transmitter_PDU::Transmitter_PDU` where `AntennaPatternLength` was using the wrong data type
200 -   Bug in `Data_Query_PDU::SetVariableDatum` where the length had a wrong value
201 -   Bug in `MinePaintScheme` due to not using the correct variable for `SetPaintScheme` and `GetPaintScheme`
202 -   `ArticulatedPart` parameter type variant field had incorrect high and low bits
203 -   `ArticulatedPart` Parameter type value field should have been `KFLOAT32` and not `KUINT64`
204 -   Bug in `TimeStamp::SetTimeStampType`
205 -   Bug in `EmitterBeam::SetEmitterBeamFunction` due to missing implementation
206 -   Bug in `EmitterBeam::ClearTrackedJammedTargets` due to invalid length value
207 -   Bug with `EmissionSystem` data length being set to bytes and not words
208 -   Enum `CollisionType` had inelastic and elastic values mixed up
209 -   Bug compiling `Link 16` example when using the `dll` version of `KDIS`
210 -   `Data_PDU::RequestID` was not set to `0` by default causing junk values
211 -   Bug in `Directed_Energy_Fire_PDU` encode and decode functions were not including padding
212 -   Bug in `FactoryDecoder` when calling the clear function. If a single object was used to handle more than 1 enum it would attempt to delete it multiple times(one per enum)
213 -   Bug with `GuidedMunitionsAppearance` when using the `dll` version of `KDIS`
214 -   Bug in `GetNextPDU` function when an error occurs, the next call was using corrupted data
215 -   Incorrect function name in `EllipsoidRecord2`. Function `GetSigma` should have been `GetDOverDt`
216 -   Invalid symbolic names
217 -   Compilation bug when using _Visual Studio 2010 Express_ due to `WIN32` was not defined
218 -   Comment _you have to cmake . cmake . before building_ (thanks Bud Davis)
219 -   Missing license header in some files
221 ## 2.7.0 - 2013-01-31
223 ### Changed
225 -   License from `LGPL` to `FreeBSD`
226 -   Renamed `COLLISION_THRSH_DFLT` to `COLLISION_THRSH` and `EE_EL_THRSH_DFLT` to `EE_EL_THRSH` in `KSynmbolicNames.h`
227 -   Default `DIS` version is `DIS 7` when using `CMake`
228 -   From `ProtocolVersion IEEE_1278_1_200x` to `IEEE_1278_1_2012` in `EnumHeader.h`
230 ## 2.6.0 - 2012-12-18
232 ### Added
234 -   `KDIS::PDU::Bundle` class to support sending PDU Bundles
235 -   `Example_Bundle` to show how to send PDU Bundles
236 -   Support to `Connection` class to handle PDU Bundles via `GetNextPDU` function.
237 -   Operators `==` and `!=` to `KDataStream`
238 -   `Send(const KDataStream& stream)` function in `Connection` class
239 -   Comment in `SetProtocolVersion` function to clear some common questions about how `KDIS` sets the `ProtocolVersion`
241 ### Changed
243 -   `Example_PDUFactory` to support PDU Bundles
244 -   `CopyFromBuffer` parameter `SerialData` is `const`
246 ### Fixed
248 -   Bug in `CulturalFeatureAppearance::SetEntityExteriorLights` where an invalid value was being assigned
249 -   Bug in `Transmitter_PDU::Encode` function
251 ## 2.5.0 - 2012-08-08
253 ### Added
255 -   `Cultural` and `Sensor/Emitter` appearances
257 ### Changed
259 -   Extended the appearance type classes so they now contain all the appearance data instead of just the specific in `EntityAppearance`. The general appearance data was not always used in the same way
260 -   `Data_Query_PDU` and `Data_Query_R_PDU` time interval field to use the `TimeStamp` class instead of a `KUINT32`
262 ### Removed
264 -   Removed General and Specific Appearance classes from `EntityAppearance`
266 ### Fixed
268 -   Bug in `EnumDetonationResult`
270 -   Bug in `TimeStamp::CalculateTimeStamp` where the `Linux` version was not using `nano secs`
272 ## 2.4.0 - 2011-12-14
274 ### Added
276 -   `Link16_Signal_PDU` PDU
277 -   `Link16_Transmitter_PDU` PDU
278 -   `GetEnumFromString<Enum Name>` function allowing to convert an enum string to value and value to enum
279 -   Added missing enums in `EmitterName`
281 ### Changed
283 -   Examples are now sorted in sub directories by their category
284 -   `CMake` files to generate solution directories to better organize projects. Mainly a _Visual Studio Pro_ (not _Visual Studio Express_) feature. Controlled by the `CMake` flag `USE_SOLUTION_FOLDERS`
285 -   Renamed enum descriptors in `EnumInformationOperations.cpp` to align with naming convention used in other enum files
287 ### Fixed
289 -   Bug in `Data_Query_PDU` and `Data_Query_R_PDU` where variable and fixed Datum's were being used instead of just ID's
290 -   Improvements to `DeadReckoningCalculator::GenerateSmoothingPoints`
291 -   Bug in `CMake` for `DIS 7` when using `KDIS` as a `DLL` since it was including `EnumInformationOperations.cpp`
292 -   Bug in Collision PDU where the variable `m_f32Mass` was not being encoded/decoded
293 -   Bug in several `GetEnumAsString<Enum Name>` functions where the size of their descriptors was using the incorrect value
294 -   Some classes were not setting variables to `0` by default
295 -   Bug in `EncodingScheme` due to incorrect size
296 -   Invalid enums in `EmitterName`
298 ## 2.3.0 - 2011-07-27
300 ### Added
302 -   `Directed_Energy_Fire_PDU` PDU
303 -   `Entity_Damage_Status_PDU` PDU
304 -   `EntityMarking` support for `string` instead of `char[]`
305 -   `Vector::GetMagnitude`, `Vector::GetDistance`, and `WorldCoordinates::GetDistance` functions
306 -   Missing PDUs in `PDU_Factory`
308 ### Changed
310 -   Function `send` in `Connection` returns the number of bytes sent instead of `void`
312 ### Removed
314 -   `LGPL` licence header from examples. All examples are unlicenced
316 ### Fixed
318 -   `APA` class `public` union should have been `private`
319 -   Memory leak in `Connection` class where the `PDU_Factory` was not being deleted
321 ## 2.2.0 - 2011-05-30
323 ### Added
325 -   `Attribute_PDU` PDU
326 -   `FactoryDecoder` class to add custom decoders. Current data types that now support this feature are `VariableDatum`, `FixedDatum`, `EnvironmentRecord`, and `StandardVariable`
327 -   Further enumerations for `DatumID` field, taken from `SISO-REF-010-2010 RC3`
328 -   `Header6` and `Header7`, based on the `DIS_VERSION`, alias of `Header`
329 -   `Header7` features all PDU Status fields and codes from `DIS 7` standard
330 -   `ConnectionAddressFilter` class, in `NETWORK` namespace, allowing for filtering by IP address
331 -   `ConnectionAddressFilter` example
332 -   `FactoryDecode` function to `EnvironmentRecord`. All derived classes can now be decoded using this function
333 -   `ClearVariableDatumList` to `Aggregate_State_PDU`
334 -   `CMake` option `BUILD_EXAMPLES`
335 -   [`astyle`](https://sourceforge.net/projects/astyle) to fix code format
337 ### Changed
339 -   In order to support custom data types some PDU now store internal objects as pointers. Some PDU interfaces have been changed to reflect this. StandardVariable Factory Decode functions have also been changed
340 -   Performance improvements (_~20%_) to `KDataStream` encode and decode functions
341 -   Renamed _LE_ directory to _Live_Entity_ for better naming style with other PDU family directories
342 -   `Environment_Process_PDU` decode function to use the new `FactoryDecode` function from `EnvironmentRecord`
343 -   From `#if DIS_VERSION >= 7` to `#if DIS_VERSION > 6` for compiling with `MinGW`
345 ### Removed
347 -   `PDUStatusTEILVC`
349 ### Fixed
351 -   Bug in `Transmitter_PDU::GetAsString` where the length of Modulation Param was not being output correctly
352 -   Bug in `PDU_Factory` decode function that prevented PDU bundling
353 -   Compilation error in `Connection.cpp`, for some versions of Linux, due to `Connection::SendPDU(Header *H)` did not match the header signature
354 -   When using none blocking sockets in `Connection::GetNextPDU` the `OnDataReceived` event was called even when no data is received
355 -   Corrected `DetonationType` enum values
356 -   Compilation warning with some compilers due to files not ending with a newline
358 ## 2.1.1 - 2010-12-23
360 ### Added
362 -   `SendPDU` function to `Connection` class
364 ### Changed
366 -   Example `Env Proc PDU` to show the usage of `SendPDU` function
367 -   `ConnectionSubscriber` to allow for making changes on pdu transmit
369 ## 2.1.0 - 2010-12-22
371 ### Added
373 -   `IO_Action_PDU` PDU
374 -   Namespace called `NETWORK` where is available the new `Connection` class, a cross platform `DIS` centric socket
375 -   Example `Example_PduFactory2` to show the usagew of the new `Connection` class
376 -   `Decode` function to `PDU_Factory`. It is now simple to add support for custom PDU classes by overriding the function in custom factory classes
377 -   Missing `GetEnumAsString` calls for various enums
378 -   `KDataStream::GetBufferPtr` function to improve performance over using `CopyIntoBuffer` function
379 -   Missing function `GetEnumAsStringDetailAmplitude`
381 ### Changed
383 -   Improved clarity and appearance of various `GetAsString` functions
384 -   Examples to use the new `KDataStream::GetBufferPtr` function
385 -   `KException` to inherit from `std::exception` allowing for catching `KDIS` exceptions with standard exceptions
386 -   Examples to use `KException` as a standard excpetion
387 -   Renamed all example projects to start with `Example_` except for the `dll` and `lib` examples
389 ### Removed
391 -   `KSockets`
392 -   Redundant code from `KDataStream::CopyFromBuffer`
393 -   Unused variables in `VaiableDatum.cpp`
395 ### Fixed
397 -   Bug in `EntityType::ReadFromTokenisedString` where the string being passed was unexpectedly changed by the `strtok` function
398 -   Bug in `Point_Object_State_PDU` where the final padding field had not been included
399 -   Bug in `GetEnumAsStringEmitterName` where some values were not sorted correctly
400 -   Bug when using `bitset` in `MS Visual Studio 2010`
402 ## 2.0.1 - 2010-09-01
404 ### Added
406 -   `SetSupplies` function to `Resupply_Received_PDU`
408 ### Changed
410 -   Code refactor. Removed unnecessary `using namespace` statements and replaced with `using` statements to allow for _Intelisense_ to correctly display the contents of a namespace
411 -   Moved `EMITTER_BEAM_SIZE`, `EMITTER_SYSTEM_SIZE`, `OBJECT_TYPE_SIZE`, `POINT_OBJECT_APPEARANCE_SIZE`, and `SUPPLIES_SIZE` to class scope
412 -   `ENTITY_DESTINATION_RECORD`, `GROUP_DESTINATION_RECORD`, `GROUP_ASSIGNMENT_RECORD` from a macro to `static const KUINT16`
413 -   Rename `ENTITY_DESTINATION_RECORD`, `GROUP_DESTINATION_RECORD`, and `GROUP_ASSIGNMENT_RECORD` to `[NAME]_SIZE`
414 -   Moved `GEDItem`, `GEDList`, `GridAxisDescriptor`, `GridDataPtr`, `EnvironmentRecordPtr`, and `EnvironmentRecordLst` from `PDU` namespace to `DATA_TYPE`
416 ### Fixed
418 -   Minor typos
420 ## 2.0.0 - 2010-08-31
422 ### Added
424 -   All `DIS 6` (_IEEE 1278.1a_) PDUs
425 -   `TSPI_PDU` PDU
426 -   `Appearance_PDU` PDU
427 -   `Articulated_Parts_PDU` PDU
428 -   `LE_Fire_PDU` PDU
429 -   `LE_Detonation_PDU` PDU
430 -   Missing PDUs in `PDU_Factory`
432 ### Changed
434 -   `GetAsString` functions to improve formatting
436 ### Fixed
438 -   Bug in point, linear and areal appearance classes. The endian was not being swapped when encoding/decoding
439 -   Bug in `Entity_State_Update_PDU` decode function
440 -   Bug in `DecimalToDMS` when passing negative values
442 ## 1.16.0 - 2010-06-28
444 ### Added
446 -   `Minefield_Query_PDU` PDU
447 -   `Minefield_Data_PDU` PDU
448 -   `Minefield_Response_NACK_PDU` PDU
449 -   Missing PDUs in `PDU_Factory`
450 -   Clear functions to some of the variable fields
452 ### Changed
454 -   Postfix `d` for debug `lib` and `dll` example binaries. The postfix value can be changed via `CMake` variable `CMAKE_DEBUG_POSTFIX`
455 -   Entity state pdu throw exception if `InitDeadReckoning` is not called before `ApplyDeadReckoning`
456 -   All `GetAsString<Enum Name>` functions of `EnumMinefield` to use the optimized `GetAsString` function instead of the old linear search algorithm
458 ### Fixed
460 -   Bug in `VariableDatum` decode where the datum value vector was not being cleared on each decode
461 -   `Minefield_Header` protocol family and version were not being set
462 -   Bug in `CreateTokenisedString` where the extra value was not being added to the string
463 -   Functions `GetEnumAsString<Enum Name>` for all minefield enums were not correctly defined
464 -   Invalid values (over 135) for `PDUType` enum. This affected linear, object and point state PDU from the `Synthetic_Environment` family
465 -   Bug in `LinearObjectAppearance` and `ArealObjectAppearance` encode and decode functions where 1 extra octet was being encoded/decoded
466 -   Typo from `SIMULATION_IDENTIFER_SIZE` to `SIMULATION_IDENTIFIER_SIZE`
467 -   Bug in `SpecificAppearance::GetAsString` was using `Kind` value instead of `Domain` (thanks David)
468 -   Bug in minefield state pdu where the PDU type was incorrect
469 -   Bug in `RecordSet::SetRecordValues` where the length was incorrect
471 ## 1.15.1 - 2010-05-17
473 ### Fixed
475 -   PDU length in `Minefield_State_PDU`
476 -   Bug in `MinefieldAppearance` where the struct and union were in wrong order
478 ## 1.15.0 - 2010-05-11
480 ### Added
482 -   `Areal_Object_State_PDU` PDU
483 -   `Minefield_State_PDU` PDU
484 -   Change kind value of `EnvironmentType`
485 -   Filters to `PDU_Factory`. It is now possible to filter what PDU get through
486 -   Missing PDUs in `PDU_Factory`
487 -   `PDU_Factory` filter examples
488 -   `ReadFromTokenisedString` and `CreateTokenisedString` to `EntityType`. This allows for a tokenized string (such as `csv`) to be parsed into the entity type
489 -   Improved timestamps automatic calculation to include milliseconds for Windows and Linux
490 -   Additional operator overloads to `Vector`, `EulerAngles`, and `WorldCoordinates`
492 ### Changed
494 -   All PDU size macros have been moved into the relevant classes namespace with `public` attribute and type changed to `static const KUINT32`
495 -   Renamed `GENERAL_APPEARANCE__SIZE` to `GENERAL_APPEARANCE_SIZE`
496 -   All entity specific appearance classes to invert/negate the _Entity State Active_ value. In this case the `DIS` standard actually states that `0` indicates the state `true` and `1` the state `false`
497 -   Dead reckoning is no longer done through static functions. Each entity must have a dead reckoning calculator class to perform the dead reckoning correctly
499 ### Removed
501 -   `GED_BasicFixedWingAircraftt`
503 ### Fixed
505 -   PDU length in `Linear_Object_State_PDU::SetLinearSegmentParameters`
506 -   Bug in all `EnvironmentRecords` where the length value should not include the length of the `EnvironmentRecord` header
507 -   `CMake` bug that caused example `Environmental_Process_PDU` to only be included in `DIS 7`; should have been `DI 6` and `DIS 7`
508 -   Mismatch between entity location and world location in `Detonation_PDU` constructor
509 -   Typo `m_EntiyCapabilities` in `Entity_State_PDU`
510 -   Public accessibility on Param Type Variant union in `ArticulationParameters`
512 ## 1.14.0 - 2010-03-17
514 ### Added
516 -   `Linear_Object_State_PDU` PDU
518 ### Changed
520 -   PDU factory example avoid closing on PDU exceptions. It now prints the error and continues
522 ### Fixed
524 -   Bug in `AggregateMarking` encode and decode functions 1 octet offset causing problems with Aggregate State PDU's
525 -   Bug in `EncodingScheme` when compiling to Linux. This change was reported in `1.13.0` but not included
527 ## 1.13.0 - 2010-02-26
529 ### Added
531 -   `Point_Object_State_PDU` PDU
532 -   `EulerToHeadingPitchRoll` conversion to `KConversions.h`
533 -   `SetTimeStampAutoCalculate`, `IsTimeStampAutoCalculate`, and `CalculateTimeStamp` to `TimeStamp`. Attempts to automatically calculate the timestamp when the encode function is called
535 ### Changed
537 -   Renamed variables of `HeadingPitchRollToEuler` from `EulX`, `EulY`, and `EulZ` to `Psi`, `Theta`, and `Phi`
538 -   `Entity_State_PDU` and `Environmental_Process_PDU` examples to use the new automatic timestamp calculation
540 ### Fixed
542 -   Bug in `HeadingPitchRollToEuler` conversion
543 -   Typo from `Entity_Infomation_Interaction` to `Entity_Information_Interaction`
544 -   Bug in `EncodingScheme` when compiling to Linux
546 ## 1.12.1 - 2009-12-16
548 ### Added
550 -   `Gridded_Data_PDU` new constructor
552 ### Changed
554 -   `EntityIdentifier` and `AggregateIdentifier` derive from `SimulationIdentifier`
555 -   `VariableDatum` to pass `const KString` references (thanks Anthony)
556 -   `SimulationIdentifier` function `GetAsString` write _Object_ instead of _Entity_
558 ### Fixed
560 -   Bug in `Gridded_Data_PDU` where `GRIDDED_DATA_PDU_SIZE` was incorrectly set to `32` instead of `64`
561 -   Bug where all protected PDU status member variables belonging to the `Header` class to become `public`. Caused by using anonymous unions
562 -   Compilation error _Compiler Error C2635_ when casting from `Header` to a derived class. Caused by `virtual` inheritance
564 ## 1.12.0 - 2009-11-23
566 ### Added
568 -   `Gridded_Data_PDU` PDU
569 -   Missing PDUs in `PDU_Factory`
571 ### Changed
573 -   All `GetEnumAsString` functions use a single optimized search function
574 -   Renamed `Send` example to `Entity_State_PDU`
576 ### Fixed
578 -   Bugs in some `GetEnumAsString` functions
579 -   Bug in `Intercom_Control_PDU::GetAsString` and `Intercom_Control_PDU::Encode` iterators
580 -   Incorrect `null` termination text in `EntityMarking` (thanks Anthony)
582 ## 1.11.1 - 2009-09-21
584 ### Added
586 -   Macro to `PDUStatusTEILVC` to only include if `DIS 7`
588 ### Removed
590 -   Obsolete files (`BoundSphere.h` and `BoundSphere.cpp`) in `DataTypes` directory
592 ### Fixed
594 -   `CMake` not includes `Environmental_Process_PDU` when `DIS 5` is defined
595 -   Bug in `Radio_Communications_Header` where `DIS 7` macros are not defined in the correct place
596 -   Bug in `LineRecord2` and `PointRecord2` where the comparison operator would cause an infinite loop
598 ## 1.11.0 - 2009-09-16
600 ### Added
602 -   `Environmental_Process_PDU` PDU
603 -   `Environmental_Process_PDU` example
604 -   `DecimalToDMS` and `DMSTODecimal` to `KConversions.h`
605 -   Initial support for `DIS` version `7`. `DIS` version can be specified via `CMake` or pre-processor definitions
606 -   `PDUStatus` in `Header` (`DIS 7`). `PDUStatus` includes getters and setters for `PDUStatusTransferredEntityIndicator` and `PDUStatusLVCIndicator` to `Entity_State_PDU`, `Electromagnetic_Emission_PDU`, `Designator_PDU`, `Radio_Communications_Header`, `IFF_ATC_NAVAIDS_PDU`, `Electromagnetic_Emission_PDU`, and `Entity_State_Update_PDU`. Getter and setters for `PDUStatusFireType` to `Fire_PDU`. Getter and setter for `PDUStatusDetonationType` to `Detonation_PDU`. Getter and setter for `PDUStatusAttachedIndicator` to `Transmitter_PDU`, `Signal_PDU`, `Receiver_PDU`, `Intercom_System_PDU`, and `Intercom_Control_PDU`
607 -   `SetWritePosition` and `GetWritePosition` functions to `KDataStream` allowing data "peaking"
608 -   Missing PDUs in `PDU_Factory`
609 -   `KException` new constructor allowing for more details to be added
611 ### Changed
613 -   `Send` example uses a while loop to continuously send the PDU. Some applications do not always pick up the first PDU
615 ### Fixed
617 -   Some of the `Vector` operators would return the referenced objects and not the new copy of the object. This effected operators `*`, `+` and `-` (thanks Michael)
618 -   Typo in `VariableDatum::GetAsString()` function. "Fixed Datum:" should have been "Variable Datum:"
619 -   Timer in `Logger` playback is not started until the log is fully loaded
621 ## 1.10.0 - 2009-08-08
623 ### Added
625 -   `Dead Reckoning` implementation in class `DeadReckoningCalculator`. This class calculates dead reckoning transformations for all dead reckoning algorithms. This feature is currently in `BETA` until all algorithms are verified to work correctly
626 -   `<` operator to `EntityType`, `AggregateType`, `AggregateIdentifier`, and `ClockTime`
627 -   `*`, `+`, `+=`, `-`, `-=`, and `[]` operators to `EulerAngles`, `WorldCoordinates`, and `Vector`
628 -   `ApplyDeadReckoning` function to `Entity_State_PDU`
630 ### Changed
632 -   Namespaces are no longer global when included in a KDIS header. This prevents KDIS from conflicting with other class/struct/enums that have the same name
634 ## 1.9.2 - 2009-07-30
636 ### Added
638 -   Missing destructor implementation to `Action_Response_R_PDU`
639 -   `virtual` to all destructors to it is called even when a base pointer is deleted
640 -   `==` and `!=` operators to all data types and PDUs
641 -   `<` operator to `EntityIdentifier`, and `TimeStamp`
642 -   More comments
644 ### Fixed
646 -   Incorrect namespace references in function comments
648 ## 1.9.1 - 2009-07-26
650 ### Added
652 -   Additional comments to several PDUs to help further explain each field
653 -   `GetEnumAsString<Enum Name>(KINT32 Value)` function to all enumerations. These functions return the string value for an enumeration (`99` -> `"Value"`). It can be enabled/disabled by declaring the macro `KDIS_USE_ENUM_DESCRIPTORS` in the pre-processor definitions or in `KDefines.h` file. This feature makes the library significantly larger: disable if not used. When disabled the `GetEnumAsString<Enum Name>` functions return the enumerated value as a string (`99` -> `"99"`).
654 -   Website based on `MediaWiki` available at <https://sourceforge.net/p/kdis/wiki/Main_Page>
656 ### Changed
658 -   Moved remaining enumerations from `KDISEnums.h` to `EnumEntityInfoInteraction.h`
659 -   Replaced all uses of `strnset` with `memset`
660 -   Default constructor initialize all data types to zero (if not already)
661 -   `Send` example shows how to correctly use the timestamp
663 ### Removed
665 -   Self-explanatory comments to several PDUs
666 -   `vc2008.zip` file
668 ### Fixed
670 -   Bug in `FixedDatum` where `KDIS_EXPORT` is defined inside the template functions causing problem if compiling as a DLL shared library
672 ## 1.9.0 - 2009-07-06
674 ### Added
676 -   `IsGroupOf_PDU` PDU
677 -   `IsPartOf_PDU` PDU
678 -   `MAX_PDU_SIZE` of `8192` from `1278.1-200X` standard
679 -   `KRef_Ptr` class. This is an implementation of referenced pointer, designed to prevent memory leaks where memory needs to be dynamically allocated
680 -   `HeadingPitchRollToEuler` to `KConversions.h`
682 ### Changed
684 -   Country Type in `EntityType` constructor from `KUINT8` to `KUINT16`
686 ### Removed
688 -   `using namespace std` directives from header files to prevent `std` attributes being exposed in the global namespace causing potential clashes
690 ### Fixed
692 -   Some catch blocks catch all exception types rather than just `KException`
694 ## 1.8.2 - 2009-05-26
696 ### Changed
698 -   `Linux` support (thanks Anthony)
699 -   Reference from `UINT16` to `KUINT16`
700 -   From `sizeof DataType` to `sizeof(DataType)`
701 -   `#include` use forward slash (`/`) instead of back slash (`\`)
702 -   `#include` match the case of the file name
703 -   `#include` added `./` to all relative paths
705 ### Removed
707 -   Additonal `IntercomCommunicationsParameter` includes from `CMake` file
708 -   Reference to `winsock2.h` in `KEncoderDecoders`
710 ### Fixed
712 -   `DIS_Logger_Record.cpp` throw qualifier missing on `writeToFile` function
713 -   Bug in `SystemIdentifier` where the union and struct were in the wrong order
715 ## 1.8.1 - 2009-05-25
717 ### Fixed
719 -   Bug in `SwapBytes` that caused the endian to not be correctly swapped
721 ## 1.8.0 - 2009-05-13
723 ### Added
725 -   `Record_R_PDU` PDU
726 -   `Record_Query_R_PDU` PDU
727 -   `Set_Record_R_PDU` PDU
729 ### Removed
731 -   `RecordSpecification` data type. Record Sets are now placed directly into a PDU. When a change is made to a `RecordSpecification` parameter it was not always possible to update the PDU size. Removing `RecordSpecification` fixes this problem. This only effects `Transfer_Control_PDU`
733 ### Fixed
735 -   Bug in `FixedDatum` that caused template functions to give linker errors due implementation in source file instead of header file
737 ## 1.7.0 - 2009-05-11
739 ### Added
741 -   `Data_Query_R_PDU` PDU
742 -   `Set_Data_R_PDU` PDU
743 -   `Data_R_PDU` PDU
744 -   `Event_Report_R_PDU` PDU
745 -   `Set_Data_PDU` new constructor
746 -   `Data_Query_PDU` new constructor
747 -   `Set_Data_PDU` new constructor
748 -   `Event_Report_PDU` new constructor
749 -   `PDU_Factory` support for all PDUs
750 -   Comments to existing PDU's to further explain their usage
752 ### Changed
754 -   `Data_PDU` constructor from `(KUINT32 RequestID)` to `(const EntityIdentifier, OriginatingEntityID)`, and `(const EntityIdentifier, ReceivingEntityID, KUINT32 RequestID)`
755 -   `Action_Request_PDU` changed constructor from `(KUINT32 RequestID, KUINT32 ActionID)` to `(const EntityIdentifier, OriginatingEntityID)`, `(const EntityIdentifier, ReceivingEntityID)`, and `(KUINT32 RequestID, KUINT32 ActionID)`
757 ### Fixed
759 -   Duplicate includes in `CMake` file
760 -   Missing `Intercom_Control_PDU` entry
762 ## 1.6.0 - 2009-03-30
764 ### Added
766 -   `Transfer_Control_Request_PDU` PDU
767 -   `Create_Entity_R_PDU` PDU
768 -   `Remove_Entity_R_PDU` PDU
769 -   `Start_Resume_R_PDU` PDU
770 -   `Stop_Freeze_R_PDU` PDU
771 -   `Acknowledge_R_PDU` PDU
772 -   `Action_Request_R_PDU` PDU
773 -   `Action_Response_R_PDU` PDU
774 -   `Comment_R_PDU` PDU
775 -   `IFF_ATC_NAVAIDS_L2_PDU` PDU missing fundamental parts
776 -   Added additional enumeration values taken from `SISO-REF-010 Changes`
777 -   `Start_Resume_PDU` new constructors
778 -   `Stop_Freeze_R_PDU` new constructors
779 -   `Electromagnetic_Emission_PDU` two new constructors
780 -   `IFF_ATC_NAVAIDS_L1_PDU ` new constructor
782 ### Changed
784 -   Moved all enumerations that belong to Entity Info/Interaction into `EnumEntityInfoInteraction.h`
785 -   Moved all enumerations that belong to Simulation Management Info/Interaction into `EnumSimulationManagement.h`
786 -   `DatumID` enumerations are now appended with `Record` instead of `Datum`
787 -   All PDU automatically set the Protocol Version
789 ### Removed
791 -   `KDIS_NEWORK_ENDIAN` from `KDefines.h`
792 -   Removed line in `Example_Send` that sets the Protocol Family as this is now done automatically in the constructor
794 ### Fixed
796 -   Bug in `GetData` function of `Signal_PDU`
797 -   Bug in `Decode` function of `Create_Entity_PDU`
798 -   Bug in `CMakeLists.txt` where file `Entity_State_Update_PDU.h` was not being included
799 -   Bug in `Simulation_Management_Header` constructor where protocol family is not set
800 -   Bug in `SEES` constructor where protocol family is not set
802 ## 1.5.4 - 2009-03-12
804 ### Fixed
806 -   Bug in `GetData` function of `Signal_PDU`
808 ## 1.5.3 - 2009-03-11
810 ### Added
812 -   Interface in `VariableDatum` for setting an arbitrary binary stream
814 ### Fixed
816 -   `VariableDatum` encoding and decoding
817 -   `VariableDatum` bits/bytes mix up
818 -   Typos in comments
819 -   Because of needless `Microsoft Word` garbage, the changelog has been rewritten
821 ## 1.5.2 - 2009-03-04
823 ### Fixed
825 -   `Comment_PDU` constructor where the PDU type and length were not initialized
826 -   `DESIGNATOR_PDU_SIZE` was incorrect, should be `88`, due to a typo in the `IEEE` standard
827 -   `EncodingScheme` bits were incorrect on Big Endian machines
829 ## 1.5.1 - 2009-03-02
831 ### Added
833 -   Support for `DIS` version `5` in `PDU_Factory `
835 ### Fixed
837 -   `FuseType` enumeration has previously incorrect values
838 -   `CMake` bugs when building with `DIS` version `5`
840 ## 1.5.0 - 2009-02-20
842 ### Added
844 -   `Intercom_Control_PDU` PDU
845 -   `Aggregate_State_PDU` PDU
846 -   `KDIS_LIB` (static library) and `KDIS_DLL` (shared library) examples
847 -   [`CMake`](https://cmake.org) which is a cross-platform, open-source build system. The `CMake` file has certain options that allow to specify the version of `DIS` to use (`5` or `6`) and if to link against a `static` or `shared` library. Any future examples will require the use of `CMake`
849 ### Changed
851 -   `KDataStream` only accepts `KUINT16` rather than `KUINT32`, which could have resulted in various buffer overrun problems
852 -   `KDIS_EXPORT` macro now searches the project for preproccesor deflagrate. Use either `EXPORT_KDIS` or `IMPORT_KDIS`. _E.g: `/D "EXPORT_KDIS"`_
854 ## 1.4.0 - 2009-02-05
856 ### Added
858 -   `Intercom_Signal_PDU` PDU
859 -   `DIS_Logger_Record` and `DIS_Logger_Playback`, which logs PDUs to a text file so that they can be replayed, have been added to `Extras`
860 -   `DIS_Logger_Record` and `DIS_Logger_Playback` examples. Included captured data is generated by `MAK VR-Forces 3.10`
861 -   `GetAsString` and `ReadFromString` functions to `KDataStream`. `GetAsString` converts the data stream into a hex string, whereas `ReadFromString` converts the string into a `KDataStream`. These two functions allow DIS data to be logged to a file and viewed at a later time
863 ## 1.3.1 - 2009-01-30
865 ### Removed
867 -   References to the incomplete `Intercom_Signal_PDU` from `PDU_Factory`, which should not have been accessible
869 ## 1.3.0 - 2009-01-24
871 ### Fixed
873 -   Bugs in `Signal_PDU` where `SetData` did not set the `DataSize` and `GetData` was returning the padding that was added to the data
874 -   Bug in `Entity_State_PDU` where `EntityAppearance` was being encoded incorrectly
875 -   Typo in `SurfacePlatformAppearance::GetAsString` from _Space Platform Appearance_ instead of _Surface Platform Appearance_
877 ## 1.2.0 - 2008-12-21
879 ### Added
881 -   `Collision_Elastic_PDU` PDU
882 -   `Entity_State_Update_PDU` PDU
883 -   `FF_ATC_NAVAIDS_PDU` PDU
884 -   Class `PDU_Factory` that converts a data stream into the correct PDU and returns an `auto_ptr` to the new PDU
885 -   Example to show how to use `PDU_Factory`
886 -   Namespace `UTILS`
887 -   `KConversions.h`, which includes `RadToDeg`, `DegToRad`, `MetersToFeet`, `FeetToMeters`, and `GeodeticToGeocentric`, has been added to `UTILS`
888 -   `DIS` version a PDU belongs to in the header comments
890 ### Changed
892 -   All `GetFunctions` that previously returned an object now return a reference/const reference
893 -   All examples have been integrated into a single directory
894 -   All examples now use an updated version of `KSOCKETS`. However, it is still recommended to use your own socket library
895 -   Renamed `Electronmagnetic_Emission_PDU` to `Electromagnetic_Emission_PDU`
896 -   Licence from `GPL` to `LGPL`
897 -   Changelog in HTML format
898 -   `IsMachineBigEndian` use static variables providing a very small performance boost
900 ### Removed
902 -   `#ifdef _win32` for primitive data types in `KDefines.h` that was prevented any other OS from working
904 ### Fixed
906 -   Bug in `Comment_PDU` where the PDU length was incorrect while reading variable datum lengths since the returned variable datum lengths value was in bits
908 ## 1.1.1 - 2008-10-28
910 ### Added
912 -   `vc9` send example
914 ## 1.1.0 - 2008-10-27
916 ### Added
918 -   `AntennaLocation` new constructor
919 -   `BurstDescriptor` new constructor
920 -   `DeadReckoningParameter`new constructor
921 -   `EmissionSystem` new constructor
922 -   `EmitterBeam` new constructor
923 -   `EncodingScheme` 2 new constructors
924 -   `GeneralAppearance` new constructor
925 -   `TimeStamp` new constructor
926 -   `Entity_State_PDU` new constructor
927 -   `Collision_PDU` new constructor
928 -   `Repair_Complete_PDU` new constructor
929 -   `Repair_Response_PDU` new constructor
930 -   `Radio_Communications_Header` new constructor
931 -   `Receiver_PDU` new constructor
932 -   `Signal_PDU` new constructor
933 -   `Transmitter_PDU` new constructor
934 -   `Acknowledge_PDU` new constructors to auto generate a response depending on the PDU
936 ### Changed
938 -   `BurstDescriptor` function `SetMunition` pass by reference
939 -   `DeadReckoningParameter` function `setDeadReckoningAlgorithm` pass by value
940 -   Renamed `m_ui16Fire` to `m_ui16Fuse`
942 ### Removed
944 -   `EmitterBeam` removed typing error in `Set6BeamParamIndex` and `Get6BeamParamIndex`
946 ### Fixed
948 -   Bug in `vc9` example that checked for `Data_PDU` instead of `Entity_State_PDU`
950 ## 1.0.1 - 2008-10-24
952 ### Changed
954 -   `Signal_PDU` data length is number of bits instead of octets