diff --git a/marinholab/sas/core/_core.pyi b/marinholab/sas/core/_core.pyi index ad7c134..e5ec44f 100644 --- a/marinholab/sas/core/_core.pyi +++ b/marinholab/sas/core/_core.pyi @@ -125,6 +125,9 @@ class RobotDriver: def get_joint_limits(self) -> tuple[np.ndarray, np.ndarray]: ... def set_joint_limits(self, joint_limits: tuple[np.ndarray, np.ndarray]) -> None: ... + def get_tool_gpio(self) -> list[bool]: ... + def set_tool_gpio(self, tool_gpio: list[bool]) -> None: ... + def watchdog_start(self, period: timedelta) -> None: ... def watchdog_trigger( self, diff --git a/src/sas_robot_driver_py.cpp b/src/sas_robot_driver_py.cpp index 76e489b..dc6c7d1 100644 --- a/src/sas_robot_driver_py.cpp +++ b/src/sas_robot_driver_py.cpp @@ -22,6 +22,9 @@ # # ################################################################# # Contributors: +# +# 1. Erwin Lopez (erwin.lopez@manchester.ac.uk) +# Added bindings for tool gpio #*/ /** @@ -129,6 +132,27 @@ class RobotDriverPy: public RobotDriver, public py::trampoline_self_life_support ); } + std::array get_tool_gpio() override + { + // The return type contains a comma, so it must be wrapped in + // PYBIND11_TYPE(...) to keep the macro's argument list intact. + PYBIND11_OVERRIDE( + PYBIND11_TYPE(std::array), + RobotDriver, + get_tool_gpio, + ); + } + + void set_tool_gpio(const std::array& tool_gpio) override + { + PYBIND11_OVERRIDE( + void, + RobotDriver, + set_tool_gpio, + tool_gpio + ); + } + void connect() override { PYBIND11_OVERRIDE_PURE( @@ -188,6 +212,9 @@ void init_sas_robot_driver_py(py::module_& m) c.def("get_joint_limits", &RobotDriver::get_joint_limits, ""); c.def("set_joint_limits", &RobotDriver::set_joint_limits, ""); + c.def("get_tool_gpio", &RobotDriver::get_tool_gpio, ""); + c.def("set_tool_gpio", &RobotDriver::set_tool_gpio, ""); + c.def("watchdog_start", &RobotDriver::watchdog_start, ""); c.def("watchdog_trigger", &RobotDriver::watchdog_trigger, ""); c.def("watchdog_set_maximum_acceptable_delay", &RobotDriver::watchdog_set_maximum_acceptable_delay, "");