mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-07-13 08:40:34 +08:00
Starting refactoring of the receiving logic
This commit is contained in:
@@ -75,9 +75,9 @@ public:
|
||||
class MultiFrameIncomingTransfer : public IncomingTransfer, Noncopyable
|
||||
{
|
||||
TransferBufferAccessor& buf_acc_;
|
||||
const uint8_t buffer_offset_; ///< Number of bytes to skip from the beginning of the buffer space
|
||||
public:
|
||||
MultiFrameIncomingTransfer(const RxFrame& last_frame, uint8_t buffer_offset, TransferBufferAccessor& tba);
|
||||
MultiFrameIncomingTransfer(uint64_t ts_monotonic, uint64_t ts_utc, const RxFrame& last_frame,
|
||||
TransferBufferAccessor& tba);
|
||||
int read(unsigned int offset, uint8_t* data, unsigned int len) const;
|
||||
void release() { buf_acc_.remove(); }
|
||||
};
|
||||
|
||||
@@ -40,12 +40,10 @@ int SingleFrameIncomingTransfer::read(unsigned int offset, uint8_t* data, unsign
|
||||
/*
|
||||
* MultiFrameIncomingTransfer
|
||||
*/
|
||||
MultiFrameIncomingTransfer::MultiFrameIncomingTransfer(const RxFrame& last_frame, uint8_t buffer_offset,
|
||||
TransferBufferAccessor& tba)
|
||||
: IncomingTransfer(last_frame.ts_monotonic, last_frame.ts_utc, last_frame.transfer_type,
|
||||
last_frame.transfer_id, last_frame.source_node_id)
|
||||
MultiFrameIncomingTransfer::MultiFrameIncomingTransfer(uint64_t ts_monotonic, uint64_t ts_utc,
|
||||
const RxFrame& last_frame, TransferBufferAccessor& tba)
|
||||
: IncomingTransfer(ts_monotonic, ts_utc, last_frame.transfer_type, last_frame.transfer_id, last_frame.source_node_id)
|
||||
, buf_acc_(tba)
|
||||
, buffer_offset_(buffer_offset)
|
||||
{
|
||||
assert(last_frame.last_frame);
|
||||
}
|
||||
@@ -58,7 +56,7 @@ int MultiFrameIncomingTransfer::read(unsigned int offset, uint8_t* data, unsigne
|
||||
UAVCAN_TRACE("MultiFrameIncomingTransfer", "Read failed: no such buffer");
|
||||
return -1;
|
||||
}
|
||||
return tbb->read(offset + buffer_offset_, data, len);
|
||||
return tbb->read(offset, data, len);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -82,9 +80,8 @@ void TransferListenerBase::handleReception(TransferReceiver& receiver, const RxF
|
||||
case TransferReceiver::RESULT_COMPLETE:
|
||||
{
|
||||
// TODO: check CRC
|
||||
// TODO: select the buffer offset
|
||||
const int buffer_offset = 123;
|
||||
MultiFrameIncomingTransfer it(frame, buffer_offset, tba);
|
||||
MultiFrameIncomingTransfer it(receiver.getLastTransferTimestampMonotonic(),
|
||||
receiver.getLastTransferTimestampUtc(), frame, tba);
|
||||
handleIncomingTransfer(it);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ TEST(MultiFrameIncomingTransfer, Basic)
|
||||
uavcan::TransferBufferManagerKey bufmgr_key(frame.source_node_id, frame.transfer_type);
|
||||
uavcan::TransferBufferAccessor tba(&bufmgr, bufmgr_key);
|
||||
|
||||
MultiFrameIncomingTransfer it(frame, 3, tba);
|
||||
MultiFrameIncomingTransfer it(frame.ts_monotonic, frame.ts_utc, frame, tba);
|
||||
|
||||
/*
|
||||
* Empty read must fail
|
||||
@@ -97,9 +97,8 @@ TEST(MultiFrameIncomingTransfer, Basic)
|
||||
|
||||
/*
|
||||
* Check
|
||||
* Offset 3 comes from the MultiFrameIncomingTransfer initialization
|
||||
*/
|
||||
ASSERT_TRUE(match(it, frame, data_ptr + 3, data.length() - 3));
|
||||
ASSERT_TRUE(match(it, frame, data_ptr, data.length()));
|
||||
|
||||
/*
|
||||
* Buffer release
|
||||
|
||||
Reference in New Issue
Block a user