/open-dis-objective-c

Objective-C implementation of the DIS 1278.1 simulation protocol

Primary LanguageObjective-COtherNOASSERTION

<!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&nbsp; 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&nbsp; 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>