Skip to content

Commit c9aaa0f

Browse files
Luc-Meunierjulianoes
authored andcommitted
core: expose Vehicle type
1 parent 80f7376 commit c9aaa0f

File tree

9 files changed

+309
-1
lines changed

9 files changed

+309
-1
lines changed

docs/en/cpp/api_reference/classmavsdk_1_1_system.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ void | [unsubscribe_component_discovered](#classmavsdk_1_1_system_1a5d62d308534b
4545
void | [unsubscribe_component_discovered_id](#classmavsdk_1_1_system_1a37bca637341bba8b07e8f95c97d122db) ([ComponentDiscoveredIdHandle](classmavsdk_1_1_system.md#classmavsdk_1_1_system_1abd573ae09348f33e7cd3a006fc26a708) handle) | Unsubscribe from subscribe_component_discovered_id.
4646
void | [enable_timesync](#classmavsdk_1_1_system_1a7c7177fb0789aefbfb375f4bb12ce824) () | Enable time synchronization using the TIMESYNC messages.
4747
[Autopilot](namespacemavsdk.md#namespacemavsdk_1aba05635d1785223a4d7b457ae0407297) | [autopilot_type](#classmavsdk_1_1_system_1af3ded5464f6025f5d31955e100e15894) () const | Get autopilot type.
48+
[Vehicle](namespacemavsdk.md#namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95b) | [vehicle_type](#classmavsdk_1_1_system_1aababe0d2e6c91aef11a06dcdbccdf69e) () const | Get vehicle type.
4849
const [System](classmavsdk_1_1_system.md) & | [operator=](#classmavsdk_1_1_system_1ace4603ebad199e8619876993a2ad5237) (const [System](classmavsdk_1_1_system.md) &)=delete | Equality operator (object is not copyable).
4950

5051

@@ -369,6 +370,19 @@ Get autopilot type.
369370

370371
 [Autopilot](namespacemavsdk.md#namespacemavsdk_1aba05635d1785223a4d7b457ae0407297) - autopilot type discovered.
371372

373+
### vehicle_type() {#classmavsdk_1_1_system_1aababe0d2e6c91aef11a06dcdbccdf69e}
374+
```cpp
375+
Vehicle mavsdk::System::vehicle_type() const
376+
```
377+
378+
379+
Get vehicle type.
380+
381+
382+
**Returns**
383+
384+
 [Vehicle](namespacemavsdk.md#namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95b) - vehicle type discovered.
385+
372386
### operator=() {#classmavsdk_1_1_system_1ace4603ebad199e8619876993a2ad5237}
373387
```cpp
374388
const System & mavsdk::System::operator=(const System &)=delete

docs/en/cpp/api_reference/namespacemavsdk.md

Lines changed: 88 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ enum [Autopilot](#namespacemavsdk_1aba05635d1785223a4d7b457ae0407297) | Autopilo
6161
enum [ComponentType](#namespacemavsdk_1a20fe7f7c8312779a187017111bf33d12) | ComponentType of configurations, used for automatic ID setting.
6262
enum [ConnectionResult](#namespacemavsdk_1a0bad93f6d037051ac3906a0bcc09f992) | Result type returned when adding a connection.
6363
enum [ForwardingOption](#namespacemavsdk_1a7066729108eae8a605d4dd169e4581b9) | ForwardingOption for Connection, used to set message forwarding option.
64+
enum [Vehicle](#namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95b) | Vehicle type.
6465

6566
## Functions
6667

@@ -71,6 +72,8 @@ std::string | [base64_encode](#namespacemavsdk_1a57a9962be22a61e5c36a66bc17e6a2a
7172
std::vector< uint8_t > | [base64_decode](#namespacemavsdk_1a34e7609c9e2ddcc72a74bbc79daf9c19) (const std::string & str) | Decode a base64 string into raw bytes.
7273
std::ostream & | [operator<<](#namespacemavsdk_1a2aa91d8b846b07fe7f305b399375ce5f) (std::ostream & str, const [ConnectionResult](namespacemavsdk.md#namespacemavsdk_1a0bad93f6d037051ac3906a0bcc09f992) & result) | Stream operator to print information about a `ConnectionResult`.
7374
&nbsp; | [overloaded](#namespacemavsdk_1a724e321aaff91eb2ba28279e0292e552) (Ts...)-> overloaded< Ts... > | Template deduction helper for `overloaded`
75+
std::ostream & | [operator<<](#namespacemavsdk_1a3e7a55e89629afd2a079d79c047e8dbd) (std::ostream & os, const [Vehicle](namespacemavsdk.md#namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95b) & vehicle) | Stream operator to print information about a `Vehicle`.
76+
[Vehicle](namespacemavsdk.md#namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95b) | [to_vehicle_from_mav_type](#namespacemavsdk_1a4dede924df915e32b4807aa87a98b5bb) (MAV_TYPE type) | Convert a 'MAV_TYPE' to a `Vehicle`.
7477

7578
## Enumeration Type Documentation
7679

@@ -157,6 +160,47 @@ Value | Description
157160
<span id="namespacemavsdk_1a7066729108eae8a605d4dd169e4581b9a67cc131236b099b681048d4812558fca"></span> `ForwardingOff` |
158161
<span id="namespacemavsdk_1a7066729108eae8a605d4dd169e4581b9ac07f34e9a31f4a26b48711122e89cdb8"></span> `ForwardingOn` |
159162

163+
### enum Vehicle {#namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95b}
164+
165+
```
166+
#include: vehicle.h
167+
```
168+
169+
170+
Vehicle type.
171+
172+
173+
Value | Description
174+
--- | ---
175+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba88183b946cc5f0e8c96b2e66e1c74a7e"></span> `Unknown` |
176+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba8045a0a6c688b0635e3caccc408a1446"></span> `Generic` |
177+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95bafd01c0a8cba34e17735a9878e76d485d"></span> `FixedWing` |
178+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba623a7997ee9493420463eb52b88de935"></span> `Quadrotor` |
179+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95badc6f3fe82dfec3326452006d58dd4aad"></span> `Coaxial` |
180+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba2ab8b43468e8b92b0fc5c81e70e35a2d"></span> `Helicopter` |
181+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95bade750545706d10adc6a3b6ca1b0f7c3f"></span> `Airship` |
182+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba3dd340796c8755fa272c9b776f7b1058"></span> `FreeBalloon` |
183+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba15e8bfff2c10ca22da244d85b2bf7d94"></span> `Rocket` |
184+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba6c985fc3261cb4ccf6d72c725780807e"></span> `GroundRover` |
185+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba5e17c124ec97ee9ed25907042ef61f35"></span> `SurfaceBoat` |
186+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba0d234e5bcf75c768eb0db6bf96e3c22d"></span> `Submarine` |
187+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95baceee3c48890aa63467460b92940d24fe"></span> `Hexarotor` |
188+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba782cacf1683e035f039e607f34e4e945"></span> `Octorotor` |
189+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba7f5a1551acfeb83770c0665760132e17"></span> `Tricopter` |
190+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95bab80c55e3e8ba28a29ace551cf3390763"></span> `FlappingWing` |
191+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba65c449ad44e2c0b6c1fffc5c5cea7413"></span> `Kite` |
192+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba06b101d8e4475605ca9d1e2217c7296a"></span> `VtolTailsitterDuorotor` |
193+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba8b5a7606cd877542d59f2edc0618d06a"></span> `VtolTailsitterQuadrotor` |
194+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95baac9f48fd3bb7a7e42f5ae811fec2781e"></span> `VtolTiltrotor` |
195+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95bad755986e4ea01f23bdf03c2653676d75"></span> `VtolFixedrotor` |
196+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95babf28f759e1d46a1198943c8882d652b2"></span> `VtolTailsitter` |
197+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba278136ab9f897733648f230a9a6f6384"></span> `VtolTiltwing` |
198+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba88cbbac22ccc3e79b5adc1af44d7b8ec"></span> `Parafoil` |
199+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba4786f3d8d1faa285ddecf2a74f16c922"></span> `Dodecarotor` |
200+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba27005abdd874048c19c30c061eb1d9ba"></span> `Decarotor` |
201+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba889d6c668249b544803bafc6c18dbf34"></span> `Parachute` |
202+
<span id="namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95ba35a7a97619a60e154205a06207e18b60"></span> `GenericMultirotor` |
203+
160204
## Function Documentation
161205

162206

@@ -261,4 +305,47 @@ Template deduction helper for `overloaded`
261305
262306
**Parameters**
263307
264-
* Ts... -
308+
* Ts... -
309+
310+
### operator<<() {#namespacemavsdk_1a3e7a55e89629afd2a079d79c047e8dbd}
311+
312+
```
313+
#include: vehicle.h
314+
```
315+
```cpp
316+
std::ostream & mavsdk::operator<<(std::ostream &os, const Vehicle &vehicle)
317+
```
318+
319+
320+
Stream operator to print information about a `Vehicle`.
321+
322+
323+
**Parameters**
324+
325+
* std::ostream& **os** -
326+
* const [Vehicle](namespacemavsdk.md#namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95b)& **vehicle** -
327+
328+
**Returns**
329+
330+
&emsp;std::ostream & - A reference to the stream.
331+
332+
### to_vehicle_from_mav_type() {#namespacemavsdk_1a4dede924df915e32b4807aa87a98b5bb}
333+
334+
```
335+
#include: vehicle.h
336+
```
337+
```cpp
338+
Vehicle mavsdk::to_vehicle_from_mav_type(MAV_TYPE type)
339+
```
340+
341+
342+
Convert a 'MAV_TYPE' to a `Vehicle`.
343+
344+
345+
**Parameters**
346+
347+
* MAV_TYPE **type** -
348+
349+
**Returns**
350+
351+
&emsp;[Vehicle](namespacemavsdk.md#namespacemavsdk_1a9e3a3a502dc8313cb931a8a44cc6f95b) - The corresponding `Vehicle`.

src/mavsdk/core/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ target_sources(mavsdk
6060
tcp_server_connection.cpp
6161
timeout_handler.cpp
6262
udp_connection.cpp
63+
vehicle.cpp
6364
log.cpp
6465
cli_arg.cpp
6566
geometry.cpp
@@ -175,6 +176,7 @@ install(FILES
175176
include/mavsdk/geometry.h
176177
include/mavsdk/server_component.h
177178
include/mavsdk/mavlink_address.h
179+
include/mavsdk/vehicle.h
178180
${CMAKE_CURRENT_BINARY_DIR}/include/mavsdk/mavlink_include.h
179181
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/mavsdk"
180182
)

src/mavsdk/core/include/mavsdk/system.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "component_type.h"
1010
#include "deprecated.h"
1111
#include "handle.h"
12+
#include "vehicle.h"
1213

1314
namespace mavsdk {
1415

@@ -185,6 +186,13 @@ class System {
185186
*/
186187
Autopilot autopilot_type() const;
187188

189+
/**
190+
* @brief Get vehicle type.
191+
*
192+
* @return vehicle type discovered.
193+
*/
194+
Vehicle vehicle_type() const;
195+
188196
/**
189197
* @brief Copy constructor (object is not copyable).
190198
*/
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#pragma once
2+
3+
#include <sstream>
4+
#include "mavlink_include.h"
5+
6+
namespace mavsdk {
7+
8+
/**
9+
* @brief Vehicle type
10+
*/
11+
enum class Vehicle {
12+
Unknown, // Vehicle unknown
13+
Generic, // Generic micro air vehicle
14+
FixedWing, // Fixed wing aircraft
15+
Quadrotor, // Quadrotor
16+
Coaxial, // Coaxial helicopter
17+
Helicopter, // Normal helicopter with tail rotor
18+
Airship, // Airship, controlled
19+
FreeBalloon, // Free balloon, uncontrolled
20+
Rocket, // Rocket
21+
GroundRover, // Ground rover
22+
SurfaceBoat, // Surface boat
23+
Submarine, // Submarine
24+
Hexarotor, // Hexarotor
25+
Octorotor, // Octorotor
26+
Tricopter, // Tricopter
27+
FlappingWing, // Flapping wing
28+
Kite, // Kite
29+
VtolTailsitterDuorotor, // Two-rotor Tailsitter VTOL
30+
VtolTailsitterQuadrotor, // Quad-rotor Tailsitter VTOL
31+
VtolTiltrotor, // Tiltrotor VTOL
32+
VtolFixedrotor, // VTOL with separate fixed rotors
33+
VtolTailsitter, // Tailsitter VTOL
34+
VtolTiltwing, // Tiltwing VTOL
35+
Parafoil, // Steerable nonrigid airfoil
36+
Dodecarotor, // Dodecarotor
37+
Decarotor, // Decarotor
38+
Parachute, // Parachute
39+
GenericMultirotor, // Generic multirotor
40+
};
41+
42+
/**
43+
* @brief Stream operator to print information about a `Vehicle`.
44+
*
45+
* @return A reference to the stream.
46+
*/
47+
std::ostream& operator<<(std::ostream& os, const Vehicle& vehicle);
48+
49+
/**
50+
* @brief Convert a 'MAV_TYPE' to a `Vehicle`.
51+
*
52+
* @return The corresponding `Vehicle`.
53+
*/
54+
Vehicle to_vehicle_from_mav_type(MAV_TYPE type);
55+
56+
} // namespace mavsdk

src/mavsdk/core/system.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,4 +97,9 @@ Autopilot System::autopilot_type() const
9797
return _system_impl->autopilot();
9898
}
9999

100+
Vehicle System::vehicle_type() const
101+
{
102+
return _system_impl->vehicle();
103+
}
104+
100105
} // namespace mavsdk

src/mavsdk/core/system_impl.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,11 @@ MAV_TYPE SystemImpl::get_vehicle_type() const
589589
return _vehicle_type;
590590
}
591591

592+
Vehicle SystemImpl::vehicle() const
593+
{
594+
return to_vehicle_from_mav_type(_vehicle_type);
595+
}
596+
592597
uint8_t SystemImpl::get_own_mav_type() const
593598
{
594599
return _mavsdk_impl.get_mav_type();

src/mavsdk/core/system_impl.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "timeout_handler.h"
2020
#include "timesync.h"
2121
#include "system.h"
22+
#include "vehicle.h"
2223
#include <cstdint>
2324
#include <functional>
2425
#include <atomic>
@@ -133,6 +134,7 @@ class SystemImpl {
133134
uint8_t get_own_component_id() const;
134135
uint8_t get_own_mav_type() const;
135136
MAV_TYPE get_vehicle_type() const;
137+
Vehicle vehicle() const;
136138

137139
bool is_armed() const { return _armed; }
138140

0 commit comments

Comments
 (0)