transport_stats_provider.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
3  */
4 
5 #ifndef UAVCAN_PROTOCOL_TRANSPORT_STATS_PROVIDER_HPP_INCLUDED
6 #define UAVCAN_PROTOCOL_TRANSPORT_STATS_PROVIDER_HPP_INCLUDED
7 
11 #include <uavcan/protocol/GetTransportStats.hpp>
12 
13 namespace uavcan
14 {
20 {
21  typedef MethodBinder<const TransportStatsProvider*,
22  void (TransportStatsProvider::*)(const protocol::GetTransportStats::Request&,
23  protocol::GetTransportStats::Response&) const>
25 
27 
28  void handleGetTransportStats(const protocol::GetTransportStats::Request&,
29  protocol::GetTransportStats::Response& resp) const
30  {
31  const TransferPerfCounter& perf = srv_.getNode().getDispatcher().getTransferPerfCounter();
32  resp.transfer_errors = perf.getErrorCount();
33  resp.transfers_tx = perf.getTxTransferCount();
34  resp.transfers_rx = perf.getRxTransferCount();
35 
36  const CanIOManager& canio = srv_.getNode().getDispatcher().getCanIOManager();
37  for (uint8_t i = 0; i < canio.getNumIfaces(); i++)
38  {
39  const CanIfacePerfCounters can_perf = canio.getIfacePerfCounters(i);
40  protocol::CANIfaceStats stats;
41  stats.errors = can_perf.errors;
42  stats.frames_tx = can_perf.frames_tx;
43  stats.frames_rx = can_perf.frames_rx;
44  resp.can_iface_stats.push_back(stats);
45  }
46  }
47 
48 public:
50  : srv_(node)
51  { }
52 
57  int start()
58  {
60  }
61 };
62 
63 }
64 
65 #endif // UAVCAN_PROTOCOL_TRANSPORT_STATS_PROVIDER_HPP_INCLUDED
uavcan::CanIfacePerfCounters
Definition: can_io.hpp:115
uavcan::TransportStatsProvider::start
int start()
Definition: transport_stats_provider.hpp:57
uavcan::CanIfacePerfCounters::frames_tx
uint64_t frames_tx
Definition: can_io.hpp:117
uavcan::TransportStatsProvider::handleGetTransportStats
void handleGetTransportStats(const protocol::GetTransportStats::Request &, protocol::GetTransportStats::Response &resp) const
Definition: transport_stats_provider.hpp:28
uavcan::Noncopyable
Definition: templates.hpp:46
uavcan::TransportStatsProvider::TransportStatsProvider
TransportStatsProvider(INode &node)
Definition: transport_stats_provider.hpp:49
uavcan::TransferPerfCounter::getErrorCount
const uint64_t & getErrorCount() const
Definition: perf_counter.hpp:65
uavcan::CanIOManager::getIfacePerfCounters
CanIfacePerfCounters getIfacePerfCounters(uint8_t iface_index) const
Definition: uc_can_io.cpp:282
uavcan::TransferPerfCounter::getRxTransferCount
const uint64_t & getRxTransferCount() const
Definition: perf_counter.hpp:64
uavcan::TransferPerfCounter
Definition: perf_counter.hpp:36
uavcan::ServiceServer
Definition: service_server.hpp:90
uavcan::uint8_t
std::uint8_t uint8_t
Definition: std.hpp:24
uavcan::CanIOManager::getNumIfaces
uint8_t getNumIfaces() const
Definition: can_io.hpp:158
uavcan::CanIOManager
Definition: can_io.hpp:128
uavcan::CanIfacePerfCounters::frames_rx
uint64_t frames_rx
Definition: can_io.hpp:118
uavcan::TransportStatsProvider
Definition: transport_stats_provider.hpp:19
UAVCAN_EXPORT
#define UAVCAN_EXPORT
Definition: libuavcan/libuavcan/include/uavcan/build_config.hpp:108
method_binder.hpp
uavcan::INode
Definition: abstract_node.hpp:19
uavcan::ServiceServer::start
int start(const Callback &callback)
Definition: service_server.hpp:158
build_config.hpp
uavcan::GenericSubscriberBase::getNode
INode & getNode() const
Definition: generic_subscriber.hpp:120
uavcan::MethodBinder
Definition: method_binder.hpp:20
uavcan::TransferPerfCounter::getTxTransferCount
const uint64_t & getTxTransferCount() const
Definition: perf_counter.hpp:63
uavcan::CanIfacePerfCounters::errors
uint64_t errors
Definition: can_io.hpp:119
uavcan::TransportStatsProvider::srv_
ServiceServer< protocol::GetTransportStats, GetTransportStatsCallback > srv_
Definition: transport_stats_provider.hpp:26
pyuavcan_v0.introspect.node
node
Definition: introspect.py:398
uavcan
Definition: libuavcan/libuavcan/include/uavcan/build_config.hpp:204
service_server.hpp


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