diff --git a/libuavcan/include/uavcan/internal/transport/crc.hpp b/libuavcan/include/uavcan/internal/transport/crc.hpp index 4612ef8051..eab0a34e58 100644 --- a/libuavcan/include/uavcan/internal/transport/crc.hpp +++ b/libuavcan/include/uavcan/internal/transport/crc.hpp @@ -14,7 +14,7 @@ namespace uavcan * Initial value: 0x0000 * Coefficient: 0x1021 */ -class Crc16 +class TransportCRC { static const uint16_t Table[256]; uint16_t value_; @@ -22,11 +22,11 @@ class Crc16 public: enum { NumBytes = 2 }; - Crc16() + TransportCRC() : value_(0x0000) { } - Crc16(const uint8_t* bytes, unsigned int len) + TransportCRC(const uint8_t* bytes, unsigned int len) : value_(0x0000) { add(bytes, len); diff --git a/libuavcan/include/uavcan/internal/transport/transfer_listener.hpp b/libuavcan/include/uavcan/internal/transport/transfer_listener.hpp index d9ce3b0b44..e15346392e 100644 --- a/libuavcan/include/uavcan/internal/transport/transfer_listener.hpp +++ b/libuavcan/include/uavcan/internal/transport/transfer_listener.hpp @@ -88,7 +88,7 @@ public: class TransferListenerBase : public LinkedListNode { const DataTypeDescriptor& data_type_; - const Crc16 crc_base_; ///< Pre-initialized with data type hash, thus constant + const TransportCRC crc_base_; ///< Pre-initialized with data type hash, thus constant bool checkPayloadCrc(const uint16_t compare_with, const ITransferBuffer& tbb) const; diff --git a/libuavcan/include/uavcan/internal/transport/transfer_sender.hpp b/libuavcan/include/uavcan/internal/transport/transfer_sender.hpp index 1889a4e3af..fa76d8f291 100644 --- a/libuavcan/include/uavcan/internal/transport/transfer_sender.hpp +++ b/libuavcan/include/uavcan/internal/transport/transfer_sender.hpp @@ -21,7 +21,7 @@ class TransferSender const uint64_t max_transfer_interval_; const DataTypeDescriptor& data_type_; const CanTxQueue::Qos qos_; - const Crc16 crc_base_; + const TransportCRC crc_base_; Dispatcher& dispatcher_; diff --git a/libuavcan/src/transport/crc.cpp b/libuavcan/src/transport/crc.cpp index b016b4807b..5ecdadd0a1 100644 --- a/libuavcan/src/transport/crc.cpp +++ b/libuavcan/src/transport/crc.cpp @@ -9,7 +9,7 @@ namespace uavcan { // print ', '.join(map(lambda x: '%04x' % x, map(lambda x: int(x, 0), c.crc_ccitt_tab))) -const uint16_t Crc16::Table[256] = +const uint16_t TransportCRC::Table[256] = { 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, @@ -45,13 +45,13 @@ const uint16_t Crc16::Table[256] = 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0 }; -uint16_t Crc16::add(uint8_t byte) +uint16_t TransportCRC::add(uint8_t byte) { value_ = (value_ << 8) ^ Table[((value_ >> 8) ^ byte) & 0xFF]; return value_; } -uint16_t Crc16::add(const uint8_t* bytes, unsigned int len) +uint16_t TransportCRC::add(const uint8_t* bytes, unsigned int len) { assert(bytes); while (len--) diff --git a/libuavcan/src/transport/transfer_listener.cpp b/libuavcan/src/transport/transfer_listener.cpp index f3e64cbe4f..e99a726697 100644 --- a/libuavcan/src/transport/transfer_listener.cpp +++ b/libuavcan/src/transport/transfer_listener.cpp @@ -67,7 +67,7 @@ int MultiFrameIncomingTransfer::read(unsigned int offset, uint8_t* data, unsigne */ bool TransferListenerBase::checkPayloadCrc(const uint16_t compare_with, const ITransferBuffer& tbb) const { - Crc16 crc = crc_base_; + TransportCRC crc = crc_base_; unsigned int offset = 0; while (true) { diff --git a/libuavcan/src/transport/transfer_receiver.cpp b/libuavcan/src/transport/transfer_receiver.cpp index bb68eb5441..5c0fd96b1c 100644 --- a/libuavcan/src/transport/transfer_receiver.cpp +++ b/libuavcan/src/transport/transfer_receiver.cpp @@ -56,7 +56,7 @@ bool TransferReceiver::validate(const RxFrame& frame) const if (iface_index_ != frame.getIfaceIndex()) return false; - if (frame.isFirst() && !frame.isLast() && (frame.getPayloadLen() < Crc16::NumBytes)) + if (frame.isFirst() && !frame.isLast() && (frame.getPayloadLen() < TransportCRC::NumBytes)) { UAVCAN_TRACE("TransferReceiver", "CRC expected, %s", frame.toString().c_str()); return false; @@ -90,13 +90,13 @@ bool TransferReceiver::writePayload(const RxFrame& frame, ITransferBuffer& buf) if (frame.isFirst()) // First frame contains CRC, we need to extract it now { - if (frame.getPayloadLen() < Crc16::NumBytes) // Must have been validated earlier though. I think I'm paranoid. + if (frame.getPayloadLen() < TransportCRC::NumBytes) // Must have been validated earlier though. I think I'm paranoid. return false; this_transfer_crc_ = (payload[0] & 0xFF) | (uint16_t(payload[1] & 0xFF) << 8); // Little endian. - const int effective_payload_len = payload_len - Crc16::NumBytes; - const int res = buf.write(buffer_write_pos_, payload + Crc16::NumBytes, effective_payload_len); + const int effective_payload_len = payload_len - TransportCRC::NumBytes; + const int res = buf.write(buffer_write_pos_, payload + TransportCRC::NumBytes, effective_payload_len); const bool success = res == effective_payload_len; if (success) buffer_write_pos_ += effective_payload_len; diff --git a/libuavcan/src/transport/transfer_sender.cpp b/libuavcan/src/transport/transfer_sender.cpp index c3175cbe76..5c729ce7ac 100644 --- a/libuavcan/src/transport/transfer_sender.cpp +++ b/libuavcan/src/transport/transfer_sender.cpp @@ -33,7 +33,7 @@ int TransferSender::send(const uint8_t* payload, int payload_len, uint64_t monot { int offset = 0; { - Crc16 crc = crc_base_; + TransportCRC crc = crc_base_; crc.add(payload, payload_len); static const int BUFLEN = sizeof(CanFrame::data); diff --git a/libuavcan/test/transport/crc.cpp b/libuavcan/test/transport/crc.cpp index f21ddc2412..d76d1d7fe3 100644 --- a/libuavcan/test/transport/crc.cpp +++ b/libuavcan/test/transport/crc.cpp @@ -7,9 +7,9 @@ #include -TEST(Crc16, Correctness) +TEST(TransportCRC, Correctness) { - uavcan::Crc16 crc; + uavcan::TransportCRC crc; ASSERT_EQ(0x0000, crc.get()); @@ -22,5 +22,5 @@ TEST(Crc16, Correctness) ASSERT_EQ(53881, crc.get()); // Initializing constructor - ASSERT_EQ(crc.get(), uavcan::Crc16(reinterpret_cast("123Foobar"), 9).get()); + ASSERT_EQ(crc.get(), uavcan::TransportCRC(reinterpret_cast("123Foobar"), 9).get()); } diff --git a/libuavcan/test/transport/transfer_test_helpers.hpp b/libuavcan/test/transport/transfer_test_helpers.hpp index 18b647e41d..e37642b684 100644 --- a/libuavcan/test/transport/transfer_test_helpers.hpp +++ b/libuavcan/test/transport/transfer_test_helpers.hpp @@ -165,7 +165,7 @@ std::vector serializeTransfer(const Transfer& transfer) std::vector raw_payload; if (need_crc) { - uavcan::Crc16 payload_crc(transfer.data_type.hash.value, uavcan::DataTypeHash::NumBytes); + uavcan::TransportCRC payload_crc(transfer.data_type.hash.value, uavcan::DataTypeHash::NumBytes); payload_crc.add(reinterpret_cast(transfer.payload.c_str()), transfer.payload.length()); // Little endian raw_payload.push_back(payload_crc.get() & 0xFF);