diff --git a/src/modules/uavcan/CMakeLists.txt b/src/modules/uavcan/CMakeLists.txt index 18ddc0f261..36220bb0c3 100644 --- a/src/modules/uavcan/CMakeLists.txt +++ b/src/modules/uavcan/CMakeLists.txt @@ -69,6 +69,7 @@ px4_add_module( # Actuators actuators/esc.cpp + actuators/hardpoint.cpp # Sensors sensors/sensor_bridge.cpp diff --git a/src/modules/uavcan/uavcan_main.cpp b/src/modules/uavcan/uavcan_main.cpp index b666a2216f..fbb0708723 100644 --- a/src/modules/uavcan/uavcan_main.cpp +++ b/src/modules/uavcan/uavcan_main.cpp @@ -1107,6 +1107,12 @@ UavcanNode::ioctl(file *filp, int cmd, unsigned long arg) break; } + case UAVCANIOC_HARDPOINT_SET: + const auto& cmd = *reinterpret_cast(arg); + _hardpoint_controller.set_command(cmd.hardpoint_id, cmd.command); + + break; + default: ret = -ENOTTY; break; diff --git a/src/modules/uavcan/uavcan_main.hpp b/src/modules/uavcan/uavcan_main.hpp index b236946e24..b2c570fb25 100644 --- a/src/modules/uavcan/uavcan_main.hpp +++ b/src/modules/uavcan/uavcan_main.hpp @@ -70,6 +70,11 @@ // we add two to allow for actuator_direct and busevent #define UAVCAN_NUM_POLL_FDS (NUM_ACTUATOR_CONTROL_GROUPS_UAVCAN+2) + +// no idea something to do with hardpoint controller +static constexpr unsigned UAVCANIOCBASE = 0x7800; +static constexpr unsigned UAVCANIOC_HARDPOINT_SET = PX4_IOC(UAVCANIOCBASE, 0x10); + /** * A UAVCAN node. */