added support for array composition and several improvements

- implemented CABLOCK
- only array composition at CNBLOCKs is supported yet, no
structure-based composition
- when a CABLOCK is linked via the composition link from a CNBLOCK, the
resulting AoMeasurementQuantity in ODS will have specified the rank and
dimension attributes accordingly, as specified by the ODS standard
- an additional attribute ('columnOriented' of type boolean at
AoMeasurementQuantity) is also set, containing the information, whether
the channel's value tensor has to be interpreted in a row- or
column-oriented manner, when calculating the actual values from it
- support for half-precision floating point data type
- fixed local column creation: independent and axistype are now set
according to SyncType and not ChannelType
- added BlockReferenceTriple for handling of according references in mdf
files
- fixed misleading names of fields in CABLOCK
- support default values at scale conversions with CCBLOCKS

Signed-off-by: Markus Renner <m.renner@peak-solution.de>
14 files changed
tree: 1059f6020dd7c896736fbd241689bab3c1d21866
  1. .gitignore
  2. CONTRIBUTING.md
  3. LICENSE.txt
  4. NOTICE.txt
  5. README.md
  6. build.gradle
  7. gradle.properties
  8. gradle/
  9. gradlew
  10. gradlew.bat
  11. settings.gradle
  12. src/
README.md

Documentation open ATFX MDF4 driver

Copyright and License

Copyright (c) 2015-2020 Contributors to the Eclipse Foundation

See the NOTICE file(s) distributed with this work for additional information regarding copyright ownership.

This program and the accompanying materials are made available under the terms of the Eclipse Public License v. 2.0 which is available at http://www.eclipse.org/legal/epl-2.0.

SPDX-License-Identifier: EPL-2.0

Author: Christian Rechner, AUDI AG

Introduction

This application allows accessing the content of an MDF3/MDF4 file via an ASAM ODS Session, backed by an ATFX-File, and the export of this file. The file contents including Meta-Data are transformed to the ASAM ODS standard and can be accessed using ASAMs OO-API.

Java code example for opening a ASAM ODS session on an ATFX file

import java.nio.file.Path;
import java.nio.file.Paths;

import org.asam.ods.AoSession;
import org.omg.CORBA.ORB;

import de.rechner.openatfx_mdf.ConvertException;
import de.rechner.openatfx_mdf.MDFConverter;

public class Example{
    public static void main(String[] args) throws ConvertException{
        ORB orb = ORB.init(new String[0], System.getProperties());
        Path path = Paths.get("C:\\myExample.mf4");
        MDFConverter reader = new MDFConverter();
        AoSession aoSession = reader.getAoSessionForMDF(orb, path);
    }
}

Known bugs/missing features:

BLOCKs

  • IDBLOCK
    • id_unfin_flags must be 0
    • id_custom_unfin_flags must be 0
  • HDBLOCK
    • hd_ch_first must be 0 (channel hierarchy not yet supported)
    • hd_flags must be 0 [bits 00] (start angle value below is invalid, start distance value below is invalid)
  • CHBLOCK (MDF3): not yet supported, will be ignored with warning
  • ATBLOCK: not yet supported, will be ignored with warning
  • EVBLOCK:
    • ev_ev_parent will be ignored with warning
    • ev_ev_range will be ignored with warning
    • formula tag in ev_md_comment not entirely supported
  • DGBLOCK
    • may contain only ONE channel group (sorted MDF), otherwise an exception is thrown
    • Records must not be zipped or split up in multiple datablocks if parts of one record are in multiple blocks.
  • CGBLOCK
    • cg_flags must be null (VLSD and bus events not supported), otherwise an exception is thrown
    • cg_inval_bytes must be null (invalidation bits not supported), otherwise an exception is thrown
  • CNBLOCK
    • cn_composition only array composition supported, otherwise an exception is thrown
    • cn_at_reference: not yet supported, will be ignored with warning
    • cn_limit_min: not yet supported, will be ignored with warning
    • cn_limit_max: not yet supported, will be ignored with warning
    • cn_limit_ext_min: not yet supported, will be ignored with warning
    • cn_limit_ext_max: not yet supported, will be ignored with warning
    • VLSD only supports String datatypes.

XML content

  • mdf_base.xsd
    • type ‘common_properties’
    • ‘tree’ will be ignored with warning
    • ‘list’ will be ignored with warning
    • ‘elist’ will be ignored with warning
  • hd_comment.xsd
    • ‘UNIT-SPEC’ will be ignored with warning