Giter Site home page Giter Site logo

irig106lib's Introduction

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

Copyright (c) 2019 Irig106.org
Created by Bob Baggerman
[email protected]



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

irig106lib's People

Contributors

ajelenak avatar bbaggerman avatar darki03 avatar j18ter avatar kylekeppler avatar mkolassa avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.