mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-14 05:53:33 +08:00
getIfaceIndex() for received transfers
This commit is contained in:
@@ -53,6 +53,7 @@ public:
|
||||
TransferType getTransferType() const { return safeget<TransferType, &IncomingTransfer::getTransferType>(); }
|
||||
TransferID getTransferID() const { return safeget<TransferID, &IncomingTransfer::getTransferID>(); }
|
||||
NodeID getSrcNodeID() const { return safeget<NodeID, &IncomingTransfer::getSrcNodeID>(); }
|
||||
uint8_t getIfaceIndex() const { return safeget<uint8_t, &IncomingTransfer::getIfaceIndex>(); }
|
||||
};
|
||||
|
||||
template <typename Stream, typename DataType>
|
||||
|
||||
@@ -26,18 +26,20 @@ class IncomingTransfer : public ITransferBuffer
|
||||
TransferType transfer_type_;
|
||||
TransferID transfer_id_;
|
||||
NodeID src_node_id_;
|
||||
uint8_t iface_index_;
|
||||
|
||||
/// That's a no-op, asserts in debug builds
|
||||
int write(unsigned int offset, const uint8_t* data, unsigned int len);
|
||||
|
||||
protected:
|
||||
IncomingTransfer(MonotonicTime ts_mono, UtcTime ts_utc, TransferType transfer_type,
|
||||
TransferID transfer_id, NodeID source_node_id)
|
||||
TransferID transfer_id, NodeID source_node_id, uint8_t iface_index)
|
||||
: ts_mono_(ts_mono)
|
||||
, ts_utc_(ts_utc)
|
||||
, transfer_type_(transfer_type)
|
||||
, transfer_id_(transfer_id)
|
||||
, src_node_id_(source_node_id)
|
||||
, iface_index_(iface_index)
|
||||
{ }
|
||||
|
||||
public:
|
||||
@@ -51,6 +53,7 @@ public:
|
||||
TransferType getTransferType() const { return transfer_type_; }
|
||||
TransferID getTransferID() const { return transfer_id_; }
|
||||
NodeID getSrcNodeID() const { return src_node_id_; }
|
||||
uint8_t getIfaceIndex() const { return iface_index_; }
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -23,7 +23,7 @@ int IncomingTransfer::write(unsigned int, const uint8_t*, unsigned int)
|
||||
*/
|
||||
SingleFrameIncomingTransfer::SingleFrameIncomingTransfer(const RxFrame& frm)
|
||||
: IncomingTransfer(frm.getMonotonicTimestamp(), frm.getUtcTimestamp(), frm.getTransferType(),
|
||||
frm.getTransferID(), frm.getSrcNodeID())
|
||||
frm.getTransferID(), frm.getSrcNodeID(), frm.getIfaceIndex())
|
||||
, payload_(frm.getPayloadPtr())
|
||||
, payload_len_(frm.getPayloadLen())
|
||||
{
|
||||
@@ -52,7 +52,7 @@ int SingleFrameIncomingTransfer::read(unsigned int offset, uint8_t* data, unsign
|
||||
MultiFrameIncomingTransfer::MultiFrameIncomingTransfer(MonotonicTime ts_mono, UtcTime ts_utc,
|
||||
const RxFrame& last_frame, TransferBufferAccessor& tba)
|
||||
: IncomingTransfer(ts_mono, ts_utc, last_frame.getTransferType(), last_frame.getTransferID(),
|
||||
last_frame.getSrcNodeID())
|
||||
last_frame.getSrcNodeID(), last_frame.getIfaceIndex())
|
||||
, buf_acc_(tba)
|
||||
{
|
||||
assert(last_frame.isValid());
|
||||
|
||||
@@ -24,6 +24,7 @@ struct SubscriptionListener
|
||||
uavcan::TransferType transfer_type;
|
||||
uavcan::TransferID transfer_id;
|
||||
uavcan::NodeID src_node_id;
|
||||
uavcan::uint8_t iface_index;
|
||||
DataType msg;
|
||||
|
||||
ReceivedDataStructureCopy(const ReceivedDataStructure& s)
|
||||
@@ -32,6 +33,7 @@ struct SubscriptionListener
|
||||
, transfer_type(s.getTransferType())
|
||||
, transfer_id(s.getTransferID())
|
||||
, src_node_id(s.getSrcNodeID())
|
||||
, iface_index(s.getIfaceIndex())
|
||||
, msg(s)
|
||||
{ }
|
||||
};
|
||||
@@ -155,6 +157,7 @@ TEST(Subscriber, Basic)
|
||||
ASSERT_EQ(rx_frames[i].getTransferID(), s.transfer_id);
|
||||
ASSERT_EQ(rx_frames[i].getTransferType(), s.transfer_type);
|
||||
ASSERT_EQ(rx_frames[i].getMonotonicTimestamp(), s.ts_monotonic);
|
||||
ASSERT_EQ(rx_frames[i].getIfaceIndex(), s.iface_index);
|
||||
}
|
||||
|
||||
ASSERT_EQ(listener.simple.size(), rx_frames.size());
|
||||
|
||||
Reference in New Issue
Block a user