From bd5965957d6f91e7e20abf1412b7ace1f0cb3e43 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 7 Sep 2022 15:13:38 +0200 Subject: [PATCH] Fix computation of CRC came out of unit tests of read/write registers functionality. --- src/modules/protocol.h | 4 ++-- tests/unit/application/test_application.cpp | 2 +- tests/unit/modules/protocol/test_protocol.cpp | 5 +++-- version.cmake | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/modules/protocol.h b/src/modules/protocol.h index 434c5ad..bee500b 100644 --- a/src/modules/protocol.h +++ b/src/modules/protocol.h @@ -8,7 +8,7 @@ namespace modules { /// @brief The MMU communication protocol implementation and related stuff. /// /// See description of the new protocol in the MMU 2021 doc -/// @@TODO possibly add some checksum to verify the correctness of messages + namespace protocol { /// Definition of request message codes @@ -58,7 +58,7 @@ struct RequestMsg { uint8_t crc = 0; crc = modules::crc::CRC8::CCITT_updateCX(0, (uint8_t)code); crc = modules::crc::CRC8::CCITT_updateCX(crc, value); - crc = modules::crc::CRC8::CCITT_updateCX(crc, value2); + crc = modules::crc::CRC8::CCITT_updateW(crc, value2); return crc; } diff --git a/tests/unit/application/test_application.cpp b/tests/unit/application/test_application.cpp index 17f5997..43cc5c1 100644 --- a/tests/unit/application/test_application.cpp +++ b/tests/unit/application/test_application.cpp @@ -9,5 +9,5 @@ TEST_CASE("application::ReportVersion", "[application]") { application.ReportReadRegister(mp::RequestMsg(mp::RequestMsgCodes::Version, 0)); - REQUIRE(modules::serial::tx == "S0 A2*54\n"); + REQUIRE(modules::serial::tx == "S0 A2*37\n"); } diff --git a/tests/unit/modules/protocol/test_protocol.cpp b/tests/unit/modules/protocol/test_protocol.cpp index 130db60..4b4a086 100644 --- a/tests/unit/modules/protocol/test_protocol.cpp +++ b/tests/unit/modules/protocol/test_protocol.cpp @@ -65,8 +65,9 @@ std::string MakeCRC(const std::string_view src) { // code uint8_t crc = modules::crc::CRC8::CCITT_updateCX(0, src[0]); // scan hex value - uint16_t rqValue = std::stoul(src.data() + 1, nullptr, 16); - crc = modules::crc::CRC8::CCITT_updateW(crc, rqValue); + uint8_t rqValue = std::stoul(src.data() + 1, nullptr, 16); + crc = modules::crc::CRC8::CCITT_updateCX(crc, rqValue); + crc = modules::crc::CRC8::CCITT_updateW(crc, 0); if (!src[2]) return MakeCRC(crc); // eof // [2] is a space diff --git a/version.cmake b/version.cmake index 1c718ed..2d8cbbf 100644 --- a/version.cmake +++ b/version.cmake @@ -10,6 +10,6 @@ set(PROJECT_VERSION_MINOR CACHE STRING "Project minor version" FORCE ) set(PROJECT_VERSION_REV - 2 + 3 CACHE STRING "Project revision" FORCE )