bbaggerman / irig106lib

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

----------
IRIG106LIB
----------

Copyright (c) 2019 Irig106.org
Created by Bob Baggerman
bob@irig106.org



irig106lib is an open source library for reading and writing IRIG 106 
Chapter 10 format files.  The libary supports the various Microsoft Visual C 
compilers.  It compiles into a Win32 static library and DLL.  The library also 
supports the GNU GCC compiler under Linux and DJGPP and compiles into a static 
library.  A Python wrapper for the compiled DLL is also included.  The Python 
wrapper is incomplete but demostrates how to make calls into the DLL from Python.


-----------------
Using the library
-----------------

Reading files involves opening the file, reading a data packet header, 
optionally read the data packet (which may contain multiple data packets), 
decode the data packet, and then loop back and read the next header.  The 
routines for handling data packets are in "irig106ch10".  Routines for decoding 
each data packet type are contained in their own source code modules.  For 
example, 1553 decoding is contained in "i106_decode_1553f1".  Below is a 
simplified example of packet processing...

    enI106Ch10Open(&iI106Ch10Handle, szInFile, I106_READ);

    while (1==1) 
        {

        enStatus = enI106Ch10ReadNextHeader(iI106Ch10Handle, &suI106Hdr);

        if (enStatus == I106_EOF) return;

        enStatus = enI106Ch10ReadData(iI106Ch10Handle, &ulBuffSize, pvBuff);

        switch (suI106Hdr.ubyDataType)
            {

            case I106CH10_DTYPE_1553_FMT_1 :    // 0x19

                enStatus = enI106_Decode_First1553F1(&suI106Hdr, pvBuff, &su1553Msg);
                while (enStatus == I106_OK)
                    {
                    Do some processing...
                    enStatus = enI106_Decode_Next1553F1(&su1553Msg);
                    }
                break;
            default:
                break;
            } // end switch on packet type

        }  // End while

    enI106Ch10Close(iI106Ch10Handle);


-------
Modules
-------

Core Modules
------------

Core software modules support opening data files for reading and 
writing, and working with headers and data at a packet level.  These 
software modules must be included in any program that uses the IRIG 
106 software library.  Core software modules include:

irig106ch10 - The main source module containing routines for opening, reading, 
writing, and closing data files are contained in "irig106ch10.c".  Other 
software modules are provided to handle the various IRIG 106 Ch 10 packet 
formats.

i106_time - Routines to convert between clock time and IRIG 106 time counts

i106_index - A higher level interface to the indexing system

i106_data_stream - Support for receiving Chapter 10 standard UDP data packets

Decode Modules
--------------

Decode software modules are used to decode data of a specific type.  
Decode modules have names of the form "i106_decode_*" where the "*" 
describes the type of data handled in that module.  Only those decoder 
modules that are used need to be included in your software project.  
Modules for unused data types can be omitted.  Decoder modules 
include:

i106_decode_tmats - Four modules for decoding a TMATS data packet into 
    a tree structure for easy interpretation.

i106_decode_time - Decode IRIG time packets and provide routines for
    converting relative time count values to IRIG referenced time.

i106_decode_1553f1 - Decode all 1553 format packets.

i106_decode_16pp194.c - Decode 16PP194 bus format packets

i106_decode_arinc429 - Decode ARINC 429 format packets

i106_decode_can.c - Decode CAN Bus format packets

i106_decode_discrete - Decode descrete format packets

i106_decode_ethernet - Decode Ethernet format packets

i106_decode_index - Decode index packets

i106_decode_uart - Decode serial UART format packets

i106_decode_video - Decode video format packets



Other Headers
-------------

These header files are necessary for every application that uses the IRIG 106 library.

config.h - A bunch of #defines to support various compiler environments.

i106_stdint.h - Standard integer definions for environments that don't supply this.


ToDo
----

Implement seek() based on time.

Implement video decoder

Parse more TMATS fields

Provide better, more automatic ways to keep time in sync

About

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:C 58.1%Language:C++ 29.9%Language:Python 11.4%Language:Makefile 0.6%