1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
/****************************************************************************
*
* (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
#include "QGCMAVLink.h"
bool QGCMAVLink::isFixedWing(MAV_TYPE mavType)
{
return mavType == MAV_TYPE_FIXED_WING;
}
bool QGCMAVLink::isRover(MAV_TYPE mavType)
{
switch (mavType) {
case MAV_TYPE_GROUND_ROVER:
case MAV_TYPE_SURFACE_BOAT:
return true;
default:
return false;
}
}
bool QGCMAVLink::isSub(MAV_TYPE mavType)
{
return mavType == MAV_TYPE_SUBMARINE;
}
bool QGCMAVLink::isMultiRotor(MAV_TYPE mavType)
{
switch (mavType) {
case MAV_TYPE_QUADROTOR:
case MAV_TYPE_COAXIAL:
case MAV_TYPE_HELICOPTER:
case MAV_TYPE_HEXAROTOR:
case MAV_TYPE_OCTOROTOR:
case MAV_TYPE_TRICOPTER:
return true;
default:
return false;
}
}
bool QGCMAVLink::isVTOL(MAV_TYPE mavType)
{
switch (mavType) {
case MAV_TYPE_VTOL_DUOROTOR:
case MAV_TYPE_VTOL_QUADROTOR:
case MAV_TYPE_VTOL_TILTROTOR:
case MAV_TYPE_VTOL_RESERVED2:
case MAV_TYPE_VTOL_RESERVED3:
case MAV_TYPE_VTOL_RESERVED4:
case MAV_TYPE_VTOL_RESERVED5:
return true;
default:
return false;
}
}
MAV_TYPE QGCMAVLink::vehicleClass(MAV_TYPE mavType)
{
if (isFixedWing(mavType)) {
return MAV_TYPE_FIXED_WING;
} else if (isRover(mavType)) {
return MAV_TYPE_GROUND_ROVER;
} else if (isSub(mavType)) {
return MAV_TYPE_SUBMARINE;
} else if (isMultiRotor(mavType)) {
return MAV_TYPE_QUADROTOR;
} else if (isVTOL(mavType)) {
return MAV_TYPE_VTOL_QUADROTOR;
}
return MAV_TYPE_GENERIC;
}
QString QGCMAVLink::mavResultToString(MAV_RESULT result)
{
switch (result) {
case MAV_RESULT_ACCEPTED:
return QStringLiteral("MAV_RESULT_ACCEPTED");
case MAV_RESULT_TEMPORARILY_REJECTED:
return QStringLiteral("MAV_RESULT_TEMPORARILY_REJECTED");
case MAV_RESULT_DENIED:
return QStringLiteral("MAV_RESULT_DENIED");
case MAV_RESULT_UNSUPPORTED:
return QStringLiteral("MAV_RESULT_UNSUPPORTED");
case MAV_RESULT_FAILED:
return QStringLiteral("MAV_RESULT_FAILED");
case MAV_RESULT_IN_PROGRESS:
return QStringLiteral("MAV_RESULT_IN_PROGRESS");
default:
return QStringLiteral("MAV_RESULT unknown %1").arg(result);
}
}
QString MavlinkFTP::opCodeToString(OpCode_t opCode)
{
switch (opCode) {
case kCmdNone:
return "None";
case kCmdTerminateSession:
return "Terminate Session";
case kCmdResetSessions:
return "Reset Sessions";
case kCmdListDirectory:
return "List Directory";
case kCmdOpenFileRO:
return "Open File RO";
case kCmdReadFile:
return "Read File";
case kCmdCreateFile:
return "Create File";
case kCmdWriteFile:
return "Write File";
case kCmdRemoveFile:
return "Remove File";
case kCmdCreateDirectory:
return "Create Directory";
case kCmdRemoveDirectory:
return "Remove Directory";
case kCmdOpenFileWO:
return "Open File WO";
case kCmdTruncateFile:
return "Truncate File";
case kCmdRename:
return "Rename";
case kCmdCalcFileCRC32:
return "Calc File CRC32";
case kCmdBurstReadFile:
return "Burst Read File";
case kRspAck:
return "Ack";
case kRspNak:
return "Nak";
}
return "Unknown OpCode";
}
QString MavlinkFTP::errorCodeToString(ErrorCode_t errorCode)
{
switch (errorCode) {
case kErrNone:
return "None";
case kErrFail:
return "Fail";
case kErrFailErrno:
return "Fail Errorno";
case kErrInvalidDataSize:
return "Invalid Data Size";
case kErrInvalidSession:
return "Invalid Session";
case kErrNoSessionsAvailable:
return "No Sessions Available";
case kErrEOF:
return "EOF";
case kErrUnknownCommand:
return "Unknown Command";
case kErrFailFileExists:
return "File Already Exists";
case kErrFailFileProtected:
return "File Protected";
case kErrFailFileNotFound:
return "File Not Found";
}
return "Unknown Error";
}