The following classes implement different MDF version3 blocks.

Channel Class

class asammdf.mdf3.Channel(**kargs)

CNBLOCK class derived from dict

The Channel object can be created in two modes:

  • using the file_stream and address keyword parameters - when reading from file
  • using any of the following presented keys - when creating a new Channel

The keys have the following meaning:

  • id - Block type identifier, always “CN”

  • block_len - Block size of this block in bytes (entire CNBLOCK)

  • next_ch_addr - Pointer to next channel block (CNBLOCK) of this channel group (NIL allowed)

  • conversion_addr - Pointer to the conversion formula (CCBLOCK) of this signal (NIL allowed)

  • source_depend_addr - Pointer to the source-depending extensions (CEBLOCK) of this signal (NIL allowed)

  • ch_depend_addr - Pointer to the dependency block (CDBLOCK) of this signal (NIL allowed)

  • comment_addr - Pointer to the channel comment (TXBLOCK) of this signal (NIL allowed)

  • channel_type - Channel type

    • 0 = data channel
    • 1 = time channel for all signals of this group (in each channel group, exactly one channel must be defined as time channel) The time stamps recording in a time channel are always relative to the start time of the measurement defined in HDBLOCK.
  • short_name - Short signal name, i.e. the first 31 characters of the ASAM-MCD name of the signal (end of text should be indicated by 0)

  • description - Signal description (end of text should be indicated by 0)

  • start_offset - Start offset in bits to determine the first bit of the signal in the data record. The start offset N is divided into two parts: a “Byte offset” (= N div 8) and a “Bit offset” (= N mod 8). The channel block can define an “additional Byte offset” (see below) which must be added to the Byte offset.

  • bit_count - Number of bits used to encode the value of this signal in a data record

  • data_type - Signal data type

  • range_flag - Value range valid flag

  • min_raw_value - Minimum signal value that occurred for this signal (raw value)

  • max_raw_value - Maximum signal value that occurred for this signal (raw value)

  • sampling_rate - Sampling rate for a virtual time channel. Unit [s]

  • long_name_addr - Pointer to TXBLOCK that contains the ASAM-MCD long signal name

  • display_name_addr - Pointer to TXBLOCK that contains the signal’s display name (NIL allowed)

  • aditional_byte_offset - Additional Byte offset of the signal in the data record (default value: 0).

Parameters:

file_stream : file handle

mdf file handle

address : int

block address inside mdf file

Examples

>>> with open('test.mdf', 'rb') as mdf:
...     ch1 = Channel(file_stream=mdf, address=0xBA52)
>>> ch2 = Channel()
>>> ch1.name
'VehicleSpeed'
>>> ch1['id']
b'CN'

Attributes

name (str) full channel name
address (int) block address inside mdf file
dependencies (list) lsit of channel dependencies

Methods

clear
copy Generic (shallow and deep) copying operations.
fromkeys
get
items
keys
pop
popitem
setdefault
update
values

ChannelConversion Class

class asammdf.mdf3.ChannelConversion(**kargs)

CCBLOCK class derived from dict

The ChannelConversion object can be created in two modes:

  • using the file_stream and address keyword parameters - when reading from file
  • using any of the following presented keys - when creating a new ChannelConversion

The first keys are common for all conversion types, and are followed by conversion specific keys. The keys have the following meaning:

  • common keys

    • id - Block type identifier, always “CC”
    • block_len - Block size of this block in bytes (entire CCBLOCK)
    • range_flag - Physical value range valid flag:
    • min_phy_value - Minimum physical signal value that occurred for this signal
    • max_phy_value - Maximum physical signal value that occurred for this signal
    • unit - Physical unit (string should be terminated with 0)
    • conversion_type - Conversion type (formula identifier)
    • ref_param_nr - Size information about additional conversion data
  • specific keys

    • linear conversion

      • b - offset
      • a - factor
      • CANapeHiddenExtra - sometimes CANape appends extra information; not compliant with MDF specs
    • ASAM formula conversion

      • formula - ecuation as string
    • polynomial or rational conversion

      • P1 .. P6 - factors
    • exponential or logarithmic conversion

      • P1 .. P7 - factors
    • tabular with or without interpolation (grouped by n)

      • raw_{n} - n-th raw integer value (X axis)
      • phys_{n} - n-th physical value (Y axis)
    • text table conversion

      • param_val_{n} - n-th integers value (X axis)
      • text_{n} - n-th text value (Y axis)
    • text range table conversion

      • lower_{n} - n-th lower raw value
      • upper_{n} - n-th upper raw value
      • text_{n} - n-th text value
Parameters:

file_stream : file handle

mdf file handle

address : int

block address inside mdf file

Examples

>>> with open('test.mdf', 'rb') as mdf:
...     cc1 = ChannelConversion(file_stream=mdf, address=0xBA52)
>>> cc2 = ChannelConversion(conversion_type=0)
>>> cc1['b'], cc1['a']
0, 100.0

Attributes

address (int) block address inside mdf file

Methods

clear
copy Generic (shallow and deep) copying operations.
fromkeys
get
items
keys
pop
popitem
setdefault
update
values

ChannelDependency Class

class asammdf.mdf3.ChannelDependency(**kargs)

CDBLOCK class derived from dict

Currently the ChannelDependency object can only be created using the file_stream and address keyword parameters when reading from file

The keys have the following meaning:

  • id - Block type identifier, always “CD”

  • block_len - Block size of this block in bytes (entire CDBLOCK)

  • data - Dependency type

  • sd_nr - Total number of signals dependencies (m)

  • for each dependency there is a group of three keys:

    • dg_{n} - Pointer to the data group block (DGBLOCK) of signal dependency n
    • cg_{n} - Pointer to the channel group block (DGBLOCK) of signal dependency n
    • ch_{n} - Pointer to the channel block (DGBLOCK) of signal dependency n
  • there can also be optional keys which decribe dimensions for the N-dimensional dependencies:

    • dim_{n} - Optional: size of dimension n for N-dimensional dependency
Parameters:

file_stream : file handle

mdf file handle

address : int

block address inside mdf file

Attributes

address (int) block address inside mdf file

Methods

clear
copy Generic (shallow and deep) copying operations.
fromkeys
get
items
keys
pop
popitem
setdefault
update
values

ChannelExtension Class

class asammdf.mdf3.ChannelExtension(**kargs)

CEBLOCK class derived from dict

The ChannelExtension object can be created in two modes:

  • using the file_stream and address keyword parameters - when reading from file
  • using any of the following presented keys - when creating a new ChannelExtension

The first keys are common for all conversion types, and are followed by conversion specific keys. The keys have the following meaning:

  • common keys

    • id - Block type identifier, always “CE”
    • block_len - Block size of this block in bytes (entire CEBLOCK)
    • type - Extension type identifier
  • specific keys

    • for DIM block

      • module_nr - Number of module
      • module_address - Address
      • description - Description
      • ECU_identification - Identification of ECU
      • reserved0’ - reserved
    • for Vector CAN block

      • CAN_id - Identifier of CAN message
      • CAN_ch_index - Index of CAN channel
      • message_name - Name of message (string should be terminated by 0)
      • sender_name - Name of sender (string should be terminated by 0)
      • reserved0 - reserved
Parameters:

file_stream : file handle

mdf file handle

address : int

block address inside mdf file

Attributes

address (int) block address inside mdf file

Methods

clear
copy Generic (shallow and deep) copying operations.
fromkeys
get
items
keys
pop
popitem
setdefault
update
values

ChannelGroup Class

class asammdf.mdf3.ChannelGroup(**kargs)

CGBLOCK class derived from dict

The ChannelGroup object can be created in two modes:

  • using the file_stream and address keyword parameters - when reading from file
  • using any of the following presented keys - when creating a new ChannelGroup

The keys have the following meaning:

  • id - Block type identifier, always “CG”
  • block_len - Block size of this block in bytes (entire CGBLOCK)
  • next_cg_addr - Pointer to next channel group block (CGBLOCK) (NIL allowed)
  • first_ch_addr - Pointer to first channel block (CNBLOCK) (NIL allowed)
  • comment_addr - Pointer to channel group comment text (TXBLOCK) (NIL allowed)
  • record_id - Record ID, i.e. value of the identifier for a record if the DGBLOCK defines a number of record IDs > 0
  • ch_nr - Number of channels (redundant information)
  • samples_byte_nr - Size of data record in Bytes (without record ID), i.e. size of plain data for a each recorded sample of this channel group
  • cycles_nr - Number of records of this type in the data block i.e. number of samples for this channel group
  • sample_reduction_addr - only since version 3.3. Pointer to first sample reduction block (SRBLOCK) (NIL allowed) Default value: NIL.
Parameters:

file_stream : file handle

mdf file handle

address : int

block address inside mdf file

Examples

>>> with open('test.mdf', 'rb') as mdf:
...     cg1 = ChannelGroup(file_stream=mdf, address=0xBA52)
>>> cg2 = ChannelGroup(sample_bytes_nr=32)
>>> hex(cg1.address)
0xBA52
>>> cg1['id']
b'CG'

Attributes

address (int) block address inside mdf file

Methods

clear
copy Generic (shallow and deep) copying operations.
fromkeys
get
items
keys
pop
popitem
setdefault
update
values

DataGroup Class

class asammdf.mdf3.DataGroup(**kargs)

DGBLOCK class derived from dict

The DataGroup object can be created in two modes:

  • using the file_stream and address keyword parameters - when reading from file
  • using any of the following presented keys - when creating a new DataGroup

The keys have the following meaning:

  • id - Block type identifier, always “DG”
  • block_len - Block size of this block in bytes (entire DGBLOCK)
  • next_dg_addr - Pointer to next data group block (DGBLOCK) (NIL allowed)
  • first_cg_addr - Pointer to first channel group block (CGBLOCK) (NIL allowed)
  • trigger_addr - Pointer to trigger block (TRBLOCK) (NIL allowed)
  • data_block_addr - Pointer to the data block (see separate chapter on data storage)
  • cg_nr - Number of channel groups (redundant information)
  • record_id_nr - Number of record IDs in the data block
  • reserved0 - since version 3.2; Reserved
Parameters:

file_stream : file handle

mdf file handle

address : int

block address inside mdf file

Attributes

address (int) block address inside mdf file

Methods

clear
copy Generic (shallow and deep) copying operations.
fromkeys
get
items
keys
pop
popitem
setdefault
update
values

FileIdentificationBlock Class

class asammdf.mdf3.FileIdentificationBlock(**kargs)

IDBLOCK class derived from dict

The TriggerBlock object can be created in two modes:

  • using the file_stream and address keyword parameters - when reading from file
  • using the classmethod from_text

The keys have the following meaning:

  • file_identification - file identifier
  • version_str - format identifier
  • program_identification - program identifier
  • byte_order - default byte order
  • float_format - default floating-point format
  • mdf_version - version number of MDF format
  • code_page - code page number
  • reserved0 - reserved
  • reserved1 - reserved
  • unfinalized_standard_flags - Standard Flags for unfinalized MDF
  • unfinalized_custom_flags - Custom Flags for unfinalized MDF
Parameters:

file_stream : file handle

mdf file handle

version : int

mdf version in case of new file

Attributes

address (int) block address inside mdf file; should be 0 always

Methods

clear
copy Generic (shallow and deep) copying operations.
fromkeys
get
items
keys
pop
popitem
setdefault
update
values

HeaderBlock Class

class asammdf.mdf3.HeaderBlock(**kargs)

HDBLOCK class derived from dict

The TriggerBlock object can be created in two modes:

  • using the file_stream - when reading from file
  • using the classmethod from_text

The keys have the following meaning:

  • id - Block type identifier, always “HD”
  • block_len - Block size of this block in bytes (entire HDBLOCK)
  • first_dg_addr - Pointer to the first data group block (DGBLOCK)
  • comment_addr - Pointer to the measurement file comment text (TXBLOCK) (NIL allowed)
  • program_addr - Pointer to program block (PRBLOCK) (NIL allowed)
  • dg_nr - Number of data groups (redundant information)
  • date - Date at which the recording was started in “DD:MM:YYYY” format
  • time - Time at which the recording was started in “HH:MM:SS” format
  • author - author name
  • organization - organization
  • project - project name
  • subject - subject

Since version 3.2 the following extra keys were added:

  • abs_time - Time stamp at which recording was started in nanoseconds.
  • tz_offset - UTC time offset in hours (= GMT time zone)
  • time_quality - Time quality class
  • timer_identification - Timer identification (time source),
Parameters:

file_stream : file handle

mdf file handle

Attributes

address (int) block address inside mdf file; should be 64 always

Methods

clear
copy Generic (shallow and deep) copying operations.
fromkeys
get
items
keys
pop
popitem
setdefault
update
values

ProgramBlock Class

class asammdf.mdf3.ProgramBlock(**kargs)

PRBLOCK class derived from dict

The ProgramBlock object can be created in two modes:

  • using the file_stream and address keyword parameters - when reading from file
  • using any of the following presented keys - when creating a new ProgramBlock

The keys have the following meaning:

  • id - Block type identifier, always “PR”
  • block_len - Block size of this block in bytes (entire PRBLOCK)
  • data - Program-specific data
Parameters:

file_stream : file handle

mdf file handle

address : int

block address inside mdf file

Attributes

address (int) block address inside mdf file

Methods

clear
copy Generic (shallow and deep) copying operations.
fromkeys
get
items
keys
pop
popitem
setdefault
update
values

SampleReduction Class

class asammdf.mdf3.SampleReduction(**kargs)

SRBLOCK class derived from dict

Currently the SampleReduction object can only be created by using the file_stream and address keyword parameters - when reading from file

The keys have the following meaning:

  • id - Block type identifier, always “SR”
  • block_len - Block size of this block in bytes (entire SRBLOCK)
  • next_sr_addr - Pointer to next sample reduction block (SRBLOCK) (NIL allowed)
  • data_block_addr - Pointer to the data block for this sample reduction
  • cycles_nr - Number of reduced samples in the data block.
  • time_interval - Length of time interval [s] used to calculate the reduced samples.
Parameters:

file_stream : file handle

mdf file handle

address : int

block address inside mdf file

Attributes

address (int) block address inside mdf file

Methods

clear
copy Generic (shallow and deep) copying operations.
fromkeys
get
items
keys
pop
popitem
setdefault
update
values

TextBlock Class

class asammdf.mdf3.TextBlock(**kargs)

TXBLOCK class derived from dict

The ProgramBlock object can be created in two modes:

  • using the file_stream and address keyword parameters - when reading from file
  • using the classmethod from_text

The keys have the following meaning:

  • id - Block type identifier, always “TX”
  • block_len - Block size of this block in bytes (entire TXBLOCK)
  • text - Text (new line indicated by CR and LF; end of text indicated by 0)
Parameters:

file_stream : file handle

mdf file handle

address : int

block address inside mdf file

text : bytes

bytes for creating a new TextBlock

Examples

>>> tx1 = TextBlock.from_text('VehicleSpeed')
>>> tx1.text_str
'VehicleSpeed'
>>> tx1['text']
b'VehicleSpeed'

Attributes

address (int) block address inside mdf file
text_str (str) text data as unicode string

Methods

clear
copy Generic (shallow and deep) copying operations.
from_text
fromkeys
get
items
keys
pop
popitem
setdefault
update
values

TriggerBlock Class

class asammdf.mdf3.TriggerBlock(**kargs)

TRBLOCK class derived from dict

The TriggerBlock object can be created in two modes:

  • using the file_stream and address keyword parameters - when reading from file
  • using the classmethod from_text

The keys have the following meaning:

  • id - Block type identifier, always “TX”
  • block_len - Block size of this block in bytes (entire TRBLOCK)
  • text_addr - Pointer to trigger comment text (TXBLOCK) (NIL allowed)
  • trigger_events_nr - Number of trigger events n (0 allowed)
  • trigger_{n}_time - Trigger time [s] of trigger event n
  • trigger_{n}_pretime - Pre trigger time [s] of trigger event n
  • trigger_{n}_posttime - Post trigger time [s] of trigger event n
Parameters:

file_stream : file handle

mdf file handle

address : int

block address inside mdf file

Attributes

address (int) block address inside mdf file

Methods

clear
copy Generic (shallow and deep) copying operations.
fromkeys
get
items
keys
pop
popitem
setdefault
update
values