Crate a2lfile

Source
Expand description

a2lfile is a library that allows you to read, modify and write a2l files.

It is fast, preserves the formatting of the input, and has support for files using standard version 1.71.

§Features

  • check: perform a consistency check on the data
  • cleanup: remove unused GROUPs, RECORD_LAYOUTs, COMPU_METHODs, COMPU_(V)TABs and UNITs
  • ifdata_cleanup: remove any IF_DATA blocks that could not be parsed using either the specification provided during load or the specification in the A2ML block in the file
  • merge: merge two a2l files on the MODULE level
  • sort: sort the data in the a2l file

Macros§

a2ml_specification
The a2ml_specification! macro enables application to conveniently decode and use IF_DATA defined though A2ML. The macro uses an “enhanced A2ML” language to define the items. Rust data structures and associated code will be generated for items defined inside of the macro.
itemlist

Structs§

A2lFile
Contains all the objects of an A2lfile
A2ml
A2ML is a special case in the specification. It contains the ASAP2 metalanguage code that describes the content of IF_DATA blocks
A2mlVersion
Contains AML code for description of interface specific description data.
AddrEpk
Address of the EPROM identifier
AddressType
Description of the addressing of table values or axis point values.
AlignmentByte
Defines the alignment of byte-sized values in complex objects (maps and axis)
AlignmentFloat16Ieee
Defines the alignment of 16bit floats in complex objects (maps and axis)
AlignmentFloat32Ieee
Defines the alignment of 32bit floats in complex objects (maps and axis)
AlignmentFloat64Ieee
Defines the alignment of 64bit floats in complex objects (maps and axis)
AlignmentInt64
Defines the alignment of int64 values in complex objects (maps and axis)
AlignmentLong
Defines the alignment of long-sized values in complex objects (maps and axis)
AlignmentWord
Defines the alignment of word-sized values in complex objects (maps and axis)
Annotation
An extended description text
AnnotationLabel
The label or title of an annotation
AnnotationOrigin
Identify who or which system has created an annotation
AnnotationText
Text of an annotation
ArComponent
describes the Autosar component type of a function
ArPrototypeOf
Describes the resationship of the component type to to a component prototype in the Autosar system
ArraySize
marks a measurement object as an array of <Number> measurement values
Asap2Version
Version of the ASAM MCD-2MC standard used by this file
AxisDescr
Axis description within an adjustable object
AxisPts
Parameters for the handling of an axis points distribution
AxisPtsDim
Description of the X, Y, Z, Z4 or Z5 axis points in memory
AxisPtsRef
Reference to an AXIS_PTS record
AxisRescaleDim
Description of rescaling the axis values of an adjustable object
BitMask
The BIT_MASK keyword can be used to mask out single bits of the value to be processed.
BitOperation
Used to perform bit operation on a value
Blob
Special data object that can be used to handle domain specific data, which are processed inside the ECU in a dedicated way
BlockInfo
Describes the location and formatting of an a2l block within a file
ByteOrder
Where the standard value does not apply this parameter can be used to specify the byte order
CalibrationAccess
Specifies the access of a CHARACTERISTIC or AXIS_PTS for calibration
CalibrationHandle
calibration method specific data
CalibrationHandleText
Additional text for a calibration handle
CalibrationMethod
Indicates the different methods of access that are implemented in the ECU
Characteristic
Specifies all the parameters of an adjustable object
Coeffs
Specifies the coefficients for the formula f(x) = (axx + bx + c) / (dxx + ex + f)
CoeffsLinear
Specifies the coefficients for the linear formula f(x) = ax + b
CombinationStruct
Auto generated for repeating sequence combination in block VAR_FORBIDDEN_COMB
ComparisonQuantity
references a valid MEASUREMENT
CompuMethod
Specification of a conversion method from internal values to physical values
CompuTab
Conversion table for conversions that cannot be represented as a function
CompuTabRef
reference to a conversion table
CompuVtab
Conversion table for the assignment of display strings to values. Typically used for enums.
CompuVtabRange
Conversion table for the assignment of display strings to a value range
ConsistentExchange
indicates that an instance of a structure should always be handled completely
Conversion
CONVERSION is used inside OVERWRITE to override the default conversion method
CpuType
Identifies the CPU used in the ECU
CurveAxisRef
Used to specify the adjustable CURVE CHARACTERISTIC that is used to normalize or scale the axis in an AXIS_DESCR
Customer
Allows a customer name to be specified
CustomerNo
specify a customer number or identifier as a string
DataSize
Data size in bits
DefCharacteristic
Defines which adjustable objects are used by a FUNCTION
DefaultValue
Sets the default text value of COMPU_TAB, COMPU_VTAB or COMPU_VTAB_RANGE
DefaultValueNumeric
Sets the default numerical value of COMPU_TAB, COMPU_VTAB or COMPU_VTAB_RANGE
DependentCharacteristic
Specify characteristics that depend on a formula
Deposit
Specifies how the axis points of a characteristic are deposited in memory
Discrete
Indicates that a measurement or calibration object has discrete values which should not be interpolated
DisplayIdentifier
Gives the display name of a CHARACTERISTIC or MEASUREMENT value
DistOpDim
Description of the distance operand in the deposit structure to compute the axis points for fixed characteristic curves and fixed characteristic maps
Ecu
String for identification of the control unit.
EcuAddress
Provides the address of a MEASUREMENT
EcuAddressExtension
Used to specify additional address information
EcuCalibrationOffset
Provide an address offset in order to handle near pointers or variant coding
Encoding
a CHARACTERISTIC of type ASCII can be configured to use a multi-byte encoding instead
Epk
EPROM identifier
ErrorMask
Used to mask bits of a MEASUREMENT which indicate that the value is in error
ExtendedLimits
used to specify an extended range of values
FixAxisPar
Parameters for the calculation of fixed axis points: X_i = Offset + (i - 1)*2^shift
FixAxisParDist
Parameters for the calculation of fixed axis points: X_i = Offset + (i - 1)*distance
FixAxisParList
A list of fixed axis point, as implemented on the ECU
FixNoAxisPtsDim
Specifies the number of axis points available to CURVE, MAP, CUBOID, CUBE_4 or CUBE_5
FncValues
Description of the table values (function values) of an adjustable object
Format
Allows a display format string to be specified for a MEASUREMENT, CHARACTERISTIC or AXIS_PTS object
Formula
Allows any kind of formula to be specified
FormulaInv
Allows an inverse formula to be specified
Frame
Defines a function frame to structure large amounts of measurement objects
FrameMeasurement
Contains a list of identifiers of measurement objects
Function
Describes the input, local, and output variables of a function on the ECU
FunctionList
a list of FUNCTION objects
FunctionVersion
A string containing the version of a FUNCTION
GenericIfDataTaggedItem
A tagged item (of taggedstruct or taggedunion) in the generic IfData representation
Group
Defines a group of releated CHARACTERISTIC and MEASUREMENT objects
GuardRails
Used to indicate that an adjustable CURVE, MAP or AXIS_PTS uses guard rails
Header
The header of a project
Identification
used to describe that an 'identifier' is deposited in a specific position in the adjustable object
IfData
The content of IF_DATA blocks is not directly described in the specification. Instead the content description is provided at runtime through the A2ML block.
InMeasurement
Interface specific data A list of measurement objects that are used as the inputs of a function
InputQuantity
INPUT_QUANTITY is used inside OVERWRITE to override the input_quantity of an INSTANCE
Instance
Creates an instance of a type defined using TYPEDEF_STRUCTURE, TYPEDEF_MEASUREMENT or TYPEDEF_CHARACTERISTIC
ItemList
A list of named a2l items
Layout
describes the layout of a multi-dimensional measurement array
LeftShift
Used within BIT_OPERATION to left-shift the bits of a value
Limits
LIMITS is used inside OVERWRITE to override the limits of an INSTANCE
LocMeasurement
A list of measurement objects that are local variables of a function
MapList
used to specify the list of MAPs which comprise a CUBOID
MatrixDim
describes the dimensions of a multidimensional array of values
MaxGrad
specifies a maximum permissible gradient for an adjustable object
MaxRefresh
specifies the maximum refresh rate in the control unit
Measurement
describes the parameters for a measurement object
MemoryLayout
describes the layout of the ECU memory
MemorySegment
describes a memory segment of the ECU program
ModCommon
defines default values for the entire module
ModPar
defines system information and management data for the module
ModelLink
add a string to a CHARACTERISTIC linking it to a name in the model
Module
The MODULE keyword describes a complete ECU or device with all adjustable and measurement objects, conversion methods and functions
Monotony
specifies the monotony of an adjustment object
NoAxisPtsDim
Description of the number of axis points in an adjustable object
NoOfInterfaces
the number of interfaces
NoRescaleDim
number of rescaling axis point value pairs
Number
specifies the number of values in an array. Obsolete, replaced by MATRIX_DIM
OffsetDim
Description of the 'offset' parameter in the deposit structure
OutMeasurement
defines output quantities of a function
Overwrite
override some default attributes of a type definition in a specific INSTANCE.
PhoneNo
contains a phone number, e.g. of the calibration engineer
PhysUnit
specifies the physical unit of a measurement or calibration object as a string
Project
Project description with project header and all modules belonging to the project. Required.
ProjectNo
Gives the project identifier
ReadOnly
used to indicate that an adjustable object is read-only
ReadWrite
used to indicate that a measurement object is writeable
RecordLayout
specifies the various data structures of an adjustable objects in memory
RefCharacteristic
defines a list of adjustable objects that can be referenced by a function or group
RefGroup
defines a list of groups for use by USER_RIGHTS
RefMeasurement
defines a list of measurement objects that can be referenced by a group
RefMemorySegment
reference to a MEMORY_SEGMENT
RefUnit
reference to a UNIT
Reserved
indicates that the data at the given position is reserved and should not be interpreted by the MCD system
RightShift
Used within BIT_OPERATION to right-shift the bits of a value
RipAddrDim
Describes the storage of the ECU-internal result of interpolation (RIP)
Root
indicates that the current group is at the root of the navigation tree
SRecLayout
sets the standard record layout for the module
ShiftOpDim
Description of the shift operand in the deposit structure to compute the axis points for fixed characteristic curves and fixed characteristic maps
SiExponents
the seven base dimensions required to define an extended SI unit
SignExtend
used in BIT_OPERATION to specify that sign extension should be performed
SrcAddrDim
Description of the address of the input quantity in an adjustable object
StaticAddressOffsets
indicates that the start addresses of axes and function values of an adjustable object do not change when removing or inserting axis points
StaticRecordLayout
indicates that an adjustable object with dynamic number of axis points does not compact or expand data when removing or inserting axis points
StatusStringRef
used to split up the value range of ECU internal values into a numerical and a verbal part
StepSize
step size when adjusting the value of a CHARACTERISTIC, AXIS_PTS or AXIS_DESCR
StructureComponent
defines a single component of a TYPEDEF_STRUCTURE
SubFunction
a list of identifiers of functions which are sub-functions of the current function
SubGroup
a list of identifiers of groups which are subgroups of the current group
Supplier
Name of the ECU manufacturer
SymbolLink
specifes the name of a symbol within a linker map file that corresponds to the a2l object
SymbolTypeLink
Specifies the name of a symbol within a linker map file or debug file that describes a class, class member, structure or structure component
SystemConstant
defines a system constant that can be used in conversion formulas
TabEntryStruct
Auto generated for repeating sequence tab_entry in block COMPU_TAB
Transformer
Definition of call to an external function (32-bit or 64-bit DLL) for converting calibration object values between their implementation format and physical format
TransformerInObjects
provides a list of inputs for a TRANSFORMER
TransformerOutObjects
provides a list of outputs for a TRANSFORMER
TypedefAxis
Type definition of an axis object
TypedefBlob
Type definition of a BLOB
TypedefCharacteristic
Type definition of a calibration object
TypedefMeasurement
Type definition of a measurement object
TypedefStructure
Definition of structured data types similar to the "typedef" command in C
Unit
Specification of a measurement unit
UnitConversion
Specification of the linear relationship between two measurement units
User
Name of the user
UserRights
used to define groups accessible only for certain users
ValuePairsStruct
Auto generated for repeating sequence value_pairs in block COMPU_VTAB
ValueTriplesStruct
Auto generated for repeating sequence value_triples in block COMPU_VTAB_RANGE
VarAddress
define a list of start addresses of variant coded adjustable objects
VarCharacteristic
defines one adjustable object to be variant coded
VarCriterion
describes a variant criterion
VarForbiddenComb
describes a forbidden combination of values of different variant criteria
VarMeasurement
specify a special measurement object which indicates the currently active variant
VarNaming
defines the format of the variant extension (index) of adjustable object names
VarSelectionCharacteristic
used to specify a special characteristic object which can change the currently active variant
VarSeparator
defines the separating symbol between the two parts of an adjustable object name
VariantCoding
All information related to variant coding is grouped in this structure
Version
version identifier
Virtual
specification of the measurement objects for a virtual measurement channel
VirtualCharacteristic
defines characteristics that are not deposited in the memory of the control unit, but can be used to indirectly calibrate other characteristic values

