mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-30 07:23:33 +08:00
Renaming: TransferBufferBase --> ITransferBuffer
This commit is contained in:
@@ -18,10 +18,10 @@ namespace uavcan
|
|||||||
/**
|
/**
|
||||||
* API for transfer buffer users.
|
* API for transfer buffer users.
|
||||||
*/
|
*/
|
||||||
class TransferBufferBase
|
class ITransferBuffer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~TransferBufferBase() { }
|
virtual ~ITransferBuffer() { }
|
||||||
|
|
||||||
virtual int read(unsigned int offset, uint8_t* data, unsigned int len) const = 0;
|
virtual int read(unsigned int offset, uint8_t* data, unsigned int len) const = 0;
|
||||||
virtual int write(unsigned int offset, const uint8_t* data, unsigned int len) = 0;
|
virtual int write(unsigned int offset, const uint8_t* data, unsigned int len) = 0;
|
||||||
@@ -65,7 +65,7 @@ public:
|
|||||||
/**
|
/**
|
||||||
* Internal for TransferBufferManager
|
* Internal for TransferBufferManager
|
||||||
*/
|
*/
|
||||||
class TransferBufferManagerEntry : public TransferBufferBase, Noncopyable
|
class TransferBufferManagerEntry : public ITransferBuffer, Noncopyable
|
||||||
{
|
{
|
||||||
TransferBufferManagerKey key_;
|
TransferBufferManagerKey key_;
|
||||||
|
|
||||||
@@ -237,8 +237,8 @@ class ITransferBufferManager
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~ITransferBufferManager() { }
|
virtual ~ITransferBufferManager() { }
|
||||||
virtual TransferBufferBase* access(const TransferBufferManagerKey& key) = 0;
|
virtual ITransferBuffer* access(const TransferBufferManagerKey& key) = 0;
|
||||||
virtual TransferBufferBase* create(const TransferBufferManagerKey& key) = 0;
|
virtual ITransferBuffer* create(const TransferBufferManagerKey& key) = 0;
|
||||||
virtual void remove(const TransferBufferManagerKey& key) = 0;
|
virtual void remove(const TransferBufferManagerKey& key) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -258,8 +258,8 @@ public:
|
|||||||
assert(bufmgr);
|
assert(bufmgr);
|
||||||
assert(!key.isEmpty());
|
assert(!key.isEmpty());
|
||||||
}
|
}
|
||||||
TransferBufferBase* access() { return bufmgr_->access(key_); }
|
ITransferBuffer* access() { return bufmgr_->access(key_); }
|
||||||
TransferBufferBase* create() { return bufmgr_->create(key_); }
|
ITransferBuffer* create() { return bufmgr_->create(key_); }
|
||||||
void remove() { bufmgr_->remove(key_); }
|
void remove() { bufmgr_->remove(key_); }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -351,7 +351,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TransferBufferBase* access(const TransferBufferManagerKey& key)
|
ITransferBuffer* access(const TransferBufferManagerKey& key)
|
||||||
{
|
{
|
||||||
if (key.isEmpty())
|
if (key.isEmpty())
|
||||||
{
|
{
|
||||||
@@ -364,7 +364,7 @@ public:
|
|||||||
return findFirstDynamic(key);
|
return findFirstDynamic(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
TransferBufferBase* create(const TransferBufferManagerKey& key)
|
ITransferBuffer* create(const TransferBufferManagerKey& key)
|
||||||
{
|
{
|
||||||
if (key.isEmpty())
|
if (key.isEmpty())
|
||||||
{
|
{
|
||||||
@@ -445,13 +445,13 @@ public:
|
|||||||
(void)allocator;
|
(void)allocator;
|
||||||
}
|
}
|
||||||
|
|
||||||
TransferBufferBase* access(const TransferBufferManagerKey& key)
|
ITransferBuffer* access(const TransferBufferManagerKey& key)
|
||||||
{
|
{
|
||||||
(void)key;
|
(void)key;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
TransferBufferBase* create(const TransferBufferManagerKey& key)
|
ITransferBuffer* create(const TransferBufferManagerKey& key)
|
||||||
{
|
{
|
||||||
(void)key;
|
(void)key;
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ class TransferListenerBase : public LinkedListNode<TransferListenerBase>
|
|||||||
const DataTypeDescriptor* const data_type_;
|
const DataTypeDescriptor* const data_type_;
|
||||||
const Crc16 crc_base_; ///< Pre-initialized with data type hash, thus constant
|
const Crc16 crc_base_; ///< Pre-initialized with data type hash, thus constant
|
||||||
|
|
||||||
bool checkPayloadCrc(const uint16_t compare_with, const TransferBufferBase& tbb) const;
|
bool checkPayloadCrc(const uint16_t compare_with, const ITransferBuffer& tbb) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
TransferListenerBase(const DataTypeDescriptor* data_type)
|
TransferListenerBase(const DataTypeDescriptor* data_type)
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ private:
|
|||||||
void prepareForNextTransfer();
|
void prepareForNextTransfer();
|
||||||
|
|
||||||
bool validate(const RxFrame& frame) const;
|
bool validate(const RxFrame& frame) const;
|
||||||
bool writePayload(const RxFrame& frame, TransferBufferBase& buf);
|
bool writePayload(const RxFrame& frame, ITransferBuffer& buf);
|
||||||
ResultCode receive(const RxFrame& frame, TransferBufferAccessor& tba);
|
ResultCode receive(const RxFrame& frame, TransferBufferAccessor& tba);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
#include <uavcan/internal/transport/crc.hpp>
|
#include <uavcan/internal/transport/crc.hpp>
|
||||||
#include <uavcan/internal/transport/transfer.hpp>
|
#include <uavcan/internal/transport/transfer.hpp>
|
||||||
#include <uavcan/internal/transport/dispatcher.hpp>
|
#include <uavcan/internal/transport/dispatcher.hpp>
|
||||||
#include <uavcan/internal/transport/transfer_buffer.hpp>
|
|
||||||
|
|
||||||
namespace uavcan
|
namespace uavcan
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ MultiFrameIncomingTransfer::MultiFrameIncomingTransfer(uint64_t ts_monotonic, ui
|
|||||||
|
|
||||||
int MultiFrameIncomingTransfer::read(unsigned int offset, uint8_t* data, unsigned int len) const
|
int MultiFrameIncomingTransfer::read(unsigned int offset, uint8_t* data, unsigned int len) const
|
||||||
{
|
{
|
||||||
const TransferBufferBase* const tbb = const_cast<TransferBufferAccessor&>(buf_acc_).access();
|
const ITransferBuffer* const tbb = const_cast<TransferBufferAccessor&>(buf_acc_).access();
|
||||||
if (tbb == NULL)
|
if (tbb == NULL)
|
||||||
{
|
{
|
||||||
UAVCAN_TRACE("MultiFrameIncomingTransfer", "Read failed: no such buffer");
|
UAVCAN_TRACE("MultiFrameIncomingTransfer", "Read failed: no such buffer");
|
||||||
@@ -65,7 +65,7 @@ int MultiFrameIncomingTransfer::read(unsigned int offset, uint8_t* data, unsigne
|
|||||||
/*
|
/*
|
||||||
* TransferListenerBase
|
* TransferListenerBase
|
||||||
*/
|
*/
|
||||||
bool TransferListenerBase::checkPayloadCrc(const uint16_t compare_with, const TransferBufferBase& tbb) const
|
bool TransferListenerBase::checkPayloadCrc(const uint16_t compare_with, const ITransferBuffer& tbb) const
|
||||||
{
|
{
|
||||||
Crc16 crc = crc_base_;
|
Crc16 crc = crc_base_;
|
||||||
unsigned int offset = 0;
|
unsigned int offset = 0;
|
||||||
@@ -109,7 +109,7 @@ void TransferListenerBase::handleReception(TransferReceiver& receiver, const RxF
|
|||||||
|
|
||||||
case TransferReceiver::RESULT_COMPLETE:
|
case TransferReceiver::RESULT_COMPLETE:
|
||||||
{
|
{
|
||||||
const TransferBufferBase* tbb = tba.access();
|
const ITransferBuffer* tbb = tba.access();
|
||||||
if (tbb == NULL)
|
if (tbb == NULL)
|
||||||
{
|
{
|
||||||
UAVCAN_TRACE("TransferListenerBase", "Buffer access failure, last frame: %s", frame.toString().c_str());
|
UAVCAN_TRACE("TransferListenerBase", "Buffer access failure, last frame: %s", frame.toString().c_str());
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ bool TransferReceiver::validate(const RxFrame& frame) const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TransferReceiver::writePayload(const RxFrame& frame, TransferBufferBase& buf)
|
bool TransferReceiver::writePayload(const RxFrame& frame, ITransferBuffer& buf)
|
||||||
{
|
{
|
||||||
const uint8_t* const payload = frame.getPayloadPtr();
|
const uint8_t* const payload = frame.getPayloadPtr();
|
||||||
const int payload_len = frame.getPayloadLen();
|
const int payload_len = frame.getPayloadLen();
|
||||||
@@ -132,7 +132,7 @@ TransferReceiver::ResultCode TransferReceiver::receive(const RxFrame& frame, Tra
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Payload write
|
// Payload write
|
||||||
TransferBufferBase* buf = tba.access();
|
ITransferBuffer* buf = tba.access();
|
||||||
if (buf == NULL)
|
if (buf == NULL)
|
||||||
buf = tba.create();
|
buf = tba.create();
|
||||||
if (buf == NULL)
|
if (buf == NULL)
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ static void fill(const T a, int value)
|
|||||||
a[i] = value;
|
a[i] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool matchAgainst(const std::string& data, const uavcan::TransferBufferBase& tbb,
|
static bool matchAgainst(const std::string& data, const uavcan::ITransferBuffer& tbb,
|
||||||
unsigned int offset = 0, int len = -1)
|
unsigned int offset = 0, int len = -1)
|
||||||
{
|
{
|
||||||
uint8_t local_buffer[1024];
|
uint8_t local_buffer[1024];
|
||||||
@@ -68,7 +68,7 @@ static bool matchAgainst(const std::string& data, const uavcan::TransferBufferBa
|
|||||||
return equals;
|
return equals;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool matchAgainstTestData(const uavcan::TransferBufferBase& tbb, unsigned int offset, int len = -1)
|
static bool matchAgainstTestData(const uavcan::ITransferBuffer& tbb, unsigned int offset, int len = -1)
|
||||||
{
|
{
|
||||||
return matchAgainst(TEST_DATA, tbb, offset, len);
|
return matchAgainst(TEST_DATA, tbb, offset, len);
|
||||||
}
|
}
|
||||||
@@ -222,7 +222,7 @@ TEST(TransferBufferManager, TestDataValidation)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int fillTestData(const std::string& data, uavcan::TransferBufferBase* tbb)
|
static int fillTestData(const std::string& data, uavcan::ITransferBuffer* tbb)
|
||||||
{
|
{
|
||||||
return tbb->write(0, reinterpret_cast<const uint8_t*>(data.c_str()), data.length());
|
return tbb->write(0, reinterpret_cast<const uint8_t*>(data.c_str()), data.length());
|
||||||
}
|
}
|
||||||
@@ -231,7 +231,7 @@ TEST(TransferBufferManager, Basic)
|
|||||||
{
|
{
|
||||||
using uavcan::TransferBufferManager;
|
using uavcan::TransferBufferManager;
|
||||||
using uavcan::TransferBufferManagerKey;
|
using uavcan::TransferBufferManagerKey;
|
||||||
using uavcan::TransferBufferBase;
|
using uavcan::ITransferBuffer;
|
||||||
|
|
||||||
static const int POOL_BLOCKS = 8;
|
static const int POOL_BLOCKS = 8;
|
||||||
uavcan::PoolAllocator<uavcan::MEM_POOL_BLOCK_SIZE * POOL_BLOCKS, uavcan::MEM_POOL_BLOCK_SIZE> pool;
|
uavcan::PoolAllocator<uavcan::MEM_POOL_BLOCK_SIZE * POOL_BLOCKS, uavcan::MEM_POOL_BLOCK_SIZE> pool;
|
||||||
@@ -245,7 +245,7 @@ TEST(TransferBufferManager, Basic)
|
|||||||
ASSERT_FALSE(mgr->access(TransferBufferManagerKey(0, uavcan::TRANSFER_TYPE_MESSAGE_UNICAST)));
|
ASSERT_FALSE(mgr->access(TransferBufferManagerKey(0, uavcan::TRANSFER_TYPE_MESSAGE_UNICAST)));
|
||||||
ASSERT_FALSE(mgr->access(TransferBufferManagerKey(127, uavcan::TRANSFER_TYPE_MESSAGE_UNICAST)));
|
ASSERT_FALSE(mgr->access(TransferBufferManagerKey(127, uavcan::TRANSFER_TYPE_MESSAGE_UNICAST)));
|
||||||
|
|
||||||
TransferBufferBase* tbb = NULL;
|
ITransferBuffer* tbb = NULL;
|
||||||
|
|
||||||
const TransferBufferManagerKey keys[5] =
|
const TransferBufferManagerKey keys[5] =
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ struct Context
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static bool matchBufferContent(const uavcan::TransferBufferBase* tbb, const std::string& content)
|
static bool matchBufferContent(const uavcan::ITransferBuffer* tbb, const std::string& content)
|
||||||
{
|
{
|
||||||
uint8_t data[1024];
|
uint8_t data[1024];
|
||||||
std::fill(data, data + sizeof(data), 0);
|
std::fill(data, data + sizeof(data), 0);
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ TEST(TransferSender, Basic)
|
|||||||
|
|
||||||
uavcan::OutgoingTransferRegistry<8> out_trans_reg(&poolmgr);
|
uavcan::OutgoingTransferRegistry<8> out_trans_reg(&poolmgr);
|
||||||
|
|
||||||
|
|
||||||
static const uavcan::NodeID TX_NODE_ID(64);
|
static const uavcan::NodeID TX_NODE_ID(64);
|
||||||
static const uavcan::NodeID RX_NODE_ID(65);
|
static const uavcan::NodeID RX_NODE_ID(65);
|
||||||
uavcan::Dispatcher dispatcher_tx(&driver, &poolmgr, &clockmock, &out_trans_reg, TX_NODE_ID);
|
uavcan::Dispatcher dispatcher_tx(&driver, &poolmgr, &clockmock, &out_trans_reg, TX_NODE_ID);
|
||||||
|
|||||||
Reference in New Issue
Block a user