asterix datablock generator
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



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.


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, 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 =
  > 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

  > data =, {type="north",arp=4000}, {type="sector",azimuth=0})

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

  > print(        -- data category field (CAT)

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

  > 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


* ASTERIX page at Eurocontrol (

ASTERIX is the EUROCONTROL Standard for the exchange of Surveillance related

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.

* - official site (

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.


* Lua 5.1 - (


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

    git clone git://

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