Documentation ¶
Overview ¶
Package board defines the interfaces that typically live on a single-board computer such as a Raspberry Pi.
Besides the board itself, some other interfaces it defines are analog pins and digital interrupts.
Package board contains a gRPC based board client.
Package board contains a gRPC based Board service server.
Index ¶
- Constants
- Variables
- func CreateStatus(ctx context.Context, b Board) (*pb.Status, error)
- func Named(name string) resource.Name
- func NamesFromRobot(r robot.Robot) []string
- func NewRPCServiceServer(coll resource.APIResourceCollection[Board]) interface{}
- type Analog
- type AnalogReaderConfig
- type Board
- type DigitalInterrupt
- type DigitalInterruptConfig
- type GPIOPin
- type I2CConfig
- type SPIConfig
- type Tick
Constants ¶
const SubtypeName = "board"
SubtypeName is a constant that identifies the component resource API string "board".
Variables ¶
var API = resource.APINamespaceRDK.WithComponentType(SubtypeName)
API is a variable that identifies the component resource API.
Functions ¶
func CreateStatus ¶
CreateStatus constructs a new up to date status from the given board. The operation can take time and be expensive, so it can be cancelled by the given context.
func NamesFromRobot ¶
NamesFromRobot is a helper for getting all board names from the given Robot.
func NewRPCServiceServer ¶ added in v0.2.36
func NewRPCServiceServer(coll resource.APIResourceCollection[Board]) interface{}
NewRPCServiceServer constructs an board gRPC service server. It is intentionally untyped to prevent use outside of tests.
Types ¶
type Analog ¶ added in v0.26.0
type Analog interface { // Read reads off the current value. Read(ctx context.Context, extra map[string]interface{}) (int, error) // Write writes a value to the analog pin. Write(ctx context.Context, value int, extra map[string]interface{}) error }
An Analog represents an analog pin that resides on a board.
type AnalogReaderConfig ¶ added in v0.11.0
type AnalogReaderConfig struct { Name string `json:"name"` Pin string `json:"pin"` AverageOverMillis int `json:"average_over_ms,omitempty"` SamplesPerSecond int `json:"samples_per_sec,omitempty"` }
AnalogReaderConfig describes the configuration of an analog reader on a board.
func (*AnalogReaderConfig) Validate ¶ added in v0.11.0
func (config *AnalogReaderConfig) Validate(path string) error
Validate ensures all parts of the config are valid.
type Board ¶
type Board interface { resource.Resource // AnalogByName returns an analog pin by name. AnalogByName(name string) (Analog, error) // DigitalInterruptByName returns a digital interrupt by name. DigitalInterruptByName(name string) (DigitalInterrupt, error) // GPIOPinByName returns a GPIOPin by name. GPIOPinByName(name string) (GPIOPin, error) // AnalogNames returns the names of all known analog pins. AnalogNames() []string // DigitalInterruptNames returns the names of all known digital interrupts. DigitalInterruptNames() []string // SetPowerMode sets the board to the given power mode. If // provided, the board will exit the given power mode after // the specified duration. SetPowerMode(ctx context.Context, mode pb.PowerMode, duration *time.Duration) error // WriteAnalog writes an analog value to a pin on the board. WriteAnalog(ctx context.Context, pin string, value int32, extra map[string]interface{}) error // StreamTicks starts a stream of digital interrupt ticks. StreamTicks(ctx context.Context, interrupts []DigitalInterrupt, ch chan Tick, extra map[string]interface{}) error }
A Board represents a physical general purpose board that contains various components such as analogs, and digital interrupts.
func FromDependencies ¶
func FromDependencies(deps resource.Dependencies, name string) (Board, error)
FromDependencies is a helper for getting the named board from a collection of dependencies.
type DigitalInterrupt ¶
type DigitalInterrupt interface { // Value returns the current value of the interrupt which is // based on the type of interrupt. Value(ctx context.Context, extra map[string]interface{}) (int64, error) // RemoveCallback removes a listener for interrupts. RemoveCallback(c chan Tick) // Name returns the name of the interrupt. Name() string }
A DigitalInterrupt represents a configured interrupt on the board that when interrupted, calls the added callbacks.
type DigitalInterruptConfig ¶
DigitalInterruptConfig describes the configuration of digital interrupt for a board.
func (*DigitalInterruptConfig) Validate ¶
func (config *DigitalInterruptConfig) Validate(path string) error
Validate ensures all parts of the config are valid.
type GPIOPin ¶
type GPIOPin interface { // Set sets the pin to either low or high. Set(ctx context.Context, high bool, extra map[string]interface{}) error // Get gets the high/low state of the pin. Get(ctx context.Context, extra map[string]interface{}) (bool, error) // PWM gets the pin's given duty cycle. PWM(ctx context.Context, extra map[string]interface{}) (float64, error) // SetPWM sets the pin to the given duty cycle. SetPWM(ctx context.Context, dutyCyclePct float64, extra map[string]interface{}) error // PWMFreq gets the PWM frequency of the pin. PWMFreq(ctx context.Context, extra map[string]interface{}) (uint, error) // SetPWMFreq sets the given pin to the given PWM frequency. For Raspberry Pis, // 0 will use a default PWM frequency of 800. SetPWMFreq(ctx context.Context, freqHz uint, extra map[string]interface{}) error }
A GPIOPin represents an individual GPIO pin on a board.
type SPIConfig ¶
type SPIConfig struct { Name string `json:"name"` BusSelect string `json:"bus_select"` // "0" or "1" for main/aux in libpigpio }
SPIConfig enumerates a specific, shareable SPI bus.
type Tick ¶ added in v0.2.19
Tick represents a signal received by an interrupt pin. This signal is communicated via registered channel to the various drivers. Depending on board implementation there may be a wraparound in timestamp values past 4294967295000 nanoseconds (~72 minutes) if the value was originally in microseconds as a 32-bit integer. The timestamp in nanoseconds of the tick SHOULD ONLY BE USED FOR CALCULATING THE TIME ELAPSED BETWEEN CONSECUTIVE TICKS AND NOT AS AN ABSOLUTE TIMESTAMP.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package beaglebone implements a beaglebone based board.
|
Package beaglebone implements a beaglebone based board. |
Package customlinux implements a board running Linux.
|
Package customlinux implements a board running Linux. |
Package fake implements a fake board.
|
Package fake implements a fake board. |
Package genericlinux implements a Linux-based board making heavy use of sysfs (https://en.wikipedia.org/wiki/Sysfs).
|
Package genericlinux implements a Linux-based board making heavy use of sysfs (https://en.wikipedia.org/wiki/Sysfs). |
buses
Package buses is for I2C and SPI boards that run Linux.
|
Package buses is for I2C and SPI boards that run Linux. |
hat
|
|
pca9685
Package pca9685 implements a PCA9685 HAT.
|
Package pca9685 implements a PCA9685 HAT. |
Package jetson implements a jetson-based board.
|
Package jetson implements a jetson-based board. |
Package mcp3008helper is shared code for hooking an MCP3008 ADC up to a board.
|
Package mcp3008helper is shared code for hooking an MCP3008 ADC up to a board. |
Package numato is for numato IO boards.
|
Package numato is for numato IO boards. |
Package odroid implements a odroid based board.
|
Package odroid implements a odroid based board. |
Package orangepi implements a orangepi based board.
|
Package orangepi implements a orangepi based board. |
Package pi implements a Board and its related interfaces for a Raspberry Pi.
|
Package pi implements a Board and its related interfaces for a Raspberry Pi. |
common
Package picommon contains shared information for supported and non-supported pi boards.
|
Package picommon contains shared information for supported and non-supported pi boards. |
Package pi5 implements a raspberry pi 5 board.
|
Package pi5 implements a raspberry pi 5 board. |
Package pinwrappers implements interfaces that wrap the basic board interface and return types, and expands them with new methods and interfaces for the built in board models.
|
Package pinwrappers implements interfaces that wrap the basic board interface and return types, and expands them with new methods and interfaces for the built in board models. |
Package register registers all relevant Boards and also API specific functions
|
Package register registers all relevant Boards and also API specific functions |
Package ti implements a ti based board.
|
Package ti implements a ti based board. |
Package upboard implements an Intel based board.
|
Package upboard implements an Intel based board. |