transfer_sender.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
3  */
4 
5 #ifndef UAVCAN_TRANSPORT_TRANSFER_SENDER_HPP_INCLUDED
6 #define UAVCAN_TRANSPORT_TRANSFER_SENDER_HPP_INCLUDED
7 
8 #include <cstdlib>
9 #include <cassert>
10 #include <uavcan/build_config.hpp>
11 #include <uavcan/error.hpp>
12 #include <uavcan/data_type.hpp>
13 #include <uavcan/transport/crc.hpp>
16 
17 namespace uavcan
18 {
19 
21 {
23 
25 
32 
33  void registerError() const;
34 
35 public:
36  enum { AllIfacesMask = 0xFF };
37 
39  {
40  return MonotonicDuration::fromMSec(60 * 1000);
41  }
42 
43  TransferSender(Dispatcher& dispatcher, const DataTypeDescriptor& data_type,
44  MonotonicDuration max_transfer_interval = getDefaultMaxTransferInterval())
45  : max_transfer_interval_(max_transfer_interval)
46  , dispatcher_(dispatcher)
47  , priority_(TransferPriority::Default)
48  , flags_(CanIOFlags(0))
49  , iface_mask_(AllIfacesMask)
50  , allow_anonymous_transfers_(false)
51  {
52  init(data_type);
53  }
54 
55  TransferSender(Dispatcher& dispatcher, MonotonicDuration max_transfer_interval = getDefaultMaxTransferInterval())
56  : max_transfer_interval_(max_transfer_interval)
57  , dispatcher_(dispatcher)
58  , priority_(TransferPriority::Default)
59  , flags_(CanIOFlags(0))
60  , iface_mask_(AllIfacesMask)
61  , allow_anonymous_transfers_(false)
62  { }
63 
64  void init(const DataTypeDescriptor& dtid);
65 
66  bool isInitialized() const { return data_type_id_ != DataTypeID(); }
67 
68  CanIOFlags getCanIOFlags() const { return flags_; }
69  void setCanIOFlags(CanIOFlags flags) { flags_ = flags; }
70 
71  uint8_t getIfaceMask() const { return iface_mask_; }
72  void setIfaceMask(uint8_t iface_mask)
73  {
74  UAVCAN_ASSERT(iface_mask);
75  iface_mask_ = iface_mask;
76  }
77 
78  TransferPriority getPriority() const { return priority_; }
79  void setPriority(TransferPriority prio) { priority_ = prio; }
80 
88  void allowAnonymousTransfers() { allow_anonymous_transfers_ = true; }
89 
94  int send(const uint8_t* payload, unsigned payload_len, MonotonicTime tx_deadline,
95  MonotonicTime blocking_deadline, TransferType transfer_type, NodeID dst_node_id,
96  TransferID tid) const;
97 
106  int send(const uint8_t* payload, unsigned payload_len, MonotonicTime tx_deadline,
107  MonotonicTime blocking_deadline, TransferType transfer_type, NodeID dst_node_id) const;
108 };
109 
110 }
111 
112 #endif // UAVCAN_TRANSPORT_TRANSFER_SENDER_HPP_INCLUDED
data_type.hpp
uavcan::TransferSender::setPriority
void setPriority(TransferPriority prio)
Definition: transfer_sender.hpp:79
uavcan::TransferSender::TransferSender
TransferSender(Dispatcher &dispatcher, MonotonicDuration max_transfer_interval=getDefaultMaxTransferInterval())
Definition: transfer_sender.hpp:55
uavcan::TransferSender::setCanIOFlags
void setCanIOFlags(CanIOFlags flags)
Definition: transfer_sender.hpp:69
uavcan::TransferSender
Definition: transfer_sender.hpp:20
crc.hpp
uavcan::NodeID
Definition: transfer.hpp:112
uavcan::TransferType
TransferType
Definition: transfer.hpp:18
uavcan::TransferSender::crc_base_
TransferCRC crc_base_
Definition: transfer_sender.hpp:27
uavcan::DurationBase< MonotonicDuration >::fromMSec
static MonotonicDuration fromMSec(int64_t ms)
Definition: time.hpp:41
uavcan::TransferSender::setIfaceMask
void setIfaceMask(uint8_t iface_mask)
Definition: transfer_sender.hpp:72
uavcan::MonotonicDuration
Definition: time.hpp:182
uavcan::TransferSender::getCanIOFlags
CanIOFlags getCanIOFlags() const
Definition: transfer_sender.hpp:68
uavcan::TransferSender::allow_anonymous_transfers_
bool allow_anonymous_transfers_
Definition: transfer_sender.hpp:31
uavcan::TransferID
Definition: transfer.hpp:71
dispatcher.hpp
uavcan::TransferSender::getPriority
TransferPriority getPriority() const
Definition: transfer_sender.hpp:78
uavcan::Dispatcher
Definition: dispatcher.hpp:80
uavcan::uint8_t
std::uint8_t uint8_t
Definition: std.hpp:24
uavcan::DataTypeID
Definition: data_type.hpp:47
uavcan::DataTypeDescriptor
Definition: data_type.hpp:130
transfer.hpp
uavcan::TransferSender::max_transfer_interval_
const MonotonicDuration max_transfer_interval_
Definition: transfer_sender.hpp:22
uavcan::TransferSender::allowAnonymousTransfers
void allowAnonymousTransfers()
Definition: transfer_sender.hpp:88
UAVCAN_EXPORT
#define UAVCAN_EXPORT
Definition: libuavcan/libuavcan/include/uavcan/build_config.hpp:108
uavcan::TransferSender::priority_
TransferPriority priority_
Definition: transfer_sender.hpp:26
uavcan::TransferPriority
Definition: transfer.hpp:28
build_config.hpp
uavcan::TransferSender::isInitialized
bool isInitialized() const
Definition: transfer_sender.hpp:66
uavcan::TransferSender::TransferSender
TransferSender(Dispatcher &dispatcher, const DataTypeDescriptor &data_type, MonotonicDuration max_transfer_interval=getDefaultMaxTransferInterval())
Definition: transfer_sender.hpp:43
uavcan::TransferSender::iface_mask_
uint8_t iface_mask_
Definition: transfer_sender.hpp:30
uavcan::TransferSender::getIfaceMask
uint8_t getIfaceMask() const
Definition: transfer_sender.hpp:71
uavcan::TransferSender::flags_
CanIOFlags flags_
Definition: transfer_sender.hpp:29
uavcan::TransferSender::dispatcher_
Dispatcher & dispatcher_
Definition: transfer_sender.hpp:24
uavcan::CanIOFlags
uint16_t CanIOFlags
Definition: libuavcan/libuavcan/include/uavcan/driver/can.hpp:140
uavcan_kinetis::clock::init
void init()
Definition: clock.cpp:43
uavcan::TransferSender::getDefaultMaxTransferInterval
static MonotonicDuration getDefaultMaxTransferInterval()
Definition: transfer_sender.hpp:38
uavcan::MonotonicTime
Definition: time.hpp:184
uavcan
Definition: libuavcan/libuavcan/include/uavcan/build_config.hpp:204
uavcan::TransferSender::data_type_id_
DataTypeID data_type_id_
Definition: transfer_sender.hpp:28
uavcan::TransferCRC
Definition: crc.hpp:28
UAVCAN_ASSERT
#define UAVCAN_ASSERT(x)
Definition: libuavcan/libuavcan/include/uavcan/build_config.hpp:184
error.hpp


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