Table of Contents
~~ODT~~
IRIG 106-13 Chapter 10 Programming Handbook
This programming handbook presents the results of work performed by members of the Telemetry Group (TG) under Task TG-110 of the Range Commanders Council (RCC) to update the original handbook to reflect additions and changes to the standard made since its release.
IRIG 106-09 was released in April of 2009 with primarily clarifications and additional definitions for existing commands. No new data types were added with this release although the TELNET protocol was introduced as a new interface type for ground-based recorders. In addition, a number of changes were made to support XML TMATS for use in configuring the recorder.
IRIG 106-13 was released in June of 2013 with two new data types (CAN BUS and AFDX) plus a new sub-type to support Dynamic Image Packets. A complete list of changes to this version can be found under IRIG 106-13 Changes. A number of updates were also made to TMATS (IRIG 106-13 Chapter 9) related to Chapter 10 with a complete list found under IRIG 106-13 TMATS Changes.
DOCUMENT PURPOSE
The primary goal of this document is to provide updates to the original where additional clarification is needed or where new information needs to be added. The sections below address both of these cases.
SAMPLE CODE
Many if not most programmers learn best from sample code. This update to the IRIG 106 Programmer's Handbook adds a number of new code samples in multiple languages to show how to process different data types and specific features of the Chapter 10 file format. These samples are linked below on individual pages to make it easy to access. A number of these samples use the C library available from sourceforge.
Samples Repository
The samples repository is hosted on bitbucket here. Included in the repository are basic installation and usage directions akin to what is given here.
The samples are organized into 3 categories:
- c - Standard C samples using the Irig 106 library (from irig106.org)
- pyi106 - Python samples using a wrapper to the above C library.
- pyc10 - Pure Python samples using the PyChapter10 library.
Each of the above directories has the same basic samples written as similarly as possible to perform the following tasks:
- stat - Read a .ch10/.c10 file and display information on the data it contains. Can also filter report based on data type and channel ID.
- copy - Copy packets from one file to another. Can also filter based on data type and channel ID.
- dump - Export packet contents to separate files (eg. export video data to .mpg files). Can also filter based on data type and channel ID.
- video - Full GUI application that will play split-screen video directly from a chapter 10 file as it is parsed in the background.
- reindex (C sample still work in progress) - Strip index packets from a file and optionally rebuild new indices entirely.
- listen (work in progress) - Listens for chapter 10 over an ethernet stream and saves to file.
Dependencies (C samples)
- Visual studio (developed on VS Ultimate 2013)
- Qt 5 & Qt visual studio plugin (for video sample)
Dependencies (Python Samples)
- Python 2.7
- PyChapter10 (see above, for pyc10 samples only)
- PySide (for video samples)
Building and Running (C samples)
The code for the C samples are (as much as possible) kept in the src directory under C samples. The code has comments outlining the different sections and is written as consistently as possible to the matching samples in the pyc10 and pyi106 sample directories. The visual studio project files are in the vs directory at the top of the c directory structure. Make sure samples/c/src and samples/c/irig106lib/src are in your “Additional Include Directories” and you should be able to compile, debug, etc.
Once dependencies are installed you should be able to build binaries of the samples. The video sample depends on the mplayer executable (included) located relative to the build and debug directories, but the others are self-contained.
All of the samples (again, excluding video since it's a full GUI application) are run from the command line. Each one supports the –help option to view usage, options, etc. for that specific tool.
Building and Running (Python samples)
Once python and any other dependencies are installed the python samples can be run at the command prompt by prefixing the invocation with “python” as in: “python stat.py test.c10” which would run the stat sample on a file “test.c10”.
APPENDIX
CR031 - XML Mapping to Chapter 10
It was decided during a Recorder Vendor Working Group telecon to push CR031 into an appendix of the next release of the programmer's handbook. The work on this was submitted by Christian Rueck of Data Bus Tools GmbH. The XML below presents one example of a file definition based on this concept.