frenolfi / axgen

asterix datablock generator
9 stars 3 forks source link

INTRODUCTION

The axgen tool is a command-line interface application and interactive shell that assists the user in the generation of ASTERIX data blocks.

Data blocks are generated from records definitions, declared in the Lua programming language.

DESCRIPTION

When invoked without parameters, axgen starts in interactive mode, presenting the user with a short banner, followed by the prompt:

$ axgen


                  /  _  \  |   |   |  _____ _____ _____ 
                 |       |  >     <  |  _  |  -__|     |
                 |___|___| |___|___| |___  |_____|__|__|
                                     |_____|            

ASTERIX generator (C) Copyright 2010-2011 Federico Renolfi, Argentina

Powered by: Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio

Given the following definitions of monoradar service messages:

record1 = { type = "north", -- north marker message record arp = 4000, -- [ms] antenna rotation period }

record2 = { type = "sector", -- sector crossing message record azimuth = 0, -- [degrees] (0 == north, 180 == south) }

An ASTERIX data block of data category 34 is generated within the shell by:

data = asterix.new(34) data:add(record1) -- append the "north" record to the data block data:add(record2) -- append the "sector" record to the data block

All the mandatory fields had been automatically completed by axgen.

In this example, data source identifiers are set to the value of global variables asterix.sac and asterix.sic (both default to zero on program start).

Field Specification (FSPEC) fields are automatically calculated for both records according to the presence (or absence) of optional data fields (as arp in the north record).

Also, the data block length has been properly set.

The same can be achieved by the following alternative call to asterix.new():

data = asterix.new(34, {type="north",arp=4000}, {type="sector",azimuth=0})

Finally, the generated data block may be inspected in by:

print(data.cat) -- data category field (CAT) 34

print(data.len) -- data block length field (LEN) 20

print(data.raw) -- hex string representation of the data block 22 00 14 E8 00 00 01 15 D6 47 02 00 F0 00 00 02 15 D8 FD 00

REFERENCES

ASTERIX is the EUROCONTROL Standard for the exchange of Surveillance related data.

The acronym stands for "All Purpose STructured Eurocontrol SuRveillance Information EXchange".

ASTERIX provides a structured approach to a message format to be applied in the exchange of surveillance related information for various applications. Developed by the SuRveillance Data Exchange Task Force (RDE-TF) with its multinational participation, it ensures a common data representation, thereby facilitating the exchange of surveillance data in an international context.

Having started as a EUROCONTROL development, ASTERIX is now applied worldwide.

ASTERIX defines a structured approach to the encoding of surveillance data. Categories group the information related to a specific application. They consist of a number of data items which are defined in the ASTERIX documents down to the bit-level.

Lua is a powerful, fast, lightweight, embeddable scripting language.

Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode for a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping.

DEPENDENCIES

GIT

To download the very latest source off the GIT server do this:

git clone git://github.com/frenolfi/axgen.git

(you'll get a directory named axgen created, filled with the source code)