RELEASE NOTES: OpenJAUSv3.3 (07/10/08)
==========================================

OpenJAUSv3.3 beta is an open source implementation of the JAUS Reference
Architecture Version 3.3. The latest code, documentation and support groups 
are available at the OpenJAUS web site:  http://www.openjaus.com/.

This release contains the following projects:

libjaus:		A C99 compliant library that contains JAUS constructs, data 
				types and messages.
libopenJaus:	A C/C++ library containing a runtime JAUS node manager library,
				node manager communication interface, and component framework 
				library.
ojNodeManager:	The OpenJAUS node manager executable with text interface
ojVehicleSim:	A collection of JAUS components that work together to simulate
				a JAUS ground vehicle subsystem. These components provide a set
				of services that are commonly used in real ground vehicle
				implementations.

If you experience problems in compiling or developing with this code, please
read the tutorials and online FAQ before contacting the OpenJAUS development
group. Please attempt to locate where the problem exists and determine how the
problem can be replicated before seeking additional support. Code patches can be
uploaded at the OpenJAUS web site: http://www.openjaus.com.


Target Operating Environment:
-----------------------------

	This software is designed to be cross platform compatible. The code base has 
been tested on a variety of operating systems and development environments including: 
Linux (Ubuntu & Fedora Core) w/gnu toolchain, Mac OS X w/gnu toolchain, and Windows w/MS 
Visual Studio. All test machines have been little endian byte order based. The libjaus 
library is C99 compliant and should be compatible with any standard C compiler for any 
processing platform. The libopenJaus library has some operating system dependent 
abstractions, which may require different implementations for systems not using Linux 
or Windows. The library was implemented with POSIX standard programming interfaces where 
applicable, to provide a more standardized approach to multi-threading and mutex 
implementation.


Installation (GNU Toolchain / Linux & Macintosh OS X):
------------------------------------------------------

Requirements:
	make
	gcc
	g++

To build the library and executable code:
	Execute the command: "make" in the root OpenJAUSv3.3.0 directory. The make
command will use the Makefile found in that directory to recursively make each
of the subprojects. Individual Makefiles are located in each subproject
directory to allow for building one project at a time if desired.

Installation:
	It is up to the individual developer to decide how to link their code with
the OpenJAUS libraries. Some developers may prefer to install the OpenJAUS
header files and libraries to globally accessible directories. For example, on a
Linux system: /usr/include/ and /usr/lib/. To minimize system invasiveness, 
OpenJAUS  does not install itself into system directories, rather, all code and 
binaries remain in the folders included in the release download.

	To execute code developed with these libraries it is recommended that the
developer configure the dynamic linker runtime bindings to reference the 
OpenJAUS library directories /libjaus/lib/ and /libopenJaus/lib/. This is done
by editing the systems ld.so.conf (most likely located at /etc/ld.so.conf) to
include these directories and then by running the command: "ldconfig". Another 
option to this method would be to simply include the files libjaus.so and 
libopenJaus.so in the executable's working directory.

	*Note: The default build of the libraries includes all symbols and debug 
information within the shared object (.so) files. This is to facilitate
efficient  development and use of a run-time debugger. To reduce the size of the
installed  libraries, the information can be removed by using the "strip"
command. 


Installation (Microsoft Visual Studio / Windows):
------------------------------------------------------

Requirements:
	Microsoft Visual Studio
	Pthreads-win32 (included in distribution)
	pdcurses (included in distribution)

To build the library and executable code:

In the top level directory, open the Microsoft Visual Studio solution 
file "OpenJAUSv3.3.0.sln." This solution contains 4 individual projects: 
libjaus, libopenJaus, ojNodeManager and ojVehicleSim. These projects correspond 
to the descriptions above. Once open, the solution should be able to be 
built. Each project has the appropriate dependencies setup using relative paths, 
therefore it should compile for the developer in any configuration. Also, project 
references have been setup, so a referenced code base will be compiled prior to 
the compilation of any child project.

Once built, the ojNodeManager should run in a console window if it is set
as the default project. Ensure that the nodeManager.conf file is configured correctly.
The ojVehicleSim should run as well if it is set to the default project, however it 
is important that the ojNodeManager be running first.

The libraries libjaus and libopenJaus can be linked against other projects using 
the .lib files. To run projects built against them, ensure the appropriate .dll 
files are available either locally or globally on the system.

*Note: Use of these libraries has only been tested in the Debug configuration 
to date. This is due to the added value of retaining debug information for developers 
of both the OpenJAUS code base and applications based upon that. The creation of release 
targets, if desired, is left up to the individual developer. 


Configuring and Running the Node Manager:
-----------------------------------------

	The node manager executable is currently designed to require manual
configuration. This means the user must edit the text file nodeManager.conf to
enter the appropriate JAUS identification numbers and names, and enter the 
correct IP addresses for the intended hardware communication interfaces. The
user is also required to configure the node manager to enable or disable node
level and subsystem level communication. These configurations will vary 
depending on the intended design of the JAUS system on which the node manager is
being used. Examples of different JAUS system setups are beyond the scope of 
this document. The user is encouraged to read the JAUS reference architecture
and online OpenJAUS tutorials for a more detailed explanation.

Format:
	The nodeManager.conf file is made up of section tags and key - value pairs.
The tags are identified within straight braces, ex: "[SECTION]". The key value
pairs are delimited by a colon and a space character, ex: "key: value".

	To configure the JAUS node manager properties, edit the "SubsystemId" and
"NodeId" values found under the [JAUS] section tag. Each node manager on a 
subsystem's node network should be configured with a unique NodeId number. 
Likewise each subsystem on a network of JAUS subsystems should have a unique
SubsystemId number. Failure to make these values unique results in erratic and
undefined behavior when multiple node managers are running at the same time. 
Only one node manager process should be run at any given time on a single node.
	Set the "Subsystem_Identification" and "Node_Identification" values to any
text string that you would like for your particular system setup. These values
are not required to be unique, as they are only used for text description.

	To configure communication interface settings the user is only required to
edit the [Node_Communications] and [Subsystem_Communications] sections. By 
default, component communications are always on and the configuration needs to 
be kept fixed to use the loopback IP address 127.0.0.1. 
	Each communications section has one or more sets of transport interfaces
settings, for example "JAUS_UDP" and "OpenJAUS_UDP". This allows for multiple
transport interfaces to be used at a given communications level (component,
node, or subsystem). At present only the JAUS_UDP interface type is used at the
node and component level. However, this allows for other common transport types
such as TCP or Serial to be included in the future.
	The user has the option to enable/disable a given transport interface, or
enable/disable an entire level of communication either node or subsystem. The
node manager will startup a transport interface if both it and its 
communications level is enabled. To enable a communications level, simply set
the value of the "Enabled" key to "true". To disable a level, set the value to 
"false". These values are case sensitive, ex: "TRUE" or "True" would not work.
	When each JAUS_UDP interface starts, it attempts to open the network
interface specified with the user configured IP address. If such an interface
exists on the system, the node manager will open the JAUS port 3794 on that 
interface. If not, the node manager will fail at startup and an error message
will appear. To configure each JAUS_UDP interface simply set the key 
"JAUS_UDP_IP" value to the IP address of the network interface that you would
like it to use. The remaining key values should be left configured as in the
release download. Changing these values will lead to undefined behavior. They
are included only for completeness, and allow for future changes to be made if
necessary.


Further Information:
--------------------
Tutorials: http://www.openjaus.com/tutorials.html
Forums: http://www.openjaus.com/trac/openjaus/discussion
Support contracting: 

Known Issues:
-------------

*  There is no standalone API documentation, which describes all data
   structures, functions, or default behavior. Please read the tutorials for 
   detailed information on how to perform common tasks. The header files are 
   organized by function breakdown and allow for easy access to data structure
   definitions and function prototypes. Often the functions you seek can be
   found quickly by browsing the include/ directories.

*  A "ToString" method for each JAUS message and data structure is lacking from 
   this implementation and thus makes displaying critical information to the
   user more cumbersome.


Copyright Notices
-----------------

Portions of the Windows distribution are based on pdcurses and Pthreads-win32. 
These binaries packages have their own copyright. They are redistributed with the 
OpenJAUS codebase as a convenience to developers. More information about these 
packages can be found on their respective websites below:

Pthreads-win32: http://sourceware.org/pthreads-win32/
pdcurses: http://pdcurses.sourceforge.net/

The remainder of the code is copyright OpenJAUS.com and is distributed under the 
BSD license. See the LICENSE file for details.
