5 #include <gtest/gtest.h> 14 uavcan::protocol::NodeStatus msg;
17 msg.uptime_sec = uptime_sec;
28 TEST(NodeStatusMonitor, Basic)
30 using uavcan::protocol::NodeStatus;
44 ASSERT_LE(0, nsm.
start());
59 publishNodeStatus(can, 10, NodeStatus::HEALTH_OK, NodeStatus::MODE_OPERATIONAL, 12, 0);
63 publishNodeStatus(can, 9, NodeStatus::HEALTH_WARNING, NodeStatus::MODE_INITIALIZATION, 0, 0);
67 publishNodeStatus(can, 11, NodeStatus::HEALTH_CRITICAL, NodeStatus::MODE_MAINTENANCE, 999, 0);
86 std::cout <<
"Starting timeout test, current monotime is " << clock_mock.
monotonic << std::endl;
127 publishNodeStatus(can, 11, NodeStatus::HEALTH_WARNING, NodeStatus::MODE_OPERATIONAL, 999, 1);
130 publishNodeStatus(can, 127, NodeStatus::HEALTH_WARNING, NodeStatus::MODE_OPERATIONAL, 9999, 1);
133 publishNodeStatus(can, 1, NodeStatus::HEALTH_OK, NodeStatus::MODE_OPERATIONAL, 1234, 1);
uint64_t monotonic_auto_advance
bool isNodeKnown(NodeID node_id) const
static void publishNodeStatus(CanDriverMock &can, uavcan::NodeID node_id, uavcan::uint8_t health, uavcan::uint8_t mode, uavcan::uint32_t uptime_sec, uavcan::TransferID tid)
void advance(uint64_t usec) const
NodeID findNodeWithWorstHealth() const
int spin(MonotonicTime deadline)
static void emulateSingleFrameBroadcastTransfer(CanDriver &can, uavcan::NodeID node_id, const MessageType &message, uavcan::TransferID tid)
NodeStatus getNodeStatus(NodeID node_id) const
static GlobalDataTypeRegistry & instance()
TEST(NodeStatusMonitor, Basic)
static void shortSpin(TestNode &node)
static MonotonicDuration fromMSec(int64_t ms)
void forgetNode(NodeID node_id)