54 CallbackReturn
on_init()
override;
56 CallbackReturn on_configure(
const rclcpp_lifecycle::State & previous_state)
override;
58 CallbackReturn on_activate(
const rclcpp_lifecycle::State & previous_state)
override;
60 CallbackReturn on_deactivate(
const rclcpp_lifecycle::State & previous_state)
override;
62 controller_interface::return_type
update(
63 const rclcpp::Time & time,
const rclcpp::Duration & period)
override;
66 void store_command_interface_types();
67 void store_state_interface_types();
68 void initialize_gpio_state_msg();
69 void update_gpios_states();
70 controller_interface::return_type update_gpios_commands();
72 std::unordered_map<std::string, std::reference_wrapper<T>> create_map_of_references_to_interfaces(
73 const InterfacesNames & interfaces_from_params, std::vector<T> & configured_interfaces);
75 bool check_if_configured_interfaces_matches_received(
76 const InterfacesNames & interfaces_from_params,
const T & configured_interfaces);
77 void apply_state_value(
78 StateType & state_msg, std::size_t gpio_index, std::size_t interface_index)
const;
80 const CmdType & gpio_commands, std::size_t gpio_index,
81 std::size_t command_interface_index)
const;
82 bool should_broadcast_all_interfaces_of_configured_gpios()
const;
83 void set_all_state_interfaces_of_configured_gpios();
84 InterfacesNames get_gpios_state_interfaces_names(
const std::string & gpio_name)
const;
85 bool update_dynamic_map_parameters();
86 std::vector<hardware_interface::ComponentInfo> get_gpios_from_urdf()
const;
89 InterfacesNames command_interface_types_;
90 InterfacesNames state_interface_types_;
91 MapOfReferencesToCommandInterfaces command_interfaces_map_;
92 MapOfReferencesToStateInterfaces state_interfaces_map_;
95 rclcpp::Subscription<CmdType>::SharedPtr gpios_command_subscriber_{};
97 std::shared_ptr<rclcpp::Publisher<StateType>> gpio_state_publisher_{};
98 std::shared_ptr<realtime_tools::RealtimePublisher<StateType>> realtime_gpio_state_publisher_{};
100 std::shared_ptr<gpio_command_controller_parameters::ParamListener> param_listener_{};
101 gpio_command_controller_parameters::Params params_;