mirror of
https://github.com/intrepidcs/libicsneo.git
synced 2026-11-04 12:59:07 +01:00
Message: LIN: Fix checksum
This commit is contained in:
committed by
Kyle Schwarz
parent
6ac041cadc
commit
fd8f7b328f
@@ -152,6 +152,7 @@ static std::vector<uint8_t> EncodeFromMessageLIN(std::shared_ptr<Frame> frame, c
|
|||||||
linmsg->linMsgType == LINMessage::Type::LIN_UPDATE_RESPONDER) && dataLen > 0;
|
linmsg->linMsgType == LINMessage::Type::LIN_UPDATE_RESPONDER) && dataLen > 0;
|
||||||
|
|
||||||
if(hasData) {
|
if(hasData) {
|
||||||
|
LINMessage::calcChecksum(*linmsg);
|
||||||
// len includes data bytes + 1 checksum byte
|
// len includes data bytes + 1 checksum byte
|
||||||
linpacket->CoreMiniBitsLIN.len = static_cast<uint16_t>(dataLen + 1);
|
linpacket->CoreMiniBitsLIN.len = static_cast<uint16_t>(dataLen + 1);
|
||||||
std::copy(linmsg->data.begin(), linmsg->data.begin() + dataLen, linpacket->data);
|
std::copy(linmsg->data.begin(), linmsg->data.begin() + dataLen, linpacket->data);
|
||||||
|
|||||||
@@ -174,6 +174,19 @@ TEST_F(LINEncoderDecoderTest, TransmitMessageBreakOnlySetsCommander) {
|
|||||||
EXPECT_EQ(lin->CoreMiniBitsLIN.BreakOnly, 1);
|
EXPECT_EQ(lin->CoreMiniBitsLIN.BreakOnly, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(LINEncoderDecoderTest, TransmitMessageCalculatesChecksum) {
|
||||||
|
auto message = std::make_shared<icsneo::LINMessage>(static_cast<uint8_t>(0x22u));
|
||||||
|
message->network = icsneo::Network::NetID::LIN_02;
|
||||||
|
message->linMsgType = icsneo::LINMessage::Type::LIN_UPDATE_RESPONDER;
|
||||||
|
message->isEnhancedChecksum = true;
|
||||||
|
message->data = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88};
|
||||||
|
auto bytes = TransmitMessage::EncodeFromMessage(message, 1, report);
|
||||||
|
ASSERT_GE(bytes.size(), sizeof(TransmitMessage));
|
||||||
|
auto* tx = reinterpret_cast<TransmitMessage*>(bytes.data());
|
||||||
|
auto* lin = reinterpret_cast<HardwareLINPacket*>(tx->commonHeader);
|
||||||
|
EXPECT_EQ(lin->CoreMiniBitsLIN.LINByte9, 0xB6);
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(LINEncoderDecoderTest, PacketEncoderControllerWithDataTest) {
|
TEST_F(LINEncoderDecoderTest, PacketEncoderControllerWithDataTest) {
|
||||||
std::vector<uint8_t> bytestream;
|
std::vector<uint8_t> bytestream;
|
||||||
auto message = std::make_shared<icsneo::LINMessage>(static_cast<uint8_t>(0x11u));
|
auto message = std::make_shared<icsneo::LINMessage>(static_cast<uint8_t>(0x11u));
|
||||||
|
|||||||
Reference in New Issue
Block a user