Signature CRC extension

This commit is contained in:
Pavel Kirienko 2014-02-26 18:12:05 +04:00
parent a73560e1bd
commit dc2460f264
2 changed files with 23 additions and 0 deletions

View File

@ -32,6 +32,13 @@ class DataTypeSignatureCRC
uint64_t crc_;
public:
static DataTypeSignatureCRC extend(uint64_t crc)
{
DataTypeSignatureCRC ret;
ret.crc_ = crc ^ 0xFFFFFFFFFFFFFFFF;
return ret;
}
DataTypeSignatureCRC() : crc_(0xFFFFFFFFFFFFFFFF) { }
void add(uint8_t byte)

View File

@ -19,3 +19,19 @@ TEST(DataTypeSignatureCRC, Correctness)
ASSERT_EQ(0x62EC59E3F1A4F00A, crc.get());
}
TEST(DataTypeSignatureCRC, Extension)
{
uavcan::DataTypeSignatureCRC crc1;
crc1.add('1');
crc1.add('2');
crc1.add('3');
uavcan::DataTypeSignatureCRC crc2 = uavcan::DataTypeSignatureCRC::extend(crc1.get());
crc2.add(reinterpret_cast<const uint8_t*>("456789"), 6);
ASSERT_EQ(0x62EC59E3F1A4F00A, crc2.get());
}