KDIS Change Log Version Numbers: X -Y -Z X - Major Change, changing DIS version. Y - Medium, introduction of new features, data types or PDU etc Z - Minor, small changes, new functions, comments, bug fix etc. Please post bugs/suggestions/comments to the SourceForge forum/tracker

Future Releases

Plans for future releases are currently:

- Implement DIS Version 7 changes and PDU's.
- Dead Reckoning - verify all algorithms work correctly.
- Examine V-DIS standard for potential KDIS extension..
- Conversions for multiple datum's and orientation representations.
- Improve GetAsString formatting.
- Finish Link 16 integration

Version 2-5-0 | 8 July 2012

- Changes have been made to the EntityAppearance class. Removed General and Specific Appearance classes. Extended the appearance type classes so they now contain all the appearance data instead of just the specific. The general appearance data was not always used in the same way so it made more sense to do it like this which is more flexible.
- Added 2 missing appearances - Cultural & Sensor/Emitter.
- Updated Data_Query_PDU and Data_Query_R_PDU Time Interval field to now use the TimeStamp class instead of a KUINT32.
- Fixed bug in EnumDetonationResult.
- FIxed bug in TimeStamp::CalculateTimeStamp, Linux version was not using nano secs.

Version 2-4-0 | 14 Dec 2011

- Started Adding Link 16 integration taken from SISO-STD-002-2006. This can be found at Examples/Extending/Link16. Includes new PDU:
  - Link16_Signal_PDU
  - Link16_Transmitter_PDU
- Added GetEnumFromString..., It is now possible to convert an enums name to its value as well as value to enum. More info here.
- Fixed bug in Data_Query_PDU and Data_Query_R_PDU. Variable and Fixed Datum's were being used instead of just ID's.
- Some improvements to DeadReckoningCalculator::GenerateSmoothingPoints
- Some reorganizing of the examples. Examples are now sorted in sub folders by category.
- Changed cmake files to generate solution folders to better organise projects, This is not supported on all IDE, its mainly a Visual Studio Pro(Not Express) feature. Controlled by a new CMake flag called USE_SOLUTION_FOLDERS
- Fixed bug in cmake file for DIS 7 when using KDIS as a DLL. Was including EnumInformationOperations.cpp.
- Fixed bug in Collision PDU, variable m_f32Mass was not being Encoded/Decoded.
- Fixed bug in several GetEnumAsStrings, some of the functions were passing the incorrect size value for their descriptors.
- Fixed. Some classes were not setting variables to 0 by default.
- Fixed bug in EncodingScheme, incorrect size.
- EmitterName - Fixed some invalid enums and added some missing ones.
- Renamed enum descriptors in EnumInformationOperations.cpp to align with naming convention used in other enum files.

Version 2-3-0 | 27 July 2011

- Last 2 PDU from the DIS 7 draft 15, All DIS 7 PDU from draft 15 are now implemented:
  - Directed_Energy_Fire_PDU
  - Entity_Damage_Status_PDU
- EntityMarking - Added support for strings instead of char arrays.
- Added some new useful functions:- Vector::GetMagnitude, Vector::GetDistance, WorldCoordinates::GetDistance
- Connection send functions now return the number of bytes sent instead of void.
- Removed LGPL licence from examples. All the examples of using KDIS are now unlicenced. Please note the KDIS library is still LGPL. See here for further details.
- Updated PDU_Factory with new PDU's.
- Fixed APA class public union, it should have been private.
- Fixed memory leak in Connection class. PDU_Factory was not being deleted.

Version 2-2-0 | 30 May 2011

- New PDU from DIS 7 draft 15:
  - Attribute_PDU
- Added FactoryDecoder, this class can be used to add your own decoders. E,G you can add support for your own implementations of VariableDatum etc. See example FactoryDecoder for details. Current data types that now support this feature are: VariableDatum, FixedDatum, EnvironmentRecord and StandardVariable. More to come.
- In order to support custom data types(See above) some PDU now store internal objects as pointers, some PDU interfaces have had to change to reflect this. StandardVariable Factory Decode functions have also been changed. Apologies!
- Some performance improvments to KDataStream Encode/Decode functions. I found I had a 20%~ performance improvment.
- Added further enumerations for DatumID field taken from SISO-REF-010-2010 RC3
- Renamed "LE" folder to "Live_Entity" to fit more in line with the naming style of other PDU family folders.
- Added Header6 and Header7, based on the DIS_VERSION one will be typedef to Header. Header7 now features all the PDU Status fields from the DIS 7 standard. Removed PDUStatusTEILVC and moved all PDU Status code to Header7.
- Added ConnectionAddressFilter to NETWORK namespace and example to show use. This class allows filtering by IP address.
- Added new function to EnvironmentRecord called FactoryDecode, all derived classes can now be decoded using this function. Changed Environment_Process_PDU decode function to now use this.
- Fixed bug in Transmitter_PDU::GetAsString, Length Of Modulation Param was not being output correctly.
- Fixed bug in PDU_Factory decoding that prevented PDU bundling.
- Fixed compile bug in Connection.cpp for some versions of Linux. Connection::SendPDU( Header * H ) did not match the header version.
- Fixed bug in Connection::GetNextPDU. When using none blocking sockets the OnDataReceived event was called even when no data was received.
- Corrected DetonationType enum values.
- Added ClearVariableDatumList to Aggregate_State_PDU
- Fixed Warning. Some compilers were issuing warnings due to files not ending in a newline, this is now fixed.
- Added option to CMake to BUILD_EXAMPLES.
- Changed macro '#if DIS_VERSION >= 7' to '#if DIS_VERSION > 6' for compiling with MinGW.
- Run the code through AStyle to fix some of the formatting issues when viewing the code outside of Visual Studio.

Version 2-1-1 | 23 Dec 2010

- Added SendPDU to Connection class and changed Env Proc PDU example to show this in use.
- Small change to ConnectionSubscriber to allow for making changes on pdu transmit

Version 2-1-0 | 22 Dec 2010

- New PDU from DIS 7 draft 15:
  - IO_Action_PDU
- Added new namespace called 'NETWORK', this features the new Connection class, a cross platform DIS centric socket class.
- Added new example Example_PduFactory2. This example shows some of the new features of the Connection class.
- Removed KSockets.
- Added new Decode function to PDU_Factory. It is now simple to add support for your own PDU classes by overriding this function in your own factory classes.
- Improved clarity and appearance of various GetAsString functions. Added missing GetEnumAsString calls for various enums.
- Various little tweaks to optimize code.
- Added KDataStream::GetBufferPtr, this should add a small performance boost over using CopyIntoBuffer. Updated examples to use this feature.
- Fixed bug in EntityType::ReadFromTokenisedString, the string being passed was unexpectedly being changed by the strtok function.
- Removed some redundant code from KDataStream::CopyFromBuffer.
- Changed KException to inherit from std::exception. You can now catch KDIS exceptions with standard exceptions, changed examples to show this.
- Added missing function GetEnumAsStringDetailAmplitude.
- Fixed bug in Point_Object_State_PDU, the final padding field had not been included.
- Renamed all example projects to start with 'Example_' except the dll and lib examples.
- Fixed bug in GetEnumAsStringEmitterName, some values were not sorted correctly.
- Fixed bug when using bitsets in MS Visual Studio 2010.
- Removed unused variable(ii) in VaiableDatum.cpp.

Version 2-0-1 | 1 Sept 2010

- Large refactoring of code, removing unnecessary using namespace statements and replaced with using statements to allow for intelisense to correctly display the contents of a namespace. Typo fixes.
- Moved EMITTER_BEAM_SIZE, EMITTER_SYSTEM_SIZE, OBJECT_TYPE_SIZE AND POINT_OBJECT_APPEARANCE_SIZE, SUPPLIES_SIZE to class scopes.
- Changed ENTITY_DESTINATION_RECORD, GROUP_DESTINATION_RECORD, GROUP_ASSIGNMENT_RECORD from a macro to static const KUINT16.
- Added SetSupplies to Resupply_Received_PDU.
- Rename ENTITY_DESTINATION_RECORD, GROUP_DESTINATION_RECORD, GROUP_ASSIGNMENT_RECORD to [NAME]_SIZE.
- Moved GEDItem, GEDList, GridAxisDescriptor, GridDataPtr, EnviromentRecordPtr and EnviromentRecordLst from PDU namespace to DATA_TYPE.

Version 2-0-0 | 31 Aug 2010

- All DIS version 6 (IEEE 1278.1a) PDU's have now been implemented. This version includes the final 5 PDU's from the Live Entity(LE) family:

- TSPI_PDU
- Appearance_PDU
- Articulated_Parts_PDU
- LE_Fire_PDU
- LE_Detonation_PDU

- Fixed bug in point, linear and areal appearance classes. The endian was not being swapped when encoding/decoding.
- Fixed bug in Entity_State_Update_PDU Decode function.
- Fixed bug in DecimalToDMS when passing negative values.
- Changes to various GetAsString functions to improve formatting.
- Updated PDU Factory to support new PDU's and some Minefield PDU's that were left out in the last update.

Version 1-16-0 | 28 June 2010

- New PDU:
  - Minefield_Query_PDU
  - Minefield_Data_PDU
  - Minefield_Response_NACK_PDU
- Fixed bug in VariableDatum decode, the datum value vector was not being cleared on each decode.
- FIxed bug in Minefield_Header. Protocol family and version were not being set.
- Updated PDU_Factory with new PDU's
- Added postfix 'd' onto debug lib and dll example binaries. The postfix value can be changed through the CMake interface under the CMAKE_DEBUG_POSTFIX variable.
- Updated entity state pdu to throw exception if InitDeadReckoning is not called before ApplyDeadReckoning.
- Fixed bug in CreateTokenisedString, the extra value was not being added to the string.
- Fixed bug with GetEnumAsString.. for minefield enums. Functions were not correctly defined.
- Changed EnumMinefield so all GetAsString functions were using the optimised GetAsString function instead of the old linear search method.
- Fixed PDUType enum bug, I had some incorrect values (over 135), this effects linear, object and point state PDU from the Synthetic_Enviroment family.
- Fixed bug in LinearObjectAppearance and ArealObjectAppearance Encode & Decode function, 1 extra octet was being encoded/decoded.
- Typo fix: SIMULATION_IDENTIFER_SIZE to SIMULATION_IDENTIFIER_SIZE.
- Fixed bug in SpecificAppearance::GetAsString, was using Kind value instead of Domain.(Thanks David).
- Added clear functions to some of the variable fields such as Entity State PDU Articulation Parameters.
- Fixed bug in minefield state pdu, PDU type was incorrect.
- Fixed bug in RecordSet::SetRecordValues, length was incorrect.

Version 1-15-1 | 17 May 2010

- Fixed PDU length bug in Minefield_State_PDU.
- Fixed bug in MinefieldAppearance. struct and union were in the wrong order.

Version 1-15-0 | 11 May 2010

- New PDU:
  - Areal_Object_State_PDU
  - Minefield_State_PDU
- Fixed PDU length bug in Linear_Object_State_PDU::SetLinearSegmentParameters.
- Fixed bug in all EnvironmentRecords, the length value should not include the length of the EnvironmentRecord header.
- Fixed CMake bug that caused example Environmental_Process_PDU to only be included in DIS Version 7, should have been 6 and 7.
- All PDU size macros have been moved into the relevant classes namespace with public attributes and changed to static const KUINT32.
- Renamed GENERAL_APPEARANCE__SIZE to GENERAL_APPEARANCE_SIZE.
- Removed GED_BasicFixedWingAircraftt. An old file that was spelt incorrectly.
- Added support to EnvironmentType for changing the kind value
- Added filters to PDU_Factory. It is now possible to filter what PDU get through. It is very simple to create a filter, An Exercise ID filter has been provided as an example
- Updated PDU_Factory to show using a filter
- Updated PDU_Factory to support all new PDU
- Added ReadFromTokenisedString and CreateTokenisedString to EntityType. This allows for a tokenised string(Such as csv) to be parsed into the entity type.
- Fixed mismatch between entity location and world location in Detonation_PDU constructor.
- Improved timestamps auto calculate to include milliseconds for windows & linux.
- Changed all entity specific appearance classes to invert/negate the "Entity State Active" value. In this case the DIS standard actually states that a 0 indicates the state is true and 1 false, so I flipped them to make more sense. If you want to disable the entity you now say SetEntityStateActive( false ) instead of SetEntityStateActive( true ).
- Added some additional operator overloads to Vector, EulerAngles and WorldCoordinates
- Changes to dead reckoning calculator. Dead reckoning is no longer done through static functions. Each entity must now have a dead reckoning calculator class to perform the dead reckoning correctly. More information and tutorials can be found here. Thanks to Robert Ioiart for these changes.
- Fixed spelling error on m_EntiyCapabilities in Entity_State_PDU
- Fixed public accessibility on Param Type Variant union in ArticulationParameters

Version 1-14-0 | 17 March 2010

- New PDU:
  - Linear_Object_State_PDU
- Changed PDU factory example so that it does not close on PDU exceptions. It now prints the error and continues.
- Fixed bug in AggregateMarking, encode and decode were 1 octet out causing problems with Aggregate State PDU's.
- Fixed bug in EncodingScheme when compiling to linux - This change was reported in 1-13-0 but was not actually included.

Version 1-13-0 | 26 Feb 2010

- New PDU:
  - Point_Object_State_PDU
- Added EulerToHeadingPitchRoll conversion to KConversions.h
- Fixed bug in HeadingPitchRollToEuler conversion. Renamed variables EulX, EulY and EulZ to Psi, Theta and Phi.
- Added SetTimeStampAutoCalculate, IsTimeStampAutoCalculate and CalculateTimeStamp to TimeStamp. This feature attempts to automatically calculate the time stamp when ever the encode function is called.
- Updated Entity_State_PDU and Environmental_Process_PDU examples to use the new time stamp feature.
- Fixed typo Entity_Infomation_Interaction to Entity_Information_Interaction.
- Fixed bug in EncodingScheme when compiling to linux.

Version 1-12-1 | 16 Dec 2009

- Changed EntityIdentifier and AggregateIdentifier data types to now derive from SimulationIdentifier.
- Chnaged VaribaleDatum to pass const KString refs. Small change to allow for passing temporaries (Thanks Anthony).
- Added new constructor to Gridded_Data_PDU.
- Fixed bug in Gridded_Data_PDU, GRIDDED_DATA_PDU_SIZE was incorrectly set to 32, should be 64.
- Changed SimulationIdentifier GetAsString to now say "Object" instead of "Entity".
- Fixed issue that caused all protected PDU status member variables belonging to the Header class to become public, this was caused by using anonymous unions.
- Fixed bug that caused "Compiler Error C2635" when you tried to cast from Header to a derived class. This was caused by virtual inheritance.

Version 1-12-0 | 23 Nov 2009

- New PDU:
  - Gridded_Data_PDU
- Changed all GetEnumAsString functions to use a single search function which has also been optimised.
- Fixed some small bugs in some of the GetEnumAsString functions.
- Fixed iterator bug in Intercom_Control_PDU::GetAsString and Intercom_Control_PDU::Encode
- Some small optimisation improvements throughout.
- Fixed bug in EntityMarking, marking text was being null terminated incorrectly, I was writing outside of the array bounds.(Thanks Anthony).
- Renamed the "Send" example to Entity_State_PDU. Should be a bit clearer for newcomers.
- Updated PDU Factory with new PDU and moved all includes to cpp file.
- Some changes to the GetAsString Formatting to make it easier to read.

Version 1-11-1 | 21 Sep 2009

- Fixed Cmake bug so Environmental_Process_PDU is not included in DIS 5 projects
- Fixed bug in Radio_Communications_Header, DIS 7 macros was not in the correct place.
- Added macro to PDUStatusTEILVC to only include if the DIS version is 7. This fixes problems if you are building projects manually.
- Fixed bug in LineRecord2 and PointRecord2 where the comparison operator would cause an infinite loop>
- Removed some obsolete files in DataTypes folder(BoundSphere.h/.cpp)

Version 1-11-0 | 16 Sep 2009

- New PDU:
  - Environmental_Process_PDU
- Added new example Environmental_Process_PDU.
- Added DecimalToDMS and DMSTODecimal to KConversions.h
- I have begun to make some small changes in preparation for adding DIS version 7. You may now specify DIS version 7 (DIS_VERSION=7). This can be done through CMake or the pre-processor definitions.
- Added PDUStatus to Header, this is a DIS version 7 feature. PDUStatus includes:
  - Added Get/Set PDUStatusTransferredEntityIndicator and PDUStatusLVCIndicator to Entity_State_PDU, Electromagnetic_Emission_PDU, Designator_PDU, , Radio_Communications_Header, IFF_ATC_NAVAIDS_PDU, Electromagnetic_Emission_PDU, Entity_State_Update_PDU
  - Added Get/Set PDUStatusFireType to Fire_PDU, this is a DIS version 7 feature.
  - Added Get/Set PDUStatusDetonationType to Detonation_PDU.
  - Added Get/Set PDUStatusAttachedIndicator to Transmitter_PDU, Signal_PDU, Receiver_PDU, Intercom_System_PDU, Intercom_Control_PDU.
- Fixed a problem where some of the Vector operators would return the referenced objects and not the new copy of the object. This effected operator *, operator + and operator -.(Thanks Michael)
- Updated the Send example so it uses a while loop to continuously send the PDU, some applications didn't always pick up the first PDU.
- Added SetWritePositon and GetWritePositon to KDataStream. These functions allow for "peaking" at data.
- Updated PDU_Factory with some missing PDUs.
- Fixed typo in VariableDatum::GetAsString(). "Fixed Datum:" should have been "Variable Datum:".
- Added new constructor to KException to allow for more details to be added.
- Fixed issue in logger playback, if the log is large it will take time to load so dont start the timer till we are ready.

Version 1-10-0 | 08 Aug 2009

- Dead Reckoning is here. New class DeadReckoningCalculator can be found in the Extras folder. This class will calculate dead reckoning transformations for all dead reckoning algorithms. This class is currently in a BETA state until I can verify that all algorithms work correctly. Any help people can provide to validate/test/fix these algorithms will be greatly appreciated :)
- Added < operator to EntityType, AggregateType, AggregateIdentifier and ClockTime.
- Added *, +, +=, -, -= and [] operators to EulerAngles, WorldCoordinates and Vector.
- All namespaces are now no longer global when you include a KDIS header. This will prevent KDIS from conflicting with other class/struct/enums that have the same name. If you have any problems compiling when you add this new version try adding some using namespace directives to your code., E.G using namespace KDIS; using namespace DATA_TYPE; etc.
- Added ApplyDeadReckoning function to Entity_State_PDU.

Version 1-9-2 | 30 July 2009

- Added missing destructor implementation to Action_Response_R_PDU.
- Added virtual to all destructors so they are always called correctly even when a base pointer is deleted.
- Added == and != operators to all data types and PDUs.
- Added < operator to EntityIdentifier, TimeStamp.
- Further improvements to comments, fixed some incorrect namespace references in function comments.

Version 1-9-1 | 26 July 2009

- Added additional comments to several PDUs such as the Entity_State_PDU to help further explain each field and removed a lot of the junk from comments that was self explanatory. such as Method name etc.
- Moved remaining enumerations from KDISEnums.h to EnumEntityInfoInteraction.h, this is where they belonged.
- Replaced all uses of strnset with memset.
- Changed all default constructors so that they initialise all data types to zero if they didn't already.
- Fixed bug in FixedDatum, KDIS_EXPORT was defined inside the template functions, caused by a replace all at some point in the past. Would have caused problems if compiling to use a DLL.
- Added new function to all enumerations - GetEnumAsString<Enum Name>( KINT32 Value ). These functions will return the string value for an enumeration. E.G If you wanted to know what the value 39 represented in the enumeration EmitterFunction you would call GetEnumAsStringEmitterFunction( 39 ) and in this case the returned value would be "ClickJammingFunction". This feature can be enabled/disable by declaring a macro KDIS_USE_ENUM_DESCRIPTORS in the pre-processor definitions or the KDefines.h file. This feature can make your generated exe/dll/lib significantly larger so disable it if you don't plan to use it. When disabled the GetEnumAsString functions will simply return the enumerated value as a string. E.G GetEnumAsStringEmitterFunction( 39 ) would now return "39". I am currently applying this change to all GetAsString function in Data types and PDU. More infomation can be found here. This feature can also be enabled/disabled from CMake.
- KDIS has a new website based on MediaWiki. This site will feature all documentation for KDIS including class docs, tutorials etc. You can find it here.
- Small change to the Send example showing how to correctly use the time stamp, a tutorial is now available for this example here.
- Class documentation is now also available at the KDIS website.
- Removed Old vc2008.zip. This is very out of date now.

Version 1-9-0 | 06 July 2009

- New PDU:
  - IsGroupOf_PDU
  - IsPartOf_PDU
- Added MAX_PDU_SIZE 8192 taken from 1278.1-200X standard.
- Removed all using namespace std; directives from header files to prevent std attributes becoming exposed in the global namespace and causing potential clashes with other peoples code.
- Added KRef_Ptr class. This is an implementation of referenced pointer, designed to prevent memory leaks where memory needs to be dynamically allocated.
- Fixed potential bug, some exception handling catch blocks were catching exception and instead of KException.
- Changed Country Type in EntityType constructor from KUINT8 to KUINT16.
- Added HeadingPitchRollToEuler to KConversions.h

Version 1-8-2 | 26 May 2009

- Several changes to help with compiling on linux platforms(Thanks Anthony) including:
  - KEncoderDecoders - Removed refrence to winsock2.h from KEncoderDecoders, changed a refrence to UINT16 to KUINT16 and changed all 'sizeof DataType' to 'sizeof( DataType )'.
  - Changed all incldues to use forward slashes instead of back, E.G #include".\AggregateIdentifier.h" to #include"./AggregateIdentifier.h"
  - FixedDatum - changed all 'sizeof Type' to 'sizeof( Type )'.
  - SystemIdentifier - small bug. union and struct were in the wrong order.
  - Changed all includes to match the case of the file names.
  - Added ./ to all relative includes
- Removed additonal IntercomCommunicationsParameter includes from Cmake file
- DIS_Logger_Record.cpp - throw qualifier missing on writeToFile.

Version 1-8-1 | 25 May 2009

- Fixed major bug in SwapBytes that caused the endian to not be correclty swapped

Version 1-8-0 | 13 May 2009

- New PDU:
  - Record_R_PDU
  - Record_Query_R_PDU
  - Set_Record_R_PDU
- Removed RecordSpecification data type. Record Sets are now placed directly into a PDU, When a change was made to the RecordSpecification parameter it was not allways possible to update the PDU size. Removing RecordSpecification fixes this problem. This will only effect the Transfer_Control_PDU.
- Fixed a bug in FixedDatumn that caused template functions to give linker errors. This was due to me implementing the function in the cpp files, they should be in the h files.

Version 1-7-0 | 11 May 2009

- New PDU:
  - Data_Query_R_PDU
  - Set_Data_R_PDU
  - Data_R_PDU
  - Event_Report_R_PDU
- Added some additional comments to existing PDU's to further explain their use.
- Fixed some duplicate includes in the CMake file and added missing Intercom_Control_PDU entry.
- Set_Data_PDU - New constructor.
- Data_Query_PDU - New constructor.
- Set_Data_PDU - New constructor.
- Event_Report_PDU - New constructor.
- Data_PDU - Changed constructor Data_PDU( KUINT32 RequestID ) to Data_PDU( const EntityIdentifier & OriginatingEntityID, const EntityIdentifier & ReceivingEntityID, KUINT32 RequestID );
- Action_Request_PDU/Action_Request_R_PDU- Changed constructor Action_Request_PDU( KUINT32 RequestID, KUINT32 ActionID ) to Action_Request_PDU( const EntityIdentifier & OriginatingEntityID, const EntityIdentifier & ReceivingEntityID, KUINT32 RequestID, KUINT32 ActionID );
- Updated PDU_Factory to support all new PDU.

Version 1-6-0 | 30 March 2009

- New PDU:
  - Transfer_Control_Request_PDU
  - Create_Entity_R_PDU
  - Remove_Entity_R_PDU
  - Start_Resume_R_PDU
  - Stop_Freeze_R_PDU
  - Acknowledge_R_PDU
  - Action_Request_R_PDU
  - Action_Response_R_PDU
  - Comment_R_PDU
- IFF_ATC_NAVAIDS_L2_PDU - This PDU was missing some fundamental parts which are now in place.
- Fixed bug in GetData in the Signal_PDU.
- Create_Entity_PDU - Fixed bug in Decode function.
- Removed KDIS_NEWORK_ENDIAN from KDefines.h - Unused.
- Moved all enumerations that belong to Entiy Info/Interaction into one file(EnumEntityInfoInteraction.h) and the same for Simulation Management(EnumSimulationManagement.h)
- Changed DatumID enumerations, they are now appended with 'Record' instead of 'Datum'. Added additional enumeration values taken from 'SISO-REF-010 Changes'
- Fixed a bug in 'CMakeLists.txt, Entity_State_Update_PDU.h was not being included in projects.
- Start_Resume_PDU - Added new constructors
- Stop_Freeze_R_PDU - Added new constructors.
- Simulation_Management_Header - Fixed bug in constructor protocol family not being set.
- SEES - Fixed bug in constructor protocol family not being set..
- All PDU now automatically set the Protocol Version.
- Example_Send - Removed line that sets the Protocl Family as this is now done automatically in the constructor.
- Electromagnetic_Emission_PDU - Added 2 new constructors.
- IFF_ATC_NAVAIDS_L1_PDU - Added new constructor

Version 1-5-4 | 12 March 2009

- Fixed bug in GetData in the Signal_PDU.

Version 1-5-3 | 11 March 2009

- VariableDatum Encoding and Decoding bug fixed.
- Interface for setting an arbitrary binary stream added to VariableDatum
- Bits/Bytes mix up bugs fixed in VariableDatum
- Some small comment fixes/spelling mistakes etc
- Fixed the changelog, Microsoft Word filled the source with useless junk so re wrote by hand.

Version 1-5-2 | 04 March 2009

- Fixed Comment_PDU constructor, PDU type and length were not initialising.
- DESIGNATOR_PDU_SIZE was incorrect, should be 88. This is due to a typo in the IEEE standard.
- EncodingScheme bits were incorrect on Big Endian machines.

Version 1-5-1 | 02 March 2009

- Fixed FuseType enumeration, values were incorrect.
- Fixed PDU_Factory so it now supports DIS version 5.
- Fixed some small CMake bugs when building DIS version 5.

Version 1-5-0 | 20 Feb 2009

- New PDU:
  - Intercom_Control_PDU
  - Aggregate_State_PDU
- Changed KDataStream To only accept KUINT16 instead of KUINT32, this could have caused some buffer overrun problems.
- Added new examples KDIS_LIB(Builds a static library version) and KDIS_DLL(Builds a shared library version)
- I have now introduced CMake into KDIS, CMake is a cross-platform, open-source build system. It will allow users to build custom project files for the compiler they choose. I have added some options to the CMake file to allow users to specify what version of DIS they want to use(5 or 6) and if they wish to link against a library version(Static or Shared). A tutorial for using CMake with KDIS can be found here. The visual studio 2008 examples are still included; however any future examples will require using CMake.
- Changed how the KDIS_EXPORT macro works, it now looks for preproccesor deflagrate in the project. use either EXPORT_KDIS or IMPORT_KDIS. E.g: /D "EXPORT_KDIS".

Version 1-4-0 | 05 Feb 2009

- New PDU:
  - Intercom_Signal_PDU
- DIS_Logger_Record and DIS_Logger_Playback added to Extras, Logs PDUs to a text file so that they can be played back later.
- Added Examples DIS_Logger_Record and DIS_Logger_Playback. I have included some data I captured with theese examples (Generated by MAK VR-Forces 3.10).
- Added GetAsString and ReadFromString to KDataStream. This will allow you to convert a data stream into a hex string for debugging, using ReadFromString will convert the string back into a KDataStream. With theese 2 functions DIS data can be logged to a file and read at a later time. This is how the DIS_Loggers work.

Version 1-3-1 | 30 Jan 2009

- Removed references to Intercom_Signal_PDU from PDU_Factory. This is an unfinished PDU that should not have been in v1-3-1

Version 1-3-0 | 24 Jan 2009

- Fixed bugs in Signal_PDU, SetData did not set the DataSize and GetData was returning the padding that was added to the data.
- Fixed bug in Entity_State_PDU. EntityAppearance was being encoded incorrectly.
- Fixed typing error in SurfacePlatformAppearance::GetAsString - It said "Space Platform Appearance" instead of "Surface Platform Appearance".

Version 1-2-0 | 21 Dec 2009

- New PDU:
  - Collision_Elastic_PDU
  - Entity_State_Update_PDU
  - FF_ATC_NAVAIDS_PDU
- Added new class PDU_Factory, found in Extras folder. This class will convert a data stream into the correct PDU and return a auto_ptr to the new PDU.
- Added new example to show how to use the PDU_Factory and also re structured all examples into one directory. All examples now use an updated version of KSOCKETS, however I still recommend you use your own socket library.
- Changed all GetFunctions that return an object to return a reference/const reference.
- Introduced a new namespace UTILS.
- KConversions.h added to UTILS, holds RadToDeg, DegToRad, MetersToFeet, FeetToMeters, GeodeticToGeocentric
- Renamed Electronmagnetic_Emission_PDU to Electromagnetic_Emission_PDU
- Changed Licence text from GPL to LGPL
- Removed #ifdef _win32 for primitive data types in KDefines.h, this was preventing
- KDIS from working on any other OS.
- Converted change log to Html
- Changed IsMachineBigEndian to use static variables. Should provide a very small performance boost.
- Added the DIS version a PDU belongs to in the header comments.
- Fixed a bug in Comment_PDU, PDU Length when reading variable datum lengths was incorrect due to the returned variable datum lengths value being in bits.

Version 1-1-1 | 28 Oct 2008

- Added vc9 send example

Version 1-1-0 | 27 Oct 2008

- Fixed bug in vc9 example - was checking for a Data_PDU instead of Entity_State_PDU
- AntennaLocation - Added new constructor.
- BurstDescriptor - Added new constructor / changed SetMunition to pass by refrence.
- Renamed m_ui16Fire to m_ui16Fuse.
- DeadReckoningParameter - Added new constructor / changed setDeadReckoningAlgorithm function to pass by value.
- EmissionSystem - Added new constructor.
- EmitterBeam - Added new constructor. Removed typing error in Set6BeamParamIndex.and Get6BeamParamIndex.
- EncodingScheme - Added 2 new constructors.
- GeneralAppearance - Added new constructor.
- TimeStamp - Added new constructor.
- Entity_State_PDU - Added new constructor.
- Collision_PDU - Added new constructor.
- Repair_Complete_PDU - Added new constructor.
- Repair_Response_PDU - Added new constructor.
- Radio_Communications_Header - Added new constructor.
- Receiver_PDU - Added new constructor.
- Signal_PDU - Added new constructor.
- Transmitter_PDU - Added new constructor.
- Acknowledge_PDU - Added new constructors to auto generate a response depending on the PDU.

Version 1-0-1 | 24 Oct 2008

- Signal_PDU : Data length changed to number of bits instead of octets.