From c38455c3b8bc6deeb110a7c250d6c4cba92e1335 Mon Sep 17 00:00:00 2001 From: Tobias Lorenz Date: Thu, 6 Sep 2018 21:24:03 +0200 Subject: [PATCH] Fix CanFdMessage64 Signed-off-by: Tobias Lorenz --- CHANGELOG.md | 4 ++++ src/Vector/BLF/CanFdMessage64.cpp | 4 ++++ src/Vector/BLF/CanFdMessage64.h | 4 ++-- src/Vector/BLF/docs/examples/Parser.cpp | 5 ++++- .../events_from_binlog/test_CanFdMessage64.blf | Bin 552 -> 552 bytes .../BLF/tests/unittests/test_CanFdMessage64.cpp | 2 +- 6 files changed, 15 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d475c5..ef46244 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [Unreleased] +### Fixed +- Fixed CanFdMessage64 + ## [2.0.1] - 2018-08-23 ### Fixed - Fixed memory leak with introduction of std::shared_ptr diff --git a/src/Vector/BLF/CanFdMessage64.cpp b/src/Vector/BLF/CanFdMessage64.cpp index 0f87bca..6a825a6 100644 --- a/src/Vector/BLF/CanFdMessage64.cpp +++ b/src/Vector/BLF/CanFdMessage64.cpp @@ -65,6 +65,7 @@ void CanFdMessage64::read(AbstractFile & is) is.read(reinterpret_cast(&dir), sizeof(dir)); is.read(reinterpret_cast(&extDataOffset), sizeof(extDataOffset)); is.read(reinterpret_cast(&crc), sizeof(crc)); + data.resize(validDataBytes); is.read(reinterpret_cast(data.data()), static_cast(data.size())); if (extDataOffset != 0) { CanFdExtFrameData::read(is); @@ -73,6 +74,9 @@ void CanFdMessage64::read(AbstractFile & is) void CanFdMessage64::write(AbstractFile & os) { + /* pre processing */ + validDataBytes = static_cast(data.size()); + ObjectHeader::write(os); os.write(reinterpret_cast(&channel), sizeof(channel)); os.write(reinterpret_cast(&dlc), sizeof(dlc)); diff --git a/src/Vector/BLF/CanFdMessage64.h b/src/Vector/BLF/CanFdMessage64.h index d2ec5a0..25d8203 100644 --- a/src/Vector/BLF/CanFdMessage64.h +++ b/src/Vector/BLF/CanFdMessage64.h @@ -23,7 +23,7 @@ #include -#include +#include #include #include @@ -196,7 +196,7 @@ class VECTOR_BLF_EXPORT CanFdMessage64 final : public ObjectHeader, public CanFd * than 64 bytes, according to the value of * dlc). */ - std::array data; + std::vector data; }; } diff --git a/src/Vector/BLF/docs/examples/Parser.cpp b/src/Vector/BLF/docs/examples/Parser.cpp index d7dc364..1b7f3e0 100644 --- a/src/Vector/BLF/docs/examples/Parser.cpp +++ b/src/Vector/BLF/docs/examples/Parser.cpp @@ -1569,7 +1569,7 @@ void show(Vector::BLF::CanFdMessage * obj) void show(Vector::BLF::CanFdMessage64 * obj) { std::cout << "CanFdMessage64:"; - std::cout << " channel=" << std::dec << obj->channel; + std::cout << " channel=" << std::dec << static_cast(obj->channel); std::cout << " dlc=" << std::dec << static_cast(obj->dlc); std::cout << " validDataBytes=" << std::dec << static_cast(obj->validDataBytes); std::cout << " txCount=" << std::dec << static_cast(obj->txCount); @@ -2479,6 +2479,9 @@ int main(int argc, char * argv[]) case Vector::BLF::ObjectType::ETHERNET_ERROR_FORWARDED: show(reinterpret_cast(ohb)); break; + + default: + std::cout << "Unknown ObjectType" << std::endl; } /* check objectSize */ diff --git a/src/Vector/BLF/tests/unittests/events_from_binlog/test_CanFdMessage64.blf b/src/Vector/BLF/tests/unittests/events_from_binlog/test_CanFdMessage64.blf index 402d789378c85a81fab28182d3cfdffbad75982c..73170cc76c717b3fc0929224b318018600ab6dbc 100644 GIT binary patch delta 17 ZcmZ3%vVvv8B}Rvdm-`tVCMPo<1pq!+2J8R; delta 17 ZcmZ3%vVvv8B}U_km-`uwCnqx=1pqyj2GRfk diff --git a/src/Vector/BLF/tests/unittests/test_CanFdMessage64.cpp b/src/Vector/BLF/tests/unittests/test_CanFdMessage64.cpp index b991c9c..b29baab 100644 --- a/src/Vector/BLF/tests/unittests/test_CanFdMessage64.cpp +++ b/src/Vector/BLF/tests/unittests/test_CanFdMessage64.cpp @@ -35,7 +35,7 @@ BOOST_AUTO_TEST_CASE(CanFdMessage64) /* CanFdMessage64 */ BOOST_CHECK_EQUAL(obj->channel, 0x11); BOOST_CHECK_EQUAL(obj->dlc, 0x22); - BOOST_CHECK_EQUAL(obj->validDataBytes, 0x33); + BOOST_CHECK_EQUAL(obj->validDataBytes, 0x40); BOOST_CHECK_EQUAL(obj->txCount, 0x44); BOOST_CHECK_EQUAL(obj->id, 0x55555555); BOOST_CHECK_EQUAL(obj->frameLength, 0x66666666);