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
std::uint8_t uint8_t
Definition: std.hpp:24
void setIfaceMask(uint8_t iface_mask)
uint8_t getIfaceMask() const
const MonotonicDuration max_transfer_interval_
void setPriority(TransferPriority prio)
TransferType
Definition: transfer.hpp:18
TransferSender(Dispatcher &dispatcher, const DataTypeDescriptor &data_type, MonotonicDuration max_transfer_interval=getDefaultMaxTransferInterval())
TransferPriority priority_
CanIOFlags getCanIOFlags() const
void setCanIOFlags(CanIOFlags flags)
static MonotonicDuration fromMSec(int64_t ms)
Definition: time.hpp:41
TransferSender(Dispatcher &dispatcher, MonotonicDuration max_transfer_interval=getDefaultMaxTransferInterval())
TransferPriority getPriority() const
static MonotonicDuration getDefaultMaxTransferInterval()


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