Revert "NodeDiscoverer: Pausing querying GetNodeInfo if the node does not send NodeStatus"

This reverts commit f0627423c6.
This commit is contained in:
Pavel Kirienko
2015-05-11 17:25:38 +03:00
parent f0627423c6
commit c62b871f20
2 changed files with 7 additions and 19 deletions
@@ -74,7 +74,7 @@ enum TraceCode
TraceDiscoveryGetNodeInfoFailure, // node ID
TraceDiscoveryTimerStart, // interval in microseconds
// 45
TraceDiscoveryTimerStop, // number of unknown nodes
TraceDiscoveryTimerStop, // reason code (see sources for details)
TraceDiscoveryGetNodeInfoRequest, // target node ID
TraceDiscoveryNodeRestartDetected, // node ID
Trace21,
@@ -74,14 +74,12 @@ class NodeDiscoverer : TimerBase
struct NodeData
{
uint32_t last_seen_uptime; ///< Used for restart detection
uint8_t num_get_node_info_attempts; ///< Used to detect if the node doesn't support GetNodeInfo
bool updated_since_last_query; ///< Allows to pause trying to GetNodeInfo if the node is offline
uint32_t last_seen_uptime;
uint8_t num_get_node_info_attempts;
NodeData()
: last_seen_uptime(0)
, num_get_node_info_attempts(0)
, updated_since_last_query(false)
{ }
};
@@ -122,10 +120,7 @@ class NodeDiscoverer : TimerBase
{
const NodeMap::KVPair* const kv = node_map_.getByIndex(i);
UAVCAN_ASSERT(kv != NULL);
if (kv->value.updated_since_last_query)
{
lowest_number_of_attempts = min(lowest_number_of_attempts, kv->value.num_get_node_info_attempts);
}
lowest_number_of_attempts = min(lowest_number_of_attempts, kv->value.num_get_node_info_attempts);
}
// Now, among nodes with this number of attempts selecting the one with highest uptime.
@@ -136,8 +131,7 @@ class NodeDiscoverer : TimerBase
const NodeMap::KVPair* const kv = node_map_.getByIndex(i);
UAVCAN_ASSERT(kv != NULL);
if ((kv->value.num_get_node_info_attempts == lowest_number_of_attempts) &&
(kv->value.last_seen_uptime >= largest_uptime) &&
(kv->value.updated_since_last_query))
(kv->value.last_seen_uptime >= largest_uptime))
{
largest_uptime = kv->value.last_seen_uptime;
output = kv->key;
@@ -236,7 +230,7 @@ class NodeDiscoverer : TimerBase
if (!handler_.canDiscoverNewNodes())
{
trace(TraceDiscoveryTimerStop, node_map_.getSize());
trace(TraceDiscoveryTimerStop, 0);
stop();
return;
}
@@ -244,16 +238,11 @@ class NodeDiscoverer : TimerBase
const NodeID node_id = pickNextNodeToQuery();
if (!node_id.isUnicast())
{
trace(TraceDiscoveryTimerStop, node_map_.getSize());
trace(TraceDiscoveryTimerStop, 1);
stop();
return;
}
NodeData* const data = node_map_.access(node_id);
UAVCAN_ASSERT(data != NULL);
UAVCAN_ASSERT(data->updated_since_last_query);
data->updated_since_last_query = false;
trace(TraceDiscoveryGetNodeInfoRequest, node_id.get());
UAVCAN_TRACE("dynamic_node_id_server::NodeDiscoverer", "Requesting GetNodeInfo from node %d",
@@ -292,7 +281,6 @@ class NodeDiscoverer : TimerBase
data->num_get_node_info_attempts = 0;
}
data->last_seen_uptime = msg.uptime_sec;
data->updated_since_last_query = true;
if (!isRunning() && handler_.canDiscoverNewNodes())
{