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 }
uavcan::GenericPublisherBase::doInit
int doInit(DataTypeKind dtkind, const char *dtname)
Definition: uc_generic_publisher.cpp:15
UAVCAN_NULLPTR
#define UAVCAN_NULLPTR
Definition: libuavcan/libuavcan/include/uavcan/build_config.hpp:51
generic_publisher.hpp
uavcan::INode::getMonotonicTime
MonotonicTime getMonotonicTime() const
Definition: abstract_node.hpp:32
uavcan::GenericPublisherBase::getTxDeadline
MonotonicTime getTxDeadline() const
Definition: uc_generic_publisher.cpp:36
uavcan::StaticTransferBufferImpl
Definition: transfer_buffer.hpp:22
uavcan::GenericPublisherBase::node_
INode & node_
Definition: generic_publisher.hpp:25
uavcan::GenericPublisherBase::setTxTimeout
void setTxTimeout(MonotonicDuration tx_timeout)
Definition: uc_generic_publisher.cpp:56
uavcan::NodeID
Definition: transfer.hpp:112
uavcan::TransferType
TransferType
Definition: transfer.hpp:18
uavcan::GenericPublisherBase::isInited
bool isInited() const
Definition: uc_generic_publisher.cpp:10
UAVCAN_TRACE
#define UAVCAN_TRACE(...)
Definition: libuavcan/libuavcan/include/uavcan/debug.hpp:31
uavcan::GenericPublisherBase::genericPublish
int genericPublish(const StaticTransferBufferImpl &buffer, TransferType transfer_type, NodeID dst_node_id, TransferID *tid, MonotonicTime blocking_deadline)
Definition: uc_generic_publisher.cpp:41
uavcan::MonotonicDuration
Definition: time.hpp:182
uavcan::GlobalDataTypeRegistry::find
const DataTypeDescriptor * find(const char *name) const
Definition: uc_global_data_type_registry.cpp:144
uavcan::TransferID
Definition: transfer.hpp:71
uavcan::DataTypeDescriptor
Definition: data_type.hpp:130
uavcan::GenericPublisherBase::sender_
TransferSender sender_
Definition: generic_publisher.hpp:23
uavcan::max
const UAVCAN_EXPORT T & max(const T &a, const T &b)
Definition: templates.hpp:291
uavcan::StaticTransferBufferImpl::getMaxWritePos
uint16_t getMaxWritePos() const
Definition: transfer_buffer.hpp:45
uavcan::DataTypeKind
DataTypeKind
Definition: data_type.hpp:19
uavcan::min
const UAVCAN_EXPORT T & min(const T &a, const T &b)
Definition: templates.hpp:281
uavcan::TransferSender::isInitialized
bool isInitialized() const
Definition: transfer_sender.hpp:66
uavcan::TransferSender::send
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
Definition: uc_transfer_sender.cpp:26
uavcan::TransferSender::init
void init(const DataTypeDescriptor &dtid)
Definition: uc_transfer_sender.cpp:18
uavcan::StaticTransferBufferImpl::getRawPtr
uint8_t * getRawPtr()
Definition: transfer_buffer.hpp:42
uavcan::GenericPublisherBase::getMinTxTimeout
static MonotonicDuration getMinTxTimeout()
Definition: generic_publisher.hpp:55
uavcan::GenericPublisherBase::getMaxTxTimeout
static MonotonicDuration getMaxTxTimeout()
Definition: generic_publisher.hpp:56
uavcan::MonotonicTime
Definition: time.hpp:184
uavcan::GlobalDataTypeRegistry::instance
static GlobalDataTypeRegistry & instance()
Definition: uc_global_data_type_registry.cpp:128
uavcan
Definition: libuavcan/libuavcan/include/uavcan/build_config.hpp:204
uavcan::GlobalDataTypeRegistry::freeze
void freeze()
Definition: uc_global_data_type_registry.cpp:134
uavcan::GenericPublisherBase::tx_timeout_
MonotonicDuration tx_timeout_
Definition: generic_publisher.hpp:24


uavcan_communicator
Author(s):
autogenerated on Fri Dec 13 2024 03:10:03