# `Common.Message.ProtocolVersion`
[🔗](https://github.com/fancydrones/xmavlink/blob/main/lib/common.ex#L10275)

# `t`

```elixir
@type t() :: %Common.Message.ProtocolVersion{
  library_version_hash: [XMAVLink.Types.uint8_t()],
  max_version: XMAVLink.Types.uint16_t(),
  min_version: XMAVLink.Types.uint16_t(),
  spec_version_hash: [XMAVLink.Types.uint8_t()],
  version: XMAVLink.Types.uint16_t()
}
```

Version and capability of protocol version. This message can be requested with MAV_CMD_REQUEST_MESSAGE and is used as part of the handshaking to establish which MAVLink version should be used on the network. Every node should respond to a request for PROTOCOL_VERSION to enable the handshaking. Library implementers should consider adding this into the default decoding state machine to allow the protocol core to respond directly.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
