getIfaceIndex() for received transfers

This commit is contained in:
Pavel Kirienko
2014-03-21 18:32:20 +04:00
parent c15ceb64ec
commit 5f434fe072
4 changed files with 10 additions and 3 deletions
@@ -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());
+3
View File
@@ -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());