Download Latest Version libCIGI_01_04.zip (17.4 MB)
Email in envelope

Get an email when there's a new version of libCIGI

Home
Name Modified Size InfoDownloads / Week
01_05 2022-06-21
01_04 2020-06-14
01_00 2013-05-24
README.md 2020-06-14 3.4 kB
Totals: 4 Items   3.4 kB 3

libCIGI

libCIGI is a simple header only C++ library for dealing with Common Image Generator Interface (CIGI) traffic. It has been designed for V4.0 but can work with V3.0, 3.1 & 3.2. it is also possible to interpret between versions of CIGI using the flexible interpreters.

The CIGI Standard

CIGI is a standard interface for communicating between a host application and an image generator (IG) application or system. CIGI defines the packets and control flow of packets / messages between the host and IG, but not how the data is actually transmitted (the data transport). This provides IG vendors and developers with a lot of flexibility to meet specific performance requirements on complex distributed systems (e.g. using reflective memory to send simulation state from a host to 10 IG machines) while ensuring that the concepts and content of the packets is well defined. While there are a number of versions of CIGI available the only standard versions are those maintained by the Simulation Interporeability Standards Organisation (SISO) and at the time of writing this is only V4.0. The standard interface control document (ICD) can be found at https://www.sisostds.org/ProductsPublications/Standards/SISOStandards.aspx.

Installation

As libCIGI is a header only library you just need to copy the header files into your project. By default the examples (in /Examples)) and unit tests (in /Test) are included as part of the download, but these can be removed. There are cmake files in the distribution, but these are only required if building the examples or unit tests.

System Compatibility Check

libCIGI has been developed using Visual Studio on Windows and has had some testing with compilation on linux, however because libCIGI relies on bit fields / splicing which is not a well defined part of C++ then it's possible this might not work on some systems because the interpretation of bit fields is different and will therefore change the layout of data sent over the CIGI network. If you are using a different compiler then it is recommended to build and run the unit tests as this will tell you if there are any issues with the bit splicing implementation.

Examples

A number of examples are provided with the distribution to show you how to use libCIGI in your own applications. Some of these demonstrate the different ways of processing CIGI messages (packet reflector, packet processor, packet stream) and there are also simple host / IG applications. If anything is unclear in how to use libCIGI then please use the forums / discussion boards.

Building libCIGI

Note Compilation is only required when needing to run the unit tests as the library is 'header only'.

Dependencies

Boost v 1.51 or later (http://boost.org)

Building libCIGI using cmake

  • Download cmake (at least version 2.6) and set the source directory to the one containing this readme.
  • Optional: set environment for location of the boost top level folder BOOST_DIR=<your location> or BOOST_ROOT=<your location> e.g. BOOST_DIR=c:\libraries\boost
  • run configure in the GUI
  • Watch for messages in status window Possible issues:
  • boost can not be found: Specify the boost location in the BOOST_ROOT (filepath) entry
  • incorrect boost version (needs at least 1.51.0)
  • run configure again, you shouldn't get any errors
  • run generate
Source: README.md, updated 2020-06-14