mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-22 22:57:35 +08:00
TransferReceiver - fixed assignment operator
This commit is contained in:
@@ -34,6 +34,8 @@ private:
|
||||
|
||||
bool isInitialized() const { return iface_index_ != IFACE_INDEX_NOTSET; }
|
||||
|
||||
void cleanup();
|
||||
|
||||
TidRelation getTidRelation(const RxFrame& frame) const;
|
||||
|
||||
void updateTransferTimings();
|
||||
@@ -42,6 +44,8 @@ private:
|
||||
bool validate(const RxFrame& frame) const;
|
||||
ResultCode receive(const RxFrame& frame);
|
||||
|
||||
TransferReceiver(const TransferReceiver&); // = delete (not needed)
|
||||
|
||||
public:
|
||||
TransferReceiver()
|
||||
: prev_transfer_timestamp_(0)
|
||||
@@ -68,10 +72,20 @@ public:
|
||||
assert(node_id != NODE_ID_BROADCAST);
|
||||
}
|
||||
|
||||
~TransferReceiver()
|
||||
~TransferReceiver() { cleanup(); }
|
||||
|
||||
TransferReceiver& operator=(const TransferReceiver& rhs)
|
||||
{
|
||||
if (bufmgr_ != NULL && node_id_ != NODE_ID_INVALID)
|
||||
bufmgr_->remove(node_id_);
|
||||
cleanup();
|
||||
prev_transfer_timestamp_ = rhs.prev_transfer_timestamp_;
|
||||
this_transfer_timestamp_ = rhs.this_transfer_timestamp_;
|
||||
transfer_interval_ = rhs.transfer_interval_;
|
||||
bufmgr_ = rhs.bufmgr_;
|
||||
tid_ = rhs.tid_;
|
||||
node_id_ = rhs.node_id_;
|
||||
iface_index_ = rhs.iface_index_;
|
||||
next_frame_index_ = rhs.next_frame_index_;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool isTimedOut(uint64_t timestamp) const;
|
||||
|
||||
@@ -16,6 +16,12 @@ const uint64_t TransferReceiver::DEFAULT_TRANSFER_INTERVAL;
|
||||
const uint64_t TransferReceiver::MIN_TRANSFER_INTERVAL;
|
||||
const uint64_t TransferReceiver::MAX_TRANSFER_INTERVAL;
|
||||
|
||||
void TransferReceiver::cleanup()
|
||||
{
|
||||
if (bufmgr_ != NULL && node_id_ != NODE_ID_INVALID)
|
||||
bufmgr_->remove(node_id_);
|
||||
}
|
||||
|
||||
TransferReceiver::TidRelation TransferReceiver::getTidRelation(const RxFrame& frame) const
|
||||
{
|
||||
const int distance = tid_.forwardDistance(frame.transfer_id);
|
||||
|
||||
@@ -203,6 +203,14 @@ TEST(TransferReceiver, Basic)
|
||||
ASSERT_LT(TransferReceiver::DEFAULT_TRANSFER_INTERVAL, rcv.getInterval());
|
||||
ASSERT_LE(TransferReceiver::MIN_TRANSFER_INTERVAL, rcv.getInterval());
|
||||
ASSERT_GE(TransferReceiver::MAX_TRANSFER_INTERVAL, rcv.getInterval());
|
||||
ASSERT_TRUE(matchBufferContent(bufmgr.access(gen.source_node_id), "12345678qwe"));
|
||||
|
||||
/*
|
||||
* Buffer cleanup
|
||||
*/
|
||||
ASSERT_TRUE(bufmgr.access(gen.source_node_id));
|
||||
context.receiver = TransferReceiver();
|
||||
ASSERT_FALSE(bufmgr.access(gen.source_node_id));
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user