defmodule XMAVLink.Types do
@moduledoc """
Core types that remain the same across dialects.
"""
@typedoc "Connection delegate modules for XMAVLink.Router"
@type connection :: XMAVLink.SerialConnection | XMAVLink.TCPConnection | XMAVLink.UDPInConnection | XMAVLink.UDPOutConnection
@typedoc "A system/component id tuple"
@type mavlink_address :: {0..255, 0..255}
@typedoc "MAVLink protocol version"
@type version :: 1 | 2
@typedoc "MAVLink message sequence number"
@type sequence_number :: 0..255
@typedoc "A 4-tuple network address"
@type net_address :: {0..255, 0..255, 0..255, 0..255}
@typedoc "A non-reserved network port"
@type net_port :: 1024..65535
@typedoc "A parameter description"
@type param_description :: {pos_integer, String.t}
@typedoc "A list of parameter descriptions"
@type param_description_list :: [ param_description ]
@typedoc "Type used for field in encoded message"
@type field_type :: int8_t | int16_t | int32_t | int64_t | uint8_t | uint16_t | uint32_t | uint64_t | char | float | double
@typedoc "8-bit signed integer"
@type int8_t :: -128..127
@typedoc "16-bit signed integer"
@type int16_t :: -32_768..32_767
@typedoc "32-bit signed integer"
@type int32_t :: -2_147_483_647..2_147_483_647
@typedoc "64-bit signed integer"
@type int64_t :: integer
@typedoc "8-bit unsigned integer"
@type uint8_t :: 0..255
@typedoc "16-bit unsigned integer"
@type uint16_t :: 0..65_535
@typedoc "32-bit unsigned integer"
@type uint32_t :: 0..4_294_967_295
@typedoc "64-bit unsigned integer"
@type uint64_t :: pos_integer
@typedoc "64-bit signed float"
@type double :: Float64
@typedoc "1 -> not an array 2..255 -> an array"
@type field_ordinality :: 1..255
@typedoc "A MAVLink message id"
@type message_id :: non_neg_integer
@typedoc "A CRC_EXTRA checksum"
@type crc_extra :: 0..255
end