Skip to content

Instantly share code, notes, and snippets.

@kouak
Created November 19, 2016 15:41
Show Gist options
  • Save kouak/1c0317fa1293cfbe8195386820df5ec9 to your computer and use it in GitHub Desktop.
Save kouak/1c0317fa1293cfbe8195386820df5ec9 to your computer and use it in GitHub Desktop.
meta:
id: asterix
seq:
- id: asterix
type: asterix_wrapper
repeat: eos
types:
asterix_wrapper:
seq:
- id: category
type: u1
- id: asterix_len
type: u2be
- id: asterix_content_blocks
size: asterix_len - 3
type:
switch-on: category
cases:
'30': asterix_cat030
_: asterix_unknown_category
asterix_unknown_category:
seq:
- id: raw_content
size-eos: true
asterix_cat030:
seq:
- id: single_block
repeat: eos
type: asterix_cat030_single_block
asterix_cat030_single_block:
seq:
- id: fspec
type: u1
repeat: until
repeat-until: _ & 0x1 == 0
- id: cat030_content
type: asterix_cat030_content
asterix_cat030_content:
seq:
# FRN 1
- id: item_010
size: 2
if: _parent.fspec[0] & 0x80 != 0
- id: item_015
size: 2
if: _parent.fspec[0] & 0x40 != 0
- id: item_030
type: cat030_030
if: _parent.fspec[0] & 0x20 != 0
- id: item_035
size: 1
if: _parent.fspec[0] & 0x10 != 0
- id: item_040
size: 2
if: _parent.fspec[0] & 0x8 != 0
- id: item_070
size: 3
if: _parent.fspec[0] & 0x4 != 0
- id: item_170
size: 4
if: _parent.fspec[0] & 0x2 != 0
# # # FRN 2
- id: item_100
size: 4
if: _parent.fspec[1] and _parent.fspec[1] & 0x80 != 0
- id: item_180
size: 4
if: _parent.fspec[1] and _parent.fspec[1] & 0x40 != 0
- id: item_181
size: 4
if: _parent.fspec[1] and _parent.fspec[1] & 0x20 != 0
- id: item_060
size: 2
if: _parent.fspec[1] and _parent.fspec[1] & 0x10 != 0
- id: item_150
size: 2
if: _parent.fspec[1] and _parent.fspec[1] & 0x8 != 0
- id: item_130
size: 2
if: _parent.fspec[1] and _parent.fspec[1] & 0x4 != 0
- id: item_160
size: 2
if: _parent.fspec[1] and _parent.fspec[1] & 0x2 != 0
# # # FRN 3
- id: item_080
type: cat030_080
if: _parent.fspec[2] and _parent.fspec[2] & 0x80 != 0
- id: item_090
size: 1
if: _parent.fspec[2] and _parent.fspec[2] & 0x40 != 0
- id: item_200
size: 1
if: _parent.fspec[2] and _parent.fspec[2] & 0x20 != 0
- id: item_220
size: 2
if: _parent.fspec[2] and _parent.fspec[2] & 0x10 != 0
- id: item_240
size: 1
if: _parent.fspec[2] and _parent.fspec[2] & 0x8 != 0
- id: item_290
size: 2
if: _parent.fspec[2] and _parent.fspec[2] & 0x4 != 0
- id: item_260
size: 2
if: _parent.fspec[2] and _parent.fspec[2] & 0x2 != 0
# # # FRN 4
- id: item_360
size: 4
if: _parent.fspec[3] and _parent.fspec[3] & 0x80 != 0
- id: item_140
size: 2
if: _parent.fspec[3] and _parent.fspec[3] & 0x40 != 0
- id: item_340
size: 2
if: _parent.fspec[3] and _parent.fspec[3] & 0x20 != 0
- id: item_re
type: cat030_re
if: _parent.fspec[3] and _parent.fspec[3] & 0x10 != 0
- id: item_390
size: 2
if: _parent.fspec[3] and _parent.fspec[3] & 0x8 != 0
- id: item_400
size: 7
if: _parent.fspec[3] and _parent.fspec[3] & 0x4 != 0
- id: item_410
size: 2
if: _parent.fspec[3] and _parent.fspec[3] & 0x2 != 0
# # # FRN 5
- id: item_440
size: 4
if: _parent.fspec[4] and _parent.fspec[4] & 0x80 != 0
- id: item_450
size: 4
if: _parent.fspec[4] and _parent.fspec[4] & 0x40 != 0
- id: item_435
size: 1
if: _parent.fspec[4] and _parent.fspec[4] & 0x20 != 0
- id: item_430
size: 4
if: _parent.fspec[4] and _parent.fspec[4] & 0x10 != 0
- id: item_460
type: cat030_460
if: _parent.fspec[4] and _parent.fspec[4] & 0x8 != 0
- id: item_480
size: 2
if: _parent.fspec[4] and _parent.fspec[4] & 0x4 != 0
- id: item_420
size: 1
if: _parent.fspec[4] and _parent.fspec[4] & 0x2 != 0
# # # FRN 6
- id: item_490
size: 2
if: _parent.fspec[5] and _parent.fspec[5] & 0x80 != 0
- id: item_020
size: 3
if: _parent.fspec[5] and _parent.fspec[5] & 0x40 != 0
- id: item_382
size: 3
if: _parent.fspec[5] and _parent.fspec[5] & 0x20 != 0
- id: item_384
size: 6
if: _parent.fspec[5] and _parent.fspec[5] & 0x10 != 0
- id: item_386
size: 1
if: _parent.fspec[5] and _parent.fspec[5] & 0x8 != 0
- id: item_110
size: 4
if: _parent.fspec[5] and _parent.fspec[5] & 0x4 != 0
- id: item_190
size: 4
if: _parent.fspec[5] and _parent.fspec[5] & 0x2 != 0
# # # FRN 7
- id: item_191
size: 4
if: _parent.fspec[6] and _parent.fspec[6] & 0x80 != 0
- id: item_135
size: 2
if: _parent.fspec[6] and _parent.fspec[6] & 0x40 != 0
- id: item_165
size: 2
if: _parent.fspec[6] and _parent.fspec[6] & 0x20 != 0
- id: item_230
size: 2
if: _parent.fspec[6] and _parent.fspec[6] & 0x10 != 0
- id: item_250
size: 1
if: _parent.fspec[6] and _parent.fspec[6] & 0x8 != 0
- id: item_210
size: 3
if: _parent.fspec[6] and _parent.fspec[6] & 0x4 != 0
- id: item_120
size: 2
if: _parent.fspec[6] and _parent.fspec[6] & 0x2 != 0
# # # FRN 8
- id: item_050
type: cat030_050
if: _parent.fspec[7] and _parent.fspec[7] & 0x80 != 0
- id: item_270
size: 2
if: _parent.fspec[7] and _parent.fspec[7] & 0x40 != 0
- id: item_370
size: 2
if: _parent.fspec[7] and _parent.fspec[7] & 0x20 != 0
cat030_030:
seq:
- id: service_identification
type: u1
- id: service_identification_2
type: u1
if: service_identification & 0x1 != 0
cat030_080:
seq:
- id: track_status
type: u1
repeat: until
repeat-until: _ & 0x1 == 0
cat030_re:
seq:
- id: re_length
type: u1
- id: rest
size: re_length - 1
cat030_460:
seq:
- id: allocated_ssr_codes
type: u1
repeat: until
repeat-until: _ & 0x1 == 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment