canutils/uavcan: Make global static can a local static in getCanDriver()

This commit is contained in:
Paul A. Patience 2015-11-12 12:47:23 -05:00
parent 556a771f36
commit 75f745ba74

View File

@ -44,30 +44,31 @@
#include <uavcan_stm32/uavcan_stm32.hpp> #include <uavcan_stm32/uavcan_stm32.hpp>
/**************************************************************************** /****************************************************************************
* Private Data * Configuration
****************************************************************************/ ****************************************************************************/
#if CONFIG_UAVCAN_RX_QUEUE_CAPACITY > 0 #if CONFIG_UAVCAN_RX_QUEUE_CAPACITY == 0
static uavcan_stm32::CanInitHelper<CONFIG_UAVCAN_RX_QUEUE_CAPACITY> can; # undef CONFIG_UAVCAN_RX_QUEUE_CAPACITY
#else # define CONFIG_UAVCAN_RX_QUEUE_CAPACITY
static uavcan_stm32::CanInitHelper<> can;
#endif #endif
/**************************************************************************** /****************************************************************************
* Private Functions * Private Functions
****************************************************************************/ ****************************************************************************/
static void delay_callable() static void delay(void)
{ {
std::usleep(can.getRecommendedListeningDelay().toUSec()); std::usleep(uavcan_stm32::CanInitHelper<CONFIG_UAVCAN_RX_QUEUE_CAPACITY>::
getRecommendedListeningDelay().toUSec());
} }
/**************************************************************************** /****************************************************************************
* Public Functions * Public Functions
****************************************************************************/ ****************************************************************************/
uavcan::ICanDriver& getCanDriver() uavcan::ICanDriver &getCanDriver(void)
{ {
static uavcan_stm32::CanInitHelper<CONFIG_UAVCAN_RX_QUEUE_CAPACITY> can;
static bool initialized = false; static bool initialized = false;
if (!initialized) if (!initialized)
@ -78,7 +79,7 @@ uavcan::ICanDriver& getCanDriver()
int retries = 0; int retries = 0;
#endif #endif
while (can.init(delay_callable, bitrate) < 0) while (can.init(delay, bitrate) < 0)
{ {
#if CONFIG_UAVCAN_INIT_RETRIES > 0 #if CONFIG_UAVCAN_INIT_RETRIES > 0
retries++; retries++;
@ -95,7 +96,7 @@ uavcan::ICanDriver& getCanDriver()
return can.driver; return can.driver;
} }
uavcan::ISystemClock& getSystemClock() uavcan::ISystemClock &getSystemClock(void)
{ {
return uavcan_stm32::SystemClock::instance(); return uavcan_stm32::SystemClock::instance();
} }