5 #ifndef UAVCAN_NODE_GENERIC_PUBLISHER_HPP_INCLUDED 6 #define UAVCAN_NODE_GENERIC_PUBLISHER_HPP_INCLUDED 30 : sender_(node.getDispatcher(), max_transfer_interval)
31 , tx_timeout_(tx_timeout)
84 template <
typename DataSpec,
typename DataStruct>
92 typedef typename Select<DataStruct::MaxBitLen == 0,
141 return genericPublish(message, transfer_type, dst_node_id, &tid, blocking_deadline);
147 template <
typename DataSpec,
typename DataStruct>
158 template <
typename DataSpec,
typename DataStruct>
163 const int encode_res = DataStruct::encode(message, codec);
167 return -ErrInvalidMarshalData;
172 template <
typename DataSpec,
typename DataStruct>
177 const int res = checkInit();
185 const int encode_res = doEncode(message, buffer);
196 #endif // UAVCAN_NODE_GENERIC_PUBLISHER_HPP_INCLUDED static MonotonicDuration getMaxTxTimeout()
MonotonicDuration getTxTimeout() const
void setPriority(const TransferPriority prio)
int genericPublish(const DataStruct &message, TransferType transfer_type, NodeID dst_node_id, TransferID *tid, MonotonicTime blocking_deadline)
struct UAVCAN_EXPORT Select
GenericPublisher(INode &node, MonotonicDuration tx_timeout, MonotonicDuration max_transfer_interval=TransferSender::getDefaultMaxTransferInterval())
const TransferSender & getTransferSender() const
void allowAnonymousTransfers()
void setTxTimeout(MonotonicDuration tx_timeout)
TransferSender & getTransferSender()
TransferPriority getPriority() const
int genericPublish(const StaticTransferBufferImpl &buffer, TransferType transfer_type, NodeID dst_node_id, TransferID *tid, MonotonicTime blocking_deadline)
void setPriority(TransferPriority prio)
static MonotonicDuration fromUSec(int64_t us)
void allowAnonymousTransfers()
int doEncode(const DataStruct &message, ITransferBuffer &buffer) const
int publish(const DataStruct &message, TransferType transfer_type, NodeID dst_node_id, MonotonicTime blocking_deadline=MonotonicTime())
int doInit(DataTypeKind dtkind, const char *dtname)
int init(TransferPriority priority)
static MonotonicDuration fromMSec(int64_t ms)
MonotonicDuration tx_timeout_
GenericPublisherBase(INode &node, MonotonicDuration tx_timeout, MonotonicDuration max_transfer_interval)
MonotonicTime getTxDeadline() const
TransferPriority getPriority() const
static MonotonicDuration getDefaultMaxTransferInterval()
int publish(const DataStruct &message, TransferType transfer_type, NodeID dst_node_id, TransferID tid, MonotonicTime blocking_deadline=MonotonicTime())
static MonotonicDuration getMinTxTimeout()
Select< DataStruct::MaxBitLen==0, ZeroTransferBuffer, StaticTransferBuffer< BitLenToByteLen< DataStruct::MaxBitLen >::Result > >::Result Buffer