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;
|
||||
|
||||
if(hasData) {
|
||||
LINMessage::calcChecksum(*linmsg);
|
||||
// len includes data bytes + 1 checksum byte
|
||||
linpacket->CoreMiniBitsLIN.len = static_cast<uint16_t>(dataLen + 1);
|
||||
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);
|
||||
}
|
||||
|
||||
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) {
|
||||
std::vector<uint8_t> bytestream;
|
||||
auto message = std::make_shared<icsneo::LINMessage>(static_cast<uint8_t>(0x11u));
|
||||
|
||||
Reference in New Issue
Block a user