uc_generic_publisher.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
3  */
4 
6 
7 namespace uavcan
8 {
9 
11 {
12  return sender_.isInitialized();
13 }
14 
15 int GenericPublisherBase::doInit(DataTypeKind dtkind, const char* dtname)
16 {
17  if (isInited())
18  {
19  return 0;
20  }
21 
23 
24  const DataTypeDescriptor* const descr = GlobalDataTypeRegistry::instance().find(dtkind, dtname);
25  if (descr == UAVCAN_NULLPTR)
26  {
27  UAVCAN_TRACE("GenericPublisher", "Type [%s] is not registered", dtname);
28  return -ErrUnknownDataType;
29  }
30 
31  sender_.init(*descr);
32 
33  return 0;
34 }
35 
37 {
39 }
40 
42  NodeID dst_node_id, TransferID* tid, MonotonicTime blocking_deadline)
43 {
44  if (tid)
45  {
46  return sender_.send(buffer.getRawPtr(), buffer.getMaxWritePos(), getTxDeadline(),
47  blocking_deadline, transfer_type, dst_node_id, *tid);
48  }
49  else
50  {
51  return sender_.send(buffer.getRawPtr(), buffer.getMaxWritePos(), getTxDeadline(),
52  blocking_deadline, transfer_type, dst_node_id);
53  }
54 }
55 
57 {
58  tx_timeout = max(tx_timeout, getMinTxTimeout());
59  tx_timeout = min(tx_timeout, getMaxTxTimeout());
60  tx_timeout_ = tx_timeout;
61 }
62 
63 }
static MonotonicDuration getMaxTxTimeout()
DataTypeKind
Definition: data_type.hpp:19
const DataTypeDescriptor * find(const char *name) const
void setTxTimeout(MonotonicDuration tx_timeout)
void init(const DataTypeDescriptor &dtid)
UAVCAN_EXPORT const T & max(const T &a, const T &b)
Definition: templates.hpp:291
int genericPublish(const StaticTransferBufferImpl &buffer, TransferType transfer_type, NodeID dst_node_id, TransferID *tid, MonotonicTime blocking_deadline)
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
UAVCAN_EXPORT const T & min(const T &a, const T &b)
Definition: templates.hpp:281
TransferType
Definition: transfer.hpp:18
static GlobalDataTypeRegistry & instance()
int doInit(DataTypeKind dtkind, const char *dtname)
MonotonicTime getTxDeadline() const
static MonotonicDuration getMinTxTimeout()
MonotonicTime getMonotonicTime() const


uavcan_communicator
Author(s):
autogenerated on Wed Jan 11 2023 03:59:40