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)
dependency_type - 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¶
SampleReduction Class¶
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. 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