diff --git a/libuavcan/include/uavcan/internal/transport/transfer_listener.hpp b/libuavcan/include/uavcan/internal/transport/transfer_listener.hpp index 853e0a338f..3b6a55b7ee 100644 --- a/libuavcan/include/uavcan/internal/transport/transfer_listener.hpp +++ b/libuavcan/include/uavcan/internal/transport/transfer_listener.hpp @@ -19,7 +19,7 @@ namespace uavcan /** * Container for received transfer. */ -class IncomingTransfer +class IncomingTransfer : public ITransferBuffer { uint64_t ts_monotonic_; uint64_t ts_utc_; @@ -27,6 +27,9 @@ class IncomingTransfer TransferID transfer_id_; NodeID src_node_id_; + /// That's a no-op, asserts in debug builds + int write(unsigned int offset, const uint8_t* data, unsigned int len); + protected: IncomingTransfer(uint64_t ts_monotonic, uint64_t ts_utc, TransferType transfer_type, TransferID transfer_id, NodeID source_node_id) @@ -38,13 +41,6 @@ protected: { } public: - virtual ~IncomingTransfer() { } - - /** - * Read pure payload, no service fields are included (e.g. Target Node ID, Transfer CRC) - */ - virtual int read(unsigned int offset, uint8_t* data, unsigned int len) const = 0; - /** * Dispose the payload buffer. Further calls to read() will not be possible. */ diff --git a/libuavcan/src/transport/transfer_listener.cpp b/libuavcan/src/transport/transfer_listener.cpp index ec7e442a1e..123e04f70f 100644 --- a/libuavcan/src/transport/transfer_listener.cpp +++ b/libuavcan/src/transport/transfer_listener.cpp @@ -9,6 +9,14 @@ namespace uavcan { +/* + * IncomingTransfer + */ +int IncomingTransfer::write(unsigned int, const uint8_t*, unsigned int) +{ + assert(0); // Incoming transfer container is read-only + return -1; +} /* * SingleFrameIncomingTransfer