Documentation ¶
Overview ¶
Package genericlinux implements a Linux-based board making heavy use of sysfs (https://en.wikipedia.org/wiki/Sysfs). This does not provide a board model itself but provides the underlying logic for any Linux/sysfs based board.
Package genericlinux is for Linux boards, and this particular file is for digital interrupt pins using the ioctl interface, indirectly by way of mkch's gpio package.
Package genericlinux is for Linux boards, and this particular file is for GPIO pins using the ioctl interface, indirectly by way of mkch's gpio package.
Package genericlinux is for Linux boards. This particular file is for using sysfs to interact with PWM devices. All of these functions are idempotent: you can double-export a pin or double-close it with no problems.
Package genericlinux is for boards that run Linux. This file is for I2C support on those boards.
Index ¶
- func GetGPIOBoardMappingFromPinDefs(pinDefs []PinDefinition) (map[string]GPIOBoardMapping, error)
- func GetGPIOBoardMappings(modelName string, boardInfoMappings map[string]BoardInformation) (map[string]GPIOBoardMapping, error)
- func NewSysfsBoard(ctx context.Context, name resource.Named, conf *Config, ...) (board.Board, error)
- func RegisterBoard(modelName string, gpioMappings map[string]GPIOBoardMapping)
- type BoardInformation
- type Config
- type GPIOBoardMapping
- type I2cBus
- type I2cHandle
- func (h *I2cHandle) Close() error
- func (h *I2cHandle) Read(ctx context.Context, count int) ([]byte, error)
- func (h *I2cHandle) ReadBlockData(ctx context.Context, register byte, numBytes uint8) ([]byte, error)
- func (h *I2cHandle) ReadByteData(ctx context.Context, register byte) (byte, error)
- func (h *I2cHandle) Write(ctx context.Context, tx []byte) error
- func (h *I2cHandle) WriteBlockData(ctx context.Context, register byte, data []byte) error
- func (h *I2cHandle) WriteByteData(ctx context.Context, register, data byte) error
- type NoBoardFoundError
- type PinDefinition
- type PinDefinitions
- type SysfsBoard
- func (b *SysfsBoard) AnalogReaderByName(name string) (board.AnalogReader, bool)
- func (b *SysfsBoard) AnalogReaderNames() []string
- func (b *SysfsBoard) Close(ctx context.Context) error
- func (b *SysfsBoard) DigitalInterruptByName(name string) (board.DigitalInterrupt, bool)
- func (b *SysfsBoard) DigitalInterruptNames() []string
- func (b *SysfsBoard) GPIOPinByName(pinName string) (board.GPIOPin, error)
- func (b *SysfsBoard) GPIOPinNames() []string
- func (b *SysfsBoard) I2CByName(name string) (board.I2C, bool)
- func (b *SysfsBoard) I2CNames() []string
- func (b *SysfsBoard) ModelAttributes() board.ModelAttributes
- func (b *SysfsBoard) Reconfigure(ctx context.Context, _ resource.Dependencies, conf resource.Config) error
- func (b *SysfsBoard) ReconfigureParsedConfig(ctx context.Context, conf *Config) error
- func (b *SysfsBoard) SPIByName(name string) (board.SPI, bool)
- func (b *SysfsBoard) SPINames() []string
- func (b *SysfsBoard) SetPowerMode(ctx context.Context, mode pb.PowerMode, duration *time.Duration) error
- func (b *SysfsBoard) Status(ctx context.Context, extra map[string]interface{}) (*commonpb.BoardStatus, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetGPIOBoardMappingFromPinDefs ¶ added in v0.6.0
func GetGPIOBoardMappingFromPinDefs(pinDefs []PinDefinition) (map[string]GPIOBoardMapping, error)
GetGPIOBoardMappingFromPinDefs attempts to find a compatible board-pin mapping using the pin definitions.
func GetGPIOBoardMappings ¶
func GetGPIOBoardMappings(modelName string, boardInfoMappings map[string]BoardInformation) (map[string]GPIOBoardMapping, error)
GetGPIOBoardMappings attempts to find a compatible GPIOBoardMapping for the given board.
func NewSysfsBoard ¶ added in v0.6.0
func NewSysfsBoard( ctx context.Context, name resource.Named, conf *Config, gpioMappings map[string]GPIOBoardMapping, logger golog.Logger, ) (board.Board, error)
NewSysfsBoard creates a new SysfsBoard.
func RegisterBoard ¶
func RegisterBoard(modelName string, gpioMappings map[string]GPIOBoardMapping)
RegisterBoard registers a sysfs based board of the given model.
Types ¶
type BoardInformation ¶
type BoardInformation struct { PinDefinitions []PinDefinition Compats []string }
BoardInformation details pin definitions and device compatibility for a particular board.
type Config ¶
type Config struct { I2Cs []board.I2CConfig `json:"i2cs,omitempty"` SPIs []board.SPIConfig `json:"spis,omitempty"` Analogs []board.AnalogConfig `json:"analogs,omitempty"` DigitalInterrupts []board.DigitalInterruptConfig `json:"digital_interrupts,omitempty"` Attributes utils.AttributeMap `json:"attributes,omitempty"` }
A Config describes the configuration of a board and all of its connected parts.
type GPIOBoardMapping ¶
type GPIOBoardMapping struct { GPIOChipDev string GPIO int GPIOName string PWMSysFsDir string // Absolute path to the directory, empty string for none PWMID int HWPWMSupported bool }
GPIOBoardMapping represents a GPIO pin's location locally within a GPIO chip and globally within sysfs.
type I2cBus ¶ added in v0.4.0
type I2cBus struct {
// contains filtered or unexported fields
}
I2cBus represents an I2C bus. You can use it to create handles for devices at specific addresses on the bus. Creating a handle locks the bus, and closing the handle unlocks the bus again, so that you can only communicate with 1 device on the bus at a time.
func (*I2cBus) OpenHandle ¶ added in v0.4.0
OpenHandle lets the I2cBus type implement the board.I2C interface. It returns a handle for communicating with a device at a specific I2C handle. Opening a handle locks the I2C bus so nothing else can use it, and closing the handle unlocks the bus again.
type I2cHandle ¶ added in v0.4.0
type I2cHandle struct {
// contains filtered or unexported fields
}
I2cHandle represents a way to talk to a specific device on the I2C bus. Creating a handle locks the bus so nothing else can use it, and closing the handle unlocks it again.
func (*I2cHandle) Close ¶ added in v0.4.0
Close closes the handle to the device, and unlocks the I2C bus.
func (*I2cHandle) Read ¶ added in v0.4.0
Read reads the given number of bytes from the handle. For I2C devices that organize their data into registers, prefer using ReadBlockData instead.
func (*I2cHandle) ReadBlockData ¶ added in v0.4.0
func (h *I2cHandle) ReadBlockData(ctx context.Context, register byte, numBytes uint8) ([]byte, error)
ReadBlockData reads the given number of bytes from the I2C device, starting at the given register.
func (*I2cHandle) ReadByteData ¶ added in v0.4.0
ReadByteData reads a single byte from the given register on this I2C device.
func (*I2cHandle) Write ¶ added in v0.4.0
Write writes the given bytes to the handle. For I2C devices that organize their data into registers, prefer using WriteBlockData instead.
func (*I2cHandle) WriteBlockData ¶ added in v0.4.0
WriteBlockData writes the given bytes into the given register on the I2C device.
type NoBoardFoundError ¶
type NoBoardFoundError struct {
// contains filtered or unexported fields
}
A NoBoardFoundError is returned when no compatible mapping is found for a board during GPIO board mapping.
func (NoBoardFoundError) Error ¶
func (err NoBoardFoundError) Error() string
type PinDefinition ¶
type PinDefinition struct { Name string `json:"name"` Ngpio int `json:"ngpio"` // ngpio number of the chip the pin is attached to LineNumber int `json:"line_number"` // relative line number on chip PwmChipSysfsDir string `json:"pwm_chip_sysfs_dir,omitempty"` PwmID int `json:"pwm_id,omitempty"` }
PinDefinition describes a gpio pin on a linux board.
func (*PinDefinition) UnmarshalJSON ¶ added in v0.6.0
func (conf *PinDefinition) UnmarshalJSON(text []byte) error
UnmarshalJSON handles setting defaults for pin configs. Int values default to -1.
func (*PinDefinition) Validate ¶ added in v0.6.0
func (conf *PinDefinition) Validate(path string) error
Validate ensures all parts of the config are valid.
type PinDefinitions ¶ added in v0.6.0
type PinDefinitions struct {
Pins []PinDefinition `json:"pins"`
}
PinDefinitions describes a list of pins on a linux board.
type SysfsBoard ¶ added in v0.6.0
SysfsBoard implements an interface using sysfs for any board that runs linux.
func (*SysfsBoard) AnalogReaderByName ¶ added in v0.6.0
func (b *SysfsBoard) AnalogReaderByName(name string) (board.AnalogReader, bool)
AnalogReaderByName returns the analog reader by the given name if it exists.
func (*SysfsBoard) AnalogReaderNames ¶ added in v0.6.0
func (b *SysfsBoard) AnalogReaderNames() []string
AnalogReaderNames returns the names of all known analog readers.
func (*SysfsBoard) Close ¶ added in v0.6.0
func (b *SysfsBoard) Close(ctx context.Context) error
Close attempts to cleanly close each part of the board.
func (*SysfsBoard) DigitalInterruptByName ¶ added in v0.6.0
func (b *SysfsBoard) DigitalInterruptByName(name string) (board.DigitalInterrupt, bool)
DigitalInterruptByName returns the interrupt by the given name if it exists.
func (*SysfsBoard) DigitalInterruptNames ¶ added in v0.6.0
func (b *SysfsBoard) DigitalInterruptNames() []string
DigitalInterruptNames returns the names of all known digital interrupts.
func (*SysfsBoard) GPIOPinByName ¶ added in v0.6.0
func (b *SysfsBoard) GPIOPinByName(pinName string) (board.GPIOPin, error)
GPIOPinByName returns a GPIOPin by name.
func (*SysfsBoard) GPIOPinNames ¶ added in v0.6.0
func (b *SysfsBoard) GPIOPinNames() []string
GPIOPinNames returns the names of all known GPIO pins.
func (*SysfsBoard) I2CByName ¶ added in v0.6.0
func (b *SysfsBoard) I2CByName(name string) (board.I2C, bool)
I2CByName returns the i2c by the given name if it exists.
func (*SysfsBoard) I2CNames ¶ added in v0.6.0
func (b *SysfsBoard) I2CNames() []string
I2CNames returns the names of all known I2Cs.
func (*SysfsBoard) ModelAttributes ¶ added in v0.6.0
func (b *SysfsBoard) ModelAttributes() board.ModelAttributes
ModelAttributes returns attributes related to the model of this board.
func (*SysfsBoard) Reconfigure ¶ added in v0.6.0
func (b *SysfsBoard) Reconfigure( ctx context.Context, _ resource.Dependencies, conf resource.Config, ) error
Reconfigure reconfigures the board with interrupt pins, spi and i2c, and analogs.
func (*SysfsBoard) ReconfigureParsedConfig ¶ added in v0.6.0
func (b *SysfsBoard) ReconfigureParsedConfig(ctx context.Context, conf *Config) error
ReconfigureParsedConfig is a public helper that should only be used by the customlinux package.
func (*SysfsBoard) SPIByName ¶ added in v0.6.0
func (b *SysfsBoard) SPIByName(name string) (board.SPI, bool)
SPIByName returns the SPI by the given name if it exists.
func (*SysfsBoard) SPINames ¶ added in v0.6.0
func (b *SysfsBoard) SPINames() []string
SPINames returns the names of all known SPIs.
func (*SysfsBoard) SetPowerMode ¶ added in v0.6.0
func (b *SysfsBoard) SetPowerMode( ctx context.Context, mode pb.PowerMode, duration *time.Duration, ) error
SetPowerMode sets the board to the given power mode. If provided, the board will exit the given power mode after the specified duration.
func (*SysfsBoard) Status ¶ added in v0.6.0
func (b *SysfsBoard) Status(ctx context.Context, extra map[string]interface{}) (*commonpb.BoardStatus, error)
Status returns the current status of the board.