From 098c29ce935bc80839fe340742a6cc22e56403db Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Sat, 9 May 2015 12:39:05 +0300 Subject: [PATCH] Transport stats provider moved to header --- .../protocol/transport_stats_provider.hpp | 25 +++++++++++- .../protocol/uc_transport_stats_provider.cpp | 40 ------------------- 2 files changed, 23 insertions(+), 42 deletions(-) delete mode 100644 libuavcan/src/protocol/uc_transport_stats_provider.cpp diff --git a/libuavcan/include/uavcan/protocol/transport_stats_provider.hpp b/libuavcan/include/uavcan/protocol/transport_stats_provider.hpp index 173e9c4b7c..34f8aaa0b0 100644 --- a/libuavcan/include/uavcan/protocol/transport_stats_provider.hpp +++ b/libuavcan/include/uavcan/protocol/transport_stats_provider.hpp @@ -5,6 +5,7 @@ #ifndef UAVCAN_PROTOCOL_TRANSPORT_STATS_PROVIDER_HPP_INCLUDED #define UAVCAN_PROTOCOL_TRANSPORT_STATS_PROVIDER_HPP_INCLUDED +#include #include #include #include @@ -25,7 +26,24 @@ class UAVCAN_EXPORT TransportStatsProvider : Noncopyable ServiceServer srv_; void handleGetTransportStats(const protocol::GetTransportStats::Request&, - protocol::GetTransportStats::Response& resp) const; + protocol::GetTransportStats::Response& resp) const + { + const TransferPerfCounter& perf = srv_.getNode().getDispatcher().getTransferPerfCounter(); + resp.transfer_errors = perf.getErrorCount(); + resp.transfers_tx = perf.getTxTransferCount(); + resp.transfers_rx = perf.getRxTransferCount(); + + const CanIOManager& canio = srv_.getNode().getDispatcher().getCanIOManager(); + for (uint8_t i = 0; i < canio.getNumIfaces(); i++) + { + const CanIfacePerfCounters can_perf = canio.getIfacePerfCounters(i); + protocol::CANIfaceStats stats; + stats.errors = can_perf.errors; + stats.frames_tx = can_perf.frames_tx; + stats.frames_rx = can_perf.frames_rx; + resp.can_iface_stats.push_back(stats); + } + } public: explicit TransportStatsProvider(INode& node) @@ -36,7 +54,10 @@ public: * Once started, this class requires no further attention. * Returns negative error code. */ - int start(); + int start() + { + return srv_.start(GetTransportStatsCallback(this, &TransportStatsProvider::handleGetTransportStats)); + } }; } diff --git a/libuavcan/src/protocol/uc_transport_stats_provider.cpp b/libuavcan/src/protocol/uc_transport_stats_provider.cpp deleted file mode 100644 index 63c31c4ba7..0000000000 --- a/libuavcan/src/protocol/uc_transport_stats_provider.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2014 Pavel Kirienko - */ - -#include -#if !UAVCAN_TINY - -#include - -namespace uavcan -{ - -void TransportStatsProvider::handleGetTransportStats(const protocol::GetTransportStats::Request&, - protocol::GetTransportStats::Response& resp) const -{ - const TransferPerfCounter& perf = srv_.getNode().getDispatcher().getTransferPerfCounter(); - resp.transfer_errors = perf.getErrorCount(); - resp.transfers_tx = perf.getTxTransferCount(); - resp.transfers_rx = perf.getRxTransferCount(); - - const CanIOManager& canio = srv_.getNode().getDispatcher().getCanIOManager(); - for (uint8_t i = 0; i < canio.getNumIfaces(); i++) - { - const CanIfacePerfCounters can_perf = canio.getIfacePerfCounters(i); - protocol::CANIfaceStats stats; - stats.errors = can_perf.errors; - stats.frames_tx = can_perf.frames_tx; - stats.frames_rx = can_perf.frames_rx; - resp.can_iface_stats.push_back(stats); - } -} - -int TransportStatsProvider::start() -{ - return srv_.start(GetTransportStatsCallback(this, &TransportStatsProvider::handleGetTransportStats)); -} - -} - -#endif