gpsnmea

package
v0.21.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 29, 2024 License: AGPL-3.0 Imports: 21 Imported by: 0

Documentation

Overview

Package gpsnmea implements an NMEA gps.

Package gpsnmea implements an NMEA serial gps.

Package gpsnmea implements a GPS NMEA component.

Package gpsnmea implements an NMEA gps.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config added in v0.2.36

type Config struct {
	ConnectionType string `json:"connection_type"`

	*SerialConfig `json:"serial_attributes,omitempty"`
	*I2CConfig    `json:"i2c_attributes,omitempty"`
}

Config is used for converting NMEA Movement Sensor attibutes.

func (*Config) Validate added in v0.2.36

func (cfg *Config) Validate(path string) ([]string, error)

Validate ensures all parts of the config are valid.

type DataReader added in v0.21.0

type DataReader interface {
	Messages() chan string
	Close() error
}

DataReader represents a way to get data from a GPS NMEA device. We can read data from it using the channel in Messages, and we can close the device when we're done.

func NewI2cDataReader added in v0.21.0

func NewI2cDataReader(
	bus buses.I2C, addr byte, baud int, logger logging.Logger,
) (DataReader, error)

NewI2cDataReader constructs a new DataReader that gets its NMEA messages over an I2C bus.

func NewSerialDataReader added in v0.21.0

func NewSerialDataReader(options serial.OpenOptions, logger logging.Logger) (DataReader, error)

NewSerialDataReader constructs a new DataReader that gets its NMEA messages over a serial port.

type GPSData added in v0.5.0

type GPSData struct {
	Location   *geo.Point
	Alt        float64
	Speed      float64 // ground speed in m per sec
	VDOP       float64 // vertical accuracy
	HDOP       float64 // horizontal accuracy
	SatsInView int     // quantity satellites in view
	SatsInUse  int     // quantity satellites in view

	FixQuality     int
	CompassHeading float64 // true compass heading in degree
	// contains filtered or unexported fields
}

GPSData struct combines various attributes related to GPS.

func (*GPSData) ParseAndUpdate added in v0.5.0

func (g *GPSData) ParseAndUpdate(line string) error

ParseAndUpdate will attempt to parse a line to an NMEA sentence, and if valid, will try to update the given struct with the values for that line. Nothing will be updated if there is not a valid gps fix.

type I2CConfig added in v0.2.36

type I2CConfig struct {
	I2CBus      string `json:"i2c_bus"`
	I2CAddr     int    `json:"i2c_addr"`
	I2CBaudRate int    `json:"i2c_baud_rate,omitempty"`
}

I2CConfig is used for converting Serial NMEA MovementSensor config attributes.

type NMEAMovementSensor added in v0.21.0

type NMEAMovementSensor struct {
	resource.Named
	resource.AlwaysRebuild
	// contains filtered or unexported fields
}

NMEAMovementSensor allows the use of any MovementSensor chip via a DataReader.

func (*NMEAMovementSensor) Accuracy added in v0.21.0

func (g *NMEAMovementSensor) Accuracy(
	ctx context.Context, extra map[string]interface{},
) (*movementsensor.Accuracy, error)

Accuracy returns the accuracy map, hDOP, vDOP, Fixquality and compass heading error.

func (*NMEAMovementSensor) AngularVelocity added in v0.21.0

func (g *NMEAMovementSensor) AngularVelocity(
	ctx context.Context, extra map[string]interface{},
) (spatialmath.AngularVelocity, error)

AngularVelocity returns the sensor's angular velocity.

func (*NMEAMovementSensor) Close added in v0.21.0

func (g *NMEAMovementSensor) Close(ctx context.Context) error

Close shuts down the NMEAMovementSensor.

func (*NMEAMovementSensor) CompassHeading added in v0.21.0

func (g *NMEAMovementSensor) CompassHeading(
	ctx context.Context, extra map[string]interface{},
) (float64, error)

CompassHeading returns the heading, from the range 0->360.

func (*NMEAMovementSensor) LinearAcceleration added in v0.21.0

func (g *NMEAMovementSensor) LinearAcceleration(
	ctx context.Context, extra map[string]interface{},
) (r3.Vector, error)

LinearAcceleration returns the sensor's linear acceleration.

func (*NMEAMovementSensor) LinearVelocity added in v0.21.0

func (g *NMEAMovementSensor) LinearVelocity(
	ctx context.Context, extra map[string]interface{},
) (r3.Vector, error)

LinearVelocity returns the sensor's linear velocity. It requires having a compass heading, so we know which direction our speed is in. We assume all of this speed is horizontal, and not in gaining/losing altitude.

func (*NMEAMovementSensor) Orientation added in v0.21.0

func (g *NMEAMovementSensor) Orientation(
	ctx context.Context, extra map[string]interface{},
) (spatialmath.Orientation, error)

Orientation returns the sensor's orientation.

func (*NMEAMovementSensor) Position added in v0.21.0

func (g *NMEAMovementSensor) Position(
	ctx context.Context, extra map[string]interface{},
) (*geo.Point, float64, error)

Position returns the position and altitide of the sensor, or an error.

func (*NMEAMovementSensor) Properties added in v0.21.0

func (g *NMEAMovementSensor) Properties(
	ctx context.Context, extra map[string]interface{},
) (*movementsensor.Properties, error)

Properties returns what movement sensor capabilities we have.

func (*NMEAMovementSensor) ReadFix added in v0.21.0

func (g *NMEAMovementSensor) ReadFix(ctx context.Context) (int, error)

ReadFix returns Fix quality of MovementSensor measurements.

func (*NMEAMovementSensor) ReadSatsInView added in v0.21.0

func (g *NMEAMovementSensor) ReadSatsInView(ctx context.Context) (int, error)

ReadSatsInView returns the number of satellites in view.

func (*NMEAMovementSensor) Readings added in v0.21.0

func (g *NMEAMovementSensor) Readings(
	ctx context.Context, extra map[string]interface{},
) (map[string]interface{}, error)

Readings will use return all of the MovementSensor Readings.

func (*NMEAMovementSensor) Start added in v0.21.0

func (g *NMEAMovementSensor) Start(ctx context.Context) error

Start begins reading nmea messages from module and updates gps data.

type NmeaMovementSensor

type NmeaMovementSensor interface {
	movementsensor.MovementSensor
	Start(ctx context.Context) error                 // Initialize and run MovementSensor
	Close(ctx context.Context) error                 // Close MovementSensor
	ReadFix(ctx context.Context) (int, error)        // Returns the fix quality of the current MovementSensor measurements
	ReadSatsInView(ctx context.Context) (int, error) // Returns the number of satellites in view
}

NmeaMovementSensor implements a gps that sends nmea messages for movement data.

func MakePmtkI2cGpsNmea added in v0.15.0

func MakePmtkI2cGpsNmea(
	ctx context.Context,
	deps resource.Dependencies,
	name resource.Name,
	conf *Config,
	logger logging.Logger,
	i2cBus buses.I2C,
) (NmeaMovementSensor, error)

MakePmtkI2cGpsNmea is only split out for ease of testing: you can pass in your own mock I2C bus, or pass in nil to have it create a real one. It is public so it can also be called from within the gpsrtkpmtk package.

func NewNmeaMovementSensor added in v0.21.0

func NewNmeaMovementSensor(
	ctx context.Context, name resource.Name, dev DataReader, logger logging.Logger,
) (NmeaMovementSensor, error)

NewNmeaMovementSensor creates a new movement sensor.

func NewPmtkI2CGPSNMEA

func NewPmtkI2CGPSNMEA(
	ctx context.Context,
	deps resource.Dependencies,
	name resource.Name,
	conf *Config,
	logger logging.Logger,
) (NmeaMovementSensor, error)

NewPmtkI2CGPSNMEA implements a gps that communicates over i2c.

func NewSerialGPSNMEA

func NewSerialGPSNMEA(ctx context.Context, name resource.Name, conf *Config, logger logging.Logger) (NmeaMovementSensor, error)

NewSerialGPSNMEA creates a component that communicates over a serial port.

type PmtkI2cDataReader added in v0.21.0

type PmtkI2cDataReader struct {
	// contains filtered or unexported fields
}

PmtkI2cDataReader implements the DataReader interface for a PMTK device by communicating with it over an I2C bus.

func (*PmtkI2cDataReader) Close added in v0.21.0

func (dr *PmtkI2cDataReader) Close() error

Close is part of the DataReader interface. It shuts everything down.

func (*PmtkI2cDataReader) Messages added in v0.21.0

func (dr *PmtkI2cDataReader) Messages() chan string

Messages returns the channel of complete NMEA sentences we have read off of the device. It's part of the DataReader interface.

type SerialConfig added in v0.2.36

type SerialConfig struct {
	SerialPath     string `json:"serial_path"`
	SerialBaudRate int    `json:"serial_baud_rate,omitempty"`

	// TestChan is a fake "serial" path for test use only
	TestChan chan []uint8 `json:"-"`
}

SerialConfig is used for converting Serial NMEA MovementSensor config attributes.

type SerialDataReader added in v0.21.0

type SerialDataReader struct {
	// contains filtered or unexported fields
}

SerialDataReader implements the DataReader interface (defined in component.go) by interacting with the device over a serial port.

func (*SerialDataReader) Close added in v0.21.0

func (dr *SerialDataReader) Close() error

Close is part of the DataReader interface. It shuts everything down, including our connection to the serial port.

func (*SerialDataReader) Messages added in v0.21.0

func (dr *SerialDataReader) Messages() chan string

Messages returns the channel of complete NMEA sentences we have read off of the device. It's part of the DataReader interface.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL