/** * @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 #include #include /** * 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); }