libs
libuavcan
libuavcan
src
transport
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
5
#include <
uavcan/transport/outgoing_transfer_registry.hpp
>
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"
,
17
int
(
data_type_id_
.
get
()),
int
(
transfer_type_
),
int
(
destination_node_id_
.
get
()));
18
return
std::string(buf);
19
}
20
#endif
21
22
/*
23
* OutgoingTransferRegistry
24
*/
25
const
MonotonicDuration
OutgoingTransferRegistry::MinEntryLifetime
=
MonotonicDuration::fromMSec
(2000);
26
27
TransferID
*
OutgoingTransferRegistry::accessOrCreate
(
const
OutgoingTransferRegistryKey
& key,
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
45
bool
OutgoingTransferRegistry::exists
(
DataTypeID
dtid,
TransferType
tt)
const
46
{
47
return
UAVCAN_NULLPTR
!=
map_
.find(
ExistenceCheckingPredicate
(dtid, tt));
48
}
49
50
void
OutgoingTransferRegistry::cleanup
(
MonotonicTime
ts)
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