33 frame.setStartOfTransfer(
true);
45 (
int(payload_len) <=
frame.getPayloadCapacity());
48 return -ErrPassiveMode;
57 if (
frame.getPayloadCapacity() >= payload_len)
59 const int res =
frame.setPayload(payload, payload_len);
60 if (res !=
int(payload_len))
63 UAVCAN_TRACE(
"TransferSender",
"Frame payload write failure, %i", res);
68 frame.setEndOfTransfer(
true);
83 crc.
add(payload, payload_len);
85 static const int BUFLEN =
sizeof(
static_cast<CanFrame*
>(0)->data);
90 (void)
copy(payload, payload + BUFLEN - 2, buf + 2);
92 const int write_res =
frame.setPayload(buf, BUFLEN);
95 UAVCAN_TRACE(
"TransferSender",
"Frame payload write failure, %i", write_res);
99 offset = write_res - 2;
115 if (
frame.isEndOfTransfer())
120 frame.setStartOfTransfer(
false);
124 const int write_res =
frame.setPayload(payload + offset, payload_len -
unsigned(offset));
127 UAVCAN_TRACE(
"TransferSender",
"Frame payload write failure, %i", write_res);
134 if (offset >=
int(payload_len))
136 frame.setEndOfTransfer(
true);
160 UAVCAN_TRACE(
"TransferSender",
"OTR access failure, dtid=%d tt=%i",
168 return send(payload, payload_len, tx_deadline, blocking_deadline, transfer_type,
169 dst_node_id, this_tid);
bool isInitialized() const
int send(const Frame &frame, MonotonicTime tx_deadline, MonotonicTime blocking_deadline, CanIOFlags flags, uint8_t iface_mask)
void init(const DataTypeDescriptor &dtid)
#define UAVCAN_TRACE(...)
static const CanIOFlags CanIOFlagAbortOnError
static const MonotonicDuration MinEntryLifetime
UAVCAN_EXPORT OutputIt copy(InputIt first, InputIt last, OutputIt result)
bool isPassiveMode() const
UAVCAN_EXPORT const T & max(const T &a, const T &b)
const MonotonicDuration max_transfer_interval_
const DataTypeSignature & getSignature() const
int send(const uint8_t *payload, unsigned payload_len, MonotonicTime tx_deadline, MonotonicTime blocking_deadline, TransferType transfer_type, NodeID dst_node_id, TransferID tid) const
void registerError() const
const TransferPerfCounter & getTransferPerfCounter() const
TransferPriority priority_
TransferID * accessOrCreate(const OutgoingTransferRegistryKey &key, MonotonicTime new_deadline)
bool allow_anonymous_transfers_
TransferCRC toTransferCRC() const
OutgoingTransferRegistry & getOutgoingTransferRegistry()
static const uavcan::int16_t ErrLogic
Internal logic error.