mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-27 01:53:35 +08:00
Properly handling passive mode in NodeStatusProvider
This commit is contained in:
@@ -28,10 +28,17 @@ int NodeStatusProvider::publish()
|
|||||||
|
|
||||||
void NodeStatusProvider::publishWithErrorHandling()
|
void NodeStatusProvider::publishWithErrorHandling()
|
||||||
{
|
{
|
||||||
const int res = publish();
|
if (getNode().isPassiveMode())
|
||||||
if (res < 0)
|
|
||||||
{
|
{
|
||||||
getNode().registerInternalFailure("NodeStatus pub failed");
|
UAVCAN_TRACE("NodeStatusProvider", "NodeStatus pub skipped - passive mode");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const int res = publish();
|
||||||
|
if (res < 0)
|
||||||
|
{
|
||||||
|
getNode().registerInternalFailure("NodeStatus pub failed");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,15 +69,10 @@ int NodeStatusProvider::startAndPublish()
|
|||||||
return -ErrNotInited;
|
return -ErrNotInited;
|
||||||
}
|
}
|
||||||
|
|
||||||
int res = -1;
|
int res = publish(); // Initial broadcast
|
||||||
|
if (res < 0)
|
||||||
if (!getNode().isPassiveMode())
|
|
||||||
{
|
{
|
||||||
res = publish(); // Initial broadcast
|
goto fail;
|
||||||
if (res < 0)
|
|
||||||
{
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
res = gdr_sub_.start(GlobalDiscoveryRequestCallback(this, &NodeStatusProvider::handleGlobalDiscoveryRequest));
|
res = gdr_sub_.start(GlobalDiscoveryRequestCallback(this, &NodeStatusProvider::handleGlobalDiscoveryRequest));
|
||||||
@@ -85,10 +87,7 @@ int NodeStatusProvider::startAndPublish()
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!getNode().isPassiveMode())
|
TimerBase::startPeriodic(MonotonicDuration::fromMSec(protocol::NodeStatus::PUBLICATION_PERIOD_MS));
|
||||||
{
|
|
||||||
TimerBase::startPeriodic(MonotonicDuration::fromMSec(protocol::NodeStatus::PUBLICATION_PERIOD_MS));
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user