Documentation
¶
Overview ¶
Package gomavlib is a library that implements Mavlink 2.0 and 1.0 in the Go programming language. It can power UGVs, UAVs, ground stations, monitoring systems or routers acting in a Mavlink network.
Mavlink is a lighweight and transport-independent protocol that is mostly used to communicate with unmanned ground vehicles (UGV) and unmanned aerial vehicles (UAV, drones, quadcopters, multirotors). It is supported by the most common open-source flight controllers (Ardupilot and PX4).
Examples are available at https://github.com/aircast-one/gomavlib/tree/main/examples
Index ¶
- Variables
- func SetWebTransportLogger(logger WebTransportLogger)
- type Channel
- type ConnectionState
- type ConnectionStateCallback
- type Endpoint
- type EndpointCustomClient
- type EndpointCustomPersistent
- type EndpointCustomServer
- type EndpointSerial
- type EndpointTCPClient
- type EndpointTCPServer
- type EndpointUDPBroadcast
- type EndpointUDPClient
- type EndpointUDPServer
- type EndpointWebSocket
- type EndpointWebTransport
- type Event
- type EventChannelClose
- type EventChannelOpen
- type EventFrame
- type EventParseError
- type EventStreamRequested
- type Node
- func (n *Node) AddEndpoint(endpoint Endpoint) error
- func (n *Node) Close()
- func (n *Node) Events() chan Event
- func (n *Node) FixFrame(fr frame.Frame) error
- func (n *Node) GetEndpoints() []Endpoint
- func (n *Node) Initialize() error
- func (n *Node) RemoveEndpoint(endpoint Endpoint) error
- func (n *Node) WriteFrameAll(fr frame.Frame) error
- func (n *Node) WriteFrameExcept(exceptChannel *Channel, fr frame.Frame) error
- func (n *Node) WriteFrameTo(channel *Channel, fr frame.Frame) error
- func (n *Node) WriteMessageAll(m message.Message) error
- func (n *Node) WriteMessageExcept(exceptChannel *Channel, m message.Message) error
- func (n *Node) WriteMessageTo(channel *Channel, m message.Message) error
- type RetryPolicy
- type RetryState
- func (s *RetryState) BeforeAttempt() (shouldWait bool, waitDuration time.Duration)
- func (s *RetryState) CircuitBreakerWaitTime() time.Duration
- func (s *RetryState) CloseCircuitBreaker()
- func (s *RetryState) ConsecutiveErrors() int32
- func (s *RetryState) GetStats() map[string]any
- func (s *RetryState) IsCircuitBreakerOpen() bool
- func (s *RetryState) OpenCircuitBreaker()
- func (s *RetryState) ReconnectAttempts() int32
- func (s *RetryState) RecordAttempt()
- func (s *RetryState) RecordError() bool
- func (s *RetryState) RecordSuccess()
- type Version
- type WebSocketErrorCategory
- type WebSocketState
- type WebSocketStateCallback
- type WebTransportLogger
- type WebTransportStats
Constants ¶
This section is empty.
Variables ¶
var ErrDatagramTruncated = errors.New("datagram truncated: buffer too small")
ErrDatagramTruncated is returned when a received datagram exceeds the buffer size
Functions ¶
func SetWebTransportLogger ¶
func SetWebTransportLogger(logger WebTransportLogger)
SetWebTransportLogger sets the default logger for all WebTransport endpoints. Pass nil to disable logging. This is a package-level setting. Thread-safe for concurrent access.
Types ¶
type Channel ¶
type Channel struct {
// contains filtered or unexported fields
}
Channel is a communication channel created by an Endpoint. An Endpoint can create channels. For instance, a TCP client endpoint creates a single channel, while a TCP server endpoint creates a channel for each incoming connection.
type ConnectionState ¶
type ConnectionState int32
ConnectionState represents the current state of a durable connection endpoint
const ( ConnStateDisconnected ConnectionState = iota ConnStateConnecting ConnStateConnected ConnStateReconnecting )
Connection states of a durable endpoint.
func (ConnectionState) String ¶
func (s ConnectionState) String() string
type ConnectionStateCallback ¶
type ConnectionStateCallback func(oldState, newState ConnectionState, err error)
ConnectionStateCallback is called when the connection state changes
type Endpoint ¶
type Endpoint interface {
// contains filtered or unexported methods
}
Endpoint is an endpoint, which provides Channels.
type EndpointCustomClient ¶
type EndpointCustomClient struct {
// custom connect function that opens the connection
Connect func(ctx context.Context) (net.Conn, error)
// the label of the protocol
Label string
// whether the connection is datagram-based (e.g. UDP).
IsDatagram bool
// contains filtered or unexported fields
}
EndpointCustomClient is an endpoint that works with a custom implementation by providing a Connect func that returns a net.Conn.
type EndpointCustomPersistent ¶
type EndpointCustomPersistent struct {
// struct or interface implementing Read(), Write() and Close()
ReadWriteCloser io.ReadWriteCloser
// whether the connection is datagram-based (e.g. UDP).
IsDatagram bool
// contains filtered or unexported fields
}
EndpointCustomPersistent sets up an endpoint for pre-established, persistent connections (e.g., WebSocket, named pipes, or any long-lived connection).
Unlike EndpointCustomClient, this ensures only ONE channel is created per connection, preventing goroutine leaks for persistent connections.
type EndpointCustomServer ¶
type EndpointCustomServer struct {
// function to invoke when server should start listening
Listen func() (net.Listener, error)
// the label of the protocol
Label string
// whether the connection is datagram-based (e.g. UDP).
IsDatagram bool
// contains filtered or unexported fields
}
EndpointCustomServer is an endpoint that works with custom implementations by providing a custom Listen func that returns a net.Listener. This allows you to use custom protocols that conform to the net.listner. A use case could be to add encrypted protocol implementations like DTLS or TCP with TLS.
type EndpointSerial ¶
type EndpointSerial struct {
// name of the device of the serial port (i.e: /dev/ttyUSB0)
Device string
// baud rate (i.e: 57600)
Baud int
EndpointCustomClient
}
EndpointSerial is an endpoint that works with a serial port.
type EndpointTCPClient ¶
type EndpointTCPClient struct {
// domain name or IP of the server to connect to, example: 1.2.3.4:5600
Address string
EndpointCustomClient
}
EndpointTCPClient is an endpoint that works with a TCP client. TCP is fit for routing frames through the internet, but is not the most appropriate way for transferring frames from a UAV to a GCS, since it does not allow frame losses.
type EndpointTCPServer ¶
type EndpointTCPServer struct {
// listen address, example: 0.0.0.0:5600
Address string
EndpointCustomServer
}
EndpointTCPServer is an endpoint that works with a TCP server. TCP is fit for routing frames through the internet, but is not the most appropriate way for transferring frames from a UAV to a GCS, since it does not allow frame losses.
type EndpointUDPBroadcast ¶
type EndpointUDPBroadcast struct {
// broadcast address to which sending outgoing frames, example: 192.168.5.255:5600
BroadcastAddress string
// (optional) listening address. if empty, it will be computed
// from the broadcast address.
LocalAddress string
EndpointCustomClient
}
EndpointUDPBroadcast is an endpoint that works with UDP broadcast packets.
type EndpointUDPClient ¶
type EndpointUDPClient struct {
// domain name or IP of the server to connect to, example: 1.2.3.4:5600
Address string
EndpointCustomClient
}
EndpointUDPClient is an endpoint that works with a UDP client.
type EndpointUDPServer ¶
type EndpointUDPServer struct {
// listen address, example: 0.0.0.0:5600
Address string
EndpointCustomServer
}
EndpointUDPServer is an endpoint that works with an UDP server. This is the most appropriate way for transferring frames from a UAV to a GCS if they are connected to the same network.
type EndpointWebSocket ¶
type EndpointWebSocket struct {
// WebSocket URL to connect to (e.g., "ws://localhost:8080/mavlink")
URL string
// Optional HTTP headers to send during WebSocket handshake.
// For static headers that don't change between reconnections.
Headers map[string]string
// Optional callback that provides headers dynamically on each connection attempt.
// When set, this is called instead of using the static Headers map.
// This is useful for authentication tokens that may expire and need refreshing
// between reconnection attempts.
//
// If the provider returns a non-nil error, the connection attempt is skipped
// entirely (no HTTP request is made) and the error is counted as a failure
// for the circuit breaker. This prevents sending unauthenticated requests
// when the token cannot be obtained.
HeaderProvider func() (map[string]string, error)
// Optional label for logging (defaults to "websocket")
Label string
// Reconnection configuration (optional, uses defaults if not set)
InitialRetryPeriod time.Duration // Default: 1s
MaxRetryPeriod time.Duration // Default: 30s
BackoffMultiplier float64 // Default: 1.5
MaxReconnectAttempts int // Default: 0 (unlimited)
// Connection timeouts (optional, uses defaults if not set)
HandshakeTimeout time.Duration // Default: 5s
PingPeriod time.Duration // Default: 30s
PongWait time.Duration // Default: 120s
// Circuit breaker configuration
MaxConsecutiveErrors int // Default: 10
CircuitBreakerTimeout time.Duration // Default: 5 minutes
// State change callback (optional)
OnStateChange WebSocketStateCallback
// NetDialContext specifies a custom dial function for creating TCP connections.
// This is useful for routing through custom networks like Tailscale.
// If nil, the default dialer is used.
NetDialContext func(ctx context.Context, network, addr string) (net.Conn, error)
// contains filtered or unexported fields
}
EndpointWebSocket sets up a durable WebSocket endpoint with automatic reconnection. This is designed for persistent WebSocket connections used in MAVLink-over-WebSocket scenarios.
Features: - Automatic reconnection with exponential backoff - Connection health monitoring with ping/pong - Circuit breaker pattern to prevent connection storms - Error categorization and intelligent retry strategies - Connection state callbacks for monitoring
Example:
node := &gomavlib.Node{
Endpoints: []gomavlib.Endpoint{
&gomavlib.EndpointWebSocket{
URL: "ws://localhost:8080/mavlink",
Headers: map[string]string{
"Authorization": "Bearer token",
},
OnStateChange: func(old, new WebSocketState, err error) {
log.Printf("WebSocket state: %s -> %s", old, new)
},
},
},
}
err := node.Initialize()
func (*EndpointWebSocket) GetState ¶
func (e *EndpointWebSocket) GetState() WebSocketState
GetState returns the current connection state
func (*EndpointWebSocket) GetStats ¶
func (e *EndpointWebSocket) GetStats() map[string]any
GetStats returns connection statistics
func (*EndpointWebSocket) IsHealthy ¶
func (e *EndpointWebSocket) IsHealthy() bool
IsHealthy returns true if the connection is currently healthy
type EndpointWebTransport ¶
type EndpointWebTransport struct {
// WebTransport URL to connect to (must be https://)
URL string
// Optional HTTP headers for the WebTransport handshake.
// For static headers that don't change between reconnections.
Headers map[string]string
// Optional callback that provides headers dynamically on each connection attempt.
// When set, this is called instead of using the static Headers map.
// This is useful for authentication tokens that may expire and need refreshing
// between reconnection attempts.
//
// If the provider returns a non-nil error, the connection attempt is skipped
// entirely (no HTTP request is made) and the error is counted as a failure
// for the circuit breaker.
HeaderProvider func() (map[string]string, error)
// Optional label for logging (defaults to "webtransport")
Label string
// UseDatagrams enables unreliable datagram mode (lower latency, may drop)
// If false, uses reliable bidirectional streams
UseDatagrams bool
// Reconnection configuration
InitialRetryPeriod time.Duration // Default: 1s
MaxRetryPeriod time.Duration // Default: 30s
BackoffMultiplier float64 // Default: 1.5
MaxReconnectAttempts int // Default: 0 (unlimited)
// TLS configuration (optional)
TLSConfig *tls.Config
// QUIC configuration for connection migration (optional)
QUICConfig *quic.Config
// DialAddr is a custom function for dialing the QUIC connection.
// This can be used to route connections through Tailscale or other custom transports.
// If nil, the default quic.DialAddrEarly will be used.
DialAddr func(ctx context.Context, addr string, tlsCfg *tls.Config, cfg *quic.Config) (*quic.Conn, error)
// State change callback (optional)
OnStateChange ConnectionStateCallback
// Logger for WebTransport debugging (optional).
// If nil, uses the package-level default logger.
// Set to a custom logger or use SetWebTransportLogger(nil) to disable logging.
Logger WebTransportLogger
// contains filtered or unexported fields
}
EndpointWebTransport sets up a WebTransport endpoint with QUIC connection migration. This endpoint survives IP address changes (e.g., cellular handoffs) without losing the connection, as QUIC uses connection IDs rather than IP:port tuples.
Features: - Connection migration across IP changes (QUIC RFC 9000) - Zero-RTT reconnection when supported - Both reliable streams and unreliable datagrams - Automatic reconnection with exponential backoff
Example:
node := &gomavlib.Node{
Endpoints: []gomavlib.Endpoint{
&gomavlib.EndpointWebTransport{
URL: "https://server.example.com:443/mavlink",
Headers: map[string]string{
"Authorization": "Bearer token",
},
UseDatagrams: true, // Use unreliable datagrams for lower latency
},
},
}
err := node.Initialize()
func (*EndpointWebTransport) GetState ¶
func (e *EndpointWebTransport) GetState() ConnectionState
GetState returns the current connection state
func (*EndpointWebTransport) GetStats ¶
func (e *EndpointWebTransport) GetStats() WebTransportStats
GetStats returns connection statistics
type Event ¶
type Event interface {
// contains filtered or unexported methods
}
Event is the interface implemented by all events received with node.Events().
type EventChannelClose ¶
EventChannelClose is fired when a channel is closed.
type EventChannelOpen ¶
type EventChannelOpen struct {
Channel *Channel
}
EventChannelOpen is fired when a channel is opened.
type EventFrame ¶
type EventFrame struct {
// frame
Frame frame.Frame
// channel from which the frame was received
Channel *Channel
}
EventFrame is fired when a frame is received.
func (*EventFrame) ComponentID ¶
func (res *EventFrame) ComponentID() byte
ComponentID returns the frame component id.
func (*EventFrame) Message ¶
func (res *EventFrame) Message() message.Message
Message returns the message inside the frame.
func (*EventFrame) SystemID ¶
func (res *EventFrame) SystemID() byte
SystemID returns the frame system id.
type EventParseError ¶
type EventParseError struct {
// error
Error error
// channel used to send the frame
Channel *Channel
}
EventParseError is fired when a parse error occurs.
type EventStreamRequested ¶
type EventStreamRequested struct {
// channel to which the stream request is addressed
Channel *Channel
// system id to which the stream requests is addressed
SystemID byte
// component id to which the stream requests is addressed
ComponentID byte
}
EventStreamRequested is fired when an automatic stream request is sent.
type Node ¶
type Node struct {
// endpoints with which this node will
// communicate. Each endpoint contains zero or more channels
Endpoints []Endpoint
// (optional) dialect which contains the messages that will be encoded and decoded.
// If not provided, messages are decoded in the MessageRaw struct.
Dialect *dialect.Dialect
// (optional) secret key used to validate incoming frames.
// Non signed frames are discarded, as well as frames with a version < 2.0.
InKey *frame.V2Key
// Mavlink version used to encode messages. See Version
// for the available options.
OutVersion Version
// system id, added to every outgoing frame and used to identify this
// node in the network.
OutSystemID byte
// (optional) component id, added to every outgoing frame, defaults to 1.
OutComponentID byte
// (optional) secret key used to sign outgoing frames.
// This feature requires a version >= 2.0.
OutKey *frame.V2Key
// (optional) disables the periodic sending of heartbeats to open channels.
HeartbeatDisable bool
// (optional) period between heartbeats. It defaults to 5 seconds.
HeartbeatPeriod time.Duration
// (optional) system type advertised by heartbeats.
// It defaults to MAV_TYPE_GCS
HeartbeatSystemType int
// (optional) autopilot type advertised by heartbeats.
// It defaults to MAV_AUTOPILOT_GENERIC
HeartbeatAutopilotType int
// (optional) automatically request streams to detected Ardupilot devices,
// that need an explicit request in order to emit telemetry stream.
StreamRequestEnable bool
// (optional) requested stream frequency in Hz. It defaults to 4.
StreamRequestFrequency int
// (optional) read timeout.
// It defaults to 10 seconds.
ReadTimeout time.Duration
// (optional) write timeout.
// It defaults to 10 seconds.
WriteTimeout time.Duration
// (optional) timeout before closing idle connections.
// It defaults to 60 seconds.
IdleTimeout time.Duration
// contains filtered or unexported fields
}
Node is a high-level Mavlink encoder and decoder that works with endpoints.
func (*Node) AddEndpoint ¶
AddEndpoint adds a new endpoint to the node at runtime. The endpoint will be initialized and started immediately. Returns an error if initialization fails.
func (*Node) Close ¶
func (n *Node) Close()
Close halts node operations and waits for all routines to return.
func (*Node) Events ¶
Events returns a channel from which receiving events. Possible events are:
* EventChannelOpen * EventChannelClose * EventFrame * EventParseError * EventStreamRequested
See individual events for details.
func (*Node) FixFrame ¶
FixFrame recomputes the Frame checksum and signature. This can be called on Frames whose content has been edited.
func (*Node) GetEndpoints ¶
GetEndpoints returns a list of all currently active endpoints. This is a snapshot and the list may change after this function returns.
func (*Node) RemoveEndpoint ¶
RemoveEndpoint removes an endpoint from the node at runtime. The endpoint will be closed and all its channels will be terminated. Returns an error if the endpoint is not found.
func (*Node) WriteFrameAll ¶
WriteFrameAll writes a frame to all channels. This function is intended only for routing pre-existing frames to other nodes, since all frame fields must be filled manually.
func (*Node) WriteFrameExcept ¶
WriteFrameExcept writes a frame to all channels except specified channel. This function is intended only for routing pre-existing frames to other nodes, since all frame fields must be filled manually.
func (*Node) WriteFrameTo ¶
WriteFrameTo writes a frame to given channel. This function is intended only for routing pre-existing frames to other nodes, since all frame fields must be filled manually.
func (*Node) WriteMessageAll ¶
WriteMessageAll writes a message to all channels.
func (*Node) WriteMessageExcept ¶
WriteMessageExcept writes a message to all channels except specified channel.
type RetryPolicy ¶
type RetryPolicy struct {
// InitialRetryPeriod is the initial delay before first retry (default: 1s)
InitialRetryPeriod time.Duration
// MaxRetryPeriod is the maximum delay between retries (default: 30s)
MaxRetryPeriod time.Duration
// BackoffMultiplier is the factor to multiply the delay after each attempt (default: 1.5)
BackoffMultiplier float64
// MaxReconnectAttempts is the maximum number of reconnection attempts (0 = unlimited)
MaxReconnectAttempts int
// MaxConsecutiveErrors triggers circuit breaker when reached (default: 0 = disabled)
MaxConsecutiveErrors int
// CircuitBreakerTimeout is how long the circuit breaker stays open (default: 5 minutes)
CircuitBreakerTimeout time.Duration
}
RetryPolicy defines the configuration for automatic reconnection with exponential backoff
func DefaultRetryPolicy ¶
func DefaultRetryPolicy() RetryPolicy
DefaultRetryPolicy returns a retry policy with sensible defaults
func (*RetryPolicy) ApplyDefaults ¶
func (p *RetryPolicy) ApplyDefaults()
ApplyDefaults fills in any zero values with defaults
type RetryState ¶
type RetryState struct {
// contains filtered or unexported fields
}
RetryState tracks the current state of a retry loop. Thread-safe: uses atomic operations for counters and mutex for non-atomic fields.
func NewRetryState ¶
func NewRetryState(policy RetryPolicy) *RetryState
NewRetryState creates a new retry state with the given policy
func (*RetryState) BeforeAttempt ¶
func (s *RetryState) BeforeAttempt() (shouldWait bool, waitDuration time.Duration)
BeforeAttempt should be called before each connection attempt. Returns true if we should wait before connecting (i.e., this is a retry). The waitDuration is how long to wait before attempting. After waiting, the backoff period is increased for the next potential retry. Thread-safe.
func (*RetryState) CircuitBreakerWaitTime ¶
func (s *RetryState) CircuitBreakerWaitTime() time.Duration
CircuitBreakerWaitTime returns remaining time until circuit breaker closes. Thread-safe.
func (*RetryState) CloseCircuitBreaker ¶
func (s *RetryState) CloseCircuitBreaker()
CloseCircuitBreaker manually closes the circuit breaker (e.g., on successful connection). Thread-safe.
func (*RetryState) ConsecutiveErrors ¶
func (s *RetryState) ConsecutiveErrors() int32
ConsecutiveErrors returns the current consecutive error count
func (*RetryState) GetStats ¶
func (s *RetryState) GetStats() map[string]any
GetStats returns current retry statistics. Thread-safe.
func (*RetryState) IsCircuitBreakerOpen ¶
func (s *RetryState) IsCircuitBreakerOpen() bool
IsCircuitBreakerOpen returns true if the circuit breaker is currently open. Thread-safe.
func (*RetryState) OpenCircuitBreaker ¶
func (s *RetryState) OpenCircuitBreaker()
OpenCircuitBreaker manually opens the circuit breaker (for testing). Thread-safe.
func (*RetryState) ReconnectAttempts ¶
func (s *RetryState) ReconnectAttempts() int32
ReconnectAttempts returns the current reconnect attempt count
func (*RetryState) RecordAttempt ¶
func (s *RetryState) RecordAttempt()
RecordAttempt should be called when starting a connection attempt
func (*RetryState) RecordError ¶
func (s *RetryState) RecordError() bool
RecordError should be called when a connection fails. Returns true if we should continue retrying.
func (*RetryState) RecordSuccess ¶
func (s *RetryState) RecordSuccess()
RecordSuccess should be called when a connection succeeds. Thread-safe.
type WebSocketErrorCategory ¶
type WebSocketErrorCategory int
WebSocketErrorCategory represents the type of error that occurred
const ( ErrorCategoryNetwork WebSocketErrorCategory = iota ErrorCategoryAuth ErrorCategoryProtocol ErrorCategoryTimeout ErrorCategoryUnknown )
WebSocket error categories used to decide whether a failure is retryable.
type WebSocketState ¶
type WebSocketState int32
WebSocketState represents the current state of the WebSocket connection
const ( WSStateDisconnected WebSocketState = iota WSStateConnecting WSStateConnected WSStateReconnecting )
WebSocket connection states.
func (WebSocketState) String ¶
func (s WebSocketState) String() string
type WebSocketStateCallback ¶
type WebSocketStateCallback func(oldState, newState WebSocketState, err error)
WebSocketStateCallback is called when the connection state changes
type WebTransportLogger ¶
WebTransportLogger interface allows custom logging implementations. If not set, a default stderr logger is used.
Source Files
¶
- channel.go
- channel_provider.go
- connection_state.go
- endpoint.go
- endpoint_custom_client.go
- endpoint_custom_persistent.go
- endpoint_custom_server.go
- endpoint_serial.go
- endpoint_tcp_client.go
- endpoint_tcp_server.go
- endpoint_udp_broadcast.go
- endpoint_udp_client.go
- endpoint_udp_server.go
- endpoint_websocket.go
- endpoint_webtransport.go
- events.go
- node.go
- node_heartbeat.go
- node_stream_request.go
- remove_closer.go
- retry_policy.go
- version.go
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
dialect-import
command
dialect-import command.
|
dialect-import command. |
|
dialects-gen
command
dialects-gen command.
|
dialects-gen command. |
|
examples
|
|
|
endpoint-dynamic
command
Package main contains an example.
|
Package main contains an example. |
|
frame-read-writer
command
Package main contains an example.
|
Package main contains an example. |
|
node-command-microservice
command
Package main contains an example.
|
Package main contains an example. |
|
node-dialect-absent
command
Package main contains an example.
|
Package main contains an example. |
|
node-dialect-custom
command
Package main contains an example.
|
Package main contains an example. |
|
node-endpoint-custom-client
command
Package main contains an example.
|
Package main contains an example. |
|
node-endpoint-custom-server
command
Package main contains an example.
|
Package main contains an example. |
|
node-endpoint-serial
command
Package main contains an example.
|
Package main contains an example. |
|
node-endpoint-tcp-client
command
Package main contains an example.
|
Package main contains an example. |
|
node-endpoint-tcp-server
command
Package main contains an example.
|
Package main contains an example. |
|
node-endpoint-udp-broadcast
command
Package main contains an example.
|
Package main contains an example. |
|
node-endpoint-udp-client
command
Package main contains an example.
|
Package main contains an example. |
|
node-endpoint-udp-server
command
Package main contains an example.
|
Package main contains an example. |
|
node-events
command
Package main contains an example.
|
Package main contains an example. |
|
node-message-read
command
Package main contains an example.
|
Package main contains an example. |
|
node-message-write
command
Package main contains an example.
|
Package main contains an example. |
|
node-router
command
Package main contains an example.
|
Package main contains an example. |
|
node-router-edit
command
Package main contains an example.
|
Package main contains an example. |
|
node-serial-to-json
command
Package main contains an example.
|
Package main contains an example. |
|
node-signature
command
Package main contains an example.
|
Package main contains an example. |
|
node-stream-requests
command
Package main contains an example.
|
Package main contains an example. |
|
telemetry-log
command
Package main contains an example.
|
Package main contains an example. |
|
pkg
|
|
|
conversion
Package conversion contains functions to convert definitions from XML to Go.
|
Package conversion contains functions to convert definitions from XML to Go. |
|
dialect
Package dialect contains the dialect definition and its parser.
|
Package dialect contains the dialect definition and its parser. |
|
dialects/all
Package all contains the all dialect.
|
Package all contains the all dialect. |
|
dialects/ardupilotmega
Package ardupilotmega contains the ardupilotmega dialect.
|
Package ardupilotmega contains the ardupilotmega dialect. |
|
dialects/asluav
Package asluav contains the asluav dialect.
|
Package asluav contains the asluav dialect. |
|
dialects/avssuas
Package avssuas contains the avssuas dialect.
|
Package avssuas contains the avssuas dialect. |
|
dialects/common
Package common contains the common dialect.
|
Package common contains the common dialect. |
|
dialects/csairlink
Package csairlink contains the csairlink dialect.
|
Package csairlink contains the csairlink dialect. |
|
dialects/cubepilot
Package cubepilot contains the cubepilot dialect.
|
Package cubepilot contains the cubepilot dialect. |
|
dialects/development
Package development contains the development dialect.
|
Package development contains the development dialect. |
|
dialects/icarous
Package icarous contains the icarous dialect.
|
Package icarous contains the icarous dialect. |
|
dialects/loweheiser
Package loweheiser contains the loweheiser dialect.
|
Package loweheiser contains the loweheiser dialect. |
|
dialects/marsh
Package marsh contains the marsh dialect.
|
Package marsh contains the marsh dialect. |
|
dialects/minimal
Package minimal contains the minimal dialect.
|
Package minimal contains the minimal dialect. |
|
dialects/paparazzi
Package paparazzi contains the paparazzi dialect.
|
Package paparazzi contains the paparazzi dialect. |
|
dialects/pythonarraytest
Package pythonarraytest contains the pythonarraytest dialect.
|
Package pythonarraytest contains the pythonarraytest dialect. |
|
dialects/standard
Package standard contains the standard dialect.
|
Package standard contains the standard dialect. |
|
dialects/stemstudios
Package stemstudios contains the stemstudios dialect.
|
Package stemstudios contains the stemstudios dialect. |
|
dialects/storm32
Package storm32 contains the storm32 dialect.
|
Package storm32 contains the storm32 dialect. |
|
dialects/test
Package test contains the test dialect.
|
Package test contains the test dialect. |
|
dialects/ualberta
Package ualberta contains the ualberta dialect.
|
Package ualberta contains the ualberta dialect. |
|
dialects/uavionix
Package uavionix contains the uavionix dialect.
|
Package uavionix contains the uavionix dialect. |
|
frame
Package frame contains frame definitions and a frame parser.
|
Package frame contains frame definitions and a frame parser. |
|
message
Package message contains the message definition and its parser.
|
Package message contains the message definition and its parser. |
|
streamwriter
Package streamwriter contains a message stream writer.
|
Package streamwriter contains a message stream writer. |
|
timednetconn
Package timednetconn contains a net.Conn wrapper with deadlines.
|
Package timednetconn contains a net.Conn wrapper with deadlines. |
|
tlog
Package tlog contains a Telemetry log reader and writer.
|
Package tlog contains a Telemetry log reader and writer. |
|
x25
Package x25 implements the X25 hash.
|
Package x25 implements the X25 hash. |