Program Listing for File base_node.hpp

Return to documentation for file (/tmp/ws/src/depthai-ros/depthai_ros_driver/include/depthai_ros_driver/dai_nodes/base_node.hpp)

#pragma once

#include <memory>
#include <string>

#include "depthai/pipeline/Node.hpp"

namespace dai {
class Pipeline;
class Device;
}  // namespace dai

namespace rclcpp {
class Node;
class Parameter;
}  // namespace rclcpp

namespace depthai_ros_driver {
namespace dai_nodes {
class BaseNode {
   public:
    BaseNode(const std::string& daiNodeName, rclcpp::Node* node, std::shared_ptr<dai::Pipeline> pipeline);
    virtual ~BaseNode();
    virtual void updateParams(const std::vector<rclcpp::Parameter>& params);
    virtual void link(dai::Node::Input in, int linkType = 0);
    virtual dai::Node::Input getInput(int linkType = 0);
    virtual void setupQueues(std::shared_ptr<dai::Device> device) = 0;
    virtual void setNames() = 0;
    virtual void setXinXout(std::shared_ptr<dai::Pipeline> pipeline) = 0;
    virtual void closeQueues() = 0;

    void setNodeName(const std::string& daiNodeName);
    void setROSNodePointer(rclcpp::Node* node);
    rclcpp::Node* getROSNode();
    std::string getName();
    std::string getTFPrefix(const std::string& frameName = "");
    bool ipcEnabled();

   private:
    rclcpp::Node* baseNode;
    std::string baseDAINodeName;
    bool intraProcessEnabled;
};
}  // namespace dai_nodes
}  // namespace depthai_ros_driver