DataTypeSignatureCRC - methods moved to .cpp

This commit is contained in:
Pavel Kirienko
2014-04-13 00:02:48 +04:00
parent 627dc5f2d9
commit c2b878965e
2 changed files with 32 additions and 23 deletions
+29
View File
@@ -9,6 +9,35 @@
namespace uavcan
{
/*
* DataTypeSignatureCRC
*/
DataTypeSignatureCRC DataTypeSignatureCRC::extend(uint64_t crc)
{
DataTypeSignatureCRC ret;
ret.crc_ = crc ^ 0xFFFFFFFFFFFFFFFF;
return ret;
}
void DataTypeSignatureCRC::add(uint8_t byte)
{
static const uint64_t Poly = 0x42F0E1EBA9EA3693;
crc_ ^= uint64_t(byte) << 56;
for (int i = 0; i < 8; i++)
{
crc_ = (crc_ & (uint64_t(1) << 63)) ? (crc_ << 1) ^ Poly : crc_ << 1;
}
}
void DataTypeSignatureCRC::add(const uint8_t* bytes, unsigned len)
{
assert(bytes);
while (len--)
{
add(*bytes++);
}
}
/*
* DataTypeSignature
*/