5 #include <gtest/gtest.h> 23 TEST(NodeStatusProvider, Basic)
32 uavcan::protocol::HardwareVersion hwver;
36 uavcan::protocol::SoftwareVersion swver;
39 swver.vcs_commit = 0x600DF00D;
44 ASSERT_TRUE(nsp.
getName().empty());
45 nsp.
setName(
"superluminal_communication_unit");
46 ASSERT_STREQ(
"superluminal_communication_unit", nsp.
getName().c_str());
48 ASSERT_EQ(uavcan::protocol::NodeStatus::HEALTH_OK, nsp.
getHealth());
49 ASSERT_EQ(uavcan::protocol::NodeStatus::MODE_INITIALIZATION, nsp.
getMode());
52 ASSERT_EQ(uavcan::protocol::NodeStatus::HEALTH_ERROR, nsp.
getHealth());
53 ASSERT_EQ(uavcan::protocol::NodeStatus::MODE_OPERATIONAL, nsp.
getMode());
86 ASSERT_LE(0, status_sub.start());
87 ASSERT_FALSE(status_sub.collector.msg.get());
91 ASSERT_TRUE(status_sub.collector.msg.get());
92 ASSERT_EQ(uavcan::protocol::NodeStatus::HEALTH_ERROR, status_sub.collector.msg->health);
93 ASSERT_EQ(0, status_sub.collector.msg->vendor_specific_status_code);
94 ASSERT_GE(1, status_sub.collector.msg->uptime_sec);
96 ASSERT_EQ(0, ad_hoc.invokations);
109 ASSERT_EQ(uavcan::protocol::NodeStatus::HEALTH_ERROR, status_sub.collector.msg->health);
110 ASSERT_EQ(1234, status_sub.collector.msg->vendor_specific_status_code);
111 ASSERT_GE(1, status_sub.collector.msg->uptime_sec);
113 ASSERT_EQ(0, ad_hoc.invokations);
123 ASSERT_LE(0, gni_cln.
call(1, uavcan::protocol::GetNodeInfo::Request()));
129 ASSERT_EQ(1, gni_cln.
collector.
result->getCallID().server_node_id.get());
131 ASSERT_EQ(uavcan::protocol::NodeStatus::HEALTH_CRITICAL,
134 ASSERT_TRUE(hwver == gni_cln.
collector.
result->getResponse().hardware_version);
135 ASSERT_TRUE(swver == gni_cln.
collector.
result->getResponse().software_version);
137 ASSERT_EQ(
"superluminal_communication_unit", gni_cln.
collector.
result->getResponse().name);
139 ASSERT_EQ(0, ad_hoc.invokations);
148 EXPECT_EQ(1, ad_hoc.invokations);
std::unique_ptr< Result > result
uint8_t getHealth() const
void setStatusPublicationPeriod(uavcan::MonotonicDuration period)
const NodeName & getName() const
void setSoftwareVersion(const protocol::SoftwareVersion &version)
Dispatcher & getDispatcher()
IAdHocNodeStatusUpdater * getAdHocNodeStatusUpdater() const
int startAndPublish(const TransferPriority priority=TransferPriority::Default)
uavcan::MonotonicDuration getStatusPublicationPeriod() const
TEST(NodeStatusProvider, Basic)
const uint64_t & getTxTransferCount() const
int call(uavcan::NodeID node_id, const typename DataType::Request &request)
void setVendorSpecificStatusCode(VendorSpecificStatusCode code)
void setHardwareVersion(const protocol::HardwareVersion &version)
const TransferPerfCounter & getTransferPerfCounter() const
uavcan::uint64_t invokations
static GlobalDataTypeRegistry & instance()
virtual void updateNodeStatus()
static MonotonicDuration fromMSec(int64_t ms)
int spinBoth(uavcan::MonotonicDuration duration)
VendorSpecificStatusCode getVendorSpecificStatusCode() const
void setModeOperational()
void setAdHocNodeStatusUpdater(IAdHocNodeStatusUpdater *updater)
void setName(const NodeName &name)