# `XMAVLink.Types`
[🔗](https://github.com/fancydrones/xmavlink/blob/main/lib/mavlink/types.ex#L1)

Core types that remain the same across dialects.

# `connection`

```elixir
@type connection() ::
  XMAVLink.SerialConnection
  | XMAVLink.TCPOutConnection
  | XMAVLink.UDPInConnection
  | XMAVLink.UDPOutConnection
```

Connection delegate modules for XMAVLink.Router

# `crc_extra`

```elixir
@type crc_extra() :: 0..255
```

A CRC_EXTRA checksum

# `double`

```elixir
@type double() :: Float64
```

64-bit signed float

# `field_ordinality`

```elixir
@type field_ordinality() :: 1..255
```

1 -> not an array 2..255 -> an array

# `field_type`

```elixir
@type field_type() ::
  int8_t()
  | int16_t()
  | int32_t()
  | int64_t()
  | uint8_t()
  | uint16_t()
  | uint32_t()
  | uint64_t()
  | char()
  | float()
  | double()
```

Type used for field in encoded message

# `int8_t`

```elixir
@type int8_t() :: -128..127
```

8-bit signed integer

# `int16_t`

```elixir
@type int16_t() :: -32768..32767
```

16-bit signed integer

# `int32_t`

```elixir
@type int32_t() :: -2_147_483_648..2_147_483_647
```

32-bit signed integer

# `int64_t`

```elixir
@type int64_t() :: integer()
```

64-bit signed integer

# `mavlink_address`

```elixir
@type mavlink_address() :: {0..255, 0..255}
```

A system/component id tuple

# `message_id`

```elixir
@type message_id() :: non_neg_integer()
```

A MAVLink message id

# `net_address`

```elixir
@type net_address() :: {0..255, 0..255, 0..255, 0..255}
```

A 4-tuple network address

# `net_port`

```elixir
@type net_port() :: 1024..65535
```

A non-reserved network port

# `param_description`

```elixir
@type param_description() :: {pos_integer(), String.t()}
```

A parameter description

# `param_description_list`

```elixir
@type param_description_list() :: [param_description()]
```

A list of parameter descriptions

# `sequence_number`

```elixir
@type sequence_number() :: 0..255
```

MAVLink message sequence number

# `uint8_t`

```elixir
@type uint8_t() :: 0..255
```

8-bit unsigned integer

# `uint16_t`

```elixir
@type uint16_t() :: 0..65535
```

16-bit unsigned integer

# `uint32_t`

```elixir
@type uint32_t() :: 0..4_294_967_295
```

32-bit unsigned integer

# `uint64_t`

```elixir
@type uint64_t() :: 0..18_446_744_073_709_551_615
```

64-bit unsigned integer

# `version`

```elixir
@type version() :: 1 | 2
```

MAVLink protocol version

---

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