Bytes | Type | Description |
---|---|---|
4 | ASCII | Label (usually matches group label) |
4 | unsigned integer | Size of record |
4 | - | Bit flags |
4 | unsigned integer | Record ID |
4 | unsigned integer | Revision ID |
2 | unsigned integer | Version |
2 | - | - |
{always, applySpec, compose, ifElse, lte, propSatisfies, slice} = require 'ramda'
buffer_to = require './buffer_to'
has_byte_length = propSatisfies(lte(24), 'length')
Plain version of label
is buffer.slice(0, 4).toString('ascii')
.
get_main_values = applySpec
bytes: always 24
name: compose(buffer_to.ascii, slice(0, 4))
value:
data_bytes: buffer_to.uint32 4
#flags = buffer.slice 8, 12
id: buffer_to.uint32 12
revision: buffer_to.uint32 16
unknown: buffer_to.uint16 22
version: buffer_to.uint16 20
module.exports = ifElse(has_byte_length, get_main_values, always({bytes: 0}))