├── .gitignore ├── CMake ├── FindHeatshrink.cmake ├── FindPyCXX.cmake └── Findbotan.cmake ├── CMakeLists.txt ├── External └── vcpkg-overlay │ └── heatshrink │ ├── 001_cmakelists.patch │ ├── portfile.cmake │ └── vcpkg.json ├── GenericFiles ├── CMakeLists.txt ├── Include │ ├── AESGCMFile.h │ ├── GenericFile.h │ └── HeatshrinkFile.h ├── Source │ ├── AESGCMFile.cpp │ ├── GenericFile.cpp │ ├── HeatshrinkFile.cpp │ └── ProjectInformation.h.in └── heatshrink.cmake ├── LICENSE ├── Library ├── CMakeLists.txt ├── Include │ ├── CAN_DataFrame.h │ ├── CAN_ErrorFrame.h │ ├── CAN_RemoteFrame.h │ ├── FileInfo.h │ ├── IIterator.h │ ├── LIN_ChecksumError.h │ ├── LIN_Frame.h │ ├── LIN_ReceiveError.h │ ├── LIN_SyncError.h │ ├── LIN_TransmissionError.h │ ├── MDFBusLoggingLibrary.h │ ├── MdfFile.h │ ├── Metadata.h │ └── RecordIterator.h └── Source │ ├── BlockStorage.cpp │ ├── BlockStorage.h │ ├── Blocks │ ├── CCBlock.cpp │ ├── CCBlock.h │ ├── CGBlock.cpp │ ├── CGBlock.h │ ├── CNBlock.cpp │ ├── CNBlock.h │ ├── DGBlock.cpp │ ├── DGBlock.h │ ├── DTBlock.cpp │ ├── DTBlock.h │ ├── DTBlockMultipleRecordIDs.cpp │ ├── DTBlockMultipleRecordIDs.h │ ├── DTBlockRaw.cpp │ ├── DTBlockRaw.h │ ├── DTBlockSingleContinuous.cpp │ ├── DTBlockSingleContinuous.h │ ├── DTBlockSingleDiscontinuous.cpp │ ├── DTBlockSingleDiscontinuous.h │ ├── FHBlock.cpp │ ├── FHBlock.h │ ├── HDBlock.cpp │ ├── HDBlock.h │ ├── IDBlock.cpp │ ├── IDBlock.h │ ├── IDataBlock.h │ ├── MDBlock.cpp │ ├── MDBlock.h │ ├── MdfBlock.cpp │ ├── MdfBlock.h │ ├── MdfBlockTypes.h │ ├── MdfHeader.h │ ├── SDBlock.cpp │ ├── SDBlock.h │ ├── SDBlockContinuous.cpp │ ├── SDBlockContinuous.h │ ├── SDBlockDiscontinuous.cpp │ ├── SDBlockDiscontinuous.h │ ├── SIBlock.cpp │ ├── SIBlock.h │ ├── TXBlock.cpp │ └── TXBlock.h │ ├── CachingStreamBuffer.cpp │ ├── CachingStreamBuffer.h │ ├── ExtractMetaData.cpp │ ├── ExtractMetaData.h │ ├── FileInfo │ ├── FileInfoUtility.cpp │ ├── FileInfoUtility.h │ ├── FinalizedFileInfo.cpp │ ├── FinalizedFileInfo.h │ ├── UnfinalizedFileInfo.cpp │ └── UnfinalizedFileInfo.h │ ├── FileInfoUtility.cpp │ ├── IBlockStorage.h │ ├── Iterators │ ├── Assign.h │ ├── EmptyIterator.cpp │ ├── EmptyIterator.h │ ├── GenericIterator.cpp │ ├── GenericIterator.h │ ├── MappingInformation.h │ ├── RecordFunctor.cpp │ ├── RecordFunctor.h │ └── RecordIterator.cpp │ ├── Logger.cpp │ ├── Logger.h │ ├── MDFBusLoggingLibrary.cpp │ ├── MdfFile.cpp │ ├── MdfFileImplementation.cpp │ ├── MdfFileImplementation.h │ ├── Records │ ├── CAN_DataFrame.cpp │ ├── CAN_ErrorFrame.cpp │ ├── CAN_RemoteFrame.cpp │ ├── LIN_ChecksumError.cpp │ ├── LIN_Frame.cpp │ ├── LIN_ReceiveError.cpp │ ├── LIN_SyncError.cpp │ ├── LIN_TransmissionError.cpp │ ├── RecordTypes.cpp │ └── RecordTypes.h │ ├── Streams │ ├── AESGCMStream.cpp │ ├── AESGCMStream.h │ ├── HeatshrinkStream.cpp │ └── HeatshrinkStream.h │ ├── StructAdaptors.h │ ├── Utility.cpp │ ├── Utility.h │ └── Version.h.in ├── Python ├── CMakeLists.txt ├── Distribution_Iterator │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── examples │ │ ├── example_dataframe.py │ │ ├── example_first_timestamp.py │ │ └── example_iterator.py │ ├── mdf_iter │ │ ├── FileInterface.py │ │ ├── IFileInterface.py │ │ ├── __init__.py │ │ └── mdf_iter.pyi │ └── setup.py ├── PyCXX.cmake └── Source │ ├── CallbackBuffer.cpp │ ├── CallbackBuffer.h │ ├── Export.cpp │ ├── IteratorWrappers │ ├── MDF_CAN_DataFrameIteratorWrapper.cpp │ ├── MDF_CAN_DataFrameIteratorWrapper.h │ ├── MDF_CAN_ErrorFrameIteratorWrapper.cpp │ ├── MDF_CAN_ErrorFrameIteratorWrapper.h │ ├── MDF_CAN_RemoteFrameIteratorWrapper.cpp │ ├── MDF_CAN_RemoteFrameIteratorWrapper.h │ ├── MDF_LIN_ChecksumErrorIteratorWrapper.cpp │ ├── MDF_LIN_ChecksumErrorIteratorWrapper.h │ ├── MDF_LIN_FrameIteratorWrapper.cpp │ ├── MDF_LIN_FrameIteratorWrapper.h │ ├── MDF_LIN_ReceiveErrorIteratorWrapper.cpp │ ├── MDF_LIN_ReceiveErrorIteratorWrapper.h │ ├── MDF_LIN_SyncErrorIteratorWrapper.cpp │ ├── MDF_LIN_SyncErrorIteratorWrapper.h │ ├── MDF_LIN_TransmissionErrorIteratorWrapper.cpp │ └── MDF_LIN_TransmissionErrorIteratorWrapper.h │ ├── MdfFileWrapper.cpp │ ├── MdfFileWrapper.h │ ├── Module.cpp │ ├── Module.h │ ├── PythonLogger.cpp │ ├── PythonLogger.h │ ├── RecordWrappers │ ├── MDF_CAN_DataFrameWrapper.cpp │ ├── MDF_CAN_DataFrameWrapper.h │ ├── MDF_CAN_ErrorFrameWrapper.cpp │ ├── MDF_CAN_ErrorFrameWrapper.h │ ├── MDF_CAN_RemoteFrameWrapper.cpp │ ├── MDF_CAN_RemoteFrameWrapper.h │ ├── MDF_LIN_ChecksumErrorWrapper.cpp │ ├── MDF_LIN_ChecksumErrorWrapper.h │ ├── MDF_LIN_FrameWrapper.cpp │ ├── MDF_LIN_FrameWrapper.h │ ├── MDF_LIN_ReceiveErrorWrapper.cpp │ ├── MDF_LIN_ReceiveErrorWrapper.h │ ├── MDF_LIN_SyncErrorWrapper.cpp │ ├── MDF_LIN_SyncErrorWrapper.h │ ├── MDF_LIN_TransmissionErrorWrapper.cpp │ └── MDF_LIN_TransmissionErrorWrapper.h │ ├── TypeSupport.cpp │ └── TypeSupport.h ├── README.md ├── TODO.md ├── Tools ├── ASC │ ├── CHANGES.md │ ├── CMakeLists.txt │ └── Source │ │ ├── ASC_CAN_Exporter.cpp │ │ ├── ASC_CAN_Exporter.h │ │ ├── ASC_Common.h │ │ ├── ASC_Exporter.cpp │ │ ├── ASC_Exporter.h │ │ ├── ASC_LIN_Exporter.cpp │ │ ├── ASC_LIN_Exporter.h │ │ ├── Version.h.in │ │ └── main.cpp ├── CLX000 │ ├── CMakeLists.txt │ ├── README.md │ ├── Source │ │ ├── CLX000_BaseExporter.cpp │ │ ├── CLX000_BaseExporter.h │ │ ├── CLX000_CAN_Exporter.cpp │ │ ├── CLX000_CAN_Exporter.h │ │ ├── CLX000_Configuration.h │ │ ├── CLX000_Exporter.cpp │ │ ├── CLX000_Exporter.h │ │ ├── CLX000_LIN_Exporter.cpp │ │ ├── CLX000_LIN_Exporter.h │ │ ├── Version.h.in │ │ └── main.cpp │ └── config.ini ├── CMake │ └── Package.cmake ├── CMakeLists.txt ├── CSV │ ├── CMakeLists.txt │ └── Source │ │ ├── CSV_CAN_Exporter.cpp │ │ ├── CSV_CAN_Exporter.h │ │ ├── CSV_Common.h │ │ ├── CSV_Exporter.cpp │ │ ├── CSV_Exporter.h │ │ ├── CSV_LIN_Exporter.cpp │ │ ├── CSV_LIN_Exporter.h │ │ ├── Version.h.in │ │ └── main.cpp ├── MDF │ ├── CMakeLists.txt │ └── Source │ │ ├── MDFTool.cpp │ │ ├── MDFTool.h │ │ ├── Version.h.in │ │ └── main.cpp ├── PCAP │ ├── CMakeLists.txt │ └── Source │ │ ├── PCAP │ │ ├── CMakeLists.txt │ │ ├── PCAP_Block.cpp │ │ ├── PCAP_Block.h │ │ ├── PCAP_EnhancedPacket.cpp │ │ ├── PCAP_EnhancedPacket.h │ │ ├── PCAP_EnhancedPacket_CAN.cpp │ │ ├── PCAP_EnhancedPacket_CAN.h │ │ ├── PCAP_InterfaceDescription.cpp │ │ ├── PCAP_InterfaceDescription.h │ │ ├── PCAP_Option.cpp │ │ ├── PCAP_Option.h │ │ ├── PCAP_OptionEnd.cpp │ │ ├── PCAP_OptionEnd.h │ │ ├── PCAP_OptionList.cpp │ │ ├── PCAP_OptionList.h │ │ ├── PCAP_OptionString.cpp │ │ ├── PCAP_OptionString.h │ │ ├── PCAP_OptionU32.cpp │ │ ├── PCAP_OptionU32.h │ │ ├── PCAP_OptionU64.cpp │ │ ├── PCAP_OptionU64.h │ │ ├── PCAP_SectionHeader.cpp │ │ └── PCAP_SectionHeader.h │ │ ├── PCAP_CAN_Exporter.cpp │ │ ├── PCAP_CAN_Exporter.h │ │ ├── PCAP_Exporter.cpp │ │ ├── PCAP_Exporter.h │ │ ├── README.md │ │ ├── Version.h.in │ │ └── main.cpp ├── PEAK │ ├── CHANGES.md │ ├── CMakeLists.txt │ ├── README.md │ └── Source │ │ ├── PEAK_CAN_Exporter.cpp │ │ ├── PEAK_CAN_Exporter.h │ │ ├── PEAK_CAN_Exporter_1_1.cpp │ │ ├── PEAK_CAN_Exporter_1_1.h │ │ ├── PEAK_CAN_Exporter_2_1.cpp │ │ ├── PEAK_CAN_Exporter_2_1.h │ │ ├── PEAK_Exporter.cpp │ │ ├── PEAK_Exporter.h │ │ ├── PEAK_TraceFormat.cpp │ │ ├── PEAK_TraceFormat.h │ │ ├── Version.h.in │ │ └── main.cpp ├── README.md ├── Resources │ ├── AppImage.cmake │ ├── AppImage.desktop.in │ ├── Icons │ │ ├── 128x128.png │ │ ├── 16x16.png │ │ ├── 256x256.png │ │ ├── 32x32.png │ │ └── 64x64.png │ ├── Windows.rc.in │ ├── icon.ico │ └── icon.rc ├── Shared │ ├── CMakeLists.txt │ ├── Include │ │ ├── CommonOptions.h │ │ ├── ConverterInterface.h │ │ ├── ExecutableEntryPoint.h │ │ ├── GenericRecordExporter.h │ │ ├── ParseOptionStatus.h │ │ ├── ParsedFileInfo.h │ │ ├── PasswordStorage.h │ │ ├── ProgressIndicator.h │ │ └── TimeConverter.h │ └── Source │ │ ├── ConverterInterface.cpp │ │ ├── ExecutableEntryPoint.cpp │ │ ├── ExecutableInterface.cpp │ │ ├── ExecutableInterface.h │ │ ├── ParseOptionStatus.cpp │ │ ├── ParsedFileInfo.cpp │ │ ├── PasswordStorage.cpp │ │ ├── ProgressIndicator.cpp │ │ ├── ProjectInformation.h.in │ │ ├── StatusCode.cpp │ │ ├── StatusCode.h │ │ └── TimeConverter.cpp ├── SocketCAN │ ├── CMakeLists.txt │ └── Source │ │ ├── SocketCAN_CAN_Exporter.cpp │ │ ├── SocketCAN_CAN_Exporter.h │ │ ├── SocketCAN_Exporter.cpp │ │ ├── SocketCAN_Exporter.h │ │ ├── SocketCAN_LIN_Exporter.cpp │ │ ├── SocketCAN_LIN_Exporter.h │ │ ├── Version.h.in │ │ └── main.cpp ├── SystemTests │ ├── .gitignore │ ├── ASC │ │ └── TestData │ │ │ ├── multiple_CAN.asc │ │ │ ├── multiple_LIN.asc │ │ │ ├── single_can_bus_1_CAN.asc │ │ │ ├── single_can_bus_1_CAN_PC.asc │ │ │ ├── single_can_bus_1_CAN_compressed.asc │ │ │ ├── single_can_bus_1_CAN_encrypted.asc │ │ │ ├── single_can_bus_2_CAN.asc │ │ │ ├── single_can_bus_2_CAN_compressed.asc │ │ │ ├── single_can_bus_2_CAN_encrypted.asc │ │ │ ├── single_lin_bus_1_LIN.asc │ │ │ ├── single_lin_bus_1_LIN_compressed.asc │ │ │ ├── single_lin_bus_1_LIN_encrypted.asc │ │ │ ├── single_lin_bus_2_LIN.asc │ │ │ ├── single_lin_bus_2_LIN_compressed.asc │ │ │ ├── single_lin_bus_2_LIN_encrypted.asc │ │ │ ├── single_message_can_bus_1_1024_window_CAN.asc │ │ │ ├── single_message_can_bus_1_1024_window_CAN_compressed_encrypted.asc │ │ │ ├── single_message_can_bus_1_1024_window_CAN_encrypted.asc │ │ │ ├── single_message_can_bus_1_256_window_CAN.asc │ │ │ └── single_message_can_bus_1_512_window_CAN.asc │ ├── CLX000 │ │ ├── Configuration_Test.py │ │ ├── Files │ │ │ ├── config_dataFields_all.ini │ │ │ ├── config_dataFields_none.ini │ │ │ ├── config_log_allSeparators.ini │ │ │ ├── config_log_noSeparators.ini │ │ │ ├── config_timeformat_0.ini │ │ │ ├── config_timeformat_1.ini │ │ │ ├── config_timeformat_2.ini │ │ │ ├── config_timeformat_3.ini │ │ │ ├── config_timeformat_4.ini │ │ │ ├── config_timeformat_5.ini │ │ │ └── config_timeformat_6.ini │ │ ├── TestData │ │ │ ├── .gitattributes │ │ │ ├── Config │ │ │ │ ├── dataFields │ │ │ │ │ ├── single_can_bus_1_CAN_1_config_dataFields.txt │ │ │ │ │ ├── single_can_bus_1_CAN_1_config_dataFields_12345.txt │ │ │ │ │ ├── single_can_bus_1_CAN_2_config_dataFields.txt │ │ │ │ │ ├── single_can_bus_1_CAN_2_config_dataFields_12345.txt │ │ │ │ │ ├── single_can_bus_2_CAN_1_config_dataFields.txt │ │ │ │ │ ├── single_can_bus_2_CAN_1_config_dataFields_12345.txt │ │ │ │ │ ├── single_can_bus_2_CAN_2_config_dataFields.txt │ │ │ │ │ └── single_can_bus_2_CAN_2_config_dataFields_12345.txt │ │ │ │ ├── log │ │ │ │ │ ├── single_can_bus_1_CAN_1_allSeparators.txt │ │ │ │ │ ├── single_can_bus_1_CAN_1_noSeparators.txt │ │ │ │ │ ├── single_can_bus_1_CAN_2_allSeparators.txt │ │ │ │ │ ├── single_can_bus_1_CAN_2_noSeparators.txt │ │ │ │ │ ├── single_can_bus_2_CAN_1_allSeparators.txt │ │ │ │ │ ├── single_can_bus_2_CAN_1_noSeparators.txt │ │ │ │ │ ├── single_can_bus_2_CAN_2_allSeparators.txt │ │ │ │ │ └── single_can_bus_2_CAN_2_noSeparators.txt │ │ │ │ └── timeformat │ │ │ │ │ ├── single_can_bus_1_CAN_1_timeformat_0.txt │ │ │ │ │ ├── single_can_bus_1_CAN_1_timeformat_1.txt │ │ │ │ │ ├── single_can_bus_1_CAN_1_timeformat_2.txt │ │ │ │ │ ├── single_can_bus_1_CAN_1_timeformat_3.txt │ │ │ │ │ ├── single_can_bus_1_CAN_1_timeformat_4.txt │ │ │ │ │ ├── single_can_bus_1_CAN_1_timeformat_5.txt │ │ │ │ │ ├── single_can_bus_1_CAN_1_timeformat_6.txt │ │ │ │ │ ├── single_can_bus_1_CAN_2_timeformat_0.txt │ │ │ │ │ ├── single_can_bus_1_CAN_2_timeformat_1.txt │ │ │ │ │ ├── single_can_bus_1_CAN_2_timeformat_2.txt │ │ │ │ │ ├── single_can_bus_1_CAN_2_timeformat_3.txt │ │ │ │ │ ├── single_can_bus_1_CAN_2_timeformat_4.txt │ │ │ │ │ ├── single_can_bus_1_CAN_2_timeformat_5.txt │ │ │ │ │ ├── single_can_bus_1_CAN_2_timeformat_6.txt │ │ │ │ │ ├── single_can_bus_2_CAN_1_timeformat_0.txt │ │ │ │ │ ├── single_can_bus_2_CAN_1_timeformat_1.txt │ │ │ │ │ ├── single_can_bus_2_CAN_1_timeformat_2.txt │ │ │ │ │ ├── single_can_bus_2_CAN_1_timeformat_3.txt │ │ │ │ │ ├── single_can_bus_2_CAN_1_timeformat_4.txt │ │ │ │ │ ├── single_can_bus_2_CAN_1_timeformat_5.txt │ │ │ │ │ ├── single_can_bus_2_CAN_1_timeformat_6.txt │ │ │ │ │ ├── single_can_bus_2_CAN_2_timeformat_0.txt │ │ │ │ │ ├── single_can_bus_2_CAN_2_timeformat_1.txt │ │ │ │ │ ├── single_can_bus_2_CAN_2_timeformat_2.txt │ │ │ │ │ ├── single_can_bus_2_CAN_2_timeformat_3.txt │ │ │ │ │ ├── single_can_bus_2_CAN_2_timeformat_4.txt │ │ │ │ │ ├── single_can_bus_2_CAN_2_timeformat_5.txt │ │ │ │ │ └── single_can_bus_2_CAN_2_timeformat_6.txt │ │ │ ├── multiple_CAN_1.txt │ │ │ ├── multiple_CAN_2.txt │ │ │ ├── multiple_LIN_1.txt │ │ │ ├── multiple_LIN_2.txt │ │ │ ├── single_can_bus_1_CAN_1.txt │ │ │ ├── single_can_bus_1_CAN_1_PC.txt │ │ │ ├── single_can_bus_1_CAN_1_compressed.txt │ │ │ ├── single_can_bus_1_CAN_1_encrypted.txt │ │ │ ├── single_can_bus_1_CAN_2.txt │ │ │ ├── single_can_bus_1_CAN_2_PC.txt │ │ │ ├── single_can_bus_1_CAN_2_compressed.txt │ │ │ ├── single_can_bus_1_CAN_2_encrypted.txt │ │ │ ├── single_can_bus_2_CAN_1.txt │ │ │ ├── single_can_bus_2_CAN_1_compressed.txt │ │ │ ├── single_can_bus_2_CAN_1_encrypted.txt │ │ │ ├── single_can_bus_2_CAN_2.txt │ │ │ ├── single_can_bus_2_CAN_2_compressed.txt │ │ │ ├── single_can_bus_2_CAN_2_encrypted.txt │ │ │ ├── single_lin_bus_1_LIN_1.txt │ │ │ ├── single_lin_bus_1_LIN_1_compressed.txt │ │ │ ├── single_lin_bus_1_LIN_1_encrypted.txt │ │ │ ├── single_lin_bus_1_LIN_2.txt │ │ │ ├── single_lin_bus_1_LIN_2_compressed.txt │ │ │ ├── single_lin_bus_1_LIN_2_encrypted.txt │ │ │ ├── single_lin_bus_2_LIN_1.txt │ │ │ ├── single_lin_bus_2_LIN_1_compressed.txt │ │ │ ├── single_lin_bus_2_LIN_1_encrypted.txt │ │ │ ├── single_lin_bus_2_LIN_2.txt │ │ │ ├── single_lin_bus_2_LIN_2_compressed.txt │ │ │ ├── single_lin_bus_2_LIN_2_encrypted.txt │ │ │ ├── single_message_can_bus_1_1024_window_CAN_1.txt │ │ │ ├── single_message_can_bus_1_1024_window_CAN_1_encrypted.txt │ │ │ ├── single_message_can_bus_1_1024_window_CAN_2.txt │ │ │ ├── single_message_can_bus_1_1024_window_CAN_2_encrypted.txt │ │ │ ├── single_message_can_bus_1_256_window_CAN_1.txt │ │ │ ├── single_message_can_bus_1_256_window_CAN_1_encrypted.txt │ │ │ ├── single_message_can_bus_1_256_window_CAN_2.txt │ │ │ ├── single_message_can_bus_1_256_window_CAN_2_encrypted.txt │ │ │ ├── single_message_can_bus_1_512_window_CAN_1.txt │ │ │ ├── single_message_can_bus_1_512_window_CAN_1_encrypted.txt │ │ │ ├── single_message_can_bus_1_512_window_CAN_2.txt │ │ │ └── single_message_can_bus_1_512_window_CAN_2_encrypted.txt │ │ └── conftest.py │ ├── CSV │ │ └── TestData │ │ │ ├── multiple_CAN.csv │ │ │ ├── multiple_LIN.csv │ │ │ ├── single_can_bus_1_CAN.csv │ │ │ ├── single_can_bus_1_CAN_PC.csv │ │ │ ├── single_can_bus_1_CAN_compressed.csv │ │ │ ├── single_can_bus_1_CAN_encrypted.csv │ │ │ ├── single_can_bus_2_CAN.csv │ │ │ ├── single_can_bus_2_CAN_compressed.csv │ │ │ ├── single_can_bus_2_CAN_encrypted.csv │ │ │ ├── single_lin_bus_1_LIN.csv │ │ │ ├── single_lin_bus_1_LIN_compressed.csv │ │ │ ├── single_lin_bus_1_LIN_encrypted.csv │ │ │ ├── single_lin_bus_2_CAN_encrypted.csv │ │ │ ├── single_lin_bus_2_LIN.csv │ │ │ ├── single_lin_bus_2_LIN_compressed.csv │ │ │ ├── single_lin_bus_2_LIN_encrypted.csv │ │ │ ├── single_message_can_bus_1_1024_window_CAN.csv │ │ │ ├── single_message_can_bus_1_1024_window_CAN_encrypted.csv │ │ │ ├── single_message_can_bus_1_256_window_CAN.csv │ │ │ ├── single_message_can_bus_1_256_window_CAN_encrypted.csv │ │ │ ├── single_message_can_bus_1_512_window_CAN.csv │ │ │ └── single_message_can_bus_1_512_window_CAN_encrypted.csv │ ├── Common │ │ ├── BaseTestCase.py │ │ ├── Common_Test.py │ │ ├── DataAccess.py │ │ ├── Files │ │ │ ├── passwords_default.json │ │ │ ├── passwords_default_device_1.json │ │ │ ├── passwords_device_1.json │ │ │ ├── passwords_device_2.json │ │ │ ├── passwords_device_3.json │ │ │ └── passwords_device_4.json │ │ ├── JSONData.py │ │ ├── README.md │ │ ├── TestConfiguration │ │ │ ├── ASC │ │ │ │ ├── ConvertIndividualCompressedFiles_ASC.json │ │ │ │ ├── ConvertIndividualEncryptedFiles_ASC.json │ │ │ │ ├── ConvertIndividualFilesErrorCodes_ASC.json │ │ │ │ ├── ConvertIndividualFilesTime_ASC.json │ │ │ │ ├── ConvertIndividualFiles_ASC.json │ │ │ │ ├── ConvertInputFolder_ASC.json │ │ │ │ └── ConvertMultipleIndividualFiles_ASC.json │ │ │ ├── CLX000 │ │ │ │ ├── Configuration_DataFields.json │ │ │ │ ├── Configuration_Log.json │ │ │ │ ├── Configuration_Timeformat.json │ │ │ │ ├── ConvertIndividualCompressedFiles_CLX000.json │ │ │ │ ├── ConvertIndividualEncryptedFiles_CLX000.json │ │ │ │ ├── ConvertIndividualFilesErrorCodes_CLX000.json │ │ │ │ ├── ConvertIndividualFilesTime_CLX000.json │ │ │ │ ├── ConvertIndividualFiles_CLX000.json │ │ │ │ ├── ConvertInputFolder_CLX000.json │ │ │ │ └── ConvertMultipleIndividualFiles_CLX000.json │ │ │ ├── CSV │ │ │ │ ├── ConvertIndividualCompressedFiles_CSV.json │ │ │ │ ├── ConvertIndividualEncryptedFiles_CSV.json │ │ │ │ ├── ConvertIndividualFilesErrorCodes_CSV.json │ │ │ │ ├── ConvertIndividualFilesTime_CSV.json │ │ │ │ ├── ConvertIndividualFiles_CSV.json │ │ │ │ ├── ConvertInputFolder_CSV.json │ │ │ │ └── ConvertMultipleIndividualFiles_CSV.json │ │ │ ├── PCAP │ │ │ │ ├── ConvertIndividualCompressedFiles_PCAP.json │ │ │ │ ├── ConvertIndividualEncryptedFiles_PCAP.json │ │ │ │ ├── ConvertIndividualFilesErrorCodes_PCAP.json │ │ │ │ ├── ConvertIndividualFilesTime_PCAP.json │ │ │ │ ├── ConvertIndividualFiles_PCAP.json │ │ │ │ ├── ConvertInputFolder_PCAP.json │ │ │ │ └── ConvertMultipleIndividualFiles_PCAP.json │ │ │ ├── PEAK │ │ │ │ ├── Format_1_1 │ │ │ │ │ ├── ConvertIndividualCompressedFiles_PEAK.json │ │ │ │ │ ├── ConvertIndividualEncryptedFiles_PEAK.json │ │ │ │ │ ├── ConvertIndividualFilesErrorCodes_PEAK.json │ │ │ │ │ ├── ConvertIndividualFilesTime_PEAK.json │ │ │ │ │ ├── ConvertIndividualFiles_PEAK.json │ │ │ │ │ ├── ConvertInputFolder_PEAK.json │ │ │ │ │ └── ConvertMultipleIndividualFiles_PEAK.json │ │ │ │ └── Format_2_1 │ │ │ │ │ ├── ConvertIndividualCompressedFiles_PEAK.json │ │ │ │ │ ├── ConvertIndividualEncryptedFiles_PEAK.json │ │ │ │ │ ├── ConvertIndividualFilesErrorCodes_PEAK.json │ │ │ │ │ ├── ConvertIndividualFilesTime_PEAK.json │ │ │ │ │ ├── ConvertIndividualFiles_PEAK.json │ │ │ │ │ ├── ConvertInputFolder_PEAK.json │ │ │ │ │ └── ConvertMultipleIndividualFiles_PEAK.json │ │ │ └── SocketCAN │ │ │ │ ├── ConvertIndividualCompressedFiles_SocketCAN.json │ │ │ │ ├── ConvertIndividualEncryptedFiles_SocketCAN.json │ │ │ │ ├── ConvertIndividualFilesErrorCodes_SocketCAN.json │ │ │ │ ├── ConvertIndividualFilesTime_SocketCAN.json │ │ │ │ ├── ConvertIndividualFiles_SocketCAN.json │ │ │ │ ├── ConvertInputFolder_SocketCAN.json │ │ │ │ └── ConvertMultipleIndividualFiles_SocketCAN.json │ │ ├── TestData │ │ │ ├── .gitattributes │ │ │ ├── invalid.MF4 │ │ │ ├── multiGeneratorCAN.log │ │ │ ├── multiGeneratorLIN.log │ │ │ ├── multiple.MF4 │ │ │ ├── multiple_fin.MF4 │ │ │ ├── passwords.json │ │ │ ├── single_can_bus_1.MF4 │ │ │ ├── single_can_bus_1.MFC │ │ │ ├── single_can_bus_1.MFE │ │ │ ├── single_can_bus_2.MF4 │ │ │ ├── single_can_bus_2.MFC │ │ │ ├── single_can_bus_2.MFE │ │ │ ├── single_lin_bus_1.MF4 │ │ │ ├── single_lin_bus_1.MFC │ │ │ ├── single_lin_bus_1.MFE │ │ │ ├── single_lin_bus_2.MF4 │ │ │ ├── single_lin_bus_2.MFC │ │ │ ├── single_lin_bus_2.MFE │ │ │ ├── single_message_can_bus_1_1024_window.MFC │ │ │ ├── single_message_can_bus_1_1024_window.MFM │ │ │ ├── single_message_can_bus_1_256_window.MFC │ │ │ ├── single_message_can_bus_1_256_window.MFM │ │ │ ├── single_message_can_bus_1_512_window.MFC │ │ │ └── single_message_can_bus_1_512_window.MFM │ │ ├── Tool.py │ │ └── conftest.py │ ├── PCAP │ │ └── TestData │ │ │ ├── multiple_CAN.pcap │ │ │ ├── single_can_bus_1_CAN.pcap │ │ │ ├── single_can_bus_1_CAN_PC.pcap │ │ │ ├── single_can_bus_1_CAN_compressed.pcap │ │ │ ├── single_can_bus_1_CAN_encrypted.pcap │ │ │ ├── single_can_bus_2_CAN.pcap │ │ │ ├── single_can_bus_2_CAN_compressed.pcap │ │ │ ├── single_can_bus_2_CAN_encrypted.pcap │ │ │ ├── single_message_can_bus_1_1024_window_CAN.pcap │ │ │ ├── single_message_can_bus_1_1024_window_CAN_encrypted.pcap │ │ │ ├── single_message_can_bus_1_256_window_CAN.pcap │ │ │ ├── single_message_can_bus_1_256_window_CAN_encrypted.pcap │ │ │ ├── single_message_can_bus_1_512_window_CAN.pcap │ │ │ └── single_message_can_bus_1_512_window_CAN_encrypted.pcap │ ├── PEAK │ │ └── TestData │ │ │ ├── multiple_CAN.trc │ │ │ ├── single_can_bus_1_CAN.trc │ │ │ ├── single_can_bus_1_CAN_PC.trc │ │ │ ├── single_can_bus_1_CAN_compressed.trc │ │ │ ├── single_can_bus_1_CAN_encrypted.trc │ │ │ ├── single_can_bus_2_CAN.trc │ │ │ ├── single_can_bus_2_CAN_compressed.trc │ │ │ ├── single_can_bus_2_CAN_encrypted.trc │ │ │ ├── single_message_can_bus_1_1024_window_CAN.trc │ │ │ ├── single_message_can_bus_1_1024_window_CAN_encrypted.trc │ │ │ ├── single_message_can_bus_1_256_window_CAN.trc │ │ │ ├── single_message_can_bus_1_256_window_CAN_encrypted.trc │ │ │ ├── single_message_can_bus_1_512_window_CAN.trc │ │ │ └── single_message_can_bus_1_512_window_CAN_encrypted.trc │ ├── README.md │ ├── SocketCAN │ │ └── TestData │ │ │ ├── multiple_CAN.log │ │ │ ├── multiple_LIN.log │ │ │ ├── single_can_bus_1_CAN.log │ │ │ ├── single_can_bus_1_CAN_PC.log │ │ │ ├── single_can_bus_1_CAN_compressed.log │ │ │ ├── single_can_bus_1_CAN_encrypted.log │ │ │ ├── single_can_bus_2_CAN.log │ │ │ ├── single_can_bus_2_CAN_compressed.log │ │ │ ├── single_can_bus_2_CAN_encrypted.log │ │ │ ├── single_lin_bus_1_LIN.log │ │ │ ├── single_lin_bus_1_LIN_compressed.log │ │ │ ├── single_lin_bus_1_LIN_encrypted.log │ │ │ ├── single_lin_bus_2_LIN.log │ │ │ ├── single_lin_bus_2_LIN_compressed.log │ │ │ ├── single_lin_bus_2_LIN_encrypted.log │ │ │ ├── single_message_can_bus_1_1024_window_CAN.log │ │ │ ├── single_message_can_bus_1_1024_window_CAN_encrypted.log │ │ │ ├── single_message_can_bus_1_256_window_CAN.log │ │ │ ├── single_message_can_bus_1_256_window_CAN_encrypted.log │ │ │ ├── single_message_can_bus_1_512_window_CAN.log │ │ │ └── single_message_can_bus_1_512_window_CAN_encrypted.log │ ├── config.json │ ├── conftest.py │ └── pytest.ini └── exit_codes.md └── vcpkg.json /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | vcpkg 3 | cmake-build-* 4 | venv* 5 | __pycache__ 6 | 7 | *.exe 8 | *.zip 9 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.15) 2 | project(MDFSuper) 3 | 4 | # Enable for verbose build information 5 | # set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON" FORCE) 6 | 7 | list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/CMake") 8 | 9 | # Configure global options. 10 | set(Boost_USE_STATIC_LIBS ON) 11 | set(Boost_USE_STATIC_RUNTIME ON) 12 | 13 | add_subdirectory(GenericFiles) 14 | add_subdirectory(Library) 15 | add_subdirectory(Tools) 16 | add_subdirectory(Python) 17 | -------------------------------------------------------------------------------- /External/vcpkg-overlay/heatshrink/vcpkg.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "heatshrink", 3 | "version-string": "0.4.1", 4 | "port-version": 1 5 | } 6 | -------------------------------------------------------------------------------- /GenericFiles/Include/AESGCMFile.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_AESGCMFILE_H 2 | #define MDFSIMPLECONVERTERS_AESGCMFILE_H 3 | 4 | #include 5 | #include 6 | 7 | namespace mdf { 8 | 9 | /*! 10 | * Examine the header of a file to determine if it is encrypted. 11 | * @param fileName 12 | * @return 13 | */ 14 | bool isEncryptedFile(std::string const &fileName); 15 | 16 | /*! 17 | * Decrypt the given file using a password. 18 | * @param inputFile 19 | * @param outputFile 20 | * @param password 21 | * @return 22 | */ 23 | bool decryptFile(std::string const &inputFile, std::string const &outputFile, std::string const &password); 24 | 25 | /*! 26 | * 27 | * @param fileName 28 | * @return 29 | */ 30 | uint32_t getDeviceIdFromFile(std::string const &fileName); 31 | } 32 | 33 | #endif //MDFSIMPLECONVERTERS_AESGCMFILE_H 34 | -------------------------------------------------------------------------------- /GenericFiles/Include/HeatshrinkFile.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_HEATSHRINKFILE_H 2 | #define MDFSIMPLECONVERTERS_HEATSHRINKFILE_H 3 | 4 | #include 5 | #include 6 | 7 | namespace mdf { 8 | enum class IsCompressedFileStatus : int { 9 | 10 | }; 11 | 12 | bool isCompressedFile(std::string const& fileName); 13 | bool isCompressedFile(std::vector const& data); 14 | 15 | bool decompressFile(std::string const& inputFile, std::string const& outputFile); 16 | } 17 | 18 | #endif //MDFSIMPLECONVERTERS_HEATSHRINKFILE_H 19 | -------------------------------------------------------------------------------- /GenericFiles/Source/ProjectInformation.h.in: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_GENERIC_PROJECTFORMATION_H 2 | #define MDFSIMPLECONVERTERS_GENERIC_PROJECTFORMATION_H 3 | 4 | #include 5 | 6 | #define GenericFiles_VERSION_MAJOR @GenericFiles_VERSION_MAJOR@ 7 | #define GenericFiles_VERSION_MINOR @GenericFiles_VERSION_MINOR@ 8 | #define GenericFiles_VERSION_PATCH @GenericFiles_VERSION_PATCH@ 9 | 10 | constexpr semver::version GenericFiles_VERSION { 11 | GenericFiles_VERSION_MAJOR, 12 | GenericFiles_VERSION_MINOR, 13 | GenericFiles_VERSION_PATCH 14 | }; 15 | 16 | #endif //MDFSIMPLECONVERTERS_GENERIC_PROJECTFORMATION_H 17 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 CSS-Electronics 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Library/Include/CAN_DataFrame.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_CAN_DATAFRAME_H 2 | #define MDFSIMPLECONVERTERS_CAN_DATAFRAME_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | 10 | namespace mdf { 11 | 12 | struct CAN_DataFrame { 13 | // From general MDF properties. 14 | std::chrono::nanoseconds TimeStamp; 15 | 16 | // From general event properties. 17 | uint8_t BusChannel; 18 | 19 | // CAN logging specific. 20 | uint32_t ID; 21 | bool IDE; 22 | uint8_t DLC; 23 | uint8_t DataLength; 24 | bool Dir; 25 | bool EDL; 26 | bool BRS; 27 | bool ESI; 28 | boost::container::static_vector DataBytes; 29 | }; 30 | 31 | std::ostream &operator<<(std::ostream &stream, CAN_DataFrame const &record); 32 | 33 | } 34 | 35 | #endif //MDFSIMPLECONVERTERS_CAN_DATAFRAME_H 36 | -------------------------------------------------------------------------------- /Library/Include/CAN_ErrorFrame.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_CAN_ERRORFRAME_H 2 | #define MDFSIMPLECONVERTERS_CAN_ERRORFRAME_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | 10 | namespace mdf { 11 | 12 | struct CAN_ErrorFrame { 13 | // From general MDF properties. 14 | std::chrono::nanoseconds TimeStamp; 15 | 16 | // From general event properties. 17 | uint8_t BusChannel; 18 | 19 | // CAN logging specific. 20 | uint8_t ErrorType; 21 | }; 22 | 23 | std::ostream &operator<<(std::ostream &stream, CAN_ErrorFrame const &record); 24 | 25 | } 26 | 27 | #endif //MDFSIMPLECONVERTERS_CAN_ERRORFRAME_H 28 | -------------------------------------------------------------------------------- /Library/Include/CAN_RemoteFrame.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_CAN_REMOTEFRAME_H 2 | #define MDFSIMPLECONVERTERS_CAN_REMOTEFRAME_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | 10 | namespace mdf { 11 | 12 | struct CAN_RemoteFrame { 13 | // From general MDF properties. 14 | std::chrono::nanoseconds TimeStamp; 15 | 16 | // From general event properties. 17 | uint8_t BusChannel; 18 | 19 | // CAN logging specific. 20 | uint32_t ID; 21 | bool IDE; 22 | uint8_t DLC; 23 | uint8_t DataLength; 24 | bool Dir; 25 | }; 26 | 27 | std::ostream &operator<<(std::ostream &stream, CAN_RemoteFrame const &record); 28 | 29 | } 30 | 31 | #endif //MDFSIMPLECONVERTERS_CAN_REMOTEFRAME_H 32 | -------------------------------------------------------------------------------- /Library/Include/FileInfo.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_FILEINFO_H 2 | #define MDFSIMPLECONVERTERS_FILEINFO_H 3 | 4 | #include 5 | #include 6 | 7 | namespace mdf { 8 | 9 | struct FileInfo { 10 | FileInfo(); 11 | 12 | std::chrono::nanoseconds Time; 13 | int16_t TimezoneOffsetMinutes; 14 | uint64_t CANMessages; 15 | uint64_t LINMessages; 16 | 17 | void clear(); 18 | }; 19 | 20 | } 21 | 22 | #endif //MDFSIMPLECONVERTERS_FILEINFO_H 23 | -------------------------------------------------------------------------------- /Library/Include/IIterator.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_IITERATOR_H 2 | #define MDFSIMPLECONVERTERS_IITERATOR_H 3 | 4 | #include 5 | 6 | namespace mdf { 7 | 8 | template 9 | struct IIterator { 10 | virtual ~IIterator() = default; 11 | 12 | virtual void increment() = 0; 13 | 14 | virtual T &dereference() = 0; 15 | 16 | virtual std::unique_ptr> begin() const = 0; 17 | 18 | virtual std::unique_ptr> end() const = 0; 19 | 20 | virtual std::unique_ptr> clone() const = 0; 21 | 22 | virtual bool equals(IIterator const &other) const = 0; 23 | 24 | bool operator==(IIterator const &other) const { 25 | bool result = false; 26 | 27 | if (typeid(*this) == typeid(other)) { 28 | result = equals(other); 29 | } 30 | 31 | return result; 32 | } 33 | }; 34 | 35 | } 36 | 37 | #endif //MDFSIMPLECONVERTERS_IITERATOR_H 38 | -------------------------------------------------------------------------------- /Library/Include/LIN_ChecksumError.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_LIN_CHECKSUMERROR_H 2 | #define MDFSIMPLECONVERTERS_LIN_CHECKSUMERROR_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | 10 | namespace mdf { 11 | 12 | struct LIN_ChecksumError { 13 | // From general MDF properties. 14 | std::chrono::nanoseconds TimeStamp; 15 | 16 | // From general event properties. 17 | uint8_t BusChannel; 18 | 19 | // LIN logging specific. 20 | uint8_t ID; 21 | bool Dir; 22 | uint8_t ReceivedDataByteCount; 23 | uint8_t DataLength; 24 | uint8_t Checksum; 25 | boost::container::static_vector DataBytes; 26 | }; 27 | 28 | std::ostream &operator<<(std::ostream &stream, LIN_ChecksumError const &record); 29 | 30 | } 31 | 32 | #endif //MDFSIMPLECONVERTERS_LIN_CHECKSUMERROR_H 33 | -------------------------------------------------------------------------------- /Library/Include/LIN_Frame.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_LIN_FRAME_H 2 | #define MDFSIMPLECONVERTERS_LIN_FRAME_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | 10 | namespace mdf { 11 | 12 | struct LIN_Frame { 13 | // From general MDF properties. 14 | std::chrono::nanoseconds TimeStamp; 15 | 16 | // From general event properties. 17 | uint8_t BusChannel; 18 | 19 | // LIN logging specific. 20 | uint8_t ID; 21 | bool Dir; 22 | uint8_t ReceivedDataByteCount; 23 | uint8_t DataLength; 24 | boost::container::static_vector DataBytes; 25 | }; 26 | 27 | std::ostream &operator<<(std::ostream &stream, LIN_Frame const &record); 28 | 29 | } 30 | 31 | #endif //MDFSIMPLECONVERTERS_LIN_FRAME_H 32 | -------------------------------------------------------------------------------- /Library/Include/LIN_ReceiveError.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_LIN_RECEIVEERROR_H 2 | #define MDFSIMPLECONVERTERS_LIN_RECEIVEERROR_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | 10 | namespace mdf { 11 | 12 | struct LIN_ReceiveError { 13 | // From general MDF properties. 14 | std::chrono::nanoseconds TimeStamp; 15 | 16 | // From general event properties. 17 | uint8_t BusChannel; 18 | 19 | // LIN logging specific. 20 | uint8_t ID; 21 | }; 22 | 23 | std::ostream &operator<<(std::ostream &stream, LIN_ReceiveError const &record); 24 | 25 | } 26 | 27 | #endif //MDFSIMPLECONVERTERS_LIN_RECEIVEERROR_H 28 | -------------------------------------------------------------------------------- /Library/Include/LIN_SyncError.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_LIN_SYNCERROR_H 2 | #define MDFSIMPLECONVERTERS_LIN_SYNCERROR_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | 10 | namespace mdf { 11 | 12 | struct LIN_SyncError { 13 | // From general MDF properties. 14 | std::chrono::nanoseconds TimeStamp; 15 | 16 | // From general event properties. 17 | uint8_t BusChannel; 18 | 19 | // LIN logging specific. 20 | float Baudrate; 21 | }; 22 | 23 | std::ostream &operator<<(std::ostream &stream, LIN_SyncError const &record); 24 | 25 | } 26 | 27 | #endif //MDFSIMPLECONVERTERS_LIN_SYNCERROR_H 28 | -------------------------------------------------------------------------------- /Library/Include/LIN_TransmissionError.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_LIN_TRANSMISSIONEROR_H 2 | #define MDFSIMPLECONVERTERS_LIN_TRANSMISSIONEROR_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | 10 | namespace mdf { 11 | 12 | struct LIN_TransmissionError { 13 | // From general MDF properties. 14 | std::chrono::nanoseconds TimeStamp; 15 | 16 | // From general event properties. 17 | uint8_t BusChannel; 18 | 19 | // LIN logging specific. 20 | uint8_t ID; 21 | }; 22 | 23 | std::ostream &operator<<(std::ostream &stream, LIN_TransmissionError const &record); 24 | 25 | } 26 | 27 | #endif //MDFSIMPLECONVERTERS_LIN_TRANSMISSIONEROR_H 28 | -------------------------------------------------------------------------------- /Library/Include/MDFBusLoggingLibrary.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_LIBRARY_H 2 | #define MDFSIMPLECONVERTERS_LIBRARY_H 3 | 4 | #include 5 | 6 | namespace mdf { 7 | 8 | semver::version const& getVersion(); 9 | 10 | } 11 | 12 | #endif //MDFSIMPLECONVERTERS_LIBRARY_H 13 | -------------------------------------------------------------------------------- /Library/Include/Metadata.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_METADATA_H 2 | #define MDFSUPER_METADATA_H 3 | 4 | #include 5 | #include 6 | 7 | namespace mdf { 8 | 9 | struct MdfMetadataEntry { 10 | bool readOnly = false; 11 | std::string name = ""; 12 | std::string description = ""; 13 | std::string unit = ""; 14 | std::string valueRaw = "string"; 15 | std::string valueType = ""; 16 | }; 17 | 18 | typedef std::map MetadataMap; 19 | 20 | } 21 | 22 | #endif //MDFSUPER_METADATA_H 23 | -------------------------------------------------------------------------------- /Library/Source/Blocks/CCBlock.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_CCBLOCK_H 2 | #define MDFSIMPLECONVERTERS_CCBLOCK_H 3 | 4 | #include "MdfBlock.h" 5 | 6 | #include 7 | 8 | namespace mdf { 9 | 10 | struct CCBlock : MdfBlock { 11 | protected: 12 | bool load(std::shared_ptr stream) override; 13 | bool saveBlockData(std::streambuf *stream) override; 14 | private: 15 | uint8_t type; 16 | uint8_t precision; 17 | uint16_t flags; 18 | uint16_t refCount; 19 | uint16_t valueCount; 20 | double physicalRangeMinimum; 21 | double physicalRangeMaximum; 22 | 23 | std::vector convertionValues; 24 | }; 25 | 26 | } 27 | 28 | #endif //MDFSIMPLECONVERTERS_CCBLOCK_H 29 | -------------------------------------------------------------------------------- /Library/Source/Blocks/DGBlock.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_DGBLOCK_H 2 | #define MDFSIMPLECONVERTERS_DGBLOCK_H 3 | 4 | #include "MdfBlock.h" 5 | 6 | #include "CGBlock.h" 7 | #include "DTBlock.h" 8 | 9 | namespace mdf { 10 | 11 | struct DGBlock : MdfBlock { 12 | DGBlock(); 13 | 14 | [[nodiscard]] std::shared_ptr getNextDGBlock() const; 15 | [[nodiscard]] std::shared_ptr getFirstCGBlock() const; 16 | [[nodiscard]] std::shared_ptr getDataBlock() const; 17 | 18 | void setNextDGBlock(std::shared_ptr block); 19 | void setFirstCGBlock(std::shared_ptr block); 20 | void setDataBlock(std::shared_ptr block); 21 | 22 | void setRecordSize(uint8_t recordSize); 23 | uint8_t getRecordSize() const; 24 | protected: 25 | bool load(std::shared_ptr stream) override; 26 | bool saveBlockData(std::streambuf *stream) override; 27 | 28 | uint8_t recordIDSize; 29 | }; 30 | 31 | } 32 | 33 | #endif //MDFSIMPLECONVERTERS_DGBLOCK_H 34 | -------------------------------------------------------------------------------- /Library/Source/Blocks/DTBlock.cpp: -------------------------------------------------------------------------------- 1 | #include "DTBlock.h" 2 | 3 | #include 4 | 5 | #include 6 | 7 | namespace be = boost::endian; 8 | 9 | namespace mdf { 10 | 11 | constexpr MdfHeader DTBlockHeader(MdfBlockType_DT, 24, 0); 12 | 13 | DTBlock::DTBlock() { 14 | header = DTBlockHeader; 15 | } 16 | 17 | bool DTBlock::load(std::shared_ptr stream_) { 18 | bool result = false; 19 | stream = stream_; 20 | rawFileLocation = stream->pubseekoff(0, std::ios_base::cur) - std::streamoff(24); 21 | 22 | result = true; 23 | 24 | return result; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /Library/Source/Blocks/DTBlock.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_DTBLOCK_H 2 | #define MDFSIMPLECONVERTERS_DTBLOCK_H 3 | 4 | #include "MdfBlock.h" 5 | #include "IDataBlock.h" 6 | 7 | namespace mdf { 8 | 9 | /** 10 | * The DT block in general contains constant length record data. The data can be represented as sorted or 11 | * unsorted. In the sorted case, all records are from the same source, and thus have the same length. In the 12 | * unsorted case, multiple sources store data in the same block, so the length is no longer guaranteed to be the 13 | * same. 14 | * When loading the DT block, it is not possible to determine if it is either-or. This can only be deduced from 15 | * the remaining structure, in terms of blocks linking to the DT block. 16 | */ 17 | struct DTBlock : MdfBlock, IDataBlock { 18 | /** 19 | * Default constructor. 20 | */ 21 | DTBlock(); 22 | 23 | protected: 24 | bool load(std::shared_ptr stream) override; 25 | 26 | std::shared_ptr stream; 27 | uint64_t rawFileLocation; 28 | }; 29 | 30 | } 31 | 32 | #endif //MDFSIMPLECONVERTERS_DTBLOCK_H 33 | -------------------------------------------------------------------------------- /Library/Source/Blocks/DTBlockRaw.cpp: -------------------------------------------------------------------------------- 1 | #include "DTBlockRaw.h" 2 | 3 | #include 4 | 5 | namespace mdf { 6 | 7 | bool DTBlockRaw::saveBlockData(std::streambuf *dataPtr) { 8 | throw std::runtime_error("This method should never be called"); 9 | } 10 | 11 | std::size_t DTBlockRaw::operator[](std::size_t index) { 12 | return 0; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Library/Source/Blocks/DTBlockRaw.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_DTBLOCKRAW_H 2 | #define MDFSIMPLECONVERTERS_DTBLOCKRAW_H 3 | 4 | #include "DTBlock.h" 5 | 6 | namespace mdf { 7 | 8 | struct DTBlockRaw : DTBlock { 9 | std::size_t operator[](std::size_t index) override; 10 | 11 | protected: 12 | bool saveBlockData(std::streambuf *stream) override; 13 | }; 14 | 15 | } 16 | 17 | #endif //MDFSIMPLECONVERTERS_DTBLOCKRAW_H 18 | -------------------------------------------------------------------------------- /Library/Source/Blocks/DTBlockSingleContinuous.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "DTBlockSingleContinuous.h" 4 | 5 | namespace mdf { 6 | 7 | DTBlockSingleContinuous::DTBlockSingleContinuous(const mdf::DTBlock &parent, std::size_t recordSize) : 8 | recordSize(recordSize), 9 | DTBlock(parent) { 10 | // 11 | } 12 | 13 | std::size_t DTBlockSingleContinuous::operator[](std::size_t index) { 14 | // Since this is a continuous block, the n'th record is simple an offset into the data block. 15 | uint64_t location = getFileLocation(); 16 | 17 | location += index * recordSize; 18 | 19 | return location; 20 | } 21 | 22 | bool DTBlockSingleContinuous::saveBlockData(std::streambuf *dataPtr) { 23 | // Since only a single type of record is present, simply write all the records. 24 | // TODO: FIX 25 | //std::copy_n(this->dataPtr, header.blockSize, dataPtr); 26 | 27 | return true; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /Library/Source/Blocks/DTBlockSingleContinuous.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_DTBLOCKSINGLECONTINUOUS_H 2 | #define MDFSIMPLECONVERTERS_DTBLOCKSINGLECONTINUOUS_H 3 | 4 | #include "DTBlock.h" 5 | 6 | namespace mdf { 7 | 8 | struct DTBlockSingleContinuous : DTBlock { 9 | DTBlockSingleContinuous(DTBlock const &parent, std::size_t recordSize); 10 | 11 | std::size_t operator[](std::size_t index) override; 12 | 13 | protected: 14 | bool saveBlockData(std::streambuf *stream) override; 15 | 16 | std::size_t recordSize; 17 | }; 18 | 19 | } 20 | 21 | #endif //MDFSIMPLECONVERTERS_DTBLOCKSINGLECONTINUOUS_H 22 | -------------------------------------------------------------------------------- /Library/Source/Blocks/DTBlockSingleDiscontinuous.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_DTBLOCKSINGLEDISCONTINUOUS_H 2 | #define MDFSIMPLECONVERTERS_DTBLOCKSINGLEDISCONTINUOUS_H 3 | 4 | #include "DTBlock.h" 5 | #include "DTBlockMultipleRecordIDs.h" 6 | 7 | namespace mdf { 8 | 9 | struct DTBlockSingleDiscontinuous : DTBlock { 10 | explicit DTBlockSingleDiscontinuous(DTBlock const &parent); 11 | 12 | DTBlockSingleDiscontinuous(DTBlockMultipleRecordIDs const &parent, uint64_t recordID); 13 | 14 | std::vector const &getRecordIndicesAbsolute() const; 15 | 16 | std::size_t operator[](std::size_t index) override; 17 | 18 | protected: 19 | bool saveBlockData(std::streambuf *stream) override; 20 | 21 | std::vector recordIndices; 22 | uint64_t recordSize; 23 | }; 24 | 25 | } 26 | 27 | #endif //MDFSIMPLECONVERTERS_DTBLOCKSINGLEDISCONTINUOUS_H 28 | -------------------------------------------------------------------------------- /Library/Source/Blocks/FHBlock.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_FHBLOCK_H 2 | #define MDFSIMPLECONVERTERS_FHBLOCK_H 3 | 4 | #include "MdfBlock.h" 5 | 6 | namespace mdf { 7 | 8 | struct FHBlock : MdfBlock { 9 | protected: 10 | bool load(std::shared_ptr stream) override; 11 | bool saveBlockData(std::streambuf *stream) override; 12 | private: 13 | uint64_t timeNs; 14 | int16_t tzOffsetMin; 15 | int16_t dstOffsetMin; 16 | uint8_t timeFlags; 17 | }; 18 | 19 | } 20 | 21 | #endif //MDFSIMPLECONVERTERS_FHBLOCK_H 22 | -------------------------------------------------------------------------------- /Library/Source/Blocks/HDBlock.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_HDBLOCK_H 2 | #define MDFSIMPLECONVERTERS_HDBLOCK_H 3 | 4 | #include "MdfBlock.h" 5 | 6 | #include "DGBlock.h" 7 | #include "MDBlock.h" 8 | 9 | namespace mdf { 10 | 11 | struct HDBlock : MdfBlock { 12 | [[nodiscard]] std::shared_ptr getFirstDGBlock() const; 13 | 14 | /*!Get the start time of the measurement in nanoseconds. 15 | * @return 16 | */ 17 | [[nodiscard]] uint64_t getStartTimeNs() const; 18 | 19 | [[nodiscard]] int16_t getTzOffsetMin() const; 20 | 21 | [[nodiscard]] int16_t getDstOffsetMin() const; 22 | 23 | std::shared_ptr getComment() const; 24 | 25 | protected: 26 | bool load(std::shared_ptr stream) override; 27 | 28 | bool saveBlockData(std::streambuf *stream) override; 29 | 30 | private: 31 | uint64_t startTimeNs; 32 | int16_t tzOffsetMin; 33 | int16_t dstOffsetMin; 34 | uint8_t timeFlags; 35 | uint8_t timeClass; 36 | uint8_t flags; 37 | uint8_t reserved; 38 | double start_angle_rad; 39 | double start_distance_m; 40 | }; 41 | 42 | } 43 | 44 | #endif //MDFSIMPLECONVERTERS_HDBLOCK_H 45 | -------------------------------------------------------------------------------- /Library/Source/Blocks/IDataBlock.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_IDATABLOCK_H 2 | #define MDFSIMPLECONVERTERS_IDATABLOCK_H 3 | 4 | #include 5 | 6 | namespace mdf { 7 | 8 | struct IDataBlock { 9 | virtual std::size_t operator[](std::size_t index) = 0; 10 | }; 11 | 12 | } 13 | 14 | #endif //MDFSIMPLECONVERTERS_IDATABLOCK_H 15 | -------------------------------------------------------------------------------- /Library/Source/Blocks/MDBlock.cpp: -------------------------------------------------------------------------------- 1 | #include "MDBlock.h" 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | namespace mdf { 9 | 10 | std::string_view MDBlock::getMetaData() const { 11 | return std::string_view(metaData); 12 | } 13 | 14 | bool MDBlock::load(std::shared_ptr stream) { 15 | bool result = false; 16 | 17 | // Load the data as string. 18 | std::stringstream ss; 19 | std::copy_n( 20 | std::istreambuf_iterator(stream.get()), 21 | header.blockSize - sizeof(header), 22 | std::ostream_iterator(ss) 23 | ); 24 | 25 | metaData = ss.str(); 26 | 27 | result = true; 28 | 29 | return result; 30 | } 31 | 32 | bool MDBlock::saveBlockData(std::streambuf *stream) { 33 | std::streamsize written = stream->sputn(metaData.c_str(), metaData.size()); 34 | written += stream->sputc('\0'); 35 | 36 | return (written == (metaData.size() + 1)); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /Library/Source/Blocks/MDBlock.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_MDBLOCK_H 2 | #define MDFSIMPLECONVERTERS_MDBLOCK_H 3 | 4 | #include 5 | 6 | #include "MdfBlock.h" 7 | 8 | namespace mdf { 9 | 10 | struct MDBlock : MdfBlock { 11 | std::string_view getMetaData() const; 12 | protected: 13 | bool load(std::shared_ptr stream) override; 14 | bool saveBlockData(std::streambuf *stream) override; 15 | private: 16 | std::string metaData; 17 | }; 18 | 19 | } 20 | 21 | #endif //MDFSIMPLECONVERTERS_MDBLOCK_H 22 | -------------------------------------------------------------------------------- /Library/Source/Blocks/MdfHeader.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_MDFHEADER_H 2 | #define MDFSIMPLECONVERTERS_MDFHEADER_H 3 | 4 | #include 5 | 6 | #include "MdfBlockTypes.h" 7 | 8 | namespace mdf { 9 | 10 | struct MdfHeader { 11 | MdfBlockType blockType; 12 | uint64_t blockSize; 13 | uint64_t linkCount; 14 | 15 | constexpr MdfHeader(MdfBlockType blockType, uint64_t blockSize, uint64_t linkCount) : blockType(blockType), blockSize(blockSize), linkCount(linkCount) { 16 | 17 | } 18 | MdfHeader() = default; 19 | }; 20 | 21 | } 22 | 23 | #endif //MDFSIMPLECONVERTERS_MDFHEADER_H 24 | -------------------------------------------------------------------------------- /Library/Source/Blocks/SDBlock.cpp: -------------------------------------------------------------------------------- 1 | #include "SDBlock.h" 2 | 3 | #include 4 | 5 | #include 6 | 7 | namespace be = boost::endian; 8 | 9 | namespace mdf { 10 | 11 | #pragma pack(push, 1) 12 | struct SDBlockData { 13 | be::little_uint8_buf_t type; 14 | be::little_uint8_buf_t bus_type; 15 | be::little_uint8_buf_t flags; 16 | be::little_uint8_buf_t reserved[5]; 17 | }; 18 | #pragma pack(pop) 19 | 20 | constexpr MdfHeader SDBlockHeader(MdfBlockType_SD, 24, 0); 21 | 22 | SDBlock::SDBlock() { 23 | header = SDBlockHeader; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /Library/Source/Blocks/SDBlock.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_SDBLOCK_H 2 | #define MDFSIMPLECONVERTERS_SDBLOCK_H 3 | 4 | #include "MdfBlock.h" 5 | #include "IDataBlock.h" 6 | 7 | namespace mdf { 8 | 9 | struct SDBlock : MdfBlock, IDataBlock { 10 | SDBlock(); 11 | }; 12 | 13 | } 14 | 15 | #endif //MDFSIMPLECONVERTERS_SDBLOCK_H 16 | -------------------------------------------------------------------------------- /Library/Source/Blocks/SDBlockContinuous.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "SDBlockContinuous.h" 4 | 5 | namespace mdf { 6 | 7 | std::size_t SDBlockContinuous::operator[](std::size_t index) { 8 | // Since this is a continuous block, simply use the data pointer and an offset. 9 | uint64_t location = getFileLocation() + index; 10 | return location; 11 | } 12 | 13 | bool SDBlockContinuous::load(std::shared_ptr stream_) { 14 | // Save the data pointer for easier access. 15 | stream = stream_; 16 | 17 | return true; 18 | } 19 | 20 | bool SDBlockContinuous::saveBlockData(std::streambuf *outputDataPtr) { 21 | // Get the total size of the block, without the block header. 22 | std::size_t totalSize = header.blockSize - sizeof(MdfHeader); 23 | 24 | // Copy all bytes from the input to the output in a continuous fashion. 25 | // TODO: FIX 26 | //std::copy_n(this->dataPtr, totalSize, outputDataPtr); 27 | 28 | return true; 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /Library/Source/Blocks/SDBlockContinuous.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_SDBLOCKCONTINUOUS_H 2 | #define MDFSIMPLECONVERTERS_SDBLOCKCONTINUOUS_H 3 | 4 | #include "SDBlock.h" 5 | 6 | namespace mdf { 7 | 8 | struct SDBlockContinuous : public SDBlock { 9 | std::size_t operator[](std::size_t index) override; 10 | 11 | protected: 12 | bool load(std::shared_ptr stream) override; 13 | 14 | bool saveBlockData(std::streambuf *outputDataPtr) override; 15 | 16 | std::shared_ptr stream; 17 | }; 18 | 19 | } 20 | 21 | #endif //MDFSIMPLECONVERTERS_SDBLOCKCONTINUOUS_H 22 | -------------------------------------------------------------------------------- /Library/Source/Blocks/SDBlockDiscontinuous.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_SDBLOCKDISCONTINUOUS_H 2 | #define MDFSIMPLECONVERTERS_SDBLOCKDISCONTINUOUS_H 3 | 4 | #include 5 | #include 6 | 7 | #include "SDBlock.h" 8 | 9 | namespace mdf { 10 | 11 | struct SDBlockDiscontinuous : public SDBlock { 12 | SDBlockDiscontinuous(std::vector const &dataPtr, std::shared_ptr stream); 13 | 14 | std::size_t operator[](std::size_t index) override; 15 | 16 | protected: 17 | bool load(std::shared_ptr stream) override; 18 | 19 | bool saveBlockData(std::streambuf *stream) override; 20 | 21 | std::vector dataRecords; 22 | std::map dataRecordsMap; 23 | std::shared_ptr stream; 24 | }; 25 | 26 | } 27 | 28 | #endif //MDFSIMPLECONVERTERS_SDBLOCKDISCONTINUOUS_H 29 | -------------------------------------------------------------------------------- /Library/Source/Blocks/SIBlock.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_SIBLOCK_H 2 | #define MDFSIMPLECONVERTERS_SIBLOCK_H 3 | 4 | #include "MdfBlock.h" 5 | #include "MDBlock.h" 6 | 7 | namespace mdf { 8 | 9 | enum struct SIBlockBusType : uint8_t { 10 | CAN = 0x02u, 11 | LIN = 0x03u 12 | }; 13 | 14 | SIBlockBusType operator&(SIBlockBusType const& lhs, SIBlockBusType const& rhs); 15 | 16 | struct SIBlock : MdfBlock { 17 | [[nodiscard]] SIBlockBusType getBusType() const; 18 | [[nodiscard]] std::shared_ptr getComment() const; 19 | protected: 20 | bool load(std::shared_ptr stream) override; 21 | bool saveBlockData(std::streambuf *stream) override; 22 | private: 23 | uint8_t busType; 24 | uint8_t flags; 25 | uint8_t type; 26 | }; 27 | 28 | } 29 | 30 | #endif //MDFSIMPLECONVERTERS_SIBLOCK_H 31 | -------------------------------------------------------------------------------- /Library/Source/Blocks/TXBlock.cpp: -------------------------------------------------------------------------------- 1 | #include "TXBlock.h" 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | namespace mdf { 9 | 10 | bool TXBlock::load(std::shared_ptr stream) { 11 | bool result = false; 12 | 13 | // Load the data as string. 14 | std::stringstream ss; 15 | std::copy_n( 16 | std::istreambuf_iterator(stream.get()), 17 | header.blockSize - sizeof(header), 18 | std::ostream_iterator(ss) 19 | ); 20 | text = ss.str(); 21 | 22 | result = true; 23 | 24 | return result; 25 | } 26 | 27 | bool TXBlock::saveBlockData(std::streambuf *stream) { 28 | std::streamsize written = stream->sputn(text.c_str(), text.size()); 29 | written += stream->sputc('\0'); 30 | 31 | return (written == (text.size() + 1)); 32 | } 33 | 34 | std::string_view TXBlock::getText() const { 35 | return std::string_view(text.c_str()); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /Library/Source/Blocks/TXBlock.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_TXBLOCK_H 2 | #define MDFSIMPLECONVERTERS_TXBLOCK_H 3 | 4 | #include 5 | 6 | #include "MdfBlock.h" 7 | 8 | namespace mdf { 9 | 10 | struct TXBlock : MdfBlock { 11 | public: 12 | std::string_view getText() const; 13 | protected: 14 | bool load(std::shared_ptr stream) override; 15 | bool saveBlockData(std::streambuf *stream) override; 16 | private: 17 | std::string text; 18 | }; 19 | 20 | } 21 | 22 | #endif //MDFSIMPLECONVERTERS_MDBLOCK_H 23 | -------------------------------------------------------------------------------- /Library/Source/CachingStreamBuffer.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_CACHINGSTREAMBUFFER_H 2 | #define MDFSUPER_CACHINGSTREAMBUFFER_H 3 | 4 | #include 5 | #include 6 | 7 | namespace mdf { 8 | 9 | struct CachingStreamBuffer : public std::streambuf { 10 | CachingStreamBuffer(std::shared_ptr parent, std::size_t cacheSize); 11 | 12 | protected: 13 | int_type underflow() override; 14 | pos_type seekoff(off_type, std::ios_base::seekdir, std::ios_base::openmode) override; 15 | pos_type seekpos(pos_type, std::ios_base::openmode) override; 16 | std::streamsize xsgetn(char_type *s, std::streamsize n) override; 17 | private: 18 | std::shared_ptr parent; 19 | std::size_t cacheSize; 20 | std::unique_ptr bufferStorage; 21 | char* buffer; 22 | std::streampos bufferOffset; 23 | 24 | pos_type seekBeginning(off_type offset); 25 | pos_type seekEnd(off_type offset); 26 | pos_type seekCurrent(off_type offset); 27 | pos_type currentPosition(); 28 | }; 29 | 30 | } 31 | 32 | #endif //MDFSUPER_CACHINGSTREAMBUFFER_H 33 | -------------------------------------------------------------------------------- /Library/Source/ExtractMetaData.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_EXTRACTMETADATA_H 2 | #define MDFSIMPLECONVERTERS_EXTRACTMETADATA_H 3 | 4 | #include "Metadata.h" 5 | 6 | namespace mdf { 7 | 8 | bool extractMetadata(std::string const& xml, MetadataMap& metadata); 9 | 10 | bool extractMetadataHD(std::string const& xml, MetadataMap& metadata); 11 | 12 | bool extractMetadataSI(std::string const& xml, MetadataMap& metadata); 13 | 14 | } 15 | 16 | #endif //MDFSIMPLECONVERTERS_EXTRACTMETADATA_H 17 | -------------------------------------------------------------------------------- /Library/Source/FileInfo/FileInfoUtility.cpp: -------------------------------------------------------------------------------- 1 | #include "FileInfoUtility.h" 2 | 3 | namespace mdf { 4 | 5 | std::shared_ptr getMasterTimeChannel(std::shared_ptr cgBlock) { 6 | std::shared_ptr cnBlock = cgBlock->getFirstCNBlock(); 7 | 8 | while(cnBlock) { 9 | bool resultFound = false; 10 | 11 | do { 12 | if((cnBlock->getChannelType() & CNType::MasterChannel) != CNType::MasterChannel) { 13 | break; 14 | } 15 | 16 | if((cnBlock->getSyncType() & CNSyncType::Time) != CNSyncType::Time) { 17 | break; 18 | } 19 | 20 | resultFound = true; 21 | } while(false); 22 | 23 | if(resultFound) { 24 | break; 25 | } 26 | 27 | // NOTE: No need to check composition blocks, as they cannot contain the master channel. 28 | cnBlock = cnBlock->getNextCNBlock(); 29 | } 30 | 31 | // If a result was located, cnBlock is a valid pointer to the master channel. Else, it has no reference. 32 | return cnBlock; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /Library/Source/FileInfo/FileInfoUtility.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_FILEINFOUTILITY_H 2 | #define MDFSUPER_FILEINFOUTILITY_H 3 | 4 | #include 5 | #include 6 | 7 | #include "../Blocks/CGBlock.h" 8 | 9 | namespace mdf { 10 | 11 | std::shared_ptr getMasterTimeChannel(std::shared_ptr cgBlock); 12 | 13 | } 14 | 15 | #endif //MDFSUPER_FILEINFOUTILITY_H 16 | -------------------------------------------------------------------------------- /Library/Source/FileInfo/FinalizedFileInfo.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_FINALIZEDFILEINFO_H 2 | #define MDFSUPER_FINALIZEDFILEINFO_H 3 | 4 | #include 5 | #include 6 | 7 | #include "../Blocks/HDBlock.h" 8 | 9 | namespace mdf { 10 | 11 | struct FinalizedFileInfo { 12 | FinalizedFileInfo(std::shared_ptr hdBlock, std::shared_ptr dataSource); 13 | 14 | std::chrono::nanoseconds firstMeasurement() const; 15 | private: 16 | std::shared_ptr hdBlock; 17 | std::shared_ptr dataSource; 18 | }; 19 | 20 | 21 | } 22 | 23 | #endif //MDFSUPER_FINALIZEDFILEINFO_H 24 | -------------------------------------------------------------------------------- /Library/Source/FileInfo/UnfinalizedFileInfo.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_UNFINALIZEDFILEINFO_H 2 | #define MDFSUPER_UNFINALIZEDFILEINFO_H 3 | 4 | #include 5 | #include 6 | 7 | #include "../Blocks/HDBlock.h" 8 | 9 | namespace mdf { 10 | 11 | struct UnfinalizedFileInfo { 12 | UnfinalizedFileInfo(std::shared_ptr hdBlock, std::shared_ptr dataSource); 13 | 14 | std::chrono::nanoseconds firstMeasurement() const; 15 | private: 16 | std::shared_ptr hdBlock; 17 | std::shared_ptr dataSource; 18 | }; 19 | 20 | 21 | } 22 | 23 | #endif //MDFSUPER_UNFINALIZEDFILEINFO_H 24 | -------------------------------------------------------------------------------- /Library/Source/FileInfoUtility.cpp: -------------------------------------------------------------------------------- 1 | #include "FileInfo.h" 2 | 3 | namespace mdf { 4 | 5 | FileInfo::FileInfo() : 6 | CANMessages(0), 7 | LINMessages(0), 8 | Time(0), 9 | TimezoneOffsetMinutes(0) { 10 | // 11 | } 12 | 13 | void FileInfo::clear() { 14 | CANMessages = 0; 15 | LINMessages = 0; 16 | Time = std::chrono::nanoseconds(0); 17 | TimezoneOffsetMinutes = 0; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Library/Source/IBlockStorage.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_IBLOCKSTORAGE_H 2 | #define MDFSIMPLECONVERTERS_IBLOCKSTORAGE_H 3 | 4 | #include 5 | 6 | #include "Blocks/MdfBlock.h" 7 | 8 | namespace mdf { 9 | 10 | struct IBlockStorage { 11 | virtual ~IBlockStorage() = default; 12 | virtual std::shared_ptr getBlockAt(uint64_t address) = 0; 13 | }; 14 | 15 | } 16 | 17 | #endif //MDFSIMPLECONVERTERS_IBLOCKSTORAGE_H 18 | -------------------------------------------------------------------------------- /Library/Source/Iterators/EmptyIterator.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_EMPTYITERATOR_H 2 | #define MDFSIMPLECONVERTERS_EMPTYITERATOR_H 3 | 4 | #include "IIterator.h" 5 | 6 | namespace mdf { 7 | 8 | template 9 | struct EmptyIterator : public IIterator { 10 | EmptyIterator(); 11 | 12 | void increment() override; 13 | 14 | RecordType const &dereference() override; 15 | 16 | std::unique_ptr> clone() const override; 17 | 18 | std::unique_ptr> begin() const override; 19 | 20 | std::unique_ptr> end() const override; 21 | 22 | bool equals(IIterator const &other) const override; 23 | 24 | }; 25 | 26 | } 27 | 28 | #endif //MDFSIMPLECONVERTERS_EMPTYITERATOR_H 29 | -------------------------------------------------------------------------------- /Library/Source/Iterators/RecordFunctor.cpp: -------------------------------------------------------------------------------- 1 | #include "RecordFunctor.h" 2 | 3 | #include 4 | 5 | namespace mdf { 6 | 7 | RecordFunctor::RecordFunctor(std::shared_ptr storage) : storage(std::move(storage)) { 8 | // 9 | } 10 | 11 | uint64_t RecordFunctor::operator()(std::size_t index) const { 12 | return (*storage)[index]; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Library/Source/Iterators/RecordFunctor.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_RECORDFUNCTOR_H 2 | #define MDFSIMPLECONVERTERS_RECORDFUNCTOR_H 3 | 4 | #include 5 | 6 | #include "../Blocks/IDataBlock.h" 7 | 8 | namespace mdf { 9 | 10 | struct RecordFunctor { 11 | explicit RecordFunctor(std::shared_ptr storage); 12 | 13 | uint64_t operator()(std::size_t index) const; 14 | 15 | std::streamsize getData(char* buffer, std::streamsize n); 16 | 17 | protected: 18 | std::shared_ptr storage; 19 | }; 20 | 21 | } 22 | 23 | #endif //MDFSIMPLECONVERTERS_RECORDFUNCTOR_H 24 | -------------------------------------------------------------------------------- /Library/Source/Logger.cpp: -------------------------------------------------------------------------------- 1 | #include "Logger.h" 2 | 3 | namespace mdf { 4 | 5 | 6 | 7 | } 8 | -------------------------------------------------------------------------------- /Library/Source/Logger.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_LOGGER_H 2 | #define MDFSUPER_LOGGER_H 3 | 4 | namespace mdf { 5 | 6 | 7 | 8 | } 9 | 10 | #endif //MDFSUPER_LOGGER_H 11 | -------------------------------------------------------------------------------- /Library/Source/MDFBusLoggingLibrary.cpp: -------------------------------------------------------------------------------- 1 | #include "MDFBusLoggingLibrary.h" 2 | #include "Version.h" 3 | 4 | namespace mdf { 5 | 6 | constexpr semver::version Version { 7 | MDF_BusLogging_Library_VERSION_MAJOR, 8 | MDF_BusLogging_Library_VERSION_MINOR, 9 | MDF_BusLogging_Library_VERSION_PATCH 10 | }; 11 | 12 | semver::version const& getVersion() { 13 | return Version; 14 | } 15 | 16 | } -------------------------------------------------------------------------------- /Library/Source/Records/CAN_DataFrame.cpp: -------------------------------------------------------------------------------- 1 | #include "CAN_DataFrame.h" 2 | 3 | #include 4 | 5 | namespace mdf { 6 | 7 | std::ostream &operator<<(std::ostream &stream, CAN_DataFrame const &record) { 8 | if (record.IDE) { 9 | fmt::print( 10 | stream, 11 | FMT_STRING("{:.6f} - {:8X} - {:d} - {:02X}"), 12 | std::chrono::duration(record.TimeStamp).count(), 13 | record.ID, 14 | record.DLC, 15 | fmt::join(record.DataBytes, "") 16 | ); 17 | } else { 18 | fmt::print( 19 | stream, 20 | FMT_STRING("{:.6f} - {:4X} - {:d} - {:02X}"), 21 | std::chrono::duration(record.TimeStamp).count(), 22 | record.ID, 23 | record.DLC, 24 | fmt::join(record.DataBytes, "") 25 | ); 26 | } 27 | 28 | return stream; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /Library/Source/Records/CAN_ErrorFrame.cpp: -------------------------------------------------------------------------------- 1 | #include "CAN_ErrorFrame.h" 2 | 3 | #include 4 | 5 | namespace mdf { 6 | 7 | std::ostream &operator<<(std::ostream &stream, CAN_ErrorFrame const &record) { 8 | fmt::print( 9 | stream, 10 | FMT_STRING("{:.6f} - {:d} - {:d}"), 11 | std::chrono::duration(record.TimeStamp).count(), 12 | record.BusChannel, 13 | record.ErrorType 14 | ); 15 | 16 | return stream; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /Library/Source/Records/CAN_RemoteFrame.cpp: -------------------------------------------------------------------------------- 1 | #include "CAN_RemoteFrame.h" 2 | 3 | #include 4 | 5 | namespace mdf { 6 | 7 | std::ostream &operator<<(std::ostream &stream, CAN_RemoteFrame const &record) { 8 | if (record.IDE) { 9 | fmt::print( 10 | stream, 11 | FMT_STRING("{:.6f} - {:8X} - {:d}"), 12 | std::chrono::duration(record.TimeStamp).count(), 13 | record.ID, 14 | record.DLC 15 | ); 16 | } else { 17 | fmt::print( 18 | stream, 19 | FMT_STRING("{:.6f} - {:4X} - {:d}"), 20 | std::chrono::duration(record.TimeStamp).count(), 21 | record.ID, 22 | record.DLC 23 | ); 24 | } 25 | 26 | return stream; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /Library/Source/Records/LIN_ChecksumError.cpp: -------------------------------------------------------------------------------- 1 | #include "LIN_ChecksumError.h" 2 | 3 | namespace mdf { 4 | 5 | std::ostream &operator<<(std::ostream &stream, LIN_ChecksumError const &record) { 6 | stream << "A LIN record\n"; 7 | 8 | return stream; 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Library/Source/Records/LIN_Frame.cpp: -------------------------------------------------------------------------------- 1 | #include "LIN_Frame.h" 2 | 3 | namespace mdf { 4 | 5 | std::ostream &operator<<(std::ostream &stream, LIN_Frame const &record) { 6 | stream << "A LIN record\n"; 7 | 8 | return stream; 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Library/Source/Records/LIN_ReceiveError.cpp: -------------------------------------------------------------------------------- 1 | #include "LIN_ReceiveError.h" 2 | 3 | namespace mdf { 4 | 5 | std::ostream &operator<<(std::ostream &stream, LIN_ReceiveError const &record) { 6 | stream << "A LIN record\n"; 7 | 8 | return stream; 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Library/Source/Records/LIN_SyncError.cpp: -------------------------------------------------------------------------------- 1 | #include "LIN_SyncError.h" 2 | 3 | namespace mdf { 4 | 5 | std::ostream &operator<<(std::ostream &stream, LIN_SyncError const &record) { 6 | stream << "A LIN record\n"; 7 | 8 | return stream; 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Library/Source/Records/LIN_TransmissionError.cpp: -------------------------------------------------------------------------------- 1 | #include "LIN_TransmissionError.h" 2 | 3 | namespace mdf { 4 | 5 | std::ostream &operator<<(std::ostream &stream, LIN_TransmissionError const &record) { 6 | stream << "A LIN record\n"; 7 | 8 | return stream; 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Library/Source/Records/RecordTypes.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_RECORDTYPES_H 2 | #define MDFSUPER_RECORDTYPES_H 3 | 4 | #include 5 | 6 | namespace mdf { 7 | 8 | enum struct RecordType { 9 | CAN_DataFrame, 10 | CAN_ErrorFrame, 11 | CAN_RemoteFrame, 12 | LIN_ChecksumError, 13 | LIN_Frame, 14 | LIN_ReceiveError, 15 | LIN_SyncError, 16 | LIN_TransmissionError, 17 | }; 18 | 19 | std::string_view getRecordName(RecordType recordType); 20 | 21 | } 22 | 23 | #endif //MDFSUPER_RECORDTYPES_H 24 | -------------------------------------------------------------------------------- /Library/Source/Utility.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_UTILITY_H 2 | #define MDFSIMPLECONVERTERS_UTILITY_H 3 | 4 | #include "Blocks/CGBlock.h" 5 | #include "Blocks/CNBlock.h" 6 | 7 | #include 8 | #include 9 | 10 | namespace mdf { 11 | std::vector> getAllCNBlocks(std::shared_ptr parent); 12 | 13 | std::vector> getAllCNBlocks(std::shared_ptr parent); 14 | 15 | bool iequals(const std::string &a, const std::string &b); 16 | } 17 | 18 | 19 | #endif //MDFSIMPLECONVERTERS_UTILITY_H 20 | -------------------------------------------------------------------------------- /Library/Source/Version.h.in: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_PROJECTFORMATION_H 2 | #define MDFSIMPLECONVERTERS_PROJECTFORMATION_H 3 | 4 | #define MDF_BusLogging_Library_VERSION_MAJOR @MDF_BusLogging_Library_VERSION_MAJOR@ 5 | #define MDF_BusLogging_Library_VERSION_MINOR @MDF_BusLogging_Library_VERSION_MINOR@ 6 | #define MDF_BusLogging_Library_VERSION_PATCH @MDF_BusLogging_Library_VERSION_PATCH@ 7 | 8 | #endif //MDFSIMPLECONVERTERS_PROJECTFORMATION_H 9 | -------------------------------------------------------------------------------- /Python/Distribution_Iterator/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | build 3 | dist 4 | mdf_iter.egg-info 5 | 6 | mdf_iter/mdf_iter.pyd 7 | -------------------------------------------------------------------------------- /Python/Distribution_Iterator/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 CSS-Electronics 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Python/Distribution_Iterator/examples/example_dataframe.py: -------------------------------------------------------------------------------- 1 | import fsspec 2 | import mdf_iter 3 | 4 | 5 | def setup_fs() -> fsspec: 6 | """Helper function to setup the file system for the examples. 7 | """ 8 | import s3fs 9 | 10 | fs = s3fs.S3FileSystem( 11 | key="", 12 | secret="", 13 | client_kwargs={ 14 | "endpoint_url": "http://address.of.remote.s3.server:9000", 15 | }, 16 | ) 17 | 18 | return fs 19 | 20 | 21 | def example_iterator(): 22 | """Simple example which extracts all CAN records in a pandas DataFrame. 23 | """ 24 | # Get a handle to the remote file. 25 | fs = setup_fs() 26 | log_file = r"LOG/EEEE0001/00000001/00000001.MF4" 27 | 28 | with fs.open(log_file, "rb") as handle: 29 | # Load the file. 30 | mdf_file = mdf_iter.MdfFile(handle) 31 | 32 | # Extract a dataframe with all the CAN measurements. 33 | result = mdf_file.get_data_frame() 34 | 35 | print(result) 36 | 37 | return 38 | 39 | 40 | if __name__ == '__main__': 41 | example_iterator() 42 | pass 43 | -------------------------------------------------------------------------------- /Python/Distribution_Iterator/mdf_iter/FileInterface.py: -------------------------------------------------------------------------------- 1 | from mdf_iter.IFileInterface import IFileInterface 2 | 3 | 4 | class FileInterface(IFileInterface): 5 | """Implementation of the IFileInterface for use with file-like objects. 6 | 7 | """ 8 | def __init__(self, fl): 9 | """Setup the interface with a file-like object. 10 | 11 | :param fl: File-like object. Assumed to be open and valid. 12 | """ 13 | super(IFileInterface, self).__init__() 14 | self._handle = fl 15 | 16 | def read(self, buffer: bytearray, number_of_bytes: int) -> int: 17 | res = self._handle.read(number_of_bytes) 18 | buffer[:len(res)] = res 19 | 20 | return len(res) 21 | 22 | def seek(self, offset: int, direction: int = 0) -> int: 23 | abs_pos = self._handle.seek(offset, direction) 24 | 25 | return abs_pos 26 | 27 | pass 28 | -------------------------------------------------------------------------------- /Python/Distribution_Iterator/mdf_iter/__init__.py: -------------------------------------------------------------------------------- 1 | from mdf_iter.mdf_iter import * 2 | 3 | from mdf_iter.FileInterface import FileInterface 4 | from mdf_iter.IFileInterface import IFileInterface 5 | -------------------------------------------------------------------------------- /Python/Source/CallbackBuffer.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_CALLBACKBUFFER_H 2 | #define MDFSUPER_CALLBACKBUFFER_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include "CXX/Objects.hxx" 9 | 10 | namespace mdf::python { 11 | 12 | struct CallbackBuffer : public std::streambuf { 13 | explicit CallbackBuffer(Py::Object obj); 14 | 15 | int_type underflow() override; 16 | pos_type seekoff(off_type, std::ios_base::seekdir, std::ios_base::openmode) override; 17 | pos_type seekpos(pos_type, std::ios_base::openmode) override; 18 | private: 19 | Py::Object parent; 20 | 21 | std::streampos currentPositionParent; 22 | std::vector buffer; 23 | bool endFound; 24 | }; 25 | 26 | } 27 | 28 | #endif //MDFSUPER_CALLBACKBUFFER_H 29 | -------------------------------------------------------------------------------- /Python/Source/Export.cpp: -------------------------------------------------------------------------------- 1 | #include "Module.h" 2 | 3 | #if defined( _WIN32 ) 4 | #define EXPORT_SYMBOL __declspec( dllexport ) 5 | #else 6 | #define EXPORT_SYMBOL 7 | #endif 8 | 9 | extern "C" EXPORT_SYMBOL PyObject *PyInit_mdf_iter() { 10 | #if defined(PY_WIN32_DELAYLOAD_PYTHON_DLL) 11 | Py::InitialisePythonIndirectPy::Interface(); 12 | #endif 13 | 14 | static auto *module = new Module; 15 | return module->module().ptr(); 16 | } 17 | 18 | extern "C" EXPORT_SYMBOL PyObject *PyInit_mdf_iter_d() { 19 | return PyInit_mdf_iter(); 20 | } 21 | -------------------------------------------------------------------------------- /Python/Source/IteratorWrappers/MDF_CAN_DataFrameIteratorWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_CAN_DATAFRAMEITERATORWRAPPER_H 2 | #define MDFSUPER_MDF_CAN_DATAFRAMEITERATORWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_CAN_DataFrameIteratorWrapper : public Py::PythonExtension { 10 | MDF_CAN_DataFrameIteratorWrapper(mdf::RecordIterator const &parent); 11 | 12 | virtual ~MDF_CAN_DataFrameIteratorWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object getattro(const Py::String &name_); 17 | 18 | int setattro(const Py::String &name_, const Py::Object &value); 19 | 20 | Py::Object iter(); 21 | 22 | PyObject *iternext(); 23 | 24 | protected: 25 | mdf::RecordIterator it; 26 | }; 27 | 28 | 29 | #endif //MDFSUPER_MDF_CAN_DATAFRAMEITERATORWRAPPER_H 30 | -------------------------------------------------------------------------------- /Python/Source/IteratorWrappers/MDF_CAN_ErrorFrameIteratorWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_CAN_ERRORFRAMEITERATORWRAPPER_H 2 | #define MDFSUPER_MDF_CAN_ERRORFRAMEITERATORWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_CAN_ErrorFrameIteratorWrapper : public Py::PythonExtension { 10 | MDF_CAN_ErrorFrameIteratorWrapper(mdf::RecordIterator const &parent); 11 | 12 | virtual ~MDF_CAN_ErrorFrameIteratorWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object getattro(const Py::String &name_); 17 | 18 | int setattro(const Py::String &name_, const Py::Object &value); 19 | 20 | Py::Object iter(); 21 | 22 | PyObject *iternext(); 23 | 24 | protected: 25 | mdf::RecordIterator it; 26 | }; 27 | 28 | 29 | #endif //MDFSUPER_MDF_CAN_ERRORFRAMEITERATORWRAPPER_H 30 | -------------------------------------------------------------------------------- /Python/Source/IteratorWrappers/MDF_CAN_RemoteFrameIteratorWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_CAN_REMOTEFRAMEITERATORWRAPPER_H 2 | #define MDFSUPER_MDF_CAN_REMOTEFRAMEITERATORWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_CAN_RemoteFrameIteratorWrapper : public Py::PythonExtension { 10 | MDF_CAN_RemoteFrameIteratorWrapper(mdf::RecordIterator const &parent); 11 | 12 | virtual ~MDF_CAN_RemoteFrameIteratorWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object getattro(const Py::String &name_); 17 | 18 | int setattro(const Py::String &name_, const Py::Object &value); 19 | 20 | Py::Object iter(); 21 | 22 | PyObject *iternext(); 23 | 24 | protected: 25 | mdf::RecordIterator it; 26 | }; 27 | 28 | 29 | #endif //MDFSUPER_MDF_CAN_REMOTEFRAMEITERATORWRAPPER_H 30 | -------------------------------------------------------------------------------- /Python/Source/IteratorWrappers/MDF_LIN_ChecksumErrorIteratorWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_LIN_CHEKSUMERRORITERATORWRAPPER_H 2 | #define MDFSUPER_MDF_LIN_CHEKSUMERRORITERATORWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_LIN_ChecksumErrorIteratorWrapper : public Py::PythonExtension { 10 | MDF_LIN_ChecksumErrorIteratorWrapper(mdf::RecordIterator const &parent); 11 | 12 | virtual ~MDF_LIN_ChecksumErrorIteratorWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object getattro(const Py::String &name_); 17 | 18 | int setattro(const Py::String &name_, const Py::Object &value); 19 | 20 | Py::Object iter(); 21 | 22 | PyObject *iternext(); 23 | 24 | protected: 25 | mdf::RecordIterator it; 26 | }; 27 | 28 | 29 | #endif //MDFSUPER_MDF_LIN_CHEKSUMERRORITERATORWRAPPER_H 30 | -------------------------------------------------------------------------------- /Python/Source/IteratorWrappers/MDF_LIN_FrameIteratorWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_LIN_FRAMEITERATORWRAPPER_H 2 | #define MDFSUPER_MDF_LIN_FRAMEITERATORWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_LIN_FrameIteratorWrapper : public Py::PythonExtension { 10 | MDF_LIN_FrameIteratorWrapper(mdf::RecordIterator const &parent); 11 | 12 | virtual ~MDF_LIN_FrameIteratorWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object getattro(const Py::String &name_); 17 | 18 | int setattro(const Py::String &name_, const Py::Object &value); 19 | 20 | Py::Object iter(); 21 | 22 | PyObject *iternext(); 23 | 24 | protected: 25 | mdf::RecordIterator it; 26 | }; 27 | 28 | 29 | #endif //MDFSUPER_MDF_LIN_FRAMEITERATORWRAPPER_H 30 | -------------------------------------------------------------------------------- /Python/Source/IteratorWrappers/MDF_LIN_ReceiveErrorIteratorWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_LIN_RECEIVEERRORITERATORWRAPPER_H 2 | #define MDFSUPER_MDF_LIN_RECEIVEERRORITERATORWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_LIN_ReceiveErrorIteratorWrapper : public Py::PythonExtension { 10 | MDF_LIN_ReceiveErrorIteratorWrapper(mdf::RecordIterator const &parent); 11 | 12 | virtual ~MDF_LIN_ReceiveErrorIteratorWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object getattro(const Py::String &name_); 17 | 18 | int setattro(const Py::String &name_, const Py::Object &value); 19 | 20 | Py::Object iter(); 21 | 22 | PyObject *iternext(); 23 | 24 | protected: 25 | mdf::RecordIterator it; 26 | }; 27 | 28 | 29 | #endif //MDFSUPER_MDF_LIN_RECEIVEERRORITERATORWRAPPER_H 30 | -------------------------------------------------------------------------------- /Python/Source/IteratorWrappers/MDF_LIN_SyncErrorIteratorWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_LIN_SYNCERRORITERATORWRAPPER_H 2 | #define MDFSUPER_MDF_LIN_SYNCERRORITERATORWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_LIN_SyncErrorIteratorWrapper : public Py::PythonExtension { 10 | MDF_LIN_SyncErrorIteratorWrapper(mdf::RecordIterator const &parent); 11 | 12 | virtual ~MDF_LIN_SyncErrorIteratorWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object getattro(const Py::String &name_); 17 | 18 | int setattro(const Py::String &name_, const Py::Object &value); 19 | 20 | Py::Object iter(); 21 | 22 | PyObject *iternext(); 23 | 24 | protected: 25 | mdf::RecordIterator it; 26 | }; 27 | 28 | 29 | #endif //MDFSUPER_MDF_LIN_SYNCERRORITERATORWRAPPER_H 30 | -------------------------------------------------------------------------------- /Python/Source/IteratorWrappers/MDF_LIN_TransmissionErrorIteratorWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_LIN_TRANSMISSIONERRORITERATORWRAPPER_H 2 | #define MDFSUPER_MDF_LIN_TRANSMISSIONERRORITERATORWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_LIN_TransmissionErrorIteratorWrapper : public Py::PythonExtension { 10 | MDF_LIN_TransmissionErrorIteratorWrapper(mdf::RecordIterator const &parent); 11 | 12 | virtual ~MDF_LIN_TransmissionErrorIteratorWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object getattro(const Py::String &name_); 17 | 18 | int setattro(const Py::String &name_, const Py::Object &value); 19 | 20 | Py::Object iter(); 21 | 22 | PyObject *iternext(); 23 | 24 | protected: 25 | mdf::RecordIterator it; 26 | }; 27 | 28 | 29 | #endif //MDFSUPER_MDF_LIN_TRANSMISSIONERRORITERATORWRAPPER_H 30 | -------------------------------------------------------------------------------- /Python/Source/Module.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MODULE_H 2 | #define MDFSUPER_MODULE_H 3 | 4 | #ifdef Py_DEBUG 5 | #undef Py_DEBUG 6 | #endif 7 | 8 | #ifdef _DEBUG 9 | #undef _DEBUG 10 | #define NDEBUG 11 | #endif 12 | 13 | #include "CXX/Extensions.hxx" 14 | #include "CXX/Objects.hxx" 15 | 16 | struct Module : public Py::ExtensionModule { 17 | Module(); 18 | 19 | ~Module() override; 20 | }; 21 | 22 | #endif //MDFSUPER_MODULE_H 23 | -------------------------------------------------------------------------------- /Python/Source/PythonLogger.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_PYTHONLOGGER_H 2 | #define MDFSUPER_PYTHONLOGGER_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | #include "CXX/Objects.hxx" 12 | 13 | enum severity_level 14 | { 15 | trace, 16 | debug, 17 | info, 18 | warning, 19 | error, 20 | fatal 21 | }; 22 | 23 | BOOST_LOG_GLOBAL_LOGGER(pythonLogger, boost::log::sources::severity_logger) 24 | 25 | namespace mdf::python { 26 | 27 | struct PythonLogger : public boost::log::sinks::basic_sink_backend { 28 | PythonLogger(); 29 | 30 | // The function consumes the log records that come from the frontend 31 | void consume(boost::log::record_view const& rec); 32 | private: 33 | Py::Object pythonLogger; 34 | }; 35 | 36 | bool setupLogging(); 37 | } 38 | 39 | 40 | #endif //MDFSUPER_PYTHONLOGGER_H 41 | -------------------------------------------------------------------------------- /Python/Source/RecordWrappers/MDF_CAN_DataFrameWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_CAN_DATAFRAMEWRAPPER_H 2 | #define MDFSUPER_MDF_CAN_DATAFRAMEWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_CAN_DataFrameWrapper : public Py::PythonExtension { 10 | MDF_CAN_DataFrameWrapper(mdf::CAN_DataFrame const &data); 11 | 12 | virtual ~MDF_CAN_DataFrameWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object repr() override; 17 | 18 | virtual Py::Object getattro(const Py::String& name) override; 19 | 20 | Py::Object pubattr; 21 | 22 | private: 23 | Py::Dict dict; 24 | 25 | Py::Long TimeStamp; 26 | Py::Long BusChannel; 27 | Py::Long ID; 28 | Py::Boolean IDE; 29 | Py::Long DLC; 30 | Py::Long DataLength; 31 | Py::Boolean Dir; 32 | Py::Boolean EDL; 33 | Py::Boolean BRS; 34 | Py::Bytes DataBytes; 35 | }; 36 | 37 | 38 | #endif //MDFSUPER_MDF_CAN_DATAFRAMEWRAPPER_H 39 | -------------------------------------------------------------------------------- /Python/Source/RecordWrappers/MDF_CAN_ErrorFrameWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_CAN_ERRORFRAMEWRAPPER_H 2 | #define MDFSUPER_MDF_CAN_ERRORFRAMEWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_CAN_ErrorFrameWrapper : public Py::PythonExtension { 10 | MDF_CAN_ErrorFrameWrapper(mdf::CAN_ErrorFrame const &data); 11 | 12 | virtual ~MDF_CAN_ErrorFrameWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object repr() override; 17 | 18 | virtual Py::Object getattro(const Py::String& name) override; 19 | 20 | Py::Object pubattr; 21 | 22 | private: 23 | Py::Dict dict; 24 | 25 | Py::Long TimeStamp; 26 | Py::Long BusChannel; 27 | Py::Long ErrorType; 28 | }; 29 | 30 | 31 | #endif //MDFSUPER_MDF_CAN_ERRORFRAMEWRAPPER_H 32 | -------------------------------------------------------------------------------- /Python/Source/RecordWrappers/MDF_CAN_RemoteFrameWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_CAN_REMOTEFRAMEWRAPPER_H 2 | #define MDFSUPER_MDF_CAN_REMOTEFRAMEWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_CAN_RemoteFrameWrapper : public Py::PythonExtension { 10 | MDF_CAN_RemoteFrameWrapper(mdf::CAN_RemoteFrame const &data); 11 | 12 | virtual ~MDF_CAN_RemoteFrameWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object repr() override; 17 | 18 | virtual Py::Object getattro(const Py::String& name) override; 19 | 20 | Py::Object pubattr; 21 | 22 | private: 23 | Py::Dict dict; 24 | 25 | Py::Long TimeStamp; 26 | Py::Long BusChannel; 27 | Py::Long ID; 28 | Py::Boolean IDE; 29 | Py::Long DLC; 30 | Py::Long DataLength; 31 | Py::Boolean Dir; 32 | Py::Bytes DataBytes; 33 | }; 34 | 35 | 36 | #endif //MDFSUPER_MDF_CAN_REMOTEFRAMEWRAPPER_H 37 | -------------------------------------------------------------------------------- /Python/Source/RecordWrappers/MDF_LIN_ChecksumErrorWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_LIN_CHECKSUMERRORWRAPPER_H 2 | #define MDFSUPER_MDF_LIN_CHECKSUMERRORWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_LIN_ChecksumErrorWrapper : public Py::PythonExtension { 10 | MDF_LIN_ChecksumErrorWrapper(mdf::LIN_ChecksumError const &data); 11 | 12 | virtual ~MDF_LIN_ChecksumErrorWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object repr() override; 17 | 18 | virtual Py::Object getattro(const Py::String& name) override; 19 | 20 | Py::Object pubattr; 21 | 22 | private: 23 | Py::Dict dict; 24 | 25 | Py::Long TimeStamp; 26 | Py::Long BusChannel; 27 | Py::Long ID; 28 | Py::Long Checksum; 29 | Py::Boolean Dir; 30 | Py::Long ReceivedDataByteCount; 31 | Py::Long DataLength; 32 | Py::Bytes DataBytes; 33 | }; 34 | 35 | 36 | #endif //MDFSUPER_MDF_LIN_FRAMEWRAPPER_H 37 | -------------------------------------------------------------------------------- /Python/Source/RecordWrappers/MDF_LIN_FrameWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_LIN_FRAMEWRAPPER_H 2 | #define MDFSUPER_MDF_LIN_FRAMEWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_LIN_FrameWrapper : public Py::PythonExtension { 10 | MDF_LIN_FrameWrapper(mdf::LIN_Frame const &data); 11 | 12 | virtual ~MDF_LIN_FrameWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object repr() override; 17 | 18 | virtual Py::Object getattro(const Py::String& name) override; 19 | 20 | Py::Object pubattr; 21 | 22 | private: 23 | Py::Dict dict; 24 | 25 | Py::Long TimeStamp; 26 | Py::Long BusChannel; 27 | Py::Long ID; 28 | Py::Boolean Dir; 29 | Py::Long ReceivedDataByteCount; 30 | Py::Long DataLength; 31 | Py::Bytes DataBytes; 32 | }; 33 | 34 | 35 | #endif //MDFSUPER_MDF_LIN_FRAMEWRAPPER_H 36 | -------------------------------------------------------------------------------- /Python/Source/RecordWrappers/MDF_LIN_ReceiveErrorWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_LIN_RECEIVEERRORWRAPPER_H 2 | #define MDFSUPER_MDF_LIN_RECEIVEERRORWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_LIN_ReceiveErrorWrapper : public Py::PythonExtension { 10 | MDF_LIN_ReceiveErrorWrapper(mdf::LIN_ReceiveError const &data); 11 | 12 | virtual ~MDF_LIN_ReceiveErrorWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object repr() override; 17 | 18 | virtual Py::Object getattro(const Py::String& name) override; 19 | 20 | Py::Object pubattr; 21 | 22 | private: 23 | Py::Dict dict; 24 | 25 | Py::Long TimeStamp; 26 | Py::Long BusChannel; 27 | Py::Long ID; 28 | }; 29 | 30 | 31 | #endif //MDFSUPER_MDF_LIN_RECEIVEERRORWRAPPER_H 32 | -------------------------------------------------------------------------------- /Python/Source/RecordWrappers/MDF_LIN_SyncErrorWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_LIN_SYNCERRORWRAPPER_H 2 | #define MDFSUPER_MDF_LIN_SYNCERRORWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_LIN_SyncErrorWrapper : public Py::PythonExtension { 10 | MDF_LIN_SyncErrorWrapper(mdf::LIN_SyncError const &data); 11 | 12 | virtual ~MDF_LIN_SyncErrorWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object repr() override; 17 | 18 | virtual Py::Object getattro(const Py::String& name) override; 19 | 20 | Py::Object pubattr; 21 | 22 | private: 23 | Py::Dict dict; 24 | 25 | Py::Long TimeStamp; 26 | Py::Long BusChannel; 27 | Py::Float Baudrate; 28 | }; 29 | 30 | 31 | #endif //MDFSUPER_MDF_LIN_SYNCERRORWRAPPER_H 32 | -------------------------------------------------------------------------------- /Python/Source/RecordWrappers/MDF_LIN_TransmissionErrorWrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_MDF_LIN_TRANSMISSIONERRORWRAPPER_H 2 | #define MDFSUPER_MDF_LIN_TRANSMISSIONERRORWRAPPER_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | struct MDF_LIN_TransmissionErrorWrapper : public Py::PythonExtension { 10 | MDF_LIN_TransmissionErrorWrapper(mdf::LIN_TransmissionError const &data); 11 | 12 | virtual ~MDF_LIN_TransmissionErrorWrapper(); 13 | 14 | static void init_type(void); 15 | 16 | Py::Object repr() override; 17 | 18 | virtual Py::Object getattro(const Py::String& name) override; 19 | 20 | Py::Object pubattr; 21 | 22 | private: 23 | Py::Dict dict; 24 | 25 | Py::Long TimeStamp; 26 | Py::Long BusChannel; 27 | Py::Long ID; 28 | }; 29 | 30 | 31 | #endif //MDFSUPER_MDF_LIN_TRANSMISSIONERRORWRAPPER_H 32 | -------------------------------------------------------------------------------- /Python/Source/TypeSupport.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSUPER_TYPESUPPORT_H 2 | #define MDFSUPER_TYPESUPPORT_H 3 | 4 | #include 5 | #include 6 | 7 | enum struct MdfFileInputType { 8 | String, 9 | Path, 10 | Interface, 11 | FileLike, 12 | Other, 13 | }; 14 | 15 | MdfFileInputType getInputType(Py::Object inputObject); 16 | 17 | bool isInputString(Py::Object inputObject); 18 | bool isInputPath(Py::Object inputObject); 19 | bool isInputFileInterface(Py::Object inputObject); 20 | bool isInputFileLike(Py::Object inputObject); 21 | 22 | #endif //MDFSUPER_TYPESUPPORT_H 23 | -------------------------------------------------------------------------------- /TODO.md: -------------------------------------------------------------------------------- 1 | * Create proper container for records instead of just an iterator. 2 | * Convert progress to an iteratorwrapper, for cleaner code. 3 | -------------------------------------------------------------------------------- /Tools/ASC/CHANGES.md: -------------------------------------------------------------------------------- 1 | ### 1.3.1 2 | * Add Triggerblocks 3 | 4 | ### 1.0.1 5 | * Fix progress indicator bug for LIN records. 6 | 7 | ### 1.0.0 8 | * First major release. 9 | -------------------------------------------------------------------------------- /Tools/ASC/Source/ASC_Common.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_ASC_CAN_COMMON_H 2 | #define TOOLS_ASC_CAN_COMMON_H 3 | 4 | #include 5 | 6 | #include "CAN_DataFrame.h" 7 | #include "CAN_RemoteFrame.h" 8 | 9 | namespace mdf::tools::asc { 10 | 11 | typedef std::variant ASC_Record; 12 | 13 | template inline constexpr bool always_false_v = false; 14 | 15 | } 16 | 17 | #endif //TOOLS_ASC_CAN_COMMON_H 18 | -------------------------------------------------------------------------------- /Tools/ASC/Source/ASC_Exporter.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_CSV_EXPORTER_H 2 | #define TOOLS_CSV_EXPORTER_H 3 | 4 | #include "ConverterInterface.h" 5 | 6 | namespace mdf::tools::asc { 7 | 8 | class ASC_Exporter : public tools::shared::ConverterInterface { 9 | public: 10 | ASC_Exporter(); 11 | 12 | bool convert(boost::filesystem::path inputFilePath, boost::filesystem::path outputFolder) override; 13 | 14 | [[nodiscard]] semver::version const& getVersion() const override; 15 | 16 | private: 17 | 18 | }; 19 | 20 | } 21 | 22 | #endif //TOOLS_CSV_EXPORTER_H 23 | -------------------------------------------------------------------------------- /Tools/ASC/Source/Version.h.in: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_ASC_PROJECTFORMATION_H 2 | #define TOOLS_ASC_PROJECTFORMATION_H 3 | 4 | #include 5 | 6 | #include 7 | 8 | #define VERSION_MAJOR @VERSION_MAJOR@ 9 | #define VERSION_MINOR @VERSION_MINOR@ 10 | #define VERSION_PATCH @VERSION_PATCH@ 11 | 12 | namespace mdf::tools::asc { 13 | 14 | constexpr std::string_view PROGRAM_NAME("@PROGRAM_NAME@"); 15 | 16 | constexpr semver::version Version { 17 | VERSION_MAJOR, 18 | VERSION_MINOR, 19 | VERSION_PATCH 20 | }; 21 | 22 | } 23 | 24 | #endif //TOOLS_ASC_PROJECTFORMATION_H 25 | -------------------------------------------------------------------------------- /Tools/ASC/Source/main.cpp: -------------------------------------------------------------------------------- 1 | #include "ExecutableEntryPoint.h" 2 | #include "ASC_Exporter.h" 3 | 4 | using namespace mdf::tools::asc; 5 | 6 | int main(int argc, char* argv[]) { 7 | std::unique_ptr exporter(new ASC_Exporter()); 8 | return programEntry(argc, argv, std::move(exporter)); 9 | } 10 | -------------------------------------------------------------------------------- /Tools/CLX000/README.md: -------------------------------------------------------------------------------- 1 | # CLX000 Exporter 2 | Exports in the CLX000 file format. Additional options can be added by placing a CLX000 config file with the name 3 | `mdf2clx000_config.ini` in the same directory as the executable. Default options are: 4 | * Value separator: " " 5 | * Time format: 4 6 | * Time separator: "" 7 | * Time separator ms: "" 8 | * Date separator: "" 9 | * Time and date separator: "T" 10 | 11 | Selected columns are: 12 | * Timestamp 13 | * ID 14 | * Data 15 | -------------------------------------------------------------------------------- /Tools/CLX000/Source/CLX000_CAN_Exporter.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_CLX_CAN_EXPORTER_H 2 | #define TOOLS_CLX_CAN_EXPORTER_H 3 | 4 | #include "CAN_DataFrame.h" 5 | #include "CLX000_BaseExporter.h" 6 | 7 | namespace mdf::tools::clx { 8 | 9 | struct CLX000_CAN_Exporter : public CLX000_BaseExporter { 10 | public: 11 | explicit CLX000_CAN_Exporter( 12 | std::ostream &output, 13 | mdf::tools::shared::ParsedFileInfo const &fileInfo, 14 | uint8_t busChannel, 15 | CLX000_Configuration const &configuration, 16 | shared::DisplayTimeFormat displayLocalTime 17 | ); 18 | 19 | void writeRecord(CAN_DataFrame const &record) override; 20 | }; 21 | 22 | } 23 | 24 | #endif //TOOLS_CLX_CAN_EXPORTER_H 25 | -------------------------------------------------------------------------------- /Tools/CLX000/Source/CLX000_Configuration.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_CLX_CONFIGURATION_H 2 | #define TOOLS_CLX_CONFIGURATION_H 3 | 4 | namespace mdf::tools::clx { 5 | 6 | struct CLX000_Configuration { 7 | char ValueSeparator[2]; 8 | int TimestampFormat; 9 | char TimestampTimeSeparator[2]; 10 | char TimestampTimeMsSeparator[2]; 11 | char TimestampDateSeparator[2]; 12 | char TimeTimeDateSeparator[2]; 13 | 14 | bool DataFields_timestamp; 15 | bool DataFields_type; 16 | bool DataFields_id; 17 | bool DataFields_dataLength; 18 | bool DataFields_data; 19 | }; 20 | 21 | } 22 | 23 | #endif //TOOLS_CLX_CONFIGURATION_H 24 | -------------------------------------------------------------------------------- /Tools/CLX000/Source/CLX000_Exporter.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_CLX_EXPORTER_H 2 | #define TOOLS_CLX_EXPORTER_H 3 | 4 | #include "ConverterInterface.h" 5 | 6 | #include "CLX000_Configuration.h" 7 | 8 | namespace ts = mdf::tools::shared; 9 | 10 | namespace mdf::tools::clx { 11 | 12 | class CLX000_Exporter : public ts::ConverterInterface { 13 | public: 14 | CLX000_Exporter(); 15 | bool convert(boost::filesystem::path inputFilePath, boost::filesystem::path outputFolder) override; 16 | void configureFileParser(boost::program_options::options_description& opts) override; 17 | [[nodiscard]] semver::version const& getVersion() const override; 18 | tools::shared::ParseOptionStatus parseOptions(boost::program_options::variables_map const& result) override; 19 | private: 20 | boost::program_options::options_description logOptions; 21 | boost::program_options::options_description dataFieldsOptions; 22 | CLX000_Configuration configuration; 23 | }; 24 | 25 | } 26 | 27 | #endif //TOOLS_CLX_EXPORTER_H 28 | -------------------------------------------------------------------------------- /Tools/CLX000/Source/CLX000_LIN_Exporter.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_CLX000_LIN_EXPORTER_H 2 | #define TOOLS_CLX000_LIN_EXPORTER_H 3 | 4 | #include "LIN_Frame.h" 5 | #include "CLX000_BaseExporter.h" 6 | 7 | namespace mdf::tools::clx { 8 | 9 | struct CLX000_LIN_Exporter : public CLX000_BaseExporter { 10 | public: 11 | explicit CLX000_LIN_Exporter( 12 | std::ostream& output, 13 | mdf::tools::shared::ParsedFileInfo const& fileInfo, 14 | uint8_t busChannel, 15 | CLX000_Configuration const& configuration, 16 | tools::shared::DisplayTimeFormat displayLocalTime 17 | ); 18 | 19 | void writeRecord(LIN_Frame const& record) override; 20 | }; 21 | 22 | } 23 | 24 | #endif //TOOLS_CLX000_LIN_EXPORTER_H 25 | -------------------------------------------------------------------------------- /Tools/CLX000/Source/Version.h.in: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_CLX000_PROJECTFORMATION_H 2 | #define TOOLS_CLX000_PROJECTFORMATION_H 3 | 4 | #include 5 | 6 | #include 7 | 8 | #define VERSION_MAJOR @VERSION_MAJOR@ 9 | #define VERSION_MINOR @VERSION_MINOR@ 10 | #define VERSION_PATCH @VERSION_PATCH@ 11 | 12 | namespace mdf::tools::clx { 13 | 14 | constexpr std::string_view PROGRAM_NAME = "@PROGRAM_NAME@"; 15 | 16 | constexpr semver::version Version { 17 | VERSION_MAJOR, 18 | VERSION_MINOR, 19 | VERSION_PATCH 20 | }; 21 | 22 | } 23 | 24 | #endif //TOOLS_CLX000_PROJECTFORMATION_H 25 | -------------------------------------------------------------------------------- /Tools/CLX000/Source/main.cpp: -------------------------------------------------------------------------------- 1 | #include "ExecutableEntryPoint.h" 2 | #include "CLX000_Exporter.h" 3 | 4 | using namespace mdf::tools::clx; 5 | 6 | int main(int argc, char* argv[]) { 7 | std::unique_ptr exporter(new CLX000_Exporter()); 8 | return programEntry(argc, argv, std::move(exporter)); 9 | } 10 | -------------------------------------------------------------------------------- /Tools/CLX000/config.ini: -------------------------------------------------------------------------------- 1 | [log] 2 | valueSeparator = 32 3 | timestampFormat = 3 4 | timestampTimeSeparator = 0 5 | timestampTimeMsSeparator = 0 6 | timestampDateSeparator = 0 7 | timeTimeDateSeparator = 84 8 | 9 | [dataFields] 10 | timestamp = true 11 | type = false 12 | id = true 13 | dataLength = false 14 | data = true 15 | -------------------------------------------------------------------------------- /Tools/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Add support for packaging. 2 | include(CMake/Package.cmake) 3 | 4 | # Set common packaging options. 5 | set(RESOURCE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Resources) 6 | set(ICON_PATH ${RESOURCE_PATH}/icon.ico) 7 | 8 | if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") 9 | set(RUNTIME_LIBRARIES "") 10 | else() 11 | set(RUNTIME_LIBRARIES 12 | -static-libstdc++ 13 | -static-libgcc 14 | ) 15 | endif() 16 | 17 | # Shared base for all the tools. 18 | add_subdirectory(Shared) 19 | 20 | # Each converter tool. 21 | add_subdirectory(ASC) 22 | add_subdirectory(CLX000) 23 | add_subdirectory(CSV) 24 | add_subdirectory(MDF) 25 | add_subdirectory(PEAK) 26 | add_subdirectory(PCAP) 27 | add_subdirectory(SocketCAN) 28 | 29 | # Create a meta-target for building a release. 30 | set(EXTERNAL_TARGETS 31 | mdf2asc 32 | mdf2clx000 33 | mdf2csv 34 | mdf2finalized 35 | mdf2pcap 36 | mdf2peak 37 | mdf2socketcan 38 | ) 39 | 40 | add_custom_target(ToolsRelease 41 | DEPENDS ${EXTERNAL_TARGETS} 42 | ) 43 | -------------------------------------------------------------------------------- /Tools/CSV/Source/CSV_CAN_Exporter.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_CSV_CAN_EXPORTER_H 2 | #define TOOLS_CSV_CAN_EXPORTER_H 3 | 4 | #include "GenericRecordExporter.h" 5 | 6 | #include "CSV_Common.h" 7 | 8 | namespace mdf::tools::csv { 9 | 10 | class CSV_CAN_Exporter : public mdf::tools::shared::GenericRecordExporter { 11 | public: 12 | explicit CSV_CAN_Exporter(std::ostream &output, std::string delimiter = ";"); 13 | 14 | /*! @copydoc mdf::tools::shared::GenericRecordExporter::writeHeader */ 15 | void writeHeader() override; 16 | 17 | /*! @copydoc mdf::tools::shared::GenericRecordExporter::writeRecord */ 18 | void writeRecord(CSV_Record const &record) override; 19 | 20 | private: 21 | /*! String representing the delimiter used between value field. */ 22 | std::string const delimiter; 23 | 24 | void write_CAN_DataFrame(mdf::CAN_DataFrame const &record); 25 | 26 | void write_CAN_RemoteFrame(mdf::CAN_RemoteFrame const &record); 27 | }; 28 | 29 | } 30 | 31 | #endif //TOOLS_CSV_CAN_EXPORTER_H 32 | -------------------------------------------------------------------------------- /Tools/CSV/Source/CSV_Common.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_CSV_CAN_COMMON_H 2 | #define TOOLS_CSV_CAN_COMMON_H 3 | 4 | #include 5 | 6 | #include "CAN_DataFrame.h" 7 | #include "CAN_RemoteFrame.h" 8 | 9 | namespace mdf::tools::csv { 10 | 11 | typedef std::variant CSV_Record; 12 | 13 | template inline constexpr bool always_false_v = false; 14 | 15 | } 16 | 17 | #endif //TOOLS_CSV_CAN_COMMON_H 18 | -------------------------------------------------------------------------------- /Tools/CSV/Source/CSV_Exporter.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_CSV_EXPORTER_H 2 | #define TOOLS_CSV_EXPORTER_H 3 | 4 | #include "ConverterInterface.h" 5 | 6 | namespace mdf::tools::csv { 7 | 8 | class CSV_Exporter : public mdf::tools::shared::ConverterInterface { 9 | public: 10 | CSV_Exporter(); 11 | bool convert(boost::filesystem::path inputFilePath, boost::filesystem::path outputFolder) override; 12 | [[nodiscard]] semver::version const& getVersion() const override; 13 | private: 14 | 15 | }; 16 | 17 | } 18 | 19 | #endif //TOOLS_CSV_EXPORTER_H 20 | -------------------------------------------------------------------------------- /Tools/CSV/Source/CSV_LIN_Exporter.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_CSV_LIN_EXPORTER_H 2 | #define TOOLS_CSV_LIN_EXPORTER_H 3 | 4 | #include "GenericRecordExporter.h" 5 | 6 | #include "LIN_Frame.h" 7 | 8 | namespace mdf::tools::csv { 9 | 10 | class CSV_LIN_Exporter : public tools::shared::GenericRecordExporter { 11 | public: 12 | explicit CSV_LIN_Exporter(std::ostream &output, std::string delimiter = ";"); 13 | 14 | /*! @copydoc mdf::tools::shared::GenericRecordExporter::writeHeader */ 15 | void writeHeader() override; 16 | 17 | /*! @copydoc mdf::tools::shared::GenericRecordExporter::writeRecord */ 18 | void writeRecord(LIN_Frame const &record) override; 19 | 20 | private: 21 | /*! String representing the delimiter used between value field. */ 22 | std::string const delimiter; 23 | }; 24 | 25 | } 26 | 27 | #endif //TOOLS_CSV_LIN_EXPORTER_H 28 | -------------------------------------------------------------------------------- /Tools/CSV/Source/Version.h.in: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_CSV_PROJECTFORMATION_H 2 | #define TOOLS_CSV_PROJECTFORMATION_H 3 | 4 | #include 5 | 6 | #include 7 | 8 | #define VERSION_MAJOR @VERSION_MAJOR@ 9 | #define VERSION_MINOR @VERSION_MINOR@ 10 | #define VERSION_PATCH @VERSION_PATCH@ 11 | 12 | namespace mdf::tools::csv { 13 | 14 | constexpr std::string_view PROGRAM_NAME("@PROGRAM_NAME@"); 15 | 16 | constexpr semver::version Version { 17 | VERSION_MAJOR, 18 | VERSION_MINOR, 19 | VERSION_PATCH 20 | }; 21 | 22 | } 23 | 24 | #endif //TOOLS_CSV_PROJECTFORMATION_H 25 | -------------------------------------------------------------------------------- /Tools/CSV/Source/main.cpp: -------------------------------------------------------------------------------- 1 | #include "ExecutableEntryPoint.h" 2 | #include "CSV_Exporter.h" 3 | 4 | using namespace mdf::tools::csv; 5 | 6 | int main(int argc, char* argv[]) { 7 | std::unique_ptr exporter(new CSV_Exporter()); 8 | return programEntry(argc, argv, std::move(exporter)); 9 | } 10 | -------------------------------------------------------------------------------- /Tools/MDF/Source/MDFTool.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_MDFTOOL_H 2 | #define TOOLS_MDFTOOL_H 3 | 4 | #include "ConverterInterface.h" 5 | 6 | #include 7 | 8 | namespace mdf::tools::finalizer { 9 | 10 | class MDFTool : public mdf::tools::shared::ConverterInterface { 11 | public: 12 | MDFTool(); 13 | 14 | void configureParser(boost::program_options::options_description &opts) override; 15 | 16 | bool convert(boost::filesystem::path inputFilePath, boost::filesystem::path outputFolder) override; 17 | 18 | mdf::tools::shared::ParseOptionStatus 19 | parseOptions(boost::program_options::variables_map const &result) override; 20 | 21 | [[nodiscard]] semver::version const& getVersion() const override; 22 | 23 | private: 24 | bool overwrite; 25 | std::string appendName; 26 | }; 27 | 28 | } 29 | 30 | #endif //TOOLS_MDFTOOL_H 31 | -------------------------------------------------------------------------------- /Tools/MDF/Source/Version.h.in: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_TOOL_PROJECTFORMATION_H 2 | #define TOOLS_TOOL_PROJECTFORMATION_H 3 | 4 | #include 5 | 6 | #include 7 | 8 | #define VERSION_MAJOR @VERSION_MAJOR@ 9 | #define VERSION_MINOR @VERSION_MINOR@ 10 | #define VERSION_PATCH @VERSION_PATCH@ 11 | 12 | namespace mdf::tools::finalizer { 13 | 14 | constexpr std::string_view PROGRAM_NAME("@PROGRAM_NAME@"); 15 | 16 | constexpr semver::version Version { 17 | VERSION_MAJOR, 18 | VERSION_MINOR, 19 | VERSION_PATCH 20 | }; 21 | 22 | } 23 | 24 | #endif //TOOLS_TOOL_PROJECTFORMATION_H 25 | -------------------------------------------------------------------------------- /Tools/MDF/Source/main.cpp: -------------------------------------------------------------------------------- 1 | #include "ExecutableEntryPoint.h" 2 | #include "MDFTool.h" 3 | 4 | using namespace mdf::tools::finalizer; 5 | 6 | int main(int argc, char* argv[]) { 7 | std::unique_ptr exporter(new MDFTool()); 8 | return programEntry(argc, argv, std::move(exporter)); 9 | } 10 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | project(PCAP CXX) 2 | 3 | set(SOURCE_FILES 4 | PCAP_Block.cpp 5 | PCAP_Block.h 6 | PCAP_EnhancedPacket.cpp 7 | PCAP_EnhancedPacket.h 8 | PCAP_EnhancedPacket_CAN.cpp 9 | PCAP_EnhancedPacket_CAN.h 10 | PCAP_InterfaceDescription.cpp 11 | PCAP_InterfaceDescription.h 12 | PCAP_Option.cpp 13 | PCAP_Option.h 14 | PCAP_OptionEnd.cpp 15 | PCAP_OptionEnd.h 16 | PCAP_OptionList.cpp 17 | PCAP_OptionList.h 18 | PCAP_OptionString.cpp 19 | PCAP_OptionString.h 20 | PCAP_OptionU32.cpp 21 | PCAP_OptionU32.h 22 | PCAP_OptionU64.cpp 23 | PCAP_OptionU64.h 24 | PCAP_SectionHeader.cpp 25 | PCAP_SectionHeader.h 26 | ) 27 | 28 | add_library(${PROJECT_NAME} OBJECT ${SOURCE_FILES}) 29 | set_property(TARGET objlib PROPERTY POSITION_INDEPENDENT_CODE 1) 30 | target_include_directories(${PROJECT_NAME} INTERFACE 31 | $ 32 | ) 33 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_Block.cpp: -------------------------------------------------------------------------------- 1 | #include "PCAP_Block.h" 2 | 3 | namespace mdf::tools::pcap { 4 | 5 | PCAP_Block::PCAP_Block(uint32_t blockType) : blockType(blockType), blockLength(0) { 6 | 7 | } 8 | 9 | void PCAP_Block::writeFooter(std::ostream &stream) const { 10 | // Write block length in native endian format. 11 | stream.write(reinterpret_cast(&blockLength), sizeof(blockLength)); 12 | } 13 | 14 | void PCAP_Block::writeHeader(std::ostream &stream) const { 15 | // Write block type and length in native endian format. 16 | stream.write(reinterpret_cast(&blockType), sizeof(blockType)); 17 | stream.write(reinterpret_cast(&blockLength), sizeof(blockLength)); 18 | } 19 | 20 | std::ostream& operator<<(std::ostream& stream, PCAP_Block const& data) { 21 | // Write the header. 22 | data.writeHeader(stream); 23 | stream.flush(); 24 | 25 | // Let the block handle the serialization. 26 | data.serialize(stream); 27 | stream.flush(); 28 | 29 | // Write the footer. 30 | data.writeFooter(stream); 31 | stream.flush(); 32 | 33 | return stream; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_Block.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PCAP_PCAP_BLOCK_H 2 | #define TOOLS_PCAP_PCAP_BLOCK_H 3 | 4 | #include 5 | #include 6 | 7 | namespace mdf::tools::pcap { 8 | 9 | class PCAP_Block { 10 | public: 11 | friend std::ostream& operator<<(std::ostream& stream, PCAP_Block const& data); 12 | protected: 13 | explicit PCAP_Block(uint32_t blockType); 14 | uint32_t blockLength; 15 | 16 | virtual void serialize(std::ostream& stream) const = 0; 17 | private: 18 | uint32_t const blockType; 19 | 20 | void writeFooter(std::ostream& stream) const; 21 | void writeHeader(std::ostream& stream) const; 22 | }; 23 | 24 | 25 | 26 | } 27 | 28 | #endif //TOOLS_PCAP_PCAP_BLOCK_H 29 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_EnhancedPacket.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PCAP_PCAP_ENHANCEDPACKET_H 2 | #define TOOLS_PCAP_PCAP_ENHANCEDPACKET_H 3 | 4 | #include 5 | 6 | #include "PCAP_Block.h" 7 | #include "PCAP_OptionList.h" 8 | #include "PCAP_OptionU32.h" 9 | 10 | namespace mdf::tools::pcap { 11 | 12 | class PCAP_EnhancedPacket : public PCAP_Block { 13 | public: 14 | PCAP_EnhancedPacket(); 15 | 16 | uint32_t interfaceIndex; 17 | uint32_t timeStampHigh; 18 | uint32_t timeStampLow; 19 | uint32_t capturedPacketLength; 20 | uint32_t originalPacketLength; 21 | protected: 22 | void updateBlockLength(); 23 | virtual void serializePacket(std::ostream &stream) const = 0; 24 | private: 25 | std::shared_ptr optionFlags; 26 | PCAP_OptionList options; 27 | 28 | void serialize(std::ostream &stream) const override; 29 | }; 30 | 31 | } 32 | 33 | #endif //TOOLS_PCAP_PCAP_ENHANCEDPACKET_H 34 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_EnhancedPacket_CAN.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PCAP_PCAP_ENHANCEDPACKET_CAN_H 2 | #define TOOLS_PCAP_PCAP_ENHANCEDPACKET_CAN_H 3 | 4 | #include 5 | 6 | #include "PCAP_EnhancedPacket.h" 7 | 8 | #include "CAN_DataFrame.h" 9 | 10 | namespace mdf::tools::pcap { 11 | 12 | class PCAP_EnhancedPacket_CAN : public PCAP_EnhancedPacket { 13 | public: 14 | explicit PCAP_EnhancedPacket_CAN(mdf::CAN_DataFrame const& data); 15 | private: 16 | bool brs; 17 | uint32_t id; 18 | uint8_t length; 19 | std::array data; 20 | 21 | uint16_t packet_type; 22 | uint16_t ARPHRD_type; 23 | uint16_t link_layer_address_length; 24 | uint64_t link_layer_address; 25 | uint16_t protocol_type; 26 | 27 | unsigned int paddingLength = 0; 28 | 29 | void serializePacket(std::ostream& stream) const override; 30 | }; 31 | 32 | } 33 | 34 | #endif //TOOLS_PCAP_PCAP_ENHANCEDPACKET_CAN_H 35 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_InterfaceDescription.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PCAP_PCAP_INTERFACEDESCRIPTION_H 2 | #define TOOLS_PCAP_PCAP_INTERFACEDESCRIPTION_H 3 | 4 | #include 5 | 6 | #include "PCAP_Block.h" 7 | #include "PCAP_OptionList.h" 8 | #include "PCAP_OptionString.h" 9 | #include "PCAP_OptionU64.h" 10 | 11 | namespace mdf::tools::pcap { 12 | 13 | class PCAP_InterfaceDescription : public PCAP_Block { 14 | public: 15 | PCAP_InterfaceDescription(); 16 | 17 | void setDescription(std::string description); 18 | void setName(std::string name); 19 | void setSpeed(uint64_t bitRate); 20 | 21 | uint16_t linkType; 22 | uint32_t snapLen; 23 | private: 24 | PCAP_OptionList options; 25 | 26 | std::shared_ptr optionBitRate; 27 | std::shared_ptr optionDescription; 28 | std::shared_ptr optionName; 29 | 30 | void serialize(std::ostream& stream) const override; 31 | void updateSize(); 32 | }; 33 | 34 | } 35 | 36 | #endif //TOOLS_PCAP_PCAP_INTERFACEDESCRIPTION_H 37 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_Option.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PCAP_PCAP_OPTION_H 2 | #define TOOLS_PCAP_PCAP_OPTION_H 3 | 4 | #include 5 | #include 6 | 7 | namespace mdf::tools::pcap { 8 | 9 | class PCAP_Option { 10 | public: 11 | explicit PCAP_Option(uint16_t optionCode); 12 | virtual ~PCAP_Option(); 13 | 14 | [[nodiscard]] virtual PCAP_Option* clone() const = 0; 15 | [[nodiscard]] virtual uint32_t getSize() const; 16 | 17 | friend std::ostream& operator<<(std::ostream& stream, PCAP_Option const& data); 18 | protected: 19 | [[nodiscard]] uint16_t getOptionCode() const; 20 | virtual void serialize(std::ostream& stream) const = 0; 21 | private: 22 | uint16_t const optionCode; 23 | uint16_t optionLength; 24 | }; 25 | 26 | } 27 | 28 | #endif //TOOLS_PCAP_PCAP_OPTION_H 29 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_OptionEnd.cpp: -------------------------------------------------------------------------------- 1 | #include "PCAP_OptionEnd.h" 2 | 3 | namespace mdf::tools::pcap { 4 | 5 | PCAP_OptionEnd::PCAP_OptionEnd() : PCAP_Option(0) { 6 | 7 | } 8 | 9 | PCAP_OptionEnd* PCAP_OptionEnd::clone() const { 10 | return new PCAP_OptionEnd(); 11 | } 12 | 13 | void PCAP_OptionEnd::serialize(std::ostream &stream) const { 14 | // Do nothing. 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_OptionEnd.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PCAP_PCAP_OPTIONEND_H 2 | #define TOOLS_PCAP_PCAP_OPTIONEND_H 3 | 4 | #include "PCAP_Option.h" 5 | 6 | namespace mdf::tools::pcap { 7 | 8 | class PCAP_OptionEnd : public PCAP_Option { 9 | public: 10 | PCAP_OptionEnd(); 11 | [[nodiscard]] PCAP_OptionEnd* clone() const override; 12 | 13 | private: 14 | void serialize(std::ostream& stream) const override; 15 | }; 16 | 17 | } 18 | 19 | #endif //TOOLS_PCAP_PCAP_OPTIONEND_H 20 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_OptionList.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PCAP_PCAP_OPTIONLIST_H 2 | #define TOOLS_PCAP_PCAP_OPTIONLIST_H 3 | 4 | #include 5 | #include 6 | 7 | #include "PCAP_Option.h" 8 | 9 | namespace mdf::tools::pcap { 10 | 11 | class PCAP_OptionList { 12 | public: 13 | void addOption(PCAP_Option const& option); 14 | void addOption(std::shared_ptr const& option); 15 | 16 | [[nodiscard]] uint32_t getSize() const; 17 | 18 | friend std::ostream& operator<<(std::ostream& stream, PCAP_OptionList const& data); 19 | private: 20 | std::vector> options; 21 | }; 22 | 23 | } 24 | 25 | #endif //TOOLS_PCAP_PCAP_OPTIONLIST_H 26 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_OptionString.cpp: -------------------------------------------------------------------------------- 1 | #include "PCAP_OptionString.h" 2 | 3 | namespace mdf::tools::pcap { 4 | 5 | PCAP_OptionString::PCAP_OptionString(uint16_t optionCode) : PCAP_Option(optionCode) { 6 | 7 | } 8 | 9 | PCAP_OptionString::PCAP_OptionString(uint16_t optionCode, std::string data) : PCAP_OptionString(optionCode) { 10 | this->data = std::move(data); 11 | } 12 | 13 | PCAP_OptionString* PCAP_OptionString::clone() const { 14 | return new PCAP_OptionString(getOptionCode(), data); 15 | } 16 | 17 | void PCAP_OptionString::serialize(std::ostream &stream) const { 18 | stream << data; 19 | } 20 | 21 | uint32_t PCAP_OptionString::getSize() const { 22 | return 4 + data.size(); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_OptionString.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PCAP_PCAP_OPTIONSTRING_H 2 | #define TOOLS_PCAP_PCAP_OPTIONSTRING_H 3 | 4 | #include 5 | 6 | #include "PCAP_Option.h" 7 | 8 | namespace mdf::tools::pcap { 9 | 10 | class PCAP_OptionString : public PCAP_Option { 11 | public: 12 | explicit PCAP_OptionString(uint16_t optionCode); 13 | explicit PCAP_OptionString(uint16_t optionCode, std::string data); 14 | 15 | [[nodiscard]] PCAP_OptionString* clone() const override; 16 | [[nodiscard]] uint32_t getSize() const override; 17 | 18 | std::string data; 19 | private: 20 | void serialize(std::ostream& stream) const override; 21 | }; 22 | 23 | 24 | } 25 | 26 | #endif //TOOLS_PCAP_PCAP_OPTIONSTRING_H 27 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_OptionU32.cpp: -------------------------------------------------------------------------------- 1 | #include "PCAP_OptionU32.h" 2 | 3 | namespace mdf::tools::pcap { 4 | 5 | PCAP_OptionU32::PCAP_OptionU32(uint16_t optionCode) : PCAP_Option(optionCode) { 6 | data = 0; 7 | } 8 | 9 | PCAP_OptionU32::PCAP_OptionU32(uint16_t optionCode, uint32_t data) : PCAP_OptionU32(optionCode) { 10 | this->data = data; 11 | } 12 | 13 | PCAP_OptionU32* PCAP_OptionU32::clone() const { 14 | return new PCAP_OptionU32(getOptionCode(), data); 15 | } 16 | 17 | void PCAP_OptionU32::serialize(std::ostream &stream) const { 18 | stream.write(reinterpret_cast(&data), sizeof(data)); 19 | } 20 | 21 | uint32_t PCAP_OptionU32::getSize() const { 22 | return 4 + sizeof(data); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_OptionU32.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PCAP_PCAP_OPTIONU32_H 2 | #define TOOLS_PCAP_PCAP_OPTIONU32_H 3 | 4 | #include "PCAP_Option.h" 5 | 6 | namespace mdf::tools::pcap { 7 | 8 | class PCAP_OptionU32 : public PCAP_Option { 9 | public: 10 | explicit PCAP_OptionU32(uint16_t optionCode); 11 | explicit PCAP_OptionU32(uint16_t optionCode, uint32_t data); 12 | 13 | [[nodiscard]] PCAP_OptionU32* clone() const override; 14 | [[nodiscard]] uint32_t getSize() const override; 15 | 16 | uint32_t data; 17 | private: 18 | void serialize(std::ostream& stream) const override; 19 | }; 20 | 21 | } 22 | 23 | #endif //TOOLS_PCAP_PCAP_OPTIONU32_H 24 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_OptionU64.cpp: -------------------------------------------------------------------------------- 1 | #include "PCAP_OptionU64.h" 2 | 3 | namespace mdf::tools::pcap { 4 | 5 | PCAP_OptionU64::PCAP_OptionU64(uint16_t optionCode) : PCAP_Option(optionCode) { 6 | data = 0; 7 | } 8 | 9 | PCAP_OptionU64::PCAP_OptionU64(uint16_t optionCode, uint64_t data) : PCAP_OptionU64(optionCode) { 10 | this->data = data; 11 | } 12 | 13 | PCAP_OptionU64* PCAP_OptionU64::clone() const { 14 | return new PCAP_OptionU64(getOptionCode(), data); 15 | } 16 | 17 | void PCAP_OptionU64::serialize(std::ostream &stream) const { 18 | stream.write(reinterpret_cast(&data), sizeof(data)); 19 | } 20 | 21 | uint32_t PCAP_OptionU64::getSize() const { 22 | return 4 + sizeof(data); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_OptionU64.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PCAP_PCAP_OPTIONU64_H 2 | #define TOOLS_PCAP_PCAP_OPTIONU64_H 3 | 4 | #include "PCAP_Option.h" 5 | 6 | namespace mdf::tools::pcap { 7 | 8 | class PCAP_OptionU64 : public PCAP_Option { 9 | public: 10 | explicit PCAP_OptionU64(uint16_t optionCode); 11 | explicit PCAP_OptionU64(uint16_t optionCode, uint64_t data); 12 | 13 | [[nodiscard]] PCAP_OptionU64* clone() const override; 14 | [[nodiscard]] uint32_t getSize() const override; 15 | 16 | uint64_t data; 17 | private: 18 | void serialize(std::ostream& stream) const override; 19 | }; 20 | 21 | } 22 | 23 | #endif //TOOLS_PCAP_PCAP_OPTIONU64_H 24 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP/PCAP_SectionHeader.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PCAP_PCAP_SECTIONHEADER_H 2 | #define TOOLS_PCAP_PCAP_SECTIONHEADER_H 3 | 4 | #include "PCAP_Block.h" 5 | #include "PCAP_OptionList.h" 6 | 7 | namespace mdf::tools::pcap { 8 | 9 | class PCAP_SectionHeader : public PCAP_Block { 10 | public: 11 | PCAP_SectionHeader(); 12 | private: 13 | uint32_t const byteOrderMagic; 14 | uint16_t const majorVersion; 15 | uint16_t const minorVersion; 16 | PCAP_OptionList options; 17 | int64_t sectionLink; 18 | 19 | void serialize(std::ostream& stream) const override; 20 | }; 21 | 22 | } 23 | 24 | #endif //TOOLS_PCAP_PCAP_SECTIONHEADER_H 25 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP_CAN_Exporter.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PCAP_CAN_EXPORTER_H 2 | #define TOOLS_PCAP_CAN_EXPORTER_H 3 | 4 | #include "GenericRecordExporter.h" 5 | 6 | #include "CAN_DataFrame.h" 7 | #include "ParsedFileInfo.h" 8 | 9 | namespace mdf::tools::pcap { 10 | 11 | class PCAP_CAN_Exporter : public mdf::tools::shared::GenericRecordExporter { 12 | public: 13 | explicit PCAP_CAN_Exporter(std::ostream &output, mdf::tools::shared::ParsedFileInfo const &fileInfo); 14 | 15 | /*! @copydoc mdf::tools::shared::GenericRecordExporter::writeHeader */ 16 | void writeHeader() override; 17 | 18 | /*! @copydoc mdf::tools::shared::GenericRecordExporter::writeRecord */ 19 | void writeRecord(mdf::CAN_DataFrame const &record) override; 20 | 21 | private: 22 | mdf::tools::shared::ParsedFileInfo const &fileInfo; 23 | }; 24 | 25 | } 26 | 27 | #endif //TOOLS_PCAP_CAN_EXPORTER_H 28 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/PCAP_Exporter.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PCAP_EXPORTER_H 2 | #define TOOLS_PCAP_EXPORTER_H 3 | 4 | #include "ConverterInterface.h" 5 | 6 | namespace mdf::tools::pcap { 7 | 8 | class PCAP_Exporter : public tools::shared::ConverterInterface { 9 | public: 10 | PCAP_Exporter(); 11 | bool convert(boost::filesystem::path inputFilePath, boost::filesystem::path outputFolder) override; 12 | [[nodiscard]] semver::version const& getVersion() const override; 13 | private: 14 | 15 | }; 16 | 17 | } 18 | 19 | #endif //TOOLS_PCAP_EXPORTER_H 20 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/README.md: -------------------------------------------------------------------------------- 1 | # PCAP-NF Exporter 2 | Exports data to the [PCAP-NG format](https://github.com/pcapng/pcapng), which can be read by 3 | [Wireshark](https://www.wireshark.org/). CAN data is represented via the [Linux SLL](https://www.tcpdump.org/linktypes.html) 4 | type (Link Type 113, Protocol IDs 0x000C and 0x000D). While a Link Type exists for LIN (212), the format the data has to 5 | be packed in is unclear. Thus, LIN is not properly supported yet. 6 | 7 | See [libpcap](https://github.com/the-tcpdump-group/libpcap/blob/ac945a40156ecbbd759528bb147b800cf9dd37dd/pcap-common.c#L620) 8 | for the link types. 9 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/Version.h.in: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PCAP_PROJECTFORMATION_H 2 | #define TOOLS_PCAP_PROJECTFORMATION_H 3 | 4 | #include 5 | 6 | #include 7 | 8 | #define VERSION_MAJOR @VERSION_MAJOR@ 9 | #define VERSION_MINOR @VERSION_MINOR@ 10 | #define VERSION_PATCH @VERSION_PATCH@ 11 | 12 | namespace mdf::tools::pcap { 13 | 14 | constexpr std::string_view PROGRAM_NAME("@PROGRAM_NAME@"); 15 | 16 | constexpr semver::version Version { 17 | VERSION_MAJOR, 18 | VERSION_MINOR, 19 | VERSION_PATCH 20 | }; 21 | 22 | } 23 | 24 | #endif //TOOLS_PCAP_PROJECTFORMATION_H 25 | -------------------------------------------------------------------------------- /Tools/PCAP/Source/main.cpp: -------------------------------------------------------------------------------- 1 | #include "ExecutableEntryPoint.h" 2 | #include "PCAP_Exporter.h" 3 | 4 | using namespace mdf::tools::pcap; 5 | 6 | int main(int argc, char* argv[]) { 7 | std::unique_ptr exporter(new PCAP_Exporter()); 8 | return programEntry(argc, argv, std::move(exporter)); 9 | } 10 | 11 | /** 12 | * NOTE: See https://github.com/the-tcpdump-group/libpcap/blob/master/pcap-common.c#L620 13 | * #define LINKTYPE_LIN 212 14 | */ 15 | -------------------------------------------------------------------------------- /Tools/PEAK/CHANGES.md: -------------------------------------------------------------------------------- 1 | ### 1.0.3 2 | Behind the lines changes to printing. 3 | 4 | ### 1.0.2 5 | Bump to follow other tools. 6 | 7 | ### 1.0.1 8 | * Fix unit error. Time was displayed in microseconds instead of milliseconds. 9 | 10 | ### 1.0.0 11 | * First major release. 12 | -------------------------------------------------------------------------------- /Tools/PEAK/README.md: -------------------------------------------------------------------------------- 1 | # PEAK Trace Format Exporter 2 | Exports data to the PEAK trace format(See "PEAK-System file format specification for CAN trace files" at https://www.peak-system.com/Support.55.0.html?&L=1). Only CAN data is exported, and the format is fixed to version 2.1. 3 | -------------------------------------------------------------------------------- /Tools/PEAK/Source/PEAK_CAN_Exporter.cpp: -------------------------------------------------------------------------------- 1 | #include "PEAK_CAN_Exporter_1_1.h" 2 | 3 | namespace mdf::tools::peak { 4 | 5 | PEAK_CAN_Exporter::PEAK_CAN_Exporter(std::ostream &output, FileInfo const &fileInfo) : GenericRecordExporter( 6 | output), fileInfo(fileInfo) { 7 | recordCounter = 0; 8 | } 9 | 10 | milliseconds PEAK_CAN_Exporter::convertTimestampToRelative(std::chrono::nanoseconds timeStamp) const { 11 | // Take the difference between the first timestamp and this. 12 | std::chrono::nanoseconds difference = timeStamp - headerTimeStamp; 13 | 14 | milliseconds result(difference); 15 | 16 | return result; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /Tools/PEAK/Source/PEAK_CAN_Exporter.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PEAK_CAN_EXPORTER_H 2 | #define TOOLS_PEAK_CAN_EXPORTER_H 3 | 4 | #include "GenericRecordExporter.h" 5 | 6 | #include 7 | #include 8 | #include 9 | 10 | #include "CAN_DataFrame.h" 11 | #include "FileInfo.h" 12 | #include "PEAK_TraceFormat.h" 13 | 14 | namespace mdf::tools::peak { 15 | 16 | // Define new floating precision time base for time in ms. 17 | using milliseconds = std::chrono::duration; 18 | 19 | class PEAK_CAN_Exporter : public tools::shared::GenericRecordExporter { 20 | public: 21 | explicit PEAK_CAN_Exporter(std::ostream &output, FileInfo const &fileInfo); 22 | 23 | virtual void correctHeader() = 0; 24 | 25 | protected: 26 | milliseconds convertTimestampToRelative(std::chrono::nanoseconds timeStamp) const; 27 | 28 | FileInfo const &fileInfo; 29 | 30 | unsigned long long recordCounter; 31 | 32 | std::fpos startTimePosition; 33 | std::chrono::nanoseconds headerTimeStamp; 34 | bool timeStampSet = false; 35 | }; 36 | 37 | template inline constexpr bool always_false_v = false; 38 | 39 | } 40 | 41 | #endif //TOOLS_PCAP_CAN_EXPORTER_H 42 | -------------------------------------------------------------------------------- /Tools/PEAK/Source/PEAK_CAN_Exporter_1_1.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PEAK_CAN_EXPORTER_1_1_H 2 | #define TOOLS_PEAK_CAN_EXPORTER_1_1_H 3 | 4 | #include "PEAK_CAN_Exporter.h" 5 | 6 | namespace mdf::tools::peak { 7 | 8 | class PEAK_CAN_Exporter_1_1 : public PEAK_CAN_Exporter { 9 | public: 10 | explicit PEAK_CAN_Exporter_1_1(std::ostream &output, FileInfo const &fileInfo); 11 | 12 | void correctHeader() override; 13 | 14 | void writeHeader() override; 15 | 16 | void writeRecord(PEAK_Record const &record) override; 17 | 18 | private: 19 | void write_CAN_DataFrame(mdf::CAN_DataFrame const &record); 20 | 21 | void write_CAN_RemoteFrame(mdf::CAN_RemoteFrame const &record); 22 | }; 23 | 24 | } 25 | 26 | #endif //TOOLS_PEAK_CAN_EXPORTER_1_1_H 27 | -------------------------------------------------------------------------------- /Tools/PEAK/Source/PEAK_CAN_Exporter_2_1.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PEAK_CAN_EXPORTER_2_1_H 2 | #define TOOLS_PEAK_CAN_EXPORTER_2_1_H 3 | 4 | #include "PEAK_CAN_Exporter.h" 5 | 6 | namespace mdf::tools::peak { 7 | 8 | class PEAK_CAN_Exporter_2_1 : public PEAK_CAN_Exporter { 9 | public: 10 | explicit PEAK_CAN_Exporter_2_1(std::ostream &output, FileInfo const &fileInfo); 11 | 12 | void correctHeader() override; 13 | 14 | void writeHeader() override; 15 | 16 | void writeRecord(PEAK_Record const &record) override; 17 | 18 | private: 19 | void write_CAN_DataFrame(mdf::CAN_DataFrame const &record); 20 | 21 | void write_CAN_RemoteFrame(mdf::CAN_RemoteFrame const &record); 22 | }; 23 | 24 | } 25 | 26 | #endif //TOOLS_PEAK_CAN_EXPORTER_2_1_H 27 | -------------------------------------------------------------------------------- /Tools/PEAK/Source/PEAK_Exporter.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PEAK_EXPORTER_H 2 | #define TOOLS_PEAK_EXPORTER_H 3 | 4 | #include "ConverterInterface.h" 5 | #include "PEAK_TraceFormat.h" 6 | 7 | namespace mdf::tools::peak { 8 | 9 | class PEAK_Exporter : public tools::shared::ConverterInterface { 10 | public: 11 | PEAK_Exporter(); 12 | 13 | void configureParser(boost::program_options::options_description &opts) override; 14 | 15 | bool convert(boost::filesystem::path inputFilePath, boost::filesystem::path outputFolder) override; 16 | 17 | [[nodiscard]] semver::version const& getVersion() const override; 18 | 19 | private: 20 | PEAK_TraceFormat traceFormat; 21 | }; 22 | 23 | } 24 | 25 | #endif //TOOLS_PCAP_EXPORTER_H 26 | -------------------------------------------------------------------------------- /Tools/PEAK/Source/PEAK_TraceFormat.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PEAK_TRACEFORMAT_H 2 | #define TOOLS_PEAK_TRACEFORMAT_H 3 | 4 | #include 5 | #include 6 | 7 | #include "CAN_DataFrame.h" 8 | #include "CAN_RemoteFrame.h" 9 | 10 | namespace mdf::tools::peak { 11 | 12 | enum struct PEAK_TraceFormat { 13 | VERSION_1_1, 14 | VERSION_2_1 15 | }; 16 | 17 | typedef std::variant PEAK_Record; 18 | 19 | std::istream &operator>>(std::istream &input, PEAK_TraceFormat &traceFormat); 20 | 21 | std::ostream &operator<<(std::ostream &output, PEAK_TraceFormat const &traceFormat); 22 | 23 | } 24 | 25 | #endif //TOOLS_PEAK_TRACEFORMAT_H 26 | -------------------------------------------------------------------------------- /Tools/PEAK/Source/Version.h.in: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_PEAK_PROJECTFORMATION_H 2 | #define TOOLS_PEAK_PROJECTFORMATION_H 3 | 4 | #include 5 | 6 | #include 7 | 8 | #define VERSION_MAJOR @VERSION_MAJOR@ 9 | #define VERSION_MINOR @VERSION_MINOR@ 10 | #define VERSION_PATCH @VERSION_PATCH@ 11 | 12 | namespace mdf::tools::peak { 13 | 14 | constexpr std::string_view PROGRAM_NAME("@PROGRAM_NAME@"); 15 | 16 | constexpr semver::version Version { 17 | VERSION_MAJOR, 18 | VERSION_MINOR, 19 | VERSION_PATCH 20 | }; 21 | 22 | } 23 | 24 | #endif //TOOLS_PEAK_PROJECTFORMATION_H 25 | -------------------------------------------------------------------------------- /Tools/PEAK/Source/main.cpp: -------------------------------------------------------------------------------- 1 | #include "ExecutableEntryPoint.h" 2 | #include "PEAK_Exporter.h" 3 | 4 | using namespace mdf::tools::peak; 5 | 6 | int main(int argc, char* argv[]) { 7 | std::unique_ptr exporter(new PEAK_Exporter()); 8 | return programEntry(argc, argv, std::move(exporter)); 9 | } 10 | -------------------------------------------------------------------------------- /Tools/Resources/AppImage.cmake: -------------------------------------------------------------------------------- 1 | include(CMakePrintHelpers) 2 | cmake_print_variables(APPIMAGE_DEP) 3 | 4 | message("HELLO") 5 | message("${APPIMAGE_DEP}") 6 | 7 | # Find the appimage. 8 | find_package(AppImage) 9 | 10 | if(NOT AppImage_FOUND) 11 | message("Appimage not found, error") 12 | endif() 13 | -------------------------------------------------------------------------------- /Tools/Resources/AppImage.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Version=1.0 4 | Name=@PROGRAM_NAME@ 5 | Comment=@DESCRIPTION@ 6 | Path=/usr/bin/@PROGRAM_NAME@ 7 | Exec=@PROGRAM_NAME@ 8 | Icon=@PROGRAM_NAME@ 9 | Terminal=false 10 | Categories=Utility; 11 | -------------------------------------------------------------------------------- /Tools/Resources/Icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/Resources/Icons/128x128.png -------------------------------------------------------------------------------- /Tools/Resources/Icons/16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/Resources/Icons/16x16.png -------------------------------------------------------------------------------- /Tools/Resources/Icons/256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/Resources/Icons/256x256.png -------------------------------------------------------------------------------- /Tools/Resources/Icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/Resources/Icons/32x32.png -------------------------------------------------------------------------------- /Tools/Resources/Icons/64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/Resources/Icons/64x64.png -------------------------------------------------------------------------------- /Tools/Resources/Windows.rc.in: -------------------------------------------------------------------------------- 1 | id ICON "@ICON_PATH@" 2 | 3 | 1 VERSIONINFO 4 | FILEVERSION @VERSION_MAJOR@,@VERSION_MINOR@,@VERSION_PATCH@,0 5 | PRODUCTVERSION @VERSION_MAJOR@,@VERSION_MINOR@,@VERSION_PATCH@,0 6 | BEGIN 7 | BLOCK "StringFileInfo" 8 | BEGIN 9 | BLOCK "040904E4" 10 | BEGIN 11 | VALUE "CompanyName", "@COMPANY_NAME@" 12 | VALUE "FileDescription", "@DESCRIPTION@" 13 | VALUE "FileVersion", "@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@" 14 | VALUE "InternalName", "@PROJECT_NAME@" 15 | VALUE "LegalCopyright", "@COMPANY_NAME@" 16 | VALUE "OriginalFilename", "@PROGRAM_NAME@.exe" 17 | VALUE "ProductName", "@PROGRAM_NAME@" 18 | VALUE "ProductVersion", "@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@" 19 | END 20 | END 21 | BLOCK "VarFileInfo" 22 | BEGIN 23 | VALUE "Translation", 0x809, 1252 24 | END 25 | END -------------------------------------------------------------------------------- /Tools/Resources/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/Resources/icon.ico -------------------------------------------------------------------------------- /Tools/Resources/icon.rc: -------------------------------------------------------------------------------- 1 | id ICON 'icon.ico' 2 | -------------------------------------------------------------------------------- /Tools/Shared/Include/CommonOptions.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_SHARED_COMMONOPTIONS_H 2 | #define TOOLS_SHARED_COMMONOPTIONS_H 3 | 4 | namespace mdf::tools::shared { 5 | 6 | enum struct DisplayTimeFormat : char { 7 | UTC = 'u', 8 | LoggerLocalTime = 'l', 9 | PCLocalTime = 'p', 10 | }; 11 | 12 | struct CommonOptions { 13 | DisplayTimeFormat displayTimeFormat; 14 | bool nonInteractiveMode; 15 | }; 16 | 17 | } 18 | 19 | #endif //TOOLS_SHARED_COMMONOPTIONS_H 20 | -------------------------------------------------------------------------------- /Tools/Shared/Include/ExecutableEntryPoint.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_SHARED_EXECUTABLEENTRYPOINT_H 2 | #define TOOLS_SHARED_EXECUTABLEENTRYPOINT_H 3 | 4 | #include "ConverterInterface.h" 5 | 6 | namespace mdf::tools::shared { 7 | 8 | int programEntry(int argc, char **argv, std::unique_ptr exporter); 9 | 10 | } 11 | 12 | #endif //TOOLS_SHARED_EXECUTABLEENTRYPOINT_H 13 | -------------------------------------------------------------------------------- /Tools/Shared/Include/ParseOptionStatus.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_SHARED_PARSEOPTIONSTATUS_H 2 | #define TOOLS_SHARED_PARSEOPTIONSTATUS_H 3 | 4 | #include 5 | 6 | namespace mdf::tools::shared { 7 | 8 | enum class ParseOptionStatus : uint32_t { 9 | NoError = 0, 10 | NoInputFiles = 0x1u << 1u, 11 | DisplayHelp = 0x1u << 2u, 12 | DisplayVersion = 0x1u << 3u, 13 | UnrecognizedOption = 0x1u << 4u, 14 | CouldNotFindPasswordFile = 0x1u << 5u, 15 | CouldNotParsePasswordFile = 0x1u << 6u, 16 | }; 17 | 18 | ParseOptionStatus operator&(ParseOptionStatus const &lhs, ParseOptionStatus const &rhs); 19 | 20 | ParseOptionStatus operator|(ParseOptionStatus const &lhs, ParseOptionStatus const &rhs); 21 | 22 | ParseOptionStatus &operator&=(ParseOptionStatus &lhs, ParseOptionStatus const &rhs); 23 | 24 | ParseOptionStatus &operator|=(ParseOptionStatus &lhs, ParseOptionStatus const &rhs); 25 | 26 | } 27 | 28 | #endif //TOOLS_SHARED_PARSEOPTIONSTATUS_H 29 | -------------------------------------------------------------------------------- /Tools/Shared/Include/ParsedFileInfo.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_SHARED_PARSEDFILEINO_H 2 | #define TOOLS_SHARED_PARSEDFILEINO_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | 10 | #include "FileInfo.h" 11 | #include "Metadata.h" 12 | 13 | namespace mdf::tools::shared { 14 | 15 | struct ParsedFileInfo { 16 | ParsedFileInfo(FileInfo const& fileInfo, MetadataMap const& metadata); 17 | 18 | std::optional Session; 19 | std::optional Split; 20 | std::optional LoggerID; 21 | std::optional LoggerType; 22 | std::optional BitrateCAN1; 23 | std::optional BitrateCAN2; 24 | std::optional BitrateLIN1; 25 | std::optional BitrateLIN2; 26 | std::optional Comment; 27 | std::optional FW_Version; 28 | std::optional HW_Version; 29 | 30 | std::chrono::nanoseconds Time; 31 | int16_t TimezoneOffsetMinutes; 32 | uint64_t CANMessages; 33 | uint64_t LINMessages; 34 | }; 35 | 36 | } 37 | 38 | #endif //TOOLS_SHARED_PARSEDFILEINO_H 39 | -------------------------------------------------------------------------------- /Tools/Shared/Include/PasswordStorage.h: -------------------------------------------------------------------------------- 1 | #ifndef MDFSIMPLECONVERTERS_PASSWORDSTORAGE_H 2 | #define MDFSIMPLECONVERTERS_PASSWORDSTORAGE_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include 10 | 11 | namespace mdf::tools::shared { 12 | 13 | enum struct PasswordType { 14 | Default, 15 | Specific, 16 | Missing 17 | }; 18 | 19 | class PasswordStorage { 20 | public: 21 | explicit PasswordStorage(boost::filesystem::path const &passwordFile); 22 | 23 | PasswordType hasPassword(uint32_t device) const; 24 | 25 | std::string const &getPassword(uint32_t device) const; 26 | 27 | boost::filesystem::path getPasswordFilePath(); 28 | 29 | private: 30 | std::unordered_map passwordMap; 31 | std::string defaultPassword; 32 | bool defaultPasswordSet; 33 | boost::filesystem::path passwordFilePath; 34 | }; 35 | 36 | struct PasswordStorageException : std::exception { 37 | PasswordStorageException(); 38 | }; 39 | 40 | } 41 | 42 | #endif //MDFSIMPLECONVERTERS_PASSWORDSTORAGE_H 43 | -------------------------------------------------------------------------------- /Tools/Shared/Include/TimeConverter.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_SHARED_TIMECONVERTER_H 2 | #define TOOLS_SHARED_TIMECONVERTER_H 3 | 4 | #include 5 | #include 6 | 7 | #include "CommonOptions.h" 8 | #include "ParsedFileInfo.h" 9 | 10 | namespace mdf::tools::shared { 11 | 12 | [[nodiscard]] time_t 13 | convertTimeStamp(DisplayTimeFormat const &displayTimeFormat, time_t timeStamp, ParsedFileInfo const &loggerInfo); 14 | 15 | [[nodiscard]] std::chrono::nanoseconds 16 | convertTimeStamp(DisplayTimeFormat const &displayTimeFormat, std::chrono::nanoseconds timeStamp, ParsedFileInfo const &loggerInfo); 17 | 18 | } 19 | 20 | #endif //TOOLS_SHARED_TIMECONVERTER_H 21 | -------------------------------------------------------------------------------- /Tools/Shared/Source/ConverterInterface.cpp: -------------------------------------------------------------------------------- 1 | #include "ConverterInterface.h" 2 | 3 | namespace mdf::tools::shared { 4 | 5 | ConverterInterface::ConverterInterface(std::string_view programName, bool usesConfigurationFile) : 6 | programName(programName), 7 | readConfigurationFile(usesConfigurationFile) { 8 | 9 | } 10 | 11 | ConverterInterface::~ConverterInterface() = default; 12 | 13 | void ConverterInterface::configureParser(boost::program_options::options_description &opts) { 14 | // Default implementation does nothing. 15 | } 16 | 17 | void ConverterInterface::configureFileParser(boost::program_options::options_description &opts) { 18 | // Default implementation does nothing. 19 | } 20 | 21 | ParseOptionStatus ConverterInterface::parseOptions(boost::program_options::variables_map const &result) { 22 | return ParseOptionStatus::NoError; 23 | } 24 | 25 | int ConverterInterface::setCommonOptions(std::shared_ptr options) { 26 | commonOptions = std::move(options); 27 | 28 | return 0; 29 | } 30 | 31 | bool ConverterInterface::usesConfigFile() const { 32 | return readConfigurationFile; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /Tools/Shared/Source/ProjectInformation.h.in: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_SHARED_VERSIONINFORMATION_H 2 | #define TOOLS_SHARED_VERSIONINFORMATION_H 3 | 4 | #include 5 | 6 | #define MDFSimpleConverters_Shared_VERSION_MAJOR @MDFSimpleConverters_Shared_VERSION_MAJOR@ 7 | #define MDFSimpleConverters_Shared_VERSION_MINOR @MDFSimpleConverters_Shared_VERSION_MINOR@ 8 | #define MDFSimpleConverters_Shared_VERSION_PATCH @MDFSimpleConverters_Shared_VERSION_PATCH@ 9 | 10 | namespace mdf::tools::shared { 11 | 12 | constexpr semver::version MDFSimpleConverters_Shared_VERSION { 13 | MDFSimpleConverters_Shared_VERSION_MAJOR, 14 | MDFSimpleConverters_Shared_VERSION_MINOR, 15 | MDFSimpleConverters_Shared_VERSION_PATCH 16 | }; 17 | 18 | } 19 | 20 | #endif //TOOLS_SHARED_VERSIONINFORMATION_H 21 | -------------------------------------------------------------------------------- /Tools/Shared/Source/StatusCode.cpp: -------------------------------------------------------------------------------- 1 | #include "StatusCode.h" 2 | 3 | #include 4 | 5 | namespace mdf::tools::shared { 6 | 7 | StatusCode operator&(StatusCode const &lhs, StatusCode const &rhs) { 8 | // Determine the underlying type. 9 | using T = std::underlying_type_t; 10 | 11 | // Perform casts to integer types, perform the operation, and cast back. 12 | return static_cast(static_cast(lhs) & static_cast(rhs)); 13 | } 14 | 15 | StatusCode operator|(StatusCode const &lhs, StatusCode const &rhs) { 16 | // Determine the underlying type. 17 | using T = std::underlying_type_t; 18 | 19 | // Perform casts to integer types, perform the operation, and cast back. 20 | return static_cast(static_cast(lhs) | static_cast(rhs)); 21 | } 22 | 23 | StatusCode &operator|=(StatusCode &lhs, StatusCode const &rhs) { 24 | lhs = lhs | rhs; 25 | return lhs; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Tools/SocketCAN/Source/SocketCAN_CAN_Exporter.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_SOCKETCAN_CAN_EXPORTER_H 2 | #define TOOLS_SOCKETCAN_CAN_EXPORTER_H 3 | 4 | #include "GenericRecordExporter.h" 5 | 6 | #include "CAN_DataFrame.h" 7 | #include "CommonOptions.h" 8 | #include "ParsedFileInfo.h" 9 | 10 | namespace mdf::tools::socketcan { 11 | 12 | class SocketCAN_CAN_Exporter : public tools::shared::GenericRecordExporter { 13 | public: 14 | explicit SocketCAN_CAN_Exporter(std::ostream &output, mdf::tools::shared::ParsedFileInfo const &fileInfo, 15 | tools::shared::DisplayTimeFormat displayLocalTime); 16 | 17 | void writeHeader() override; 18 | 19 | void writeRecord(CAN_DataFrame const &record) override; 20 | 21 | private: 22 | tools::shared::DisplayTimeFormat displayLocalTime; 23 | mdf::tools::shared::ParsedFileInfo const &fileInfo; 24 | }; 25 | 26 | } 27 | #endif //TOOLS_SOCKETCAN_CAN_EXPORTER_H 28 | -------------------------------------------------------------------------------- /Tools/SocketCAN/Source/SocketCAN_Exporter.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_SOCKETCAN_EXPORTER_H 2 | #define TOOLS_SOCKETCAN_EXPORTER_H 3 | 4 | #include "ConverterInterface.h" 5 | 6 | namespace mdf::tools::socketcan { 7 | 8 | class SocketCAN_Exporter : public tools::shared::ConverterInterface { 9 | public: 10 | SocketCAN_Exporter(); 11 | 12 | bool convert(boost::filesystem::path inputFilePath, boost::filesystem::path outputFolder) override; 13 | 14 | [[nodiscard]] semver::version const& getVersion() const override; 15 | 16 | private: 17 | 18 | }; 19 | 20 | } 21 | 22 | #endif //TOOLS_SOCKETCAN_EXPORTER_H 23 | -------------------------------------------------------------------------------- /Tools/SocketCAN/Source/SocketCAN_LIN_Exporter.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_SOCKETCAN_LIN_EXPORTER_H 2 | #define TOOLS_SOCKETCAN_LIN_EXPORTER_H 3 | 4 | #include "GenericRecordExporter.h" 5 | 6 | #include "LIN_Frame.h" 7 | #include "CommonOptions.h" 8 | #include "ParsedFileInfo.h" 9 | 10 | namespace mdf::tools::socketcan { 11 | 12 | class SocketCAN_LIN_Exporter : public tools::shared::GenericRecordExporter { 13 | public: 14 | explicit SocketCAN_LIN_Exporter(std::ostream &output, mdf::tools::shared::ParsedFileInfo const &fileInfo, 15 | tools::shared::DisplayTimeFormat displayLocalTime); 16 | 17 | void writeHeader() override; 18 | 19 | void writeRecord(LIN_Frame const &record) override; 20 | 21 | private: 22 | tools::shared::DisplayTimeFormat displayLocalTime; 23 | mdf::tools::shared::ParsedFileInfo const &fileInfo; 24 | }; 25 | 26 | } 27 | #endif //TOOLS_SOCKETCAN_LIN_EXPORTER_H 28 | -------------------------------------------------------------------------------- /Tools/SocketCAN/Source/Version.h.in: -------------------------------------------------------------------------------- 1 | #ifndef TOOLS_SOCKETCAN_PROJECTFORMATION_H 2 | #define TOOLS_SOCKETCAN_PROJECTFORMATION_H 3 | 4 | #include 5 | 6 | #include 7 | 8 | #define VERSION_MAJOR @VERSION_MAJOR@ 9 | #define VERSION_MINOR @VERSION_MINOR@ 10 | #define VERSION_PATCH @VERSION_PATCH@ 11 | 12 | namespace mdf::tools::socketcan { 13 | 14 | constexpr std::string_view PROGRAM_NAME("@PROGRAM_NAME@"); 15 | 16 | constexpr semver::version Version { 17 | VERSION_MAJOR, 18 | VERSION_MINOR, 19 | VERSION_PATCH 20 | }; 21 | 22 | } 23 | 24 | #endif //TOOLS_SOCKETCAN_PROJECTFORMATION_H 25 | -------------------------------------------------------------------------------- /Tools/SocketCAN/Source/main.cpp: -------------------------------------------------------------------------------- 1 | #include "ExecutableEntryPoint.h" 2 | #include "SocketCAN_Exporter.h" 3 | 4 | using namespace mdf::tools::socketcan; 5 | 6 | int main(int argc, char* argv[]) { 7 | std::unique_ptr exporter(new SocketCAN_Exporter()); 8 | return programEntry(argc, argv, std::move(exporter)); 9 | } 10 | -------------------------------------------------------------------------------- /Tools/SystemTests/.gitignore: -------------------------------------------------------------------------------- 1 | .pytest_cache 2 | Release/* 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/multiple_LIN.asc: -------------------------------------------------------------------------------- 1 | date Fri Feb 14 08:51:20 AM 2020 2 | base hex timestamps absolute 3 | 359.550650 1 0 Rx d 2 12 34 4 | 359.650200 1 1f Rx d 2 12 34 5 | 359.749900 1 20 Rx d 4 12 34 56 78 6 | 359.849550 1 2f Rx d 4 12 34 56 78 7 | 359.950250 1 30 Rx d 8 12 34 56 78 90 AB CD EF 8 | 360.049950 1 3f Rx d 8 12 34 56 78 90 AB CD EF 9 | 365.173450 2 0 Rx d 2 12 34 10 | 365.273050 2 1f Rx d 2 12 34 11 | 365.372700 2 20 Rx d 4 12 34 56 78 12 | 365.472400 2 2f Rx d 4 12 34 56 78 13 | 365.573150 2 30 Rx d 8 12 34 56 78 90 AB CD EF 14 | 365.672750 2 3f Rx d 8 12 34 56 78 90 AB CD EF 15 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_can_bus_1_CAN.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 08:27:45 am 2020 2 | base hex timestamps absolute 3 | 71.664350 1 123 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_can_bus_1_CAN_PC.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 09:27:45 am 2020 2 | base hex timestamps absolute 3 | 71.664350 1 123 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_can_bus_1_CAN_compressed.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 08:30:17 am 2020 2 | base hex timestamps absolute 3 | 8.052750 1 123 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_can_bus_1_CAN_encrypted.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 08:31:10 am 2020 2 | base hex timestamps absolute 3 | 5.647700 1 123 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_can_bus_2_CAN.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 08:29:07 am 2020 2 | base hex timestamps absolute 3 | 10.638600 2 123 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_can_bus_2_CAN_compressed.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 08:30:32 am 2020 2 | base hex timestamps absolute 3 | 6.112350 2 123 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_can_bus_2_CAN_encrypted.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 08:31:21 am 2020 2 | base hex timestamps absolute 3 | 9.242150 2 123 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_lin_bus_1_LIN.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 10:01:00 AM 2020 2 | base hex timestamps absolute 3 | 11.199200 1 23 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_lin_bus_1_LIN_compressed.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 10:01:59 AM 2020 2 | base hex timestamps absolute 3 | 7.553550 1 23 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_lin_bus_1_LIN_encrypted.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 10:02:51 AM 2020 2 | base hex timestamps absolute 3 | 11.038800 1 23 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_lin_bus_2_LIN.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 10:01:19 AM 2020 2 | base hex timestamps absolute 3 | 6.062050 2 23 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_lin_bus_2_LIN_compressed.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 10:02:16 AM 2020 2 | base hex timestamps absolute 3 | 6.371050 2 23 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_lin_bus_2_LIN_encrypted.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 10:03:09 AM 2020 2 | base hex timestamps absolute 3 | 5.764900 2 23 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_message_can_bus_1_1024_window_CAN.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 08:34:15 am 2020 2 | base hex timestamps absolute 3 | 9.576700 1 123 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_message_can_bus_1_1024_window_CAN_compressed_encrypted.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 08:49:23 am 2020 2 | base hex timestamps absolute 3 | 6.883750 1 123 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_message_can_bus_1_1024_window_CAN_encrypted.asc: -------------------------------------------------------------------------------- 1 | date Thu Jan 09 06:17:21 am 2020 2 | base hex timestamps absolute 3 | 6.550000 1 123 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_message_can_bus_1_256_window_CAN.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 08:33:20 am 2020 2 | base hex timestamps absolute 3 | 7.311300 1 123 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/ASC/TestData/single_message_can_bus_1_512_window_CAN.asc: -------------------------------------------------------------------------------- 1 | date Thu Feb 13 08:33:47 am 2020 2 | base hex timestamps absolute 3 | 7.376400 1 123 Rx d 4 12 34 56 78 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/Files/config_dataFields_all.ini: -------------------------------------------------------------------------------- 1 | [log] 2 | valueSeparator = 32 3 | timestampFormat = 3 4 | timestampTimeSeparator = 0 5 | timestampTimeMsSeparator = 0 6 | timestampDateSeparator = 0 7 | timeTimeDateSeparator = 84 8 | 9 | [dataFields] 10 | timestamp = true 11 | type = true 12 | id = true 13 | dataLength = true 14 | data = true 15 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/Files/config_dataFields_none.ini: -------------------------------------------------------------------------------- 1 | [log] 2 | valueSeparator = 32 3 | timestampFormat = 3 4 | timestampTimeSeparator = 0 5 | timestampTimeMsSeparator = 0 6 | timestampDateSeparator = 0 7 | timeTimeDateSeparator = 84 8 | 9 | [dataFields] 10 | timestamp = false 11 | type = false 12 | id = false 13 | dataLength = false 14 | data = false 15 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/Files/config_log_allSeparators.ini: -------------------------------------------------------------------------------- 1 | [log] 2 | valueSeparator = 32 3 | timestampFormat = 3 4 | timestampTimeSeparator = 32 5 | timestampTimeMsSeparator = 32 6 | timestampDateSeparator = 32 7 | timeTimeDateSeparator = 32 8 | 9 | [dataFields] 10 | timestamp = true 11 | type = true 12 | id = true 13 | dataLength = true 14 | data = true 15 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/Files/config_log_noSeparators.ini: -------------------------------------------------------------------------------- 1 | [log] 2 | valueSeparator = 0 3 | timestampFormat = 3 4 | timestampTimeSeparator = 0 5 | timestampTimeMsSeparator = 0 6 | timestampDateSeparator = 0 7 | timeTimeDateSeparator = 0 8 | 9 | [dataFields] 10 | timestamp = true 11 | type = true 12 | id = true 13 | dataLength = true 14 | data = true 15 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/Files/config_timeformat_0.ini: -------------------------------------------------------------------------------- 1 | [log] 2 | valueSeparator = 32 3 | timestampFormat = 0 4 | timestampTimeSeparator = 0 5 | timestampTimeMsSeparator = 0 6 | timestampDateSeparator = 0 7 | timeTimeDateSeparator = 84 8 | 9 | [dataFields] 10 | timestamp = true 11 | type = false 12 | id = true 13 | dataLength = false 14 | data = true 15 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/Files/config_timeformat_1.ini: -------------------------------------------------------------------------------- 1 | [log] 2 | valueSeparator = 32 3 | timestampFormat = 1 4 | timestampTimeSeparator = 0 5 | timestampTimeMsSeparator = 0 6 | timestampDateSeparator = 0 7 | timeTimeDateSeparator = 84 8 | 9 | [dataFields] 10 | timestamp = true 11 | type = false 12 | id = true 13 | dataLength = false 14 | data = true 15 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/Files/config_timeformat_2.ini: -------------------------------------------------------------------------------- 1 | [log] 2 | valueSeparator = 32 3 | timestampFormat = 2 4 | timestampTimeSeparator = 0 5 | timestampTimeMsSeparator = 0 6 | timestampDateSeparator = 0 7 | timeTimeDateSeparator = 84 8 | 9 | [dataFields] 10 | timestamp = true 11 | type = false 12 | id = true 13 | dataLength = false 14 | data = true 15 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/Files/config_timeformat_3.ini: -------------------------------------------------------------------------------- 1 | [log] 2 | valueSeparator = 32 3 | timestampFormat = 3 4 | timestampTimeSeparator = 0 5 | timestampTimeMsSeparator = 0 6 | timestampDateSeparator = 0 7 | timeTimeDateSeparator = 84 8 | 9 | [dataFields] 10 | timestamp = true 11 | type = false 12 | id = true 13 | dataLength = false 14 | data = true 15 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/Files/config_timeformat_4.ini: -------------------------------------------------------------------------------- 1 | [log] 2 | valueSeparator = 32 3 | timestampFormat = 4 4 | timestampTimeSeparator = 0 5 | timestampTimeMsSeparator = 0 6 | timestampDateSeparator = 0 7 | timeTimeDateSeparator = 84 8 | 9 | [dataFields] 10 | timestamp = true 11 | type = false 12 | id = true 13 | dataLength = false 14 | data = true 15 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/Files/config_timeformat_5.ini: -------------------------------------------------------------------------------- 1 | [log] 2 | valueSeparator = 32 3 | timestampFormat = 5 4 | timestampTimeSeparator = 0 5 | timestampTimeMsSeparator = 0 6 | timestampDateSeparator = 0 7 | timeTimeDateSeparator = 84 8 | 9 | [dataFields] 10 | timestamp = true 11 | type = false 12 | id = true 13 | dataLength = false 14 | data = true 15 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/Files/config_timeformat_6.ini: -------------------------------------------------------------------------------- 1 | [log] 2 | valueSeparator = 32 3 | timestampFormat = 6 4 | timestampTimeSeparator = 0 5 | timestampTimeMsSeparator = 0 6 | timestampDateSeparator = 0 7 | timeTimeDateSeparator = 84 8 | 9 | [dataFields] 10 | timestamp = true 11 | type = false 12 | id = true 13 | dataLength = false 14 | data = true 15 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/.gitattributes: -------------------------------------------------------------------------------- 1 | *.txt filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/dataFields/single_can_bus_1_CAN_1_config_dataFields.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:621ac423fdbc54fc55b7c5c6a438aa97dc9568a2adf8ae5cd827d7abfe6465c5 3 | size 348 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/dataFields/single_can_bus_1_CAN_1_config_dataFields_12345.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6950f7ca6c37ecab5fbf99f35931f35a0b091739acbc8f9bcc4ba9a01d9985e1 3 | size 403 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/dataFields/single_can_bus_1_CAN_2_config_dataFields.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e0ad9043ab58426853ea066f706e95f61dc1b8802cc3c4bb2bdb0393527e557a 3 | size 348 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/dataFields/single_can_bus_1_CAN_2_config_dataFields_12345.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9555823d434ec9a4d20a6efe5e4697438648b647999805ac6ebab27d4606db33 3 | size 377 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/dataFields/single_can_bus_2_CAN_1_config_dataFields.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6789611544aeb6f1e0be7d90f5953e4246275328731943ec469d9600520ef6bb 3 | size 348 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/dataFields/single_can_bus_2_CAN_1_config_dataFields_12345.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a2271e642dcb2f96f9a747ec873f65600520be3d41aebaeb9cd3ddad437d296c 3 | size 377 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/dataFields/single_can_bus_2_CAN_2_config_dataFields.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:18d36477f3175c1273621f67023fc76f61294426cdfc104f1c6bb995646a620e 3 | size 348 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/dataFields/single_can_bus_2_CAN_2_config_dataFields_12345.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3f3d00a6cc3e90b5067cd4910dbfa189509e69db097d80ce9263d64ae23ecae2 3 | size 403 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/log/single_can_bus_1_CAN_1_allSeparators.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6e15c262eb5703868f641abaa0cdff068d01aae60f908ec71b05ed5add2c0953 3 | size 409 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/log/single_can_bus_1_CAN_1_noSeparators.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f49f06714b2df0b8c800c95fa03108cae7a5e01c9c95397e57d4cd9bb6894116 3 | size 393 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/log/single_can_bus_1_CAN_2_allSeparators.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e77f324c199e8d33dc4a30677e57262cf44f0edeca67a4662155f57b2b1055f4 3 | size 380 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/log/single_can_bus_1_CAN_2_noSeparators.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4e679bae397b21f33038d7b5abc902a0bcc90a6784f1f22e6b4def7a4528d7d1 3 | size 371 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/log/single_can_bus_2_CAN_1_allSeparators.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5fabc9ccc5962ea3e077579bc3ee5e7d114223eed37ae6964b2e637187c686a5 3 | size 380 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/log/single_can_bus_2_CAN_1_noSeparators.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e6b90d7d8bbdff521584f8d7986fea35edaec889d13d457fdb38448c592f913d 3 | size 371 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/log/single_can_bus_2_CAN_2_allSeparators.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cbc4c5271ba55b2507df4962b1cb4e3e6a6832583834b9b009599235b8426e41 3 | size 409 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/log/single_can_bus_2_CAN_2_noSeparators.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3baa5f3d08e5b6ab984a6ba1d61a2fc02c45769dbaf0bec4e1ed580e924605c8 3 | size 393 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_1_CAN_1_timeformat_0.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9bc8a7ef40813cae4562912118faba8b3436c27860d98d2421b46532bff111e6 3 | size 381 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_1_CAN_1_timeformat_1.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a08ad6ee2097259163b2de653804a0ef256bc9c02359a52c5702905824652038 3 | size 383 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_1_CAN_1_timeformat_2.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f9e88a2a75eabf1d5d5b37305de8bd7839f825b05dd7af245d5e069e0207f596 3 | size 385 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_1_CAN_1_timeformat_3.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:33189ba58a3ed7c86cdfa5e30ad8ed70e9e50f6ec86e88fecd7db361ea0c30f4 3 | size 387 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_1_CAN_1_timeformat_4.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:99440b994086fb6b1ef42ce930bb39fa4665ed292e50f2388e713412f6ef6ab8 3 | size 390 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_1_CAN_1_timeformat_5.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b5518ea536156610b2424389f868c584e984020fdfbfe74c9977125a0b64ffaf 3 | size 392 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_1_CAN_1_timeformat_6.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:94cfd411108e8be2ddd70a84973a2b94506e036d63a78c5159b8c91a51f1d01d 3 | size 396 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_1_CAN_2_timeformat_0.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:058c2eb53288da399410d5af6cf3e674ecd12658d68ca0fe047445b222f03aa9 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_1_CAN_2_timeformat_1.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:691fbc97967662c4659826ddaef6a49b1274d3a817c7a845e080a80a36731821 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_1_CAN_2_timeformat_2.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7f581b61a368543e1fc5e0208ad99b10d38dffb37ce3350cae5bbf12c3f656a3 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_1_CAN_2_timeformat_3.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5f9a29b545d2cf4f74cbd30e075e7b30e8674295aaa4bed7c4d86ba14c0c651d 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_1_CAN_2_timeformat_4.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9b5f5f920625e77c49f002015e8c7725db35f5f3015486b9f1e2093ce2a7ba6b 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_1_CAN_2_timeformat_5.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1f76f58534438e4af55fb928cf3b627091cddf7650666a994f5f78d15c0e4ca5 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_1_CAN_2_timeformat_6.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:176707bd3620cdf561e3dfdb5ce58dcd070706e86ffb5ad6e10e86c33ffaba09 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_2_CAN_1_timeformat_0.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a457cb02afec09a1bdc502c6b39493c2fa42844b51a1300259e4be37f9c0d1ba 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_2_CAN_1_timeformat_1.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:bb3a147394297f85a6f0e0bfd0ed421a40f5b64f0e780875886871ddbf0e3d27 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_2_CAN_1_timeformat_2.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7ea0fb7352a2569f87b5a9a0ffa8b5bcbb8721769d79dd8ec605eb841f76eac8 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_2_CAN_1_timeformat_3.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7b554b2d6628bafdc8eacbf02986d4b6c96f67202b566896680077a6448f761f 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_2_CAN_1_timeformat_4.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:fa3100e00540b8d0a2495df86e4ab81c159c2a71984318937c9fd8b9aaadff4e 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_2_CAN_1_timeformat_5.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:46c155767022d2cb4283b7addb7da1fc2a7c369cd9083a92ab6880f66fd887c5 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_2_CAN_1_timeformat_6.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f64255add8de46f72f4273baf6bd4658acb5be2a1776f93a0714be30c370fc17 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_2_CAN_2_timeformat_0.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:aceb645d0ba8b4a748b6b47b0164f3c69eb727392f4a1251d3a5c5da7f47c584 3 | size 381 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_2_CAN_2_timeformat_1.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cd90c4cbe275b3f4b6ef82faea3774b8c1493d04e9c39423aede7a57bd04e69e 3 | size 383 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_2_CAN_2_timeformat_2.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:51977dc198c1b3495aadf123f5e1ba96766fc529ee002eeed393eb8b07ea95c1 3 | size 385 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_2_CAN_2_timeformat_3.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1f2c5e8a438ccf16457a96173c757f5a4250ccb8c1d65d76124bea6b2c7e2c00 3 | size 387 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_2_CAN_2_timeformat_4.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1e3a691db0a0d4df9131fa1be6eafea7d5076303306ff1ebc72c8707b67850f3 3 | size 390 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_2_CAN_2_timeformat_5.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:98218b4b71a9e578c30563cfe9031f2584911ee2a277c062271fa4bc57855fa9 3 | size 392 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/Config/timeformat/single_can_bus_2_CAN_2_timeformat_6.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3baf88aa16408bd145777dfa4fc7d0d45a975536d8776271039529f7933f2607 3 | size 396 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/multiple_CAN_1.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e3aea54d47eba22e36dd3f49e99cd6564dfb7fbd8ff4bb82ac99458ca2e7334c 3 | size 4287 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/multiple_CAN_2.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:23cdb99c7eba180365f06058802079684ceea9fa25ae87eb1ea063df13f1f2ce 3 | size 4287 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/multiple_LIN_1.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b9a2dff933fed5a9dae377617ebf29cce5dd961413cbe0cfb10e7b027ea979cc 3 | size 526 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/multiple_LIN_2.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8457d45d0a0f54f5d75a393a30e48c990c6cb6104d284342a8d878e35527281b 3 | size 526 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_can_bus_1_CAN_1.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:99440b994086fb6b1ef42ce930bb39fa4665ed292e50f2388e713412f6ef6ab8 3 | size 390 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_can_bus_1_CAN_1_PC.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e8609b68b72869b1d3b2f81bbaf4b6df46610e03f3e0b2bda90dd9d937f813f3 3 | size 390 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_can_bus_1_CAN_1_compressed.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4d3de0ba3085d6a25c6c34abca366d535e031a049bc1c6693c16a98fd09c37e1 3 | size 390 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_can_bus_1_CAN_1_encrypted.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ccf0d1f037593b4d71bff5d4ea2ff1367cc43bf7dbc6c133f841e543e17b38e0 3 | size 390 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_can_bus_1_CAN_2.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9b5f5f920625e77c49f002015e8c7725db35f5f3015486b9f1e2093ce2a7ba6b 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_can_bus_1_CAN_2_PC.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9b5f5f920625e77c49f002015e8c7725db35f5f3015486b9f1e2093ce2a7ba6b 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_can_bus_1_CAN_2_compressed.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:aeec885df800d7f5d9fa86bac33f85447154cebfb0a6ae38753c36ee0da2583c 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_can_bus_1_CAN_2_encrypted.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2017066e9d855e774781f7f72fce9bc1c4865d304ccc084b15b42227722f6d22 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_can_bus_2_CAN_1.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:fa3100e00540b8d0a2495df86e4ab81c159c2a71984318937c9fd8b9aaadff4e 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_can_bus_2_CAN_1_compressed.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ca695e5884a37842b3980114505483161f32b8b6408b9b2f44d0c143849659d3 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_can_bus_2_CAN_1_encrypted.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7322fd98dea1d13d8eada29c0030fe30b71e19776cf7fa9f81d6200f6dd4f4e9 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_can_bus_2_CAN_2.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1e3a691db0a0d4df9131fa1be6eafea7d5076303306ff1ebc72c8707b67850f3 3 | size 390 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_can_bus_2_CAN_2_compressed.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ff2fb78c9c47f788710753442695d95b5a2054020e085a5456045b2d1a80ab47 3 | size 390 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_can_bus_2_CAN_2_encrypted.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f25e7efaed9c8fedac2ec670adc564342937a19d33d22a2a92253dff365b414b 3 | size 390 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_lin_bus_1_LIN_1.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b458346e1b1b4d42fd7e1d88b52a5ab303fe61d32f11cb567dd6ab232823423b 3 | size 389 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_lin_bus_1_LIN_1_compressed.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f2eabc51df44b3171751f002cff437ae9913e587dabac570b1e810cb850b681c 3 | size 389 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_lin_bus_1_LIN_1_encrypted.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6750e03e480da163bfe06e3bfe1916c5f562a987de3f3e8742adbefb51686f08 3 | size 389 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_lin_bus_1_LIN_2.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ec63d10fa6da44c29209f5e07494fc7f0aa7274a12c84b380861f5796f6e77d9 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_lin_bus_1_LIN_2_compressed.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3d64ad1d5bf0fe17e2fe2507035dbc5ca0093963faa7c68d4c6338888a213a8e 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_lin_bus_1_LIN_2_encrypted.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ac2f2812c257390c02639565460c1d4b41eef50b50e1799853bdff1cc871d6ac 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_lin_bus_2_LIN_1.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:adcb41742332d4cae5060753fe5ba73b39354ba4d211450f43d874c5c358306c 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_lin_bus_2_LIN_1_compressed.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:44e6da95a713ae22cbae36f0eb59c8ea884f182c193c8fe79eeabad2da32772b 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_lin_bus_2_LIN_1_encrypted.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4d3d743d3a243a068bfcdcd1e651db288f26d33dfcf65ae82515c2d3306720a9 3 | size 365 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_lin_bus_2_LIN_2.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:143fa11fa8640793d00c275ca9a1560aa4089bf143680d8c3e250e0650250ff9 3 | size 389 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_lin_bus_2_LIN_2_compressed.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:410c41ff6029f5ec11a389211215efe37422e0c2489cd8d567e409ab61d7684e 3 | size 389 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_lin_bus_2_LIN_2_encrypted.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:549c81355ff75cc8d3a92a647eaecdf708cbe42082ed415503ffe260f94583ac 3 | size 389 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_message_can_bus_1_1024_window_CAN_1.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:04a86ed937cd23d7556c20fcaf670bc6271b6150be7ffad522156cd6dbfbfe74 3 | size 391 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_message_can_bus_1_1024_window_CAN_1_encrypted.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c80367b4772afba682ae4e49931599e752002c025ad5294f56a78e3767f00f20 3 | size 391 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_message_can_bus_1_1024_window_CAN_2.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:eae708de9962954a71933a200fcd19adb4564b14f4ece9ef9688bb2eb841b6ce 3 | size 366 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_message_can_bus_1_1024_window_CAN_2_encrypted.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6de87965d9b21b0cf5da3796205c27595d21055658b5a8285691bf155cbdccaf 3 | size 366 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_message_can_bus_1_256_window_CAN_1.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:dd92233fbfc174b37ff71274f3d358096945406bc8577490d0e503eff96f5e29 3 | size 391 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_message_can_bus_1_256_window_CAN_1_encrypted.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:da865a634edd8bec967b422aab6ee2cc1638beb7f00c96daffcde3e826afc4c2 3 | size 391 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_message_can_bus_1_256_window_CAN_2.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5d01db58ae46297ecd9ba4e4ce587e2aaf43699a603335b5f1465cbcdd715b22 3 | size 366 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_message_can_bus_1_256_window_CAN_2_encrypted.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:aba7d864b10422fb901bcf52203ba5816e3da9d5aeda4d6ccc010e5e0ee3c064 3 | size 366 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_message_can_bus_1_512_window_CAN_1.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:14d6cea8ba0c7c8f1e30c217087dd2b553fd6ea4f7e58948b3f8fb3a84d91ed9 3 | size 391 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_message_can_bus_1_512_window_CAN_1_encrypted.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a80d143a06ccc8f68c715faeb789451919849831a9665bc97b81fbeed8c40a1d 3 | size 391 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_message_can_bus_1_512_window_CAN_2.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:97b1f1e5411e5daf87698bda143a5e5e79c414ecfc3660a76a638f332fd2b931 3 | size 366 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CLX000/TestData/single_message_can_bus_1_512_window_CAN_2_encrypted.txt: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:58ad86e46d68550a76175261b020bbb1066555134db556d18c6a0c8539ecd361 3 | size 366 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/multiple_LIN.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;DataLength;Dir;DataBytes 2 | 1581670639.550650;1;0;2;0;1234 3 | 1581670639.650200;1;1F;2;0;1234 4 | 1581670639.749900;1;20;4;0;12345678 5 | 1581670639.849550;1;2F;4;0;12345678 6 | 1581670639.950250;1;30;8;0;1234567890ABCDEF 7 | 1581670640.049950;1;3F;8;0;1234567890ABCDEF 8 | 1581670645.173450;2;0;2;0;1234 9 | 1581670645.273050;2;1F;2;0;1234 10 | 1581670645.372700;2;20;4;0;12345678 11 | 1581670645.472400;2;2F;4;0;12345678 12 | 1581670645.573150;2;30;8;0;1234567890ABCDEF 13 | 1581670645.672750;2;3F;8;0;1234567890ABCDEF 14 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_can_bus_1_CAN.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;IDE;DLC;DataLength;Dir;EDL;BRS;DataBytes 2 | 1581582536.664350;1;123;0;4;4;0;0;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_can_bus_1_CAN_PC.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;IDE;DLC;DataLength;Dir;EDL;BRS;DataBytes 2 | 1581582536.664350;1;123;0;4;4;0;0;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_can_bus_1_CAN_compressed.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;IDE;DLC;DataLength;Dir;EDL;BRS;DataBytes 2 | 1581582625.052750;1;123;0;4;4;0;0;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_can_bus_1_CAN_encrypted.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;IDE;DLC;DataLength;Dir;EDL;BRS;DataBytes 2 | 1581582675.647700;1;123;0;4;4;0;0;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_can_bus_2_CAN.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;IDE;DLC;DataLength;Dir;EDL;BRS;DataBytes 2 | 1581582557.638600;2;123;0;4;4;0;0;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_can_bus_2_CAN_compressed.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;IDE;DLC;DataLength;Dir;EDL;BRS;DataBytes 2 | 1581582638.112350;2;123;0;4;4;0;0;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_can_bus_2_CAN_encrypted.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;IDE;DLC;DataLength;Dir;EDL;BRS;DataBytes 2 | 1581582690.242150;2;123;0;4;4;0;0;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_lin_bus_1_LIN.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;DataLength;Dir;DataBytes 2 | 1581588071.199200;1;23;4;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_lin_bus_1_LIN_compressed.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;DataLength;Dir;DataBytes 2 | 1581588126.553550;1;23;4;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_lin_bus_1_LIN_encrypted.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;DataLength;Dir;DataBytes 2 | 1581588182.038800;1;23;4;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_lin_bus_2_CAN_encrypted.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;IDE;DLC;DataLength;Dir;EDL;BRS;DataBytes 2 | 1578470355.583550;2;123;0;4;4;0;0;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_lin_bus_2_LIN.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;DataLength;Dir;DataBytes 2 | 1581588085.062050;2;23;4;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_lin_bus_2_LIN_compressed.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;DataLength;Dir;DataBytes 2 | 1581588142.371050;2;23;4;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_lin_bus_2_LIN_encrypted.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;DataLength;Dir;DataBytes 2 | 1581588194.764900;2;23;4;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_message_can_bus_1_1024_window_CAN.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;IDE;DLC;DataLength;Dir;EDL;BRS;DataBytes 2 | 1581582864.576700;1;123;0;4;4;0;0;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_message_can_bus_1_1024_window_CAN_encrypted.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;IDE;DLC;DataLength;Dir;EDL;BRS;DataBytes 2 | 1581583769.883750;1;123;0;4;4;0;0;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_message_can_bus_1_256_window_CAN.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;IDE;DLC;DataLength;Dir;EDL;BRS;DataBytes 2 | 1581582807.311300;1;123;0;4;4;0;0;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_message_can_bus_1_256_window_CAN_encrypted.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;IDE;DLC;DataLength;Dir;EDL;BRS;DataBytes 2 | 1581583651.072200;1;123;0;4;4;0;0;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_message_can_bus_1_512_window_CAN.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;IDE;DLC;DataLength;Dir;EDL;BRS;DataBytes 2 | 1581582834.376400;1;123;0;4;4;0;0;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/CSV/TestData/single_message_can_bus_1_512_window_CAN_encrypted.csv: -------------------------------------------------------------------------------- 1 | TimestampEpoch;BusChannel;ID;IDE;DLC;DataLength;Dir;EDL;BRS;DataBytes 2 | 1581583742.649700;1;123;0;4;4;0;0;0;12345678 3 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/Files/passwords_default.json: -------------------------------------------------------------------------------- 1 | { 2 | "default": "passwordpasswordpassword" 3 | } 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/Files/passwords_default_device_1.json: -------------------------------------------------------------------------------- 1 | { 2 | "default": "notthepasswordpasswordpassword", 3 | "25674460": "passwordpasswordpassword" 4 | } 5 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/Files/passwords_device_1.json: -------------------------------------------------------------------------------- 1 | { 2 | "25674459": "passwordpasswordpassword" 3 | } 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/Files/passwords_device_2.json: -------------------------------------------------------------------------------- 1 | { 2 | "25674460": "passwordpasswordpassword", 3 | "25674461": "notthepasswordpasswordpassword", 4 | "25674462": "notthepasswordpasswordpassword" 5 | } 6 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/Files/passwords_device_3.json: -------------------------------------------------------------------------------- 1 | { 2 | "25674459": "notthepasswordpasswordpassword", 3 | "25674460": "passwordpasswordpassword", 4 | "25674461": "notthepasswordpasswordpassword" 5 | } 6 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/Files/passwords_device_4.json: -------------------------------------------------------------------------------- 1 | { 2 | "25674458": "notthepasswordpasswordpassword", 3 | "25674459": "notthepasswordpasswordpassword", 4 | "25674460": "passwordpasswordpassword" 5 | } 6 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestConfiguration/ASC/ConvertIndividualCompressedFiles_ASC.json: -------------------------------------------------------------------------------- 1 | { 2 | "tool": "mdf2asc", 3 | "cases": [ 4 | { 5 | "input": [ 6 | { 7 | "name": "single_message_can_bus_1_256_window.MFC" 8 | } 9 | ], 10 | "output": [ 11 | { 12 | "name": "single_message_can_bus_1_256_window_CAN.asc", 13 | "comparision_data": "single_message_can_bus_1_256_window_CAN.asc" 14 | } 15 | ] 16 | }, 17 | { 18 | "input": [ 19 | { 20 | "name": "single_message_can_bus_1_512_window.MFC" 21 | } 22 | ], 23 | "output": [ 24 | { 25 | "name": "single_message_can_bus_1_512_window_CAN.asc", 26 | "comparision_data": "single_message_can_bus_1_512_window_CAN.asc" 27 | } 28 | ] 29 | }, 30 | { 31 | "input": [ 32 | { 33 | "name": "single_message_can_bus_1_1024_window.MFC" 34 | } 35 | ], 36 | "output": [ 37 | { 38 | "name": "single_message_can_bus_1_1024_window_CAN.asc", 39 | "comparision_data": "single_message_can_bus_1_1024_window_CAN.asc" 40 | } 41 | ] 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestConfiguration/CLX000/ConvertIndividualCompressedFiles_CLX000.json: -------------------------------------------------------------------------------- 1 | { 2 | "tool": "mdf2clx000", 3 | "cases": [ 4 | { 5 | "input": [ 6 | { 7 | "name": "single_message_can_bus_1_256_window.MFC" 8 | } 9 | ], 10 | "output": [ 11 | { 12 | "name": "single_message_can_bus_1_256_window_CAN_1.txt", 13 | "comparision_data": "single_message_can_bus_1_256_window_CAN_1.txt" 14 | } 15 | ] 16 | }, 17 | { 18 | "input": [ 19 | { 20 | "name": "single_message_can_bus_1_512_window.MFC" 21 | } 22 | ], 23 | "output": [ 24 | { 25 | "name": "single_message_can_bus_1_512_window_CAN_1.txt", 26 | "comparision_data": "single_message_can_bus_1_512_window_CAN_1.txt" 27 | } 28 | ] 29 | }, 30 | { 31 | "input": [ 32 | { 33 | "name": "single_message_can_bus_1_1024_window.MFC" 34 | } 35 | ], 36 | "output": [ 37 | { 38 | "name": "single_message_can_bus_1_1024_window_CAN_1.txt", 39 | "comparision_data": "single_message_can_bus_1_1024_window_CAN_1.txt" 40 | } 41 | ] 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestConfiguration/CSV/ConvertIndividualCompressedFiles_CSV.json: -------------------------------------------------------------------------------- 1 | { 2 | "tool": "mdf2csv", 3 | "cases": [ 4 | { 5 | "input": [ 6 | { 7 | "name": "single_message_can_bus_1_256_window.MFC" 8 | } 9 | ], 10 | "output": [ 11 | { 12 | "name": "single_message_can_bus_1_256_window_CAN.csv", 13 | "comparision_data": "single_message_can_bus_1_256_window_CAN.csv" 14 | } 15 | ] 16 | }, 17 | { 18 | "input": [ 19 | { 20 | "name": "single_message_can_bus_1_512_window.MFC" 21 | } 22 | ], 23 | "output": [ 24 | { 25 | "name": "single_message_can_bus_1_512_window_CAN.csv", 26 | "comparision_data": "single_message_can_bus_1_512_window_CAN.csv" 27 | } 28 | ] 29 | }, 30 | { 31 | "input": [ 32 | { 33 | "name": "single_message_can_bus_1_1024_window.MFC" 34 | } 35 | ], 36 | "output": [ 37 | { 38 | "name": "single_message_can_bus_1_1024_window_CAN.csv", 39 | "comparision_data": "single_message_can_bus_1_1024_window_CAN.csv" 40 | } 41 | ] 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestConfiguration/PCAP/ConvertIndividualCompressedFiles_PCAP.json: -------------------------------------------------------------------------------- 1 | { 2 | "tool": "mdf2pcap", 3 | "cases": [ 4 | { 5 | "input": [ 6 | { 7 | "name": "single_message_can_bus_1_256_window.MFC" 8 | } 9 | ], 10 | "output": [ 11 | { 12 | "name": "single_message_can_bus_1_256_window_CAN.pcap", 13 | "comparision_data": "single_message_can_bus_1_256_window_CAN.pcap" 14 | } 15 | ] 16 | }, 17 | { 18 | "input": [ 19 | { 20 | "name": "single_message_can_bus_1_512_window.MFC" 21 | } 22 | ], 23 | "output": [ 24 | { 25 | "name": "single_message_can_bus_1_512_window_CAN.pcap", 26 | "comparision_data": "single_message_can_bus_1_512_window_CAN.pcap" 27 | } 28 | ] 29 | }, 30 | { 31 | "input": [ 32 | { 33 | "name": "single_message_can_bus_1_1024_window.MFC" 34 | } 35 | ], 36 | "output": [ 37 | { 38 | "name": "single_message_can_bus_1_1024_window_CAN.pcap", 39 | "comparision_data": "single_message_can_bus_1_1024_window_CAN.pcap" 40 | } 41 | ] 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestConfiguration/PEAK/Format_1_1/ConvertIndividualCompressedFiles_PEAK.json: -------------------------------------------------------------------------------- 1 | { 2 | "tool": "mdf2peak", 3 | "cases": [ 4 | { 5 | "input": [ 6 | { 7 | "name": "single_message_can_bus_1_256_window.MFC" 8 | } 9 | ], 10 | "output": [ 11 | { 12 | "name": "single_message_can_bus_1_256_window_CAN.trc", 13 | "comparision_data": "single_message_can_bus_1_256_window_CAN.trc" 14 | } 15 | ] 16 | }, 17 | { 18 | "input": [ 19 | { 20 | "name": "single_message_can_bus_1_512_window.MFC" 21 | } 22 | ], 23 | "output": [ 24 | { 25 | "name": "single_message_can_bus_1_512_window_CAN.trc", 26 | "comparision_data": "single_message_can_bus_1_512_window_CAN.trc" 27 | } 28 | ] 29 | }, 30 | { 31 | "input": [ 32 | { 33 | "name": "single_message_can_bus_1_1024_window.MFC" 34 | } 35 | ], 36 | "output": [ 37 | { 38 | "name": "single_message_can_bus_1_1024_window_CAN.trc", 39 | "comparision_data": "single_message_can_bus_1_1024_window_CAN.trc" 40 | } 41 | ] 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestConfiguration/PEAK/Format_2_1/ConvertIndividualCompressedFiles_PEAK.json: -------------------------------------------------------------------------------- 1 | { 2 | "tool": "mdf2peak", 3 | "cases": [ 4 | { 5 | "input": [ 6 | { 7 | "name": "single_message_can_bus_1_256_window.MFC" 8 | } 9 | ], 10 | "output": [ 11 | { 12 | "name": "single_message_can_bus_1_256_window_CAN.trc", 13 | "comparision_data": "single_message_can_bus_1_256_window_CAN.trc" 14 | } 15 | ] 16 | }, 17 | { 18 | "input": [ 19 | { 20 | "name": "single_message_can_bus_1_512_window.MFC" 21 | } 22 | ], 23 | "output": [ 24 | { 25 | "name": "single_message_can_bus_1_512_window_CAN.trc", 26 | "comparision_data": "single_message_can_bus_1_512_window_CAN.trc" 27 | } 28 | ] 29 | }, 30 | { 31 | "input": [ 32 | { 33 | "name": "single_message_can_bus_1_1024_window.MFC" 34 | } 35 | ], 36 | "output": [ 37 | { 38 | "name": "single_message_can_bus_1_1024_window_CAN.trc", 39 | "comparision_data": "single_message_can_bus_1_1024_window_CAN.trc" 40 | } 41 | ] 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestConfiguration/SocketCAN/ConvertIndividualCompressedFiles_SocketCAN.json: -------------------------------------------------------------------------------- 1 | { 2 | "tool": "mdf2socketcan", 3 | "cases": [ 4 | { 5 | "input": [ 6 | { 7 | "name": "single_message_can_bus_1_256_window.MFC" 8 | } 9 | ], 10 | "output": [ 11 | { 12 | "name": "single_message_can_bus_1_256_window_CAN.log", 13 | "comparision_data": "single_message_can_bus_1_256_window_CAN.log" 14 | } 15 | ] 16 | }, 17 | { 18 | "input": [ 19 | { 20 | "name": "single_message_can_bus_1_512_window.MFC" 21 | } 22 | ], 23 | "output": [ 24 | { 25 | "name": "single_message_can_bus_1_512_window_CAN.log", 26 | "comparision_data": "single_message_can_bus_1_512_window_CAN.log" 27 | } 28 | ] 29 | }, 30 | { 31 | "input": [ 32 | { 33 | "name": "single_message_can_bus_1_1024_window.MFC" 34 | } 35 | ], 36 | "output": [ 37 | { 38 | "name": "single_message_can_bus_1_1024_window_CAN.log", 39 | "comparision_data": "single_message_can_bus_1_1024_window_CAN.log" 40 | } 41 | ] 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/.gitattributes: -------------------------------------------------------------------------------- 1 | *.MF4 filter=lfs diff=lfs merge=lfs -text 2 | *.MFC filter=lfs diff=lfs merge=lfs -text 3 | *.MFE filter=lfs diff=lfs merge=lfs -text 4 | *.MFM filter=lfs diff=lfs merge=lfs -text 5 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/invalid.MF4: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f1234d75178d892a133a410355a5a990cf75d2f33eba25d575943d4df632f3a4 3 | size 7 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/multiGeneratorLIN.log: -------------------------------------------------------------------------------- 1 | (1581668399.000000) lin0 000#1234 2 | (1581668399.100000) lin0 01F#1234 3 | (1581668399.200000) lin0 020#12345678 4 | (1581668399.300000) lin0 02F#12345678 5 | (1581668399.400000) lin0 030#1234567890ABCDEF 6 | (1581668399.500000) lin0 03F#1234567890ABCDEF 7 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/multiple.MF4: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cace949d0ed8cbf516dec5c8561e752103c0d1d52200d22590da6e9bb76f79f4 3 | size 14232 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/multiple_fin.MF4: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:237cf0e578882663af31ba7c11d4435769055c6a37ae30521388496ab2cf2428 3 | size 13904 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/passwords.json: -------------------------------------------------------------------------------- 1 | { 2 | "default": "passwordpasswordpassword" 3 | } 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_can_bus_1.MF4: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:66a485d80884c44b2af4b8d88e4f667e0e51721c378949dfaeac8907685cbbc4 3 | size 7272 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_can_bus_1.MFC: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:eef867a856c09f52ed8c59752ef2af5f6550af2428e22568037c745606565772 3 | size 2041 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_can_bus_1.MFE: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a9368d521d594005a13d6a290c6935b90858d73c7e3cd8ac2386e35bc5aff70d 3 | size 7340 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_can_bus_2.MF4: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7f5cd965994758e1bd8f17ea5bf80b424da2d6693c73104ff9eff2c9786c06c3 3 | size 7272 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_can_bus_2.MFC: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:30d89b641f10f403e251a263c69748a6624910d0af978646947b56c49ec6f143 3 | size 2041 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_can_bus_2.MFE: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:66bc51ea251d6bf222f4f1456c3eec151f0c626d740251a79fdae4c26f450f81 3 | size 7340 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_lin_bus_1.MF4: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:722f08f2a748dc200aadc523ec611e0e76940ce404add776f313be4ddb18268f 3 | size 7260 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_lin_bus_1.MFC: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:67708945f2e8eaa980a3f4375442981891f79bd3f2f4a8a90ee0aad24fd4a3db 3 | size 2038 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_lin_bus_1.MFE: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6508a200d6b68cd00f22d51ba7876c4567b820f20c06ea0bfa339ff8798ace82 3 | size 7328 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_lin_bus_2.MF4: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:053b4136a362dc4a47e08649b58bca020384effbf6787f3cc630a194963f1be1 3 | size 7260 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_lin_bus_2.MFC: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8528cc32036d1e4c891a80a3ffd80860c8cac926c41bf43c3a92266822c7995e 3 | size 2038 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_lin_bus_2.MFE: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:64d8332fd3a2e0b65b9ba12031ec823a5152c7e86a35fd517e4ef0efde7e07ce 3 | size 7328 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_message_can_bus_1_1024_window.MFC: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:96d1b1920413904961969f5f2e06df85596a1809e862506753740920110b3431 3 | size 1691 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_message_can_bus_1_1024_window.MFM: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a0776e88f9d3d79c7ddb3d150a68254b840b19ea0c3239d3569dc3e3a3b151a5 3 | size 1758 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_message_can_bus_1_256_window.MFC: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e224ec3b236157ea72cb452ecef7a27d5c7587b1cb733652da10612e1bfd4d59 3 | size 2041 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_message_can_bus_1_256_window.MFM: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d039ccfa8b71c5a632f136ca2d4386294393e53357f158601e3d6e41f3103423 3 | size 2109 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_message_can_bus_1_512_window.MFC: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:dcf3c71d4ea3f28c6ce50b25dbdf070deeb5a0b5c94147489378b8c86fc90248 3 | size 1993 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/TestData/single_message_can_bus_1_512_window.MFM: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6e79228783cb2d4e1183f4e5fa8fb8d3da3bdd76a4d724c2d798b68a6d8d644b 3 | size 2061 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/Common/Tool.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class Tool(Enum): 5 | Unknown = None 6 | ASC = "mdf2asc" 7 | CLX000 = "mdf2clx000" 8 | CSV = "mdf2csv" 9 | PCAP = "mdf2pcap" 10 | PEAK = "mdf2peak" 11 | SocketCAN = "mdf2socketcan" 12 | 13 | def __str__(self): 14 | return self.name 15 | 16 | pass 17 | -------------------------------------------------------------------------------- /Tools/SystemTests/PCAP/TestData/multiple_CAN.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/SystemTests/PCAP/TestData/multiple_CAN.pcap -------------------------------------------------------------------------------- /Tools/SystemTests/PCAP/TestData/single_can_bus_1_CAN.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/SystemTests/PCAP/TestData/single_can_bus_1_CAN.pcap -------------------------------------------------------------------------------- /Tools/SystemTests/PCAP/TestData/single_can_bus_1_CAN_PC.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/SystemTests/PCAP/TestData/single_can_bus_1_CAN_PC.pcap -------------------------------------------------------------------------------- /Tools/SystemTests/PCAP/TestData/single_can_bus_1_CAN_compressed.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/SystemTests/PCAP/TestData/single_can_bus_1_CAN_compressed.pcap -------------------------------------------------------------------------------- /Tools/SystemTests/PCAP/TestData/single_can_bus_1_CAN_encrypted.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/SystemTests/PCAP/TestData/single_can_bus_1_CAN_encrypted.pcap -------------------------------------------------------------------------------- /Tools/SystemTests/PCAP/TestData/single_can_bus_2_CAN.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/SystemTests/PCAP/TestData/single_can_bus_2_CAN.pcap -------------------------------------------------------------------------------- /Tools/SystemTests/PCAP/TestData/single_can_bus_2_CAN_compressed.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/SystemTests/PCAP/TestData/single_can_bus_2_CAN_compressed.pcap -------------------------------------------------------------------------------- /Tools/SystemTests/PCAP/TestData/single_can_bus_2_CAN_encrypted.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/SystemTests/PCAP/TestData/single_can_bus_2_CAN_encrypted.pcap -------------------------------------------------------------------------------- /Tools/SystemTests/PCAP/TestData/single_message_can_bus_1_1024_window_CAN.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/SystemTests/PCAP/TestData/single_message_can_bus_1_1024_window_CAN.pcap -------------------------------------------------------------------------------- /Tools/SystemTests/PCAP/TestData/single_message_can_bus_1_1024_window_CAN_encrypted.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/SystemTests/PCAP/TestData/single_message_can_bus_1_1024_window_CAN_encrypted.pcap -------------------------------------------------------------------------------- /Tools/SystemTests/PCAP/TestData/single_message_can_bus_1_256_window_CAN.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/SystemTests/PCAP/TestData/single_message_can_bus_1_256_window_CAN.pcap -------------------------------------------------------------------------------- /Tools/SystemTests/PCAP/TestData/single_message_can_bus_1_256_window_CAN_encrypted.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/SystemTests/PCAP/TestData/single_message_can_bus_1_256_window_CAN_encrypted.pcap -------------------------------------------------------------------------------- /Tools/SystemTests/PCAP/TestData/single_message_can_bus_1_512_window_CAN.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/SystemTests/PCAP/TestData/single_message_can_bus_1_512_window_CAN.pcap -------------------------------------------------------------------------------- /Tools/SystemTests/PCAP/TestData/single_message_can_bus_1_512_window_CAN_encrypted.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSS-Electronics/mdf4-converters/67164464cb542cbcec093d88711d2b62581b4077/Tools/SystemTests/PCAP/TestData/single_message_can_bus_1_512_window_CAN_encrypted.pcap -------------------------------------------------------------------------------- /Tools/SystemTests/PEAK/TestData/single_can_bus_1_CAN.trc: -------------------------------------------------------------------------------- 1 | ;$FILEVERSION=2.1 2 | ;$STARTTIME=43873.3534336152 3 | ;$COLUMNS=N,O,T,B,I,d,L,D 4 | 0 0.000 DT 1 0123 Rx 04 12 34 56 78 5 | -------------------------------------------------------------------------------- /Tools/SystemTests/PEAK/TestData/single_can_bus_1_CAN_PC.trc: -------------------------------------------------------------------------------- 1 | ;$FILEVERSION=2.1 2 | ;$STARTTIME=43873.3534336152 3 | ;$COLUMNS=N,O,T,B,I,d,L,D 4 | 0 0.000 DT 1 0123 Rx 04 12 34 56 78 5 | -------------------------------------------------------------------------------- /Tools/SystemTests/PEAK/TestData/single_can_bus_1_CAN_compressed.trc: -------------------------------------------------------------------------------- 1 | ;$FILEVERSION=2.1 2 | ;$STARTTIME=43873.3544566291 3 | ;$COLUMNS=N,O,T,B,I,d,L,D 4 | 0 0.000 DT 1 0123 Rx 04 12 34 56 78 5 | -------------------------------------------------------------------------------- /Tools/SystemTests/PEAK/TestData/single_can_bus_1_CAN_encrypted.trc: -------------------------------------------------------------------------------- 1 | ;$FILEVERSION=2.1 2 | ;$STARTTIME=43873.3550422188 3 | ;$COLUMNS=N,O,T,B,I,d,L,D 4 | 0 0.000 DT 1 0123 Rx 04 12 34 56 78 5 | -------------------------------------------------------------------------------- /Tools/SystemTests/PEAK/TestData/single_can_bus_2_CAN.trc: -------------------------------------------------------------------------------- 1 | ;$FILEVERSION=2.1 2 | ;$STARTTIME=43873.3536763727 3 | ;$COLUMNS=N,O,T,B,I,d,L,D 4 | 0 0.000 DT 2 0123 Rx 04 12 34 56 78 5 | -------------------------------------------------------------------------------- /Tools/SystemTests/PEAK/TestData/single_can_bus_2_CAN_compressed.trc: -------------------------------------------------------------------------------- 1 | ;$FILEVERSION=2.1 2 | ;$STARTTIME=43873.3546077818 3 | ;$COLUMNS=N,O,T,B,I,d,L,D 4 | 0 0.000 DT 2 0123 Rx 04 12 34 56 78 5 | -------------------------------------------------------------------------------- /Tools/SystemTests/PEAK/TestData/single_can_bus_2_CAN_encrypted.trc: -------------------------------------------------------------------------------- 1 | ;$FILEVERSION=2.1 2 | ;$STARTTIME=43873.3552111360 3 | ;$COLUMNS=N,O,T,B,I,d,L,D 4 | 0 0.000 DT 2 0123 Rx 04 12 34 56 78 5 | -------------------------------------------------------------------------------- /Tools/SystemTests/PEAK/TestData/single_message_can_bus_1_1024_window_CAN.trc: -------------------------------------------------------------------------------- 1 | ;$FILEVERSION=2.1 2 | ;$STARTTIME=43873.3572288970 3 | ;$COLUMNS=N,O,T,B,I,d,L,D 4 | 0 0.000 DT 1 0123 Rx 04 12 34 56 78 5 | -------------------------------------------------------------------------------- /Tools/SystemTests/PEAK/TestData/single_message_can_bus_1_1024_window_CAN_encrypted.trc: -------------------------------------------------------------------------------- 1 | ;$FILEVERSION=2.1 2 | ;$STARTTIME=43873.3677069878 3 | ;$COLUMNS=N,O,T,B,I,d,L,D 4 | 0 0.000 DT 1 0123 Rx 04 12 34 56 78 5 | -------------------------------------------------------------------------------- /Tools/SystemTests/PEAK/TestData/single_message_can_bus_1_256_window_CAN.trc: -------------------------------------------------------------------------------- 1 | ;$FILEVERSION=2.1 2 | ;$STARTTIME=43873.3565661030 3 | ;$COLUMNS=N,O,T,B,I,d,L,D 4 | 0 0.000 DT 1 0123 Rx 04 12 34 56 78 5 | -------------------------------------------------------------------------------- /Tools/SystemTests/PEAK/TestData/single_message_can_bus_1_256_window_CAN_encrypted.trc: -------------------------------------------------------------------------------- 1 | ;$FILEVERSION=2.1 2 | ;$STARTTIME=43873.3663318541 3 | ;$COLUMNS=N,O,T,B,I,d,L,D 4 | 0 0.000 DT 1 0123 Rx 04 12 34 56 78 5 | -------------------------------------------------------------------------------- /Tools/SystemTests/PEAK/TestData/single_message_can_bus_1_512_window_CAN.trc: -------------------------------------------------------------------------------- 1 | ;$FILEVERSION=2.1 2 | ;$STARTTIME=43873.3568793565 3 | ;$COLUMNS=N,O,T,B,I,d,L,D 4 | 0 0.000 DT 1 0123 Rx 04 12 34 56 78 5 | -------------------------------------------------------------------------------- /Tools/SystemTests/PEAK/TestData/single_message_can_bus_1_512_window_CAN_encrypted.trc: -------------------------------------------------------------------------------- 1 | ;$FILEVERSION=2.1 2 | ;$STARTTIME=43873.3673917789 3 | ;$COLUMNS=N,O,T,B,I,d,L,D 4 | 0 0.000 DT 1 0123 Rx 04 12 34 56 78 5 | -------------------------------------------------------------------------------- /Tools/SystemTests/README.md: -------------------------------------------------------------------------------- 1 | Point the path in `config.json` to where the release binaries are located. -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/multiple_LIN.log: -------------------------------------------------------------------------------- 1 | (1581670639.550650) lin0 000#1234 2 | (1581670639.650200) lin0 01F#1234 3 | (1581670639.749900) lin0 020#12345678 4 | (1581670639.849550) lin0 02F#12345678 5 | (1581670639.950250) lin0 030#1234567890ABCDEF 6 | (1581670640.049950) lin0 03F#1234567890ABCDEF 7 | (1581670645.173450) lin1 000#1234 8 | (1581670645.273050) lin1 01F#1234 9 | (1581670645.372700) lin1 020#12345678 10 | (1581670645.472400) lin1 02F#12345678 11 | (1581670645.573150) lin1 030#1234567890ABCDEF 12 | (1581670645.672750) lin1 03F#1234567890ABCDEF 13 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_can_bus_1_CAN.log: -------------------------------------------------------------------------------- 1 | (1581582536.664350) can0 123#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_can_bus_1_CAN_PC.log: -------------------------------------------------------------------------------- 1 | (1581582536.664354) can0 123#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_can_bus_1_CAN_compressed.log: -------------------------------------------------------------------------------- 1 | (1581582625.052750) can0 123#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_can_bus_1_CAN_encrypted.log: -------------------------------------------------------------------------------- 1 | (1581582675.647700) can0 123#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_can_bus_2_CAN.log: -------------------------------------------------------------------------------- 1 | (1581582557.638600) can1 123#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_can_bus_2_CAN_compressed.log: -------------------------------------------------------------------------------- 1 | (1581582638.112350) can1 123#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_can_bus_2_CAN_encrypted.log: -------------------------------------------------------------------------------- 1 | (1581582690.242150) can1 123#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_lin_bus_1_LIN.log: -------------------------------------------------------------------------------- 1 | (1581588071.199200) lin0 023#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_lin_bus_1_LIN_compressed.log: -------------------------------------------------------------------------------- 1 | (1581588126.553550) lin0 023#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_lin_bus_1_LIN_encrypted.log: -------------------------------------------------------------------------------- 1 | (1581588182.038800) lin0 023#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_lin_bus_2_LIN.log: -------------------------------------------------------------------------------- 1 | (1581588085.062050) lin1 023#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_lin_bus_2_LIN_compressed.log: -------------------------------------------------------------------------------- 1 | (1581588142.371050) lin1 023#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_lin_bus_2_LIN_encrypted.log: -------------------------------------------------------------------------------- 1 | (1581588194.764900) lin1 023#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_message_can_bus_1_1024_window_CAN.log: -------------------------------------------------------------------------------- 1 | (1581582864.576700) can0 123#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_message_can_bus_1_1024_window_CAN_encrypted.log: -------------------------------------------------------------------------------- 1 | (1581583769.883750) can0 123#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_message_can_bus_1_256_window_CAN.log: -------------------------------------------------------------------------------- 1 | (1581582807.311300) can0 123#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_message_can_bus_1_256_window_CAN_encrypted.log: -------------------------------------------------------------------------------- 1 | (1581583651.072200) can0 123#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_message_can_bus_1_512_window_CAN.log: -------------------------------------------------------------------------------- 1 | (1581582834.376400) can0 123#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/SocketCAN/TestData/single_message_can_bus_1_512_window_CAN_encrypted.log: -------------------------------------------------------------------------------- 1 | (1581583742.649700) can0 123#12345678 2 | -------------------------------------------------------------------------------- /Tools/SystemTests/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "release_binaries": "Release" 3 | } 4 | -------------------------------------------------------------------------------- /Tools/SystemTests/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | addopts = -s --keep=0 3 | 4 | markers = 5 | ASC: mark a test as a ASC converter test. 6 | CLX000: mark a test as a CLX000 converter test. 7 | CSV: mark a test as a CSV converter test. 8 | PCAP: mark a test as a PCAP converter test. 9 | PEAK: mark a test as a PEAK converter test. 10 | SocketCAN: mark a test as a SocketCAN converter test. 11 | 12 | python_files = *_Test.py *_test.py 13 | -------------------------------------------------------------------------------- /vcpkg.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mdf4", 3 | "version-string": "0.0.1", 4 | "port-version": 6, 5 | "homepage": "", 6 | "description": "", 7 | "dependencies": [ 8 | "boost-log", 9 | "boost-dll", 10 | "boost-filesystem", 11 | "boost-program-options", 12 | "boost-iostreams", 13 | "boost-bimap", 14 | "botan", 15 | "fmt", 16 | "neargye-semver", 17 | "heatshrink" 18 | ] 19 | } 20 | --------------------------------------------------------------------------------