• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mavlink / MAVSDK / 15524171630

09 Jun 2025 12:33AM UTC coverage: 44.335% (+0.05%) from 44.285%
15524171630

push

github

web-flow
Merge pull request #2594 from mavlink/pr-gripper-with-autopilot

gripper: send command to autopilot by default

14908 of 33626 relevant lines covered (44.33%)

293.0 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/mavsdk/plugins/gripper/gripper_impl.cpp
1
#include "gripper_impl.h"
2

3
namespace mavsdk {
4

5
GripperImpl::GripperImpl(System& system) : PluginImplBase(system)
×
6
{
7
    _system_impl->register_plugin(this);
×
8
}
×
9

10
GripperImpl::GripperImpl(std::shared_ptr<System> system) : PluginImplBase(std::move(system))
×
11
{
12
    _system_impl->register_plugin(this);
×
13
}
×
14

15
GripperImpl::~GripperImpl()
×
16
{
17
    _system_impl->unregister_plugin(this);
×
18
}
×
19

20
void GripperImpl::init() {}
×
21

22
void GripperImpl::deinit() {}
×
23

24
void GripperImpl::enable() {}
×
25

26
void GripperImpl::disable() {}
×
27

28
void GripperImpl::grab_async(uint32_t instance, const Gripper::ResultCallback callback)
×
29
{
30
    MavlinkCommandSender::CommandLong command{};
×
31

32
    command.command = MAV_CMD_DO_GRIPPER;
×
33
    command.params.maybe_param1 = static_cast<float>(instance);
×
34
    command.params.maybe_param2 = static_cast<float>(Gripper::GripperAction::Grab);
×
35

36
    _system_impl->send_command_async(
×
37
        command, [this, callback](MavlinkCommandSender::Result result, float) {
×
38
            command_result_callback(result, callback);
×
39
        });
×
40
}
×
41

42
Gripper::Result GripperImpl::grab(uint32_t instance)
×
43
{
44
    auto prom = std::promise<Gripper::Result>();
×
45
    auto fut = prom.get_future();
×
46

47
    grab_async(instance, [&prom](Gripper::Result result) { prom.set_value(result); });
×
48

49
    return fut.get();
×
50
}
×
51

52
void GripperImpl::release_async(uint32_t instance, const Gripper::ResultCallback callback)
×
53
{
54
    MavlinkCommandSender::CommandLong command{};
×
55

56
    command.command = MAV_CMD_DO_GRIPPER;
×
57
    command.params.maybe_param1 = static_cast<float>(instance);
×
58
    command.params.maybe_param2 = static_cast<float>(Gripper::GripperAction::Release);
×
59

60
    _system_impl->send_command_async(
×
61
        command, [this, callback](MavlinkCommandSender::Result result, float) {
×
62
            command_result_callback(result, callback);
×
63
        });
×
64
}
×
65

66
Gripper::Result GripperImpl::release(uint32_t instance)
×
67
{
68
    auto prom = std::promise<Gripper::Result>();
×
69
    auto fut = prom.get_future();
×
70

71
    release_async(instance, [&prom](Gripper::Result result) { prom.set_value(result); });
×
72

73
    return fut.get();
×
74
}
×
75

76
Gripper::Result GripperImpl::gripper_result_from_command_result(MavlinkCommandSender::Result result)
×
77
{
78
    switch (result) {
×
79
        case MavlinkCommandSender::Result::Success:
×
80
            return Gripper::Result::Success;
×
81
        case MavlinkCommandSender::Result::NoSystem:
×
82
            return Gripper::Result::NoSystem;
×
83
        case MavlinkCommandSender::Result::ConnectionError:
×
84
            // Fallthrough
85
        case MavlinkCommandSender::Result::Timeout:
86
            return Gripper::Result::Timeout;
×
87
        case MavlinkCommandSender::Result::Busy:
×
88
            return Gripper::Result::Busy;
×
89
        case MavlinkCommandSender::Result::Denied:
×
90
            // Fallthrough
91
        case MavlinkCommandSender::Result::TemporarilyRejected:
92
            // Fallthrough
93
        case MavlinkCommandSender::Result::Failed:
94
            return Gripper::Result::Failed;
×
95
        case MavlinkCommandSender::Result::Unsupported:
×
96
            return Gripper::Result::Unsupported;
×
97
        default:
×
98
            return Gripper::Result::Unknown;
×
99
    }
100
}
101

102
void GripperImpl::command_result_callback(
×
103
    MavlinkCommandSender::Result command_result, const Gripper::ResultCallback& callback) const
104
{
105
    Gripper::Result action_result = gripper_result_from_command_result(command_result);
×
106

107
    if (callback) {
×
108
        auto temp_callback = callback;
×
109
        _system_impl->call_user_callback(
×
110
            [temp_callback, action_result]() { temp_callback(action_result); });
111
    }
×
112
}
×
113

114
} // namespace mavsdk
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc