<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> <title>README</title> </head> <body> <span style="font-weight: bold;">README.html</span><br> <br> <span style="font-weight: bold;">Introduction</span><br> <br> This directory contains Java, Csharp, and C++ code to implement the Distributed Interactive Simulation (DIS) IEEE-1278 standard, which is often used in military simulations.<br> <br> The code (Java, CSharp, and C++) consists of two portions. The protocol code itself consists of classes that represent Protocol Data Units (PDUs). These classes have fields, getters, and setters, and are able to marshal and unmarshal themselves to and from the DIS binary format. The Java implementation can also marshal itself to XML and Java serialization format. This code was automatically generated via XMLPG, a tool that generates Java, CSharp, and C++ code automatically from an XML description. The code is in the java and cpp directories.<br> <br> The second portion of the code is supporting classes that read and write PDUs from the network, log PDUs to a file, and more. These are essentially example files that demonstrate the use of the generated DIS code.<br> <br> <span style="font-weight: bold;">XML Description File</span><br> <br> An XML file that is an abstract description of the protocol classes is in DIS1998.xml. This file is used by XML Multi-Language Protocol Generator (XMLPG), which is available at the sourceforge site for download. <br> <br> The XML file is processed by XMLPG and writes the Java, CSharp, and C++ protocol code. The idea is to use the XMLPG tool to get the final product "close", and then manually modify the source code in subversion to tweak the last bit.<br> <br> <span style="font-weight: bold;">Java</span><br> <br> The Java protocol classes are in the java directory, under the package edu.nps.moves.dis. The code is generated by XMLPG's ant build file. Install ant and type "ant"; this will compile the code and generate a jar file on the dist directory.<br> <br> Supporting Java files are in the edu.nps.moves.examples directory. This contains two simple programs that read and write DIS Entity State PDUs, and a class that demonstrates marshalling and unmarshalling to XML. A factory class for creating PDUs from bytes received from the wire is present in the edu.nps.moves.disutil package. A simple logger application is in the edu.nps.moves.logger package.<br> <br> <span style="font-weight: bold;">C++</span><br> <br> The C++ code is in the Cpp directory. The prefab C++ implemenation uses the <span style="font-family: Courier New,Courier,monospace;">DIS</span> namespace to contain the protocol code. The Compile directory contains Microsoft Visual C++ build files, which allows the code to be compiled and linked to a dll or executable. The CppUtils directory contains supporting files for the DIS protocol, including a data stream class for marshaling and unmarshaling, a factory class, and some simple example code that generates Entity State PDUs. Simple unit test code is also available in the UnitTestDIS directory.<br> <br> <span style="font-weight: bold;">CSharp</span><br> <br> The CSharp generator has been provided by Peter Smith. It is very similar to the Java and C++ code.<br> <br> <br> <span style="font-weight: bold;">Using the Java Version</span><br> To use the Java release, you must include the open-dis_<version-number>.jar file in your project, along with the supporting jar files in the lib directory. (The xmlpg.jar file is not needed.) <br> <br> <span style="font-weight: bold;">Release Notes</span><br> The 3.0 release highlights: <br> <br> * CSharp implementation from Peter Smith. He wrote a new xmlpg class to generate CSharp code.<br> <br> * Automated patch application. The Unix patch utility is used to modify the auotmatically generated code. See the patch directory in the open-dis directory. Patches are applied via the ant task "patch". Windows users need to install cygwin utilities to be able to use patch, and make some minor changes to the ant build.xml file.<br> <br> * Robert Harder has reworked the Java marshal and unmarshal code to use much more memory efficient NIO classes, which dramatically reduce the amount of temporary object memory generated. <br> <br> * Sheldon Snyder has contributed dead reckoning algorithms in Java, available in the edu.nps.moves.deadreckoning package. <br> <br> * Tariq Rashid has contributed an xplane gateway, which reads xplane flight simulator UDP packets and converts them to DIS. He's also implemented a KML gateway, which allows low-resolution updates to markers on Google Earth. This code is a rough right now--it needs to be cleaned up. There's no guarantee it works. This is available in the xplane directory of open-dis<br> <br> * xmlpg, which generates the source code, is now included in the open-dis lib directory. This allows code to be generated completly withing the open-dis directory, rather than trying to do cross-directory builds. See the "generateDisSourceCode" ant target. <br> <br> * Enumerations. The SISO EBV XML document was used to generate Java enumeration classes. This can be extended as the EBV XML document is completed. A C++ enumerations project would be a useful project for some developer. The enumerations are used in several places in the open-dis code, notably the PduFactory.<br> <br> * Unit tests. The Java code has added some JUnit 4.4 unit tests, primarily to test that post-processing source code patches have been applied correctly. These can be extended to provide more complete test coverage.<br> <br> <span style="font-weight: bold;"><br> LICENSE</span><br> <br> All code is BSD license. See <a href="License.html">License.html</a><br> <a href="License.html"><span style="font-weight: bold;"></span></a><span style="font-weight: bold;"></span><br> <br> <br> <br> </version-number> </body> </html>
mcgredonps/open-dis-objective-c
Objective-C implementation of the DIS 1278.1 simulation protocol
Objective-CNOASSERTION