static uavcan_linux::SubNodePtr initSubNode(unsigned num_ifaces, uavcan::INode& main_node) { std::cout << "Initializing sub node" << std::endl; typedef VirtualCanDriver<QueuePoolSize> Driver; std::shared_ptr<Driver> driver(new Driver(num_ifaces)); auto node = uavcan_linux::makeSubNode(driver); node->setNodeID(main_node.getNodeID()); main_node.getDispatcher().installRxFrameListener(driver.get()); return node; }