71 lines
1.4 KiB
C++
71 lines
1.4 KiB
C++
/**
|
|
* @file tests/can_crc.cpp
|
|
* @brief CAN packet CRC tests
|
|
* @date Oct 20, 2015
|
|
* @author jjacobs
|
|
* @copyright 2015 Dual Inventive Technology Centre B.V.
|
|
*
|
|
* CAN packet CRC tests
|
|
*/
|
|
#include <di/can/crc.h>
|
|
#include <di/can/msg.h>
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
/**
|
|
* Calculate CRC on 1 byte payload.
|
|
*/
|
|
TEST(can_crc, calc_mft_payload_1_byte) {
|
|
struct di_can_msg msg;
|
|
uint16_t crc;
|
|
uint8_t data[] = {
|
|
0x55,
|
|
};
|
|
|
|
msg.size = sizeof(data);
|
|
msg.msg = data;
|
|
EXPECT_EQ(DNOK, di_can_crc_calc(&msg, &crc));
|
|
EXPECT_EQ(0xeba0, crc);
|
|
}
|
|
|
|
/**
|
|
* Calculate CRC on 1 byte payload.
|
|
*/
|
|
TEST(can_crc, check_mft_payload_1_byte) {
|
|
struct di_can_msg msg;
|
|
uint16_t crc = 0xeba0;
|
|
uint8_t data[] = {
|
|
0x55,
|
|
};
|
|
|
|
msg.size = sizeof(data);
|
|
msg.msg = data;
|
|
EXPECT_EQ(DNOK, di_can_crc_check(&msg, crc));
|
|
}
|
|
|
|
/**
|
|
* Check if the di_can_crc_is_msg_valid
|
|
*/
|
|
TEST(can_crc, is_msg_valid) {
|
|
struct di_can_msg msg;
|
|
struct di_buffer buf;
|
|
|
|
uint8_t data[] = {
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFT Source/Dest NodeID
|
|
0x00, 0x00, 0x01, 0xeb, 0xa0, 0x00, 0x00, 0x00, // MFT-meta ptype,psize,pcrc (3 bytes zero fill, unused)
|
|
0x55
|
|
};
|
|
|
|
buf.data = data;
|
|
buf.size = sizeof(data);
|
|
|
|
msg.size = sizeof(data);
|
|
msg.msg = data;
|
|
msg.buf = &buf;
|
|
|
|
EXPECT_TRUE(di_can_crc_is_msg_valid(&msg));
|
|
EXPECT_EQ(1U, msg.size);
|
|
EXPECT_EQ(&data[DI_CAN_MSG_DATA_PAYLOAD_OFFSET], msg.msg);
|
|
EXPECT_EQ(0x55, *msg.msg);
|
|
}
|