uavcan: fix driver init after stop/start (#25511)

This commit is contained in:
Alexander Lerach 2025-09-02 20:02:15 +02:00 committed by GitHub
parent ce207837cf
commit 9015001b42
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 2 deletions

View File

@ -644,7 +644,7 @@ uavcan::int16_t CanIface::configureFilters(const uavcan::CanFilterConfig *filter
bool CanIface::waitCCCRBitStateChange(uint32_t mask, bool target_state)
{
#if UAVCAN_STM32_NUTTX
#if UAVCAN_STM32H7_NUTTX
const unsigned Timeout = 1000;
#else
const unsigned Timeout = 2000000;
@ -657,7 +657,7 @@ bool CanIface::waitCCCRBitStateChange(uint32_t mask, bool target_state)
return true;
}
#if UAVCAN_STM32_NUTTX
#if UAVCAN_STM32H7_NUTTX
::usleep(1000);
#endif
}

View File

@ -505,12 +505,16 @@ void UavcanNode::Run()
if (can_init_res < 0) {
PX4_ERR("CAN driver init failed %i", can_init_res);
ScheduleClear();
return;
}
int rv = _node.start();
if (rv < 0) {
PX4_ERR("Failed to start the node");
ScheduleClear();
return;
}
// If the node_id was not supplied by the bootloader do Dynamic Node ID allocation
@ -528,6 +532,8 @@ void UavcanNode::Run()
if (client_start_res < 0) {
PX4_ERR("Failed to start the dynamic node ID client");
ScheduleClear();
return;
}
}
}