You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: ko/guide/mavlink_version.md
+19-20Lines changed: 19 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,9 +33,6 @@ A library's MAVLink support can be determined in a number of ways:
33
33
-[HEARTBEAT](../messages/common.md#HEARTBEAT)`.mavlink_version` field contains the minor version number.
34
34
This is the `<version>` field defined in the [Message Definitions](../messages/index.md) (`version` in [common.xml](../messages/common.md) for dialects that depend on the common message set).
35
35
36
-
-[PROTOCOL_VERSION](../messages/common.md#PROTOCOL_VERSION).`version` contains the MAVLink version number multiplied by 100: v1.0 is 100, <!-- v2.0 is 200, --> v2.3 is 203 etc.
37
-
Note that the message allows for additional version information, but is not supported on all flight stacks.
38
-
39
36
:::tip
40
37
While messages do not contain version information, an extra CRC is used to ensure that a library will only process compatible messages (see [Serialization > CRC_EXTRA](../guide/serialization.md)).
41
38
:::
@@ -46,41 +43,43 @@ Support for _MAVLink 2_ is indicated in the [AUTOPILOT_VERSION](../messages/comm
46
43
It can also be inferred from the packet start marker byte.
47
44
48
45
This is sufficient if the communication link between autopilot and GCS is completely transparent.
49
-
However, some communication links are not completely transparent as they include:
46
+
Most flight stacks now assume MAVLink 2 support based on the protocol capability or packet start marker.
47
+
This is reasonable because the majority of systems and communication links now reliably support MAVLink 2.
48
+
49
+
### Non-transparent communication links
50
+
51
+
Most flight stacks assume communication links are transparent.
52
+
Possible causes of links not being transparent are:
50
53
51
54
- Routing, which can can change or reserialize MAVLink packets (for example, there might be an intermediate router that converts between versions).
52
55
- Wireless links that rely on fixed length packetization may distort or truncate variable-length MAVLink 2 frames.
56
+
For example, older SiK Radios may consume MAVLink 2 messages.
53
57
54
-
:::info
55
-
Some flight stacks assume MAVLink 2 support based on the protocol capability or packet start marker.
56
-
This is reasonable because the majority of systems and communication links now reliably support MAVLink 2.
57
-
:::
58
-
59
-
To be certain that a link supports _MAVLink 2_ transparently, a GCS or other component can use the _MAVLink 2_ handshake protocol to test the link.
60
-
This is done by sending the [MAV_CMD_REQUEST_MESSAGE](../messages/common.md#MAV_CMD_REQUEST_MESSAGE) command with `param1=300` ([PROTOCOL_VERSION](../messages/common.md#PROTOCOL_VERSION)).
61
-
If the system supports _MAVLink 2_ and the handshake it will respond with [PROTOCOL_VERSION](../messages/common.md#PROTOCOL_VERSION)**encoded as MAVLink 2 packet**.
58
+
To be certain that a link supports _MAVLink 2_ transparently, a GCS or other component might send the [MAV_CMD_REQUEST_MESSAGE](../messages/common.md#MAV_CMD_REQUEST_MESSAGE) command with `param1` set to the id of a _MAVLink 2_ message (with `id > 256`) that is supported by the flight stack.
59
+
If the system supports _MAVLink 2_ and the handshake it will respond with the message **encoded as MAVLink 2 packet**.
62
60
If it does not support _MAVLink 2_ it should `NACK` the command.
63
61
The GCS should fall back to a timeout in case the command interface is not implemented properly.
64
62
65
-
:::tip
66
-
If the target system does not support `PROTOCOL_VERSION` you can request any other message that it is able to emit.
67
-
:::
68
-
69
-
The diagram below illustrates the complete sequence.
GCS->>Drone: MAV_CMD_REQUEST_MESSAGE(param1 = id of SOME_MAVLINK2_MESSAGE)
78
72
GCS->>GCS: Start timeout
79
-
Drone->>GCS: PROTOCOL_VERSION in MAVLink 2 framing
73
+
Drone->>GCS: SOME_MAVLINK2_MESSAGE in MAVLink 2 framing
80
74
GCS->>Drone: If ACK: Switches to MAVLink 2
81
75
Drone->>GCS: Switches to MAVLink 2 on receive
82
76
-->
83
77
78
+
:::tip
79
+
Historically the message used for testing was `PROTOCOL_VERSION`, which is now deprecated.
80
+
The protocol should work with any other MAVLink 2 telemetry message supported by the flight stack.
81
+
:::
82
+
84
83
### Semi-Transparent Legacy Radios
85
84
86
85
Some popular legacy radios (e.g. the SiK radio series) operate in semi-transparent mode by injecting [RADIO_STATUS](../messages/common.md#RADIO_STATUS) messages into the MAVLink message stream.
| severity | `uint8_t` | [MAV_SEVERITY](#MAV_SEVERITY) | Severity of status. Relies on the definitions within RFC-5424. |
2294
-
| text | `char[50]` | | Status text message, without null termination character |
2294
+
| text | `char[50]` | | Status text message, without null termination character. UTF-8 encoded. |
2295
2295
| <span class='ext'>id</span> <a href='#mav2_extension_field'>++</a> | `uint16_t` | | Unique (opaque) identifier for this statustext message. May be used to reassemble a logical long-statustext message from a sequence of chunks. A value of zero indicates this is the only chunk in the sequence and the message can be emitted immediately. |
2296
2296
| <span class='ext'>chunk_seq</span> <a href='#mav2_extension_field'>++</a> | `uint8_t` | | This chunk's sequence number; indexing is from zero. Any null character in the text field is taken to mean this was the last chunk. |
| <aid='GPS_JAMMING_STATE_UNKNOWN'></a>0 |[GPS_JAMMING_STATE_UNKNOWN](#GPS_JAMMING_STATE_UNKNOWN)| The GPS receiver does not provide GPS signal jamming info. |
391
-
| <aid='GPS_JAMMING_STATE_OK'></a>1 |[GPS_JAMMING_STATE_OK](#GPS_JAMMING_STATE_OK)| The GPS receiver detected no signal jamming. |
392
-
| <aid='GPS_JAMMING_STATE_MITIGATED'></a>2 |[GPS_JAMMING_STATE_MITIGATED](#GPS_JAMMING_STATE_MITIGATED)| The GPS receiver detected and mitigated signal jamming. |
393
-
| <aid='GPS_JAMMING_STATE_DETECTED'></a>3 |[GPS_JAMMING_STATE_DETECTED](#GPS_JAMMING_STATE_DETECTED)| The GPS receiver detected signal jamming. |
| <aid='GPS_JAMMING_STATE_UNKNOWN'></a>0 |[GPS_JAMMING_STATE_UNKNOWN](#GPS_JAMMING_STATE_UNKNOWN)| The GPS receiver does not provide GPS signal jamming info. |
391
+
| <aid='GPS_JAMMING_STATE_NOT_JAMMED'></a>1 |[GPS_JAMMING_STATE_NOT_JAMMED](#GPS_JAMMING_STATE_NOT_JAMMED)| The GPS receiver detected no signal jamming. |
392
+
| <aid='GPS_JAMMING_STATE_MITIGATED'></a>2 |[GPS_JAMMING_STATE_MITIGATED](#GPS_JAMMING_STATE_MITIGATED)| The GPS receiver detected and mitigated signal jamming. |
393
+
| <aid='GPS_JAMMING_STATE_DETECTED'></a>3 |[GPS_JAMMING_STATE_DETECTED](#GPS_JAMMING_STATE_DETECTED)| The GPS receiver detected signal jamming. |
| <aid='GPS_SPOOFING_STATE_UNKNOWN'></a>0 |[GPS_SPOOFING_STATE_UNKNOWN](#GPS_SPOOFING_STATE_UNKNOWN)| The GPS receiver does not provide GPS signal spoofing info. |
404
-
| <aid='GPS_SPOOFING_STATE_OK'></a>1 |[GPS_SPOOFING_STATE_OK](#GPS_SPOOFING_STATE_OK)| The GPS receiver detected no signal spoofing. |
405
-
| <aid='GPS_SPOOFING_STATE_MITIGATED'></a>2 |[GPS_SPOOFING_STATE_MITIGATED](#GPS_SPOOFING_STATE_MITIGATED)| The GPS receiver detected and mitigated signal spoofing. |
406
-
| <aid='GPS_SPOOFING_STATE_DETECTED'></a>3 |[GPS_SPOOFING_STATE_DETECTED](#GPS_SPOOFING_STATE_DETECTED)| The GPS receiver detected signal spoofing but still has a fix. |
| <aid='GPS_SPOOFING_STATE_UNKNOWN'></a>0 |[GPS_SPOOFING_STATE_UNKNOWN](#GPS_SPOOFING_STATE_UNKNOWN)| The GPS receiver does not provide GPS signal spoofing info. |
404
+
| <aid='GPS_SPOOFING_STATE_NOT_SPOOFED'></a>1 |[GPS_SPOOFING_STATE_NOT_SPOOFED](#GPS_SPOOFING_STATE_NOT_SPOOFED)| The GPS receiver detected no signal spoofing. |
405
+
| <aid='GPS_SPOOFING_STATE_MITIGATED'></a>2 |[GPS_SPOOFING_STATE_MITIGATED](#GPS_SPOOFING_STATE_MITIGATED)| The GPS receiver detected and mitigated signal spoofing. |
406
+
| <aid='GPS_SPOOFING_STATE_DETECTED'></a>3 |[GPS_SPOOFING_STATE_DETECTED](#GPS_SPOOFING_STATE_DETECTED)| The GPS receiver detected signal spoofing but still has a fix. |
0 commit comments