From 0c1ecc0caa92ceca3a56a819b26fdc1a8b4db2a8 Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Sun, 15 Jun 2014 22:27:16 +0400 Subject: [PATCH] NetworkCompatibilityChecker: num_failed_nodes moved to NetworkCompatibilityCheckResult --- .../include/uavcan/protocol/network_compat_checker.hpp | 10 ++++++---- libuavcan/src/protocol/uc_network_compat_checker.cpp | 3 +-- libuavcan/test/protocol/network_compat_checker.cpp | 3 ++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/libuavcan/include/uavcan/protocol/network_compat_checker.hpp b/libuavcan/include/uavcan/protocol/network_compat_checker.hpp index d7a0a05e75..4107c15c0d 100644 --- a/libuavcan/include/uavcan/protocol/network_compat_checker.hpp +++ b/libuavcan/include/uavcan/protocol/network_compat_checker.hpp @@ -17,6 +17,12 @@ namespace uavcan struct UAVCAN_EXPORT NetworkCompatibilityCheckResult { NodeID conflicting_node; + uint8_t num_failed_nodes; + + NetworkCompatibilityCheckResult() + : num_failed_nodes(0) + { } + bool isOk() const { return !conflicting_node.isValid(); } }; @@ -40,7 +46,6 @@ class UAVCAN_EXPORT NetworkCompatibilityChecker : Noncopyable NodeIDMask nid_mask_checked_; NetworkCompatibilityCheckResult result_; DataTypeKind checking_dtkind_; - uint8_t num_failed_nodes_; bool last_cats_request_ok_; INode& getNode() { return ns_sub_.getNode(); } @@ -64,14 +69,11 @@ public: : ns_sub_(node) , cats_cln_(node) , checking_dtkind_(DataTypeKindService) - , num_failed_nodes_(0) , last_cats_request_ok_(false) { } int execute(); - uint8_t getNumFailedNodes() const { return num_failed_nodes_; } - const NetworkCompatibilityCheckResult& getResult() const { return result_; } static int publishGlobalDiscoveryRequest(INode& node); diff --git a/libuavcan/src/protocol/uc_network_compat_checker.cpp b/libuavcan/src/protocol/uc_network_compat_checker.cpp index e4ae61836e..e82f8f4a33 100644 --- a/libuavcan/src/protocol/uc_network_compat_checker.cpp +++ b/libuavcan/src/protocol/uc_network_compat_checker.cpp @@ -132,7 +132,6 @@ int NetworkCompatibilityChecker::checkOneNode(NodeID nid) int NetworkCompatibilityChecker::checkNodes() { (void)nid_mask_checked_.reset(); - num_failed_nodes_ = 0; result_ = NetworkCompatibilityCheckResult(); while (result_.isOk()) @@ -142,7 +141,7 @@ int NetworkCompatibilityChecker::checkNodes() { UAVCAN_TRACE("NodeInitializer", "Checking nid=%i", int(nid.get())); const int res = checkOneNode(nid); - num_failed_nodes_ += (res < 0) ? 1U : 0U; + result_.num_failed_nodes += (res < 0) ? 1U : 0U; UAVCAN_TRACE("NodeInitializer", "Checked nid=%i result=%i", int(nid.get()), res); } else { break; } diff --git a/libuavcan/test/protocol/network_compat_checker.cpp b/libuavcan/test/protocol/network_compat_checker.cpp index 7c62fce586..cf12167723 100644 --- a/libuavcan/test/protocol/network_compat_checker.cpp +++ b/libuavcan/test/protocol/network_compat_checker.cpp @@ -100,7 +100,8 @@ TEST(NetworkCompatibilityChecker, RequestTimeout) ASSERT_EQ(0, ni.execute()); // The one (and only) node has failed - ASSERT_EQ(1, ni.getNumFailedNodes()); + ASSERT_EQ(1, ni.getResult().num_failed_nodes); + ASSERT_TRUE(ni.getResult().isOk()); }