sub_node.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 Pavel Kirienko <pavel.kirienko@gmail.com>
3  */
4 
5 #include <gtest/gtest.h>
6 #include <uavcan/node/node.hpp>
9 #include "test_node.hpp"
10 #include "../protocol/helpers.hpp"
11 
12 static void registerTypes()
13 {
21 }
22 
23 
24 TEST(SubNode, Basic)
25 {
26  registerTypes();
28 
29  uavcan::protocol::SoftwareVersion swver;
30  swver.major = 0;
31  swver.minor = 1;
32  swver.vcs_commit = 0xDEADBEEF;
33 
34  std::cout << "sizeof(uavcan::SubNode<0>): " << sizeof(uavcan::SubNode<0>) << std::endl;
35 
36  /*
37  * uavcan::Node
38  */
39  uavcan::Node<1024> node1(nodes.can_a, nodes.clock_a);
40  node1.setName("com.example");
41  node1.setNodeID(1);
42  node1.setSoftwareVersion(swver);
43 
44  /*
45  * uavcan::SubNode
46  */
47  uavcan::SubNode<1024> node2(nodes.can_b, nodes.clock_b);
48 
49  BackgroundSpinner bgspinner(node2, node1);
51 
52  uavcan::NodeStatusMonitor node_status_monitor(node2);
53  ASSERT_LE(0, node_status_monitor.start());
54 
55  /*
56  * Init the first node
57  */
58  ASSERT_FALSE(node1.isStarted());
59  ASSERT_EQ(-uavcan::ErrNotInited, node1.spin(uavcan::MonotonicDuration::fromMSec(20)));
60  ASSERT_LE(0, node1.start());
61  ASSERT_TRUE(node1.isStarted());
62 
63  ASSERT_LE(0, node1.spin(uavcan::MonotonicDuration::fromMSec(2000)));
64 
65  ASSERT_EQ(1, node_status_monitor.findNodeWithWorstHealth().get());
66 
67  /*
68  * Some logging
69  */
71  ASSERT_LE(0, log_sub.start());
72 
73  node1.getLogger().setLevel(uavcan::protocol::debug::LogLevel::DEBUG);
74  node1.logInfo("test", "6 * 9 = 42");
75 
76  ASSERT_LE(0, node1.spin(uavcan::MonotonicDuration::fromMSec(20)));
77  ASSERT_LE(0, node2.spin(uavcan::MonotonicDuration::fromMSec(20)));
78 
79  ASSERT_TRUE(log_sub.collector.msg.get());
80  std::cout << *log_sub.collector.msg << std::endl;
81 }
PairableCanDriver can_b
Definition: test_node.hpp:154
void startPeriodic(MonotonicDuration period)
Definition: uc_timer.cpp:42
uint8_t get() const
Definition: transfer.hpp:132
PairableCanDriver can_a
Definition: test_node.hpp:153
int spin(MonotonicTime deadline)
static void registerTypes()
Definition: sub_node.cpp:12
static GlobalDataTypeRegistry & instance()
static MonotonicDuration fromMSec(int64_t ms)
Definition: time.hpp:41
TEST(SubNode, Basic)
Definition: sub_node.cpp:24


uavcan_communicator
Author(s):
autogenerated on Wed Jan 11 2023 03:59:39