6 # pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" 9 #include <gtest/gtest.h> 15 #include "../helpers.hpp" 47 return NodeAwarenessUnknown;
49 return ni->
committed ? NodeAwarenessKnownAndCommitted : NodeAwarenessKnownButNotCommitted;
60 nodes.push_back(info);
65 for (
unsigned i = 0; i < nodes.size(); i++)
67 if (nodes.at(i).unique_id == unique_id)
77 for (
unsigned i = 0; i < nodes.size(); i++)
79 if (nodes.at(i).node_id == node_id)
89 TEST(dynamic_node_id_server_NodeDiscoverer, Basic)
91 using namespace uavcan::protocol::dynamic_node_id::server;
113 std::cout <<
"!!! Publishing NodeStatus, discovery is disabled" << std::endl;
117 ASSERT_LE(0, node_status_pub.
init());
119 uavcan::protocol::NodeStatus node_status;
120 node_status.uptime_sec = 0;
121 ASSERT_LE(0, node_status_pub.
broadcast(node_status));
134 std::cout <<
"!!! Enabling discovery" << std::endl;
149 std::cout <<
"!!! Publishing NodeStatus" << std::endl;
151 node_status.uptime_sec += 5U;
152 ASSERT_LE(0, node_status_pub.
broadcast(node_status));
166 std::cout <<
"!!! Publishing NodeStatus, discovery is enabled, GetNodeInfo mock server is initialized" << std::endl;
169 get_node_info_server.
response.hardware_version.unique_id[0] = 123;
170 get_node_info_server.
response.hardware_version.unique_id[6] = 213;
171 get_node_info_server.
response.hardware_version.unique_id[14] = 52;
172 ASSERT_LE(0, get_node_info_server.
start());
187 ASSERT_TRUE(handler.
findNode(get_node_info_server.
response.hardware_version.unique_id));
192 TEST(dynamic_node_id_server_NodeDiscoverer, RestartAndMaxAttempts)
194 using namespace uavcan::protocol::dynamic_node_id::server;
220 ASSERT_LE(0, node_status_pub.
init());
222 uavcan::protocol::NodeStatus node_status;
223 node_status.uptime_sec = 10;
224 ASSERT_LE(0, node_status_pub.
broadcast(node_status));
240 node_status.uptime_sec = 9;
241 ASSERT_LE(0, node_status_pub.
broadcast(node_status));
276 TEST(dynamic_node_id_server_NodeDiscoverer, Sizes)
282 std::cout <<
"protocol::GetNodeInfo::Response: " <<
sizeof(protocol::GetNodeInfo::Response) << std::endl;
TraceDiscoveryNewNodeFound
virtual void handleNewNodeDiscovery(const UniqueID *unique_id_or_null, uavcan::NodeID node_id)
virtual bool canDiscoverNewNodes() const
TraceDiscoveryNodeRestartDetected
TraceDiscoveryNodeFinalized
std::vector< NodeInfo > nodes
TEST(dynamic_node_id_server_NodeDiscoverer, Basic)
virtual NodeAwareness checkNodeAwareness(uavcan::NodeID node_id) const
protocol::dynamic_node_id::server::Entry::FieldTypes::unique_id UniqueID
uavcan::protocol::GetNodeInfo::Response response
bool hasUnknownNodes() const
TraceDiscoveryGetNodeInfoRequest
static GlobalDataTypeRegistry & instance()
NodeInfo * findNode(const uavcan::NodeID &node_id)
NodeInfo * findNode(const UniqueID &unique_id)
int init(const TransferPriority priority)
static MonotonicDuration fromMSec(int64_t ms)
int spinBoth(uavcan::MonotonicDuration duration)
static const TransferPriority OneHigherThanLowest
TraceDiscoveryGetNodeInfoFailure
int broadcast(const DataType &message)