uc_outgoing_transfer_registry.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 /*
10  * OutgoingTransferRegistryKey
11  */
12 #if UAVCAN_TOSTRING
13 std::string OutgoingTransferRegistryKey::toString() const
14 {
15  char buf[40];
16  (void)snprintf(buf, sizeof(buf), "dtid=%u tt=%u dnid=%u",
18  return std::string(buf);
19 }
20 #endif
21 
22 /*
23  * OutgoingTransferRegistry
24  */
26 
28  MonotonicTime new_deadline)
29 {
30  UAVCAN_ASSERT(!new_deadline.isZero());
31  Value* p = map_.access(key);
32  if (p == UAVCAN_NULLPTR)
33  {
34  p = map_.insert(key, Value());
35  if (p == UAVCAN_NULLPTR)
36  {
37  return UAVCAN_NULLPTR;
38  }
39  UAVCAN_TRACE("OutgoingTransferRegistry", "Created %s", key.toString().c_str());
40  }
41  p->deadline = new_deadline;
42  return &p->tid;
43 }
44 
46 {
47  return UAVCAN_NULLPTR != map_.find(ExistenceCheckingPredicate(dtid, tt));
48 }
49 
51 {
52  map_.removeAllWhere(DeadlineExpiredPredicate(ts));
53 }
54 
55 }
UAVCAN_NULLPTR
#define UAVCAN_NULLPTR
Definition: libuavcan/libuavcan/include/uavcan/build_config.hpp:51
outgoing_transfer_registry.hpp
uavcan::OutgoingTransferRegistry::DeadlineExpiredPredicate
Definition: outgoing_transfer_registry.hpp:72
uavcan::NodeID::get
uint8_t get() const
Definition: transfer.hpp:132
uavcan::TransferType
TransferType
Definition: transfer.hpp:18
uavcan::OutgoingTransferRegistryKey
Definition: outgoing_transfer_registry.hpp:19
uavcan::DurationBase< MonotonicDuration >::fromMSec
static MonotonicDuration fromMSec(int64_t ms)
Definition: time.hpp:41
uavcan::OutgoingTransferRegistryKey::transfer_type_
uint8_t transfer_type_
Definition: outgoing_transfer_registry.hpp:22
UAVCAN_TRACE
#define UAVCAN_TRACE(...)
Definition: libuavcan/libuavcan/include/uavcan/debug.hpp:31
uavcan::OutgoingTransferRegistry::accessOrCreate
TransferID * accessOrCreate(const OutgoingTransferRegistryKey &key, MonotonicTime new_deadline)
Definition: uc_outgoing_transfer_registry.cpp:27
uavcan::OutgoingTransferRegistryKey::destination_node_id_
NodeID destination_node_id_
Not applicable for message broadcasting.
Definition: outgoing_transfer_registry.hpp:23
uavcan::TransferID
Definition: transfer.hpp:71
uavcan::DataTypeID
Definition: data_type.hpp:47
uavcan::snprintf
int snprintf(char *out, std::size_t maxlen, const char *format,...)
Definition: std.hpp:73
uavcan::OutgoingTransferRegistry::ExistenceCheckingPredicate
Definition: outgoing_transfer_registry.hpp:95
uavcan::DataTypeID::get
uint16_t get() const
Definition: data_type.hpp:69
uavcan::OutgoingTransferRegistryKey::data_type_id_
DataTypeID data_type_id_
Definition: outgoing_transfer_registry.hpp:21
uavcan::OutgoingTransferRegistry::Value::tid
TransferID tid
Definition: outgoing_transfer_registry.hpp:69
toString
static std::string toString(long x)
Definition: multiset.cpp:16
uavcan::TimeBase::isZero
bool isZero() const
Definition: time.hpp:123
uavcan::OutgoingTransferRegistry::exists
bool exists(DataTypeID dtid, TransferType tt) const
Definition: uc_outgoing_transfer_registry.cpp:45
int
int
Definition: libstubs.cpp:120
uavcan::MonotonicTime
Definition: time.hpp:184
uavcan::OutgoingTransferRegistry::Value
Definition: outgoing_transfer_registry.hpp:66
uavcan
Definition: libuavcan/libuavcan/include/uavcan/build_config.hpp:204
uavcan::OutgoingTransferRegistry::map_
Map< OutgoingTransferRegistryKey, Value > map_
Definition: outgoing_transfer_registry.hpp:112
uavcan::OutgoingTransferRegistry::cleanup
void cleanup(MonotonicTime ts)
Definition: uc_outgoing_transfer_registry.cpp:50
uavcan::OutgoingTransferRegistry::Value::deadline
MonotonicTime deadline
Definition: outgoing_transfer_registry.hpp:68
uavcan::OutgoingTransferRegistry::MinEntryLifetime
static const MonotonicDuration MinEntryLifetime
Definition: outgoing_transfer_registry.hpp:115
UAVCAN_ASSERT
#define UAVCAN_ASSERT(x)
Definition: libuavcan/libuavcan/include/uavcan/build_config.hpp:184


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