libuav original
Dependents: UAVCAN UAVCAN_Subscriber
sub_node.cpp
00001 /* 00002 * Copyright (C) 2015 Pavel Kirienko <pavel.kirienko@gmail.com> 00003 */ 00004 00005 #include <gtest/gtest.h> 00006 #include <uavcan/node/node.hpp> 00007 #include <uavcan/node/sub_node.hpp> 00008 #include <uavcan/protocol/node_status_monitor.hpp> 00009 #include "test_node.hpp" 00010 #include "../protocol/helpers.hpp" 00011 00012 static void registerTypes() 00013 { 00014 uavcan::GlobalDataTypeRegistry::instance().reset(); 00015 uavcan::DefaultDataTypeRegistrator<uavcan::protocol::NodeStatus> _reg2; 00016 uavcan::DefaultDataTypeRegistrator<uavcan::protocol::GetNodeInfo> _reg4; 00017 uavcan::DefaultDataTypeRegistrator<uavcan::protocol::GetDataTypeInfo> _reg5; 00018 uavcan::DefaultDataTypeRegistrator<uavcan::protocol::debug::LogMessage> _reg6; 00019 uavcan::DefaultDataTypeRegistrator<uavcan::protocol::GetTransportStats> _reg7; 00020 uavcan::DefaultDataTypeRegistrator<uavcan::protocol::RestartNode> _reg8; 00021 } 00022 00023 00024 TEST(SubNode, Basic) 00025 { 00026 registerTypes(); 00027 InterlinkedTestNodesWithSysClock nodes; 00028 00029 uavcan::protocol::SoftwareVersion swver; 00030 swver.major = 0; 00031 swver.minor = 1; 00032 swver.vcs_commit = 0xDEADBEEF; 00033 00034 std::cout << "sizeof(uavcan::SubNode<0>): " << sizeof(uavcan::SubNode<0>) << std::endl; 00035 00036 /* 00037 * uavcan::Node 00038 */ 00039 uavcan::Node<1024> node1(nodes.can_a, nodes.clock_a); 00040 node1.setName("com.example"); 00041 node1.setNodeID(1); 00042 node1.setSoftwareVersion(swver); 00043 00044 /* 00045 * uavcan::SubNode 00046 */ 00047 uavcan::SubNode<1024> node2(nodes.can_b, nodes.clock_b); 00048 00049 BackgroundSpinner bgspinner(node2, node1); 00050 bgspinner.startPeriodic(uavcan::MonotonicDuration::fromMSec(10)); 00051 00052 uavcan::NodeStatusMonitor node_status_monitor(node2); 00053 ASSERT_LE(0, node_status_monitor.start()); 00054 00055 /* 00056 * Init the first node 00057 */ 00058 ASSERT_FALSE(node1.isStarted()); 00059 ASSERT_EQ(-uavcan::ErrNotInited, node1.spin(uavcan::MonotonicDuration::fromMSec(20))); 00060 ASSERT_LE(0, node1.start()); 00061 ASSERT_TRUE(node1.isStarted()); 00062 00063 ASSERT_LE(0, node1.spin(uavcan::MonotonicDuration::fromMSec(2000))); 00064 00065 ASSERT_EQ(1, node_status_monitor.findNodeWithWorstHealth().get()); 00066 00067 /* 00068 * Some logging 00069 */ 00070 SubscriberWithCollector<uavcan::protocol::debug::LogMessage> log_sub(node2); 00071 ASSERT_LE(0, log_sub.start()); 00072 00073 node1.getLogger().setLevel(uavcan::protocol::debug::LogLevel::DEBUG); 00074 node1.logInfo("test", "6 * 9 = 42"); 00075 00076 ASSERT_LE(0, node1.spin(uavcan::MonotonicDuration::fromMSec(20))); 00077 ASSERT_LE(0, node2.spin(uavcan::MonotonicDuration::fromMSec(20))); 00078 00079 ASSERT_TRUE(log_sub.collector.msg.get()); 00080 std::cout << *log_sub.collector.msg << std::endl; 00081 }
Generated on Tue Jul 12 2022 17:17:34 by 1.7.2