commit
1dd862e574
@ -44,30 +44,31 @@
|
||||
#include <uavcan_stm32/uavcan_stm32.hpp>
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
* Configuration
|
||||
****************************************************************************/
|
||||
|
||||
#if CONFIG_UAVCAN_RX_QUEUE_CAPACITY > 0
|
||||
static uavcan_stm32::CanInitHelper<CONFIG_UAVCAN_RX_QUEUE_CAPACITY> can;
|
||||
#else
|
||||
static uavcan_stm32::CanInitHelper<> can;
|
||||
#if CONFIG_UAVCAN_RX_QUEUE_CAPACITY == 0
|
||||
# undef CONFIG_UAVCAN_RX_QUEUE_CAPACITY
|
||||
# define CONFIG_UAVCAN_RX_QUEUE_CAPACITY
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* 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
|
||||
****************************************************************************/
|
||||
|
||||
uavcan::ICanDriver& getCanDriver()
|
||||
uavcan::ICanDriver &getCanDriver(void)
|
||||
{
|
||||
static uavcan_stm32::CanInitHelper<CONFIG_UAVCAN_RX_QUEUE_CAPACITY> can;
|
||||
static bool initialized = false;
|
||||
|
||||
if (!initialized)
|
||||
@ -78,7 +79,7 @@ uavcan::ICanDriver& getCanDriver()
|
||||
int retries = 0;
|
||||
#endif
|
||||
|
||||
while (can.init(delay_callable, bitrate) < 0)
|
||||
while (can.init(delay, bitrate) < 0)
|
||||
{
|
||||
#if CONFIG_UAVCAN_INIT_RETRIES > 0
|
||||
retries++;
|
||||
@ -95,7 +96,7 @@ uavcan::ICanDriver& getCanDriver()
|
||||
return can.driver;
|
||||
}
|
||||
|
||||
uavcan::ISystemClock& getSystemClock()
|
||||
uavcan::ISystemClock &getSystemClock(void)
|
||||
{
|
||||
return uavcan_stm32::SystemClock::instance();
|
||||
}
|
||||
|
@ -42,14 +42,16 @@
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
|
||||
#include <uavcan/uavcan.hpp>
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
uavcan::ICanDriver& getCanDriver();
|
||||
uavcan::ISystemClock& getSystemClock();
|
||||
extern uavcan::ICanDriver &getCanDriver(void);
|
||||
extern uavcan::ISystemClock &getSystemClock(void);
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
@ -65,14 +67,15 @@ int main(int argc, FAR char *argv[])
|
||||
extern "C" int uavcan_main(int argc, FAR char *argv[])
|
||||
#endif
|
||||
{
|
||||
uavcan::Node<CONFIG_EXAMPLES_UAVCAN_NODE_MEM_POOL_SIZE>
|
||||
up_cxxinitialize();
|
||||
|
||||
static uavcan::Node<CONFIG_EXAMPLES_UAVCAN_NODE_MEM_POOL_SIZE>
|
||||
node(getCanDriver(), getSystemClock());
|
||||
int ret;
|
||||
|
||||
node.setNodeID(CONFIG_EXAMPLES_UAVCAN_NODE_ID);
|
||||
node.setName(CONFIG_EXAMPLES_UAVCAN_NODE_NAME);
|
||||
|
||||
ret = node.start();
|
||||
int ret = node.start();
|
||||
if (ret < 0)
|
||||
{
|
||||
std::fprintf(stderr, "ERROR: node.start failed: %d\n", ret);
|
||||
|
Loading…
Reference in New Issue
Block a user