mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-07-04 09:20:35 +08:00
TransportCRC --> TransferCRC
This commit is contained in:
@@ -23,7 +23,7 @@ namespace uavcan
|
||||
* crc.hexdigest()
|
||||
* '29B1'
|
||||
*/
|
||||
class TransportCRC
|
||||
class TransferCRC
|
||||
{
|
||||
static const uint16_t Table[256];
|
||||
uint16_t value_;
|
||||
@@ -31,11 +31,11 @@ class TransportCRC
|
||||
public:
|
||||
enum { NumBytes = 2 };
|
||||
|
||||
TransportCRC()
|
||||
TransferCRC()
|
||||
: value_(0xFFFF)
|
||||
{ }
|
||||
|
||||
TransportCRC(const uint8_t* bytes, unsigned int len)
|
||||
TransferCRC(const uint8_t* bytes, unsigned int len)
|
||||
: value_(0xFFFF)
|
||||
{
|
||||
add(bytes, len);
|
||||
|
||||
@@ -88,7 +88,7 @@ public:
|
||||
class TransferListenerBase : public LinkedListNode<TransferListenerBase>
|
||||
{
|
||||
const DataTypeDescriptor& data_type_;
|
||||
const TransportCRC crc_base_; ///< Pre-initialized with data type hash, thus constant
|
||||
const TransferCRC crc_base_; ///< Pre-initialized with data type hash, thus constant
|
||||
|
||||
bool checkPayloadCrc(const uint16_t compare_with, const ITransferBuffer& tbb) const;
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ class TransferSender
|
||||
const uint64_t max_transfer_interval_;
|
||||
const DataTypeDescriptor& data_type_;
|
||||
const CanTxQueue::Qos qos_;
|
||||
const TransportCRC crc_base_;
|
||||
const TransferCRC crc_base_;
|
||||
|
||||
Dispatcher& dispatcher_;
|
||||
|
||||
|
||||
@@ -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 TransportCRC::Table[256] =
|
||||
const uint16_t TransferCRC::Table[256] =
|
||||
{
|
||||
0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
|
||||
0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
|
||||
|
||||
@@ -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
|
||||
{
|
||||
TransportCRC crc = crc_base_;
|
||||
TransferCRC crc = crc_base_;
|
||||
unsigned int offset = 0;
|
||||
while (true)
|
||||
{
|
||||
|
||||
@@ -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() < TransportCRC::NumBytes))
|
||||
if (frame.isFirst() && !frame.isLast() && (frame.getPayloadLen() < TransferCRC::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() < TransportCRC::NumBytes) // Must have been validated earlier though. I think I'm paranoid.
|
||||
if (frame.getPayloadLen() < TransferCRC::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 - TransportCRC::NumBytes;
|
||||
const int res = buf.write(buffer_write_pos_, payload + TransportCRC::NumBytes, effective_payload_len);
|
||||
const int effective_payload_len = payload_len - TransferCRC::NumBytes;
|
||||
const int res = buf.write(buffer_write_pos_, payload + TransferCRC::NumBytes, effective_payload_len);
|
||||
const bool success = res == effective_payload_len;
|
||||
if (success)
|
||||
buffer_write_pos_ += effective_payload_len;
|
||||
|
||||
@@ -33,7 +33,7 @@ int TransferSender::send(const uint8_t* payload, int payload_len, uint64_t monot
|
||||
{
|
||||
int offset = 0;
|
||||
{
|
||||
TransportCRC crc = crc_base_;
|
||||
TransferCRC crc = crc_base_;
|
||||
crc.add(payload, payload_len);
|
||||
|
||||
static const int BUFLEN = sizeof(CanFrame::data);
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
'29B1'
|
||||
*/
|
||||
|
||||
TEST(TransportCRC, Correctness)
|
||||
TEST(TransferCRC, Correctness)
|
||||
{
|
||||
uavcan::TransportCRC crc;
|
||||
uavcan::TransferCRC crc;
|
||||
|
||||
ASSERT_EQ(0xFFFF, crc.get());
|
||||
|
||||
@@ -31,5 +31,5 @@ TEST(TransportCRC, Correctness)
|
||||
ASSERT_EQ(0x29B1, crc.get());
|
||||
|
||||
// Initializing constructor
|
||||
ASSERT_EQ(crc.get(), uavcan::TransportCRC(reinterpret_cast<const uint8_t*>("123456789"), 9).get());
|
||||
ASSERT_EQ(crc.get(), uavcan::TransferCRC(reinterpret_cast<const uint8_t*>("123456789"), 9).get());
|
||||
}
|
||||
|
||||
@@ -165,7 +165,7 @@ std::vector<uavcan::RxFrame> serializeTransfer(const Transfer& transfer)
|
||||
std::vector<uint8_t> raw_payload;
|
||||
if (need_crc)
|
||||
{
|
||||
uavcan::TransportCRC payload_crc(transfer.data_type.hash.value, uavcan::DataTypeHash::NumBytes);
|
||||
uavcan::TransferCRC payload_crc(transfer.data_type.hash.value, uavcan::DataTypeHash::NumBytes);
|
||||
payload_crc.add(reinterpret_cast<const uint8_t*>(transfer.payload.c_str()), transfer.payload.length());
|
||||
// Little endian
|
||||
raw_payload.push_back(payload_crc.get() & 0xFF);
|
||||
|
||||
Reference in New Issue
Block a user