Light manual for INTIFADA (INTegrated Interface Free Asterix Dynamic Analyser)

INTIFADA runs primary on GNU/Linux

Contact: stephane.pion AT free.fr

1 - writing xml asterix description
1.1 - xml family description
1.2 - record description
1.2.1 - user application profile description
1.2.2 - item description
1 - writing xml asterix description
xml file actually must follow following description order:
	+ families
	+ records description
2 - filters
2.1 - filter grammar

Asterix block could have several description for the same category. So, to
handle several description for a category, and link several categories, a
family notion has been created.
a family identifies a list of categories which could be encountered in the
same stream.
This description actually must be encountered first in asterix description,
following by record description.

<intifada>
  <families>
    <family name="family name, used in user code for identification">
      <id name="record description identification"/>
    </family>
  </families>
</intifada>

family and id could be repeted as necessary

record description consist in the user application profile followed by each
item description.

<record name="record short description" cat="category id" id="record identification (permit family identification)">
</record>

A user application profile could be conditional as in category 1 mono radar
target record. intifada handling this possibility

<uap>
  <frn num="field reference number" reference="item identification"/>
</uap>
<uap if="part item" value="expected value">
  <frn num="" reference=""/>
</uap>
fields reference nubers (frn) begin to one as in eurocontrol documentation
uap could be repeted.

All items referenced in the uap section must be described.

<item name="item short description" reference="item reference">
</item>

The item reference must be associated in the user application profile

Asterix items can take differents forms. They could be 'fixed', 'extended',
'repetitive' and compound. items caracteristics could be described using properties.

<fixed>
<properties>
<property>size=int</property>
<property>force_presence=bool (default=false)</property>
</properties>
</fixed>
properties description:
+size: item total size in bytes (mandatory)
+force_presence: if true, the item will be present even if there is no one bit at 1
item's data description:
<part type="type" name="name" start="first bit" size="size in bits"></part>
'start' is the position of 'name' lsb. It is counted from the lsb bit of the item. It begin at 1

<extended>
<properties>
<property>primary_size=int</property>
<property>repetitive=bool repetitive caracteristics (bool)</property>
<property>secondaries_size= secondaries parts size (int) useless if repetitive=true</property>
</properties>
</extended>
properties description:
+primary_size: first part size in bytes
+repetitive: item is repetitive (each part (first and secondaries) have the same structure)
+secondaries_size: secondaries parts size (if item is repetitive, secondaries size are
forced to primary size
non repetitive item's data description:
<part type="type" name="name" start="lsb bit" size="size in bits" byte="refering part">
'start' is the position of 'name' lsb. It is counted from de lsb bit of the part.
'byte' indicates part. 0 is the first part, other values reffering to secondaries part
repetitive item's data description:
same as non repetitive except byte which must be ommited as description is repeted for
each part

<repetitive>
<properties>
<property>indicatorlength=bool</property>
<property>length=int</property>
</properties>
</repetitive>
properties description:
+indicatorlength: get from stream (and put to stream) on byte indicating total length of item
+length: subpart size
<part type="type" name="name" start="lsb bit" size="size in bits">
'start' is the position of 'name' lsb. It is counted from the lsb bit of the part. It begin at 1

<compound>
<uap>
<frn>
</frn>
</uap>
<item>
</item
</compound>
compound keep record description except fields reference numbers numerotation (as in eurocontrol documentation)
TODO:clearing this part




2 - filters (not yes implemented)
filter are used to modify asterix items using simple expressions eg:
if(030/MODEA==7765)030/V=1 else 030/V=0
if(030/MODEA==7765){030/V=1;030/MODEA=0000;} else 030/V=0



2.1 - filters grammar