Enums§

A2lError
AddrType
Description of the addressing of table values or axis point values.
AxisDescrAttribute
Description of the axis points
ByteOrderEnum
Byte ordering of a value on the ECU
CalibrationAccessEnum
Type of access that is possible for a CHARACTERISTIC or AXIS_PTS object
CharacterEncoding
Describes the encoding of a string, if it is not ASCII
CharacteristicType
Specifies the type of an adjustable object
ConversionType
Describes how to convert internal input values to physical values
DataType
Description of the basic data types in the ECU program.
DataTypeSize
Description of the word lengths in the ECU program.
DepositMode
Deposit of the axis points of a characteristic curve or map
GenericIfData
generic representation of data inside an IF_DATA block that can be loaded into application-specific data structures
IndexMode
Describes how the 2-dimensional table values are mapped onto the 1-dimensional address space
IndexOrder
Description of the axis point sequence in the memory.
MemoryAttribute
specifies if a given memory region is internal or external
MemoryType
describes the type of memory used
MonotonyType
describes the possible ways an adjustment object can be monotonous
ParserError
PrgType
Describes the types of data in the ECU program
ProgType
describes the types of program segments
TokenizerError
TransformerTrigger
the trigger conditions of a TRANSFORMER
UnitType
Type of the UNIT
VarNamingTag
intended to define the format of the variant extension. Currently only one format is supported

Traits§

A2lObject
The trait A2lObject is implemented for all a2l objects as well as all objects generated by the a2ml_specification! macro. It gives access to layout and location data which is tracked for each object in an a2l file.
A2lObjectName
The trait A2lObjectName is automatically implemented for named a2l objects
A2lObjectNameSetter
The trait A2lObjectName is automatically implemented for named a2l objects

Functions§

load
Load an a2l file
load_fragment
load an a2l fragment
load_fragment_file
load an a2l fragment from a file
load_from_string
load a2l data stored in a string
new
Create a new a2l file