mint-core 1.3.1

Core library for building hex files from data and layout definitions.
Documentation
# YAML format test layout - contains block for format parsing verification
mint:
  endianness: "little"
  checksum:
    crc32:
      polynomial: 0x04C11DB7
      start: 0xFFFFFFFF
      xor_out: 0xFFFFFFFF
      ref_in: true
      ref_out: true

block:
  header:
    start_address: 0x8B000
    length: 0x1000
    padding: 0xC0
  data:
    some.struct.value:
      value: 0x1234
      type: "u32"
    some.struct.value2:
      name: "Value 2"
      type: "u32"
    some.struct.value3:
      value: "Value 3"
      type: "u8"
      size: 10

    device.info.name:
      name: "DeviceName"
      type: "u8"
      size: 16
    device.info.serial:
      name: "SerialNumber"
      type: "u32"
    device.info.version.major:
      name: "FWVersionMajor"
      type: "u16"
    device.info.version.minor:
      name: "FWVersionMinor"
      type: "u16"
    device.info.version.patch:
      name: "FWVersionPatch"
      type: "u16"

    wifi.ssid:
      name: "WiFiSSID"
      type: "u8"
      size: 32
    wifi.key:
      name: "WiFiKey"
      type: "u8"
      size: 64

    net.ip:
      value: [192, 168, 1, 100]
      type: "u8"
      size: 4

    calibration.coefficients:
      name: "Coefficients1D"
      type: "f32"
      size: 8
    calibration.matrix:
      name: "CalibrationMatrix"
      type: "i16"
      size: [3, 3]

    message:
      value: "Hello, world!"
      type: "u8"
      size: 16

    magic:
      value: 0xDEADBEEF
      type: "u32"

    nested.complex.level1.level2.level3.scalar16:
      value: 0x42
      type: "u16"
    nested.complex.level1.level2.level3.array1d:
      value: [1, 2, 3, 4]
      type: "i16"
      size: 4

    structs.astruct_array:
      name: "AStructs"
      type: "f32"
      size: [10, 2]

    checksum:
      checksum: "crc32"
      type: "u32"

block2:
  header:
    start_address: 0x8C000
    length: 0x1000
  data:
    another.struct.value:
      name: "Array"
      type: "u16"
      size: [10, 2]
    another.struct.arr:
      value: [2, 2]
      type: "u16"
      size: 2
    another.struct.description:
      name: "Block2Description"
      type: "u8"
      size: 32
    checksum:
      checksum: "crc32"
      type: "u32"

block3:
  header:
    start_address: 0x8D000
    length: 0x1000
  data:
    counters.boot_count:
      name: "BootCount"
      type: "u64"
    limits.temperature_min:
      name: "TemperatureMin"
      type: "i16"
    limits.temperature_max:
      name: "TemperatureMax"
      type: "i16"
    thresholds.voltage:
      name: "VoltageThresholds"
      type: "f32"
      size: 4
    dlegal.notice:
      name: "LegalNotice"
      type: "u8"
      size: 128
    checksum:
      checksum: "crc32"
      type: "u32"