diff --git a/libuavcan/include/uavcan/protocol/firmware_update_trigger.hpp b/libuavcan/include/uavcan/protocol/firmware_update_trigger.hpp index 1016add7e1..820a00b94c 100644 --- a/libuavcan/include/uavcan/protocol/firmware_update_trigger.hpp +++ b/libuavcan/include/uavcan/protocol/firmware_update_trigger.hpp @@ -212,8 +212,7 @@ class FirmwareUpdateTrigger : public INodeInfoListener, virtual void handleNodeStatusChange(const NodeStatusMonitor::NodeStatusChangeEvent& event) { - if (event.status.status_code == protocol::NodeStatus::STATUS_OFFLINE || - !event.status.known) + if (event.status.mode == protocol::NodeStatus::MODE_OFFLINE) { pending_nodes_.remove(event.node_id); UAVCAN_TRACE("FirmwareUpdateTrigger", "Node ID %d is offline hence forgotten", int(event.node_id.get())); diff --git a/libuavcan/test/node/node.cpp b/libuavcan/test/node/node.cpp index e4c63df164..9fc8cc56bf 100644 --- a/libuavcan/test/node/node.cpp +++ b/libuavcan/test/node/node.cpp @@ -58,7 +58,7 @@ TEST(Node, Basic) * Init the second node - network is empty */ ASSERT_LE(0, node2.start()); - ASSERT_FALSE(node_status_monitor.findNodeWithWorstStatus().isValid()); + ASSERT_FALSE(node_status_monitor.findNodeWithWorstHealth().isValid()); /* * Init the first node @@ -70,7 +70,7 @@ TEST(Node, Basic) ASSERT_LE(0, node1.spin(uavcan::MonotonicDuration::fromMSec(2000))); - ASSERT_EQ(1, node_status_monitor.findNodeWithWorstStatus().get()); + ASSERT_EQ(1, node_status_monitor.findNodeWithWorstHealth().get()); /* * Some logging diff --git a/libuavcan/test/node/sub_node.cpp b/libuavcan/test/node/sub_node.cpp index 7e6263b36c..b2c0f96af2 100644 --- a/libuavcan/test/node/sub_node.cpp +++ b/libuavcan/test/node/sub_node.cpp @@ -61,7 +61,7 @@ TEST(SubNode, Basic) ASSERT_LE(0, node1.spin(uavcan::MonotonicDuration::fromMSec(2000))); - ASSERT_EQ(1, node_status_monitor.findNodeWithWorstStatus().get()); + ASSERT_EQ(1, node_status_monitor.findNodeWithWorstHealth().get()); /* * Some logging diff --git a/libuavcan/test/protocol/node_info_retriever.cpp b/libuavcan/test/protocol/node_info_retriever.cpp index 20ea83b58e..d16e58eae8 100644 --- a/libuavcan/test/protocol/node_info_retriever.cpp +++ b/libuavcan/test/protocol/node_info_retriever.cpp @@ -13,11 +13,12 @@ #include #include "helpers.hpp" -static void publishNodeStatus(PairableCanDriver& can, uavcan::NodeID node_id, uavcan::uint8_t status_code, +static void publishNodeStatus(PairableCanDriver& can, uavcan::NodeID node_id, uavcan::uint32_t uptime_sec, uavcan::TransferID tid) { uavcan::protocol::NodeStatus msg; - msg.status_code = status_code; + msg.health = uavcan::protocol::NodeStatus::HEALTH_OK; + msg.mode = uavcan::protocol::NodeStatus::MODE_OPERATIONAL; msg.uptime_sec = uptime_sec; emulateSingleFrameBroadcastTransfer(can, node_id, msg, tid); } @@ -55,7 +56,7 @@ struct NodeInfoListener : public uavcan::INodeInfoListener virtual void handleNodeStatusChange(const uavcan::NodeStatusMonitor::NodeStatusChangeEvent& event) { std::cout << "NODE " << int(event.node_id.get()) << " STATUS CHANGE: " - << int(event.old_status.status_code) << " --> " << int(event.status.status_code) << std::endl; + << event.old_status.toString() << " --> " << event.status.toString() << std::endl; status_change_cnt++; } @@ -137,9 +138,9 @@ TEST(NodeInfoRetriever, Basic) uavcan::TransferID tid; - publishNodeStatus(nodes.can_a, uavcan::NodeID(10), 0, 10, tid); - publishNodeStatus(nodes.can_a, uavcan::NodeID(11), 0, 10, tid); - publishNodeStatus(nodes.can_a, uavcan::NodeID(12), 0, 10, tid); + publishNodeStatus(nodes.can_a, uavcan::NodeID(10), 10, tid); + publishNodeStatus(nodes.can_a, uavcan::NodeID(11), 10, tid); + publishNodeStatus(nodes.can_a, uavcan::NodeID(12), 10, tid); nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(40)); ASSERT_LE(1, retr.getNumPendingRequests()); @@ -151,9 +152,9 @@ TEST(NodeInfoRetriever, Basic) ASSERT_TRUE(retr.isRetrievingInProgress()); tid.increment(); - publishNodeStatus(nodes.can_a, uavcan::NodeID(10), 0, 11, tid); - publishNodeStatus(nodes.can_a, uavcan::NodeID(11), 0, 11, tid); - publishNodeStatus(nodes.can_a, uavcan::NodeID(12), 0, 11, tid); + publishNodeStatus(nodes.can_a, uavcan::NodeID(10), 11, tid); + publishNodeStatus(nodes.can_a, uavcan::NodeID(11), 11, tid); + publishNodeStatus(nodes.can_a, uavcan::NodeID(12), 11, tid); nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(40)); ASSERT_LE(1, retr.getNumPendingRequests()); @@ -165,9 +166,9 @@ TEST(NodeInfoRetriever, Basic) ASSERT_TRUE(retr.isRetrievingInProgress()); tid.increment(); - publishNodeStatus(nodes.can_a, uavcan::NodeID(10), 0, 12, tid); - publishNodeStatus(nodes.can_a, uavcan::NodeID(11), 0, 12, tid); - publishNodeStatus(nodes.can_a, uavcan::NodeID(12), 0, 10, tid); // Reset + publishNodeStatus(nodes.can_a, uavcan::NodeID(10), 12, tid); + publishNodeStatus(nodes.can_a, uavcan::NodeID(11), 12, tid); + publishNodeStatus(nodes.can_a, uavcan::NodeID(12), 10, tid); // Reset nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(40)); ASSERT_LE(1, retr.getNumPendingRequests()); @@ -183,7 +184,7 @@ TEST(NodeInfoRetriever, Basic) EXPECT_EQ(2, listener.info_unavailable_cnt); tid.increment(); - publishNodeStatus(nodes.can_a, uavcan::NodeID(12), 0, 11, tid); + publishNodeStatus(nodes.can_a, uavcan::NodeID(12), 11, tid); nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(40)); ASSERT_EQ(1, retr.getNumPendingRequests()); @@ -193,7 +194,7 @@ TEST(NodeInfoRetriever, Basic) ASSERT_TRUE(retr.isRetrievingInProgress()); tid.increment(); - publishNodeStatus(nodes.can_a, uavcan::NodeID(12), 0, 12, tid); + publishNodeStatus(nodes.can_a, uavcan::NodeID(12), 12, tid); nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(1200)); ASSERT_FALSE(retr.isRetrievingInProgress()); // Out of attempts, stopping @@ -214,9 +215,9 @@ TEST(NodeInfoRetriever, Basic) ASSERT_EQ(0, retr.getNumPendingRequests()); tid.increment(); - publishNodeStatus(nodes.can_a, uavcan::NodeID(10), 0, 60, tid); - publishNodeStatus(nodes.can_a, uavcan::NodeID(11), 0, 60, tid); - publishNodeStatus(nodes.can_a, uavcan::NodeID(12), 0, 60, tid); + publishNodeStatus(nodes.can_a, uavcan::NodeID(10), 60, tid); + publishNodeStatus(nodes.can_a, uavcan::NodeID(11), 60, tid); + publishNodeStatus(nodes.can_a, uavcan::NodeID(12), 60, tid); nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(200)); @@ -261,7 +262,7 @@ TEST(NodeInfoRetriever, MaxConcurrentRequests) */ for (uint8_t node_id = 1U; node_id <= 127U; node_id++) { - publishNodeStatus(nodes.can_a, node_id, 0, 0, uavcan::TransferID()); + publishNodeStatus(nodes.can_a, node_id, 0, uavcan::TransferID()); nodes.spinBoth(uavcan::MonotonicDuration::fromMSec(10)); ASSERT_GE(MaxPendingRequests, retr.getNumPendingRequests()); ASSERT_TRUE(retr.isRetrievingInProgress()); diff --git a/libuavcan_drivers/linux/apps/test_dynamic_node_id_client.cpp b/libuavcan_drivers/linux/apps/test_dynamic_node_id_client.cpp index 8743577730..d3be73197e 100644 --- a/libuavcan_drivers/linux/apps/test_dynamic_node_id_client.cpp +++ b/libuavcan_drivers/linux/apps/test_dynamic_node_id_client.cpp @@ -65,7 +65,7 @@ uavcan_linux::NodePtr initNodeWithDynamicID(const std::vector& ifac */ node->setNodeID(client.getAllocatedNodeID()); - node->setStatusOk(); + node->setModeOperational(); return node; } diff --git a/libuavcan_drivers/linux/apps/test_multithreading.cpp b/libuavcan_drivers/linux/apps/test_multithreading.cpp index 3946e8c898..b2137a8a9e 100644 --- a/libuavcan_drivers/linux/apps/test_multithreading.cpp +++ b/libuavcan_drivers/linux/apps/test_multithreading.cpp @@ -406,7 +406,7 @@ static uavcan_linux::NodePtr initMainNode(const std::vector& ifaces const int start_res = node->start(); ENFORCE(0 == start_res); - node->setStatusOk(); + node->setModeOperational(); return node; } @@ -483,7 +483,7 @@ static void runSubNode(const uavcan_linux::SubNodePtr& node) virtual void handleNodeStatusChange(const NodeStatusChangeEvent& event) override { std::cout << "Remote node NID " << int(event.node_id.get()) << " changed status: " - << int(event.old_status.status_code) << " --> " << int(event.status.status_code) << std::endl; + << event.old_status.toString() << " --> " << event.status.toString() << std::endl; } }; NodeStatusMonitor nsm(*node); diff --git a/libuavcan_drivers/linux/apps/test_node.cpp b/libuavcan_drivers/linux/apps/test_node.cpp index 57f9bb9fc5..c284797aab 100644 --- a/libuavcan_drivers/linux/apps/test_node.cpp +++ b/libuavcan_drivers/linux/apps/test_node.cpp @@ -33,7 +33,7 @@ static uavcan_linux::NodePtr initNode(const std::vector& ifaces, ua /* * Say Hi to the world. */ - node->setStatusOk(); + node->setModeOperational(); node->logInfo("init", "Hello world! I'm [%*], NID %*", node->getNodeStatusProvider().getName().c_str(), int(node->getNodeID().get())); return node;