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

mavlink / MAVSDK / 18825909402

27 Oct 2025 12:18AM UTC coverage: 48.263% (+0.02%) from 48.247%
18825909402

push

github

web-flow
Merge pull request #2676 from Luc-Meunier/arduplane-flight-modes

Add some Arduplane flight modes and VTOL support

0 of 10 new or added lines in 3 files covered. (0.0%)

7 existing lines in 5 files now uncovered.

17437 of 36129 relevant lines covered (48.26%)

474.88 hits per line

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

7.56
/src/mavsdk/core/flight_mode.cpp
1

2
#include "autopilot.h"
3
#include "flight_mode.h"
4
#include "mavlink_include.h"
5
#include "ardupilot_custom_mode.h"
6
#include "px4_custom_mode.h"
7
#include "mavlink_command_sender.h"
8

9
namespace mavsdk {
10

11
FlightMode
12
to_flight_mode_from_custom_mode(Autopilot autopilot, MAV_TYPE mav_type, uint32_t custom_mode)
5✔
13
{
14
    if (autopilot == Autopilot::ArduPilot) {
5✔
15
        switch (mav_type) {
5✔
16
            case MAV_TYPE::MAV_TYPE_SURFACE_BOAT:
×
17
            case MAV_TYPE::MAV_TYPE_GROUND_ROVER:
18
                return to_flight_mode_from_ardupilot_rover_mode(custom_mode);
×
19
            case MAV_TYPE::MAV_TYPE_FIXED_WING:
×
20
            case MAV_TYPE::MAV_TYPE_VTOL_FIXEDROTOR:
21
            case MAV_TYPE::MAV_TYPE_VTOL_TAILSITTER:
22
            case MAV_TYPE::MAV_TYPE_VTOL_TAILSITTER_DUOROTOR:
23
            case MAV_TYPE::MAV_TYPE_VTOL_TAILSITTER_QUADROTOR:
24
            case MAV_TYPE::MAV_TYPE_VTOL_TILTROTOR:
25
            case MAV_TYPE::MAV_TYPE_VTOL_TILTWING:
UNCOV
26
                return to_flight_mode_from_ardupilot_plane_mode(custom_mode);
×
27
            default:
5✔
28
                return to_flight_mode_from_ardupilot_copter_mode(custom_mode);
5✔
29
        }
30
    } else {
31
        return to_flight_mode_from_px4_mode(custom_mode);
×
32
    }
33
}
34

35
FlightMode to_flight_mode_from_ardupilot_rover_mode(uint32_t custom_mode)
×
36
{
37
    switch (static_cast<ardupilot::RoverMode>(custom_mode)) {
×
38
        case ardupilot::RoverMode::Auto:
×
39
            return FlightMode::Mission;
×
40
        case ardupilot::RoverMode::Acro:
×
41
            return FlightMode::Acro;
×
42
        case ardupilot::RoverMode::Hold:
×
43
            return FlightMode::Hold;
×
44
        case ardupilot::RoverMode::RTL:
×
45
            return FlightMode::ReturnToLaunch;
×
46
        case ardupilot::RoverMode::Manual:
×
47
            return FlightMode::Manual;
×
48
        case ardupilot::RoverMode::Follow:
×
49
            return FlightMode::FollowMe;
×
50
        case ardupilot::RoverMode::Guided:
×
51
            return FlightMode::Offboard;
×
52
        default:
×
53
            return FlightMode::Unknown;
×
54
    }
55
}
56
FlightMode to_flight_mode_from_ardupilot_copter_mode(uint32_t custom_mode)
5✔
57
{
58
    switch (static_cast<ardupilot::CopterMode>(custom_mode)) {
5✔
59
        case ardupilot::CopterMode::Auto:
×
60
            return FlightMode::Mission;
×
61
        case ardupilot::CopterMode::Acro:
×
62
            return FlightMode::Acro;
×
63
        case ardupilot::CopterMode::AltHold:
×
64
            return FlightMode::Altctl;
×
65
        case ardupilot::CopterMode::PosHold:
×
66
            return FlightMode::Posctl;
×
67
        case ardupilot::CopterMode::FlowHold:
×
68
        case ardupilot::CopterMode::Loiter:
69
            return FlightMode::Hold;
×
70
        case ardupilot::CopterMode::Rtl:
×
71
        case ardupilot::CopterMode::AutoRtl:
72
            return FlightMode::ReturnToLaunch;
×
73
        case ardupilot::CopterMode::Land:
×
74
            return FlightMode::Land;
×
75
        case ardupilot::CopterMode::Follow:
×
76
            return FlightMode::FollowMe;
×
77
        case ardupilot::CopterMode::Guided:
×
78
            return FlightMode::Offboard;
×
79
        case ardupilot::CopterMode::Stabilize:
5✔
80
            return FlightMode::Stabilized;
5✔
81
        case ardupilot::CopterMode::Unknown:
×
82
            return FlightMode::Unknown;
×
83
        default:
×
84
            return FlightMode::Unknown;
×
85
    }
86
}
87
FlightMode to_flight_mode_from_ardupilot_plane_mode(uint32_t custom_mode)
×
88
{
89
    switch (static_cast<ardupilot::PlaneMode>(custom_mode)) {
×
90
        case ardupilot::PlaneMode::Manual:
×
91
            return FlightMode::Manual;
×
92
        case ardupilot::PlaneMode::Auto:
×
93
            return FlightMode::Mission;
×
94
        case ardupilot::PlaneMode::Acro:
×
95
            return FlightMode::Acro;
×
96
        case ardupilot::PlaneMode::Autotune:
×
97
            return FlightMode::Altctl;
×
98
        case ardupilot::PlaneMode::Fbwa:
×
99
            return FlightMode::FBWA;
×
NEW
100
        case ardupilot::PlaneMode::Fbwb:
×
NEW
101
            return FlightMode::FBWB;
×
102
        case ardupilot::PlaneMode::Guided:
×
103
            return FlightMode::Guided;
×
104
        case ardupilot::PlaneMode::Loiter:
×
105
            return FlightMode::Hold;
×
106
        case ardupilot::PlaneMode::Rtl:
×
107
            return FlightMode::ReturnToLaunch;
×
108
        case ardupilot::PlaneMode::Stabilize:
×
109
            return FlightMode::Stabilized;
×
NEW
110
        case ardupilot::PlaneMode::Takeoff:
×
NEW
111
            return FlightMode::Takeoff;
×
112
        case ardupilot::PlaneMode::Unknown:
×
113
            return FlightMode::Unknown;
×
114
        default:
×
115
            return FlightMode::Unknown;
×
116
    }
117
}
118

119
FlightMode to_flight_mode_from_px4_mode(uint32_t custom_mode)
×
120
{
121
    px4::px4_custom_mode px4_custom_mode;
122
    px4_custom_mode.data = custom_mode;
×
123

124
    switch (px4_custom_mode.main_mode) {
×
125
        case px4::PX4_CUSTOM_MAIN_MODE_OFFBOARD:
×
126
            return FlightMode::Offboard;
×
127
        case px4::PX4_CUSTOM_MAIN_MODE_MANUAL:
×
128
            return FlightMode::Manual;
×
129
        case px4::PX4_CUSTOM_MAIN_MODE_POSCTL:
×
130
            return FlightMode::Posctl;
×
131
        case px4::PX4_CUSTOM_MAIN_MODE_ALTCTL:
×
132
            return FlightMode::Altctl;
×
133
        case px4::PX4_CUSTOM_MAIN_MODE_RATTITUDE:
×
134
            return FlightMode::Rattitude;
×
135
        case px4::PX4_CUSTOM_MAIN_MODE_ACRO:
×
136
            return FlightMode::Acro;
×
137
        case px4::PX4_CUSTOM_MAIN_MODE_STABILIZED:
×
138
            return FlightMode::Stabilized;
×
139
        case px4::PX4_CUSTOM_MAIN_MODE_AUTO:
×
140
            switch (px4_custom_mode.sub_mode) {
×
141
                case px4::PX4_CUSTOM_SUB_MODE_AUTO_READY:
×
142
                    return FlightMode::Ready;
×
143
                case px4::PX4_CUSTOM_SUB_MODE_AUTO_TAKEOFF:
×
144
                    return FlightMode::Takeoff;
×
145
                case px4::PX4_CUSTOM_SUB_MODE_AUTO_LOITER:
×
146
                    return FlightMode::Hold;
×
147
                case px4::PX4_CUSTOM_SUB_MODE_AUTO_MISSION:
×
148
                    return FlightMode::Mission;
×
149
                case px4::PX4_CUSTOM_SUB_MODE_AUTO_RTL:
×
150
                    return FlightMode::ReturnToLaunch;
×
151
                case px4::PX4_CUSTOM_SUB_MODE_AUTO_LAND:
×
152
                    return FlightMode::Land;
×
153
                case px4::PX4_CUSTOM_SUB_MODE_AUTO_FOLLOW_TARGET:
×
154
                    return FlightMode::FollowMe;
×
155
                default:
×
156
                    return FlightMode::Unknown;
×
157
            }
158
        default:
×
159
            return FlightMode::Unknown;
×
160
    }
161
}
162

163
} // 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