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.
Index ¶
- func GetGPIOBoardMappingFromPinDefs(pinDefs []PinDefinition) (map[string]GPIOBoardMapping, error)
- func GetGPIOBoardMappings(modelName string, boardInfoMappings map[string]BoardInformation) (map[string]GPIOBoardMapping, error)
- func NewBoard(ctx context.Context, conf resource.Config, convertConfig ConfigConverter, ...) (board.Board, error)
- func RegisterBoard(modelName string, gpioMappings map[string]GPIOBoardMapping)
- type Board
- func (b *Board) AnalogByName(name string) (board.Analog, error)
- func (b *Board) AnalogNames() []string
- func (b *Board) Close(ctx context.Context) error
- func (b *Board) DigitalInterruptByName(name string) (board.DigitalInterrupt, error)
- func (b *Board) DigitalInterruptNames() []string
- func (b *Board) GPIOPinByName(pinName string) (board.GPIOPin, error)
- func (b *Board) Reconfigure(ctx context.Context, _ resource.Dependencies, conf resource.Config) error
- func (b *Board) SetPowerMode(ctx context.Context, mode pb.PowerMode, duration *time.Duration) error
- func (b *Board) StreamTicks(ctx context.Context, interrupts []board.DigitalInterrupt, ch chan board.Tick, ...) error
- func (b *Board) WriteAnalog(ctx context.Context, pin string, value int32, extra map[string]interface{}) error
- type BoardInformation
- type Config
- type ConfigConverter
- type GPIOBoardMapping
- type LinuxBoardConfig
- type NoBoardFoundError
- type PinDefinition
- type PinDefinitions
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 NewBoard ¶ added in v0.7.3
func NewBoard( ctx context.Context, conf resource.Config, convertConfig ConfigConverter, logger logging.Logger, ) (board.Board, error)
NewBoard is the constructor for a Board.
func RegisterBoard ¶
func RegisterBoard(modelName string, gpioMappings map[string]GPIOBoardMapping)
RegisterBoard registers a sysfs based board of the given model.
Types ¶
type Board ¶ added in v0.7.3
Board implements a component for a Linux machine.
func (*Board) AnalogByName ¶ added in v0.26.0
AnalogByName returns the analog pin by the given name if it exists.
func (*Board) AnalogNames ¶ added in v0.26.0
AnalogNames returns the names of all known analog pins.
func (*Board) DigitalInterruptByName ¶ added in v0.7.3
func (b *Board) DigitalInterruptByName(name string) (board.DigitalInterrupt, error)
DigitalInterruptByName returns the interrupt by the given name if it exists.
func (*Board) DigitalInterruptNames ¶ added in v0.7.3
DigitalInterruptNames returns the names of all known digital interrupts.
func (*Board) GPIOPinByName ¶ added in v0.7.3
GPIOPinByName returns a GPIOPin by name.
func (*Board) Reconfigure ¶ added in v0.7.3
func (b *Board) Reconfigure( ctx context.Context, _ resource.Dependencies, conf resource.Config, ) error
Reconfigure reconfigures the board with interrupt pins, spi and i2c, and analogs.
func (*Board) SetPowerMode ¶ added in v0.7.3
func (b *Board) 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.
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 { AnalogReaders []mcp3008helper.MCP3008AnalogConfig `json:"analogs,omitempty"` DigitalInterrupts []board.DigitalInterruptConfig `json:"digital_interrupts,omitempty"` }
A Config describes the configuration of a board and all of its connected parts.
type ConfigConverter ¶ added in v0.7.3
ConfigConverter is a type synonym for a function to turn whatever config we get during reconfiguration into a LinuxBoardConfig, so that we can reconfigure based on that. We return a pointer to a LinuxBoardConfig instead of the struct itself so that we can return nil if we encounter an error.
func ConstPinDefs ¶ added in v0.7.3
func ConstPinDefs(gpioMappings map[string]GPIOBoardMapping) ConfigConverter
ConstPinDefs takes in a map from pin names to GPIOBoardMapping structs, and returns a ConfigConverter that will use these pin definitions in the underlying config. It is intended to be used for board components whose pin definitions are built into the RDK, such as the BeagleBone or Jetson boards.
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 LinuxBoardConfig ¶ added in v0.7.3
type LinuxBoardConfig struct { AnalogReaders []mcp3008helper.MCP3008AnalogConfig DigitalInterrupts []board.DigitalInterruptConfig GpioMappings map[string]GPIOBoardMapping }
LinuxBoardConfig is a struct containing absolutely everything a genericlinux board might need configured. It is a union of the configs for the customlinux boards and the genericlinux boards with static pin definitions, because those components all use the same underlying code but have different config types (e.g., only customlinux can change its pin definitions during reconfiguration). The LinuxBoardConfig struct is a unification of the two of them. Whenever we go through reconfiguration, we convert the provided config into a LinuxBoardConfig, and then reconfigure based on it.
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"` DeviceName string `json:"device_name"` // name of the pin's chip's device, within /dev 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.