fake

package
v0.7.3 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2023 License: AGPL-3.0 Imports: 15 Imported by: 0

Documentation

Overview

Package fake implements a fake board.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Analog

type Analog struct {
	Value      int
	CloseCount int
	Mu         sync.RWMutex
	// contains filtered or unexported fields
}

A Analog reads back the same set value.

func (*Analog) Close

func (a *Analog) Close(ctx context.Context) error

Close does nothing.

func (*Analog) Read

func (a *Analog) Read(ctx context.Context, extra map[string]interface{}) (int, error)

func (*Analog) Set

func (a *Analog) Set(value int)

Set is used during testing.

type Board

type Board struct {
	resource.Named

	SPIs       map[string]*SPI
	I2Cs       map[string]*I2C
	Analogs    map[string]*Analog
	Digitals   map[string]*DigitalInterruptWrapper
	GPIOPins   map[string]*GPIOPin
	CloseCount int
	// contains filtered or unexported fields
}

A Board provides dummy data from fake parts in order to implement a Board.

func NewBoard

func NewBoard(ctx context.Context, conf resource.Config, logger golog.Logger) (*Board, error)

NewBoard returns a new fake board.

func (*Board) AnalogReaderByName

func (b *Board) AnalogReaderByName(name string) (board.AnalogReader, bool)

AnalogReaderByName returns the analog reader by the given name if it exists.

func (*Board) AnalogReaderNames

func (b *Board) AnalogReaderNames() []string

AnalogReaderNames returns the names of all known analog readers.

func (*Board) Close

func (b *Board) Close(ctx context.Context) error

Close attempts to cleanly close each part of the board.

func (*Board) DigitalInterruptByName

func (b *Board) DigitalInterruptByName(name string) (board.DigitalInterrupt, bool)

DigitalInterruptByName returns the interrupt by the given name if it exists.

func (*Board) DigitalInterruptNames

func (b *Board) DigitalInterruptNames() []string

DigitalInterruptNames returns the names of all known digital interrupts.

func (*Board) GPIOPinByName

func (b *Board) GPIOPinByName(name string) (board.GPIOPin, error)

GPIOPinByName returns the GPIO pin by the given name if it exists.

func (*Board) GPIOPinNames

func (b *Board) GPIOPinNames() []string

GPIOPinNames returns the names of all known GPIO pins.

func (*Board) I2CByName

func (b *Board) I2CByName(name string) (board.I2C, bool)

I2CByName returns the i2c by the given name if it exists.

func (*Board) I2CNames

func (b *Board) I2CNames() []string

I2CNames returns the names of all known I2Cs.

func (*Board) ModelAttributes

func (b *Board) ModelAttributes() board.ModelAttributes

ModelAttributes returns attributes related to the model of this board.

func (*Board) Reconfigure added in v0.2.36

func (b *Board) Reconfigure(ctx context.Context, deps resource.Dependencies, conf resource.Config) error

Reconfigure atomically reconfigures this board© in place based on the new config.

func (*Board) SPIByName

func (b *Board) SPIByName(name string) (board.SPI, bool)

SPIByName returns the SPI by the given name if it exists.

func (*Board) SPINames

func (b *Board) SPINames() []string

SPINames returns the names of all known SPIs.

func (*Board) SetPowerMode added in v0.2.28

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.

func (*Board) Status

func (b *Board) Status(ctx context.Context, extra map[string]interface{}) (*commonpb.BoardStatus, error)

Status returns the current status of the 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        rdkutils.AttributeMap          `json:"attributes,omitempty"`
	FailNew           bool                           `json:"fail_new"`
}

A Config describes the configuration of a fake board and all of its connected parts.

func (*Config) Validate

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

Validate ensures all parts of the config are valid.

type DigitalInterruptWrapper added in v0.2.36

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

DigitalInterruptWrapper is a wrapper around a digital interrupt for testing fake boards.

func NewDigitalInterruptWrapper added in v0.2.36

func NewDigitalInterruptWrapper(conf board.DigitalInterruptConfig) (*DigitalInterruptWrapper, error)

NewDigitalInterruptWrapper returns a new digital interrupt to be used for testing.

func (*DigitalInterruptWrapper) AddCallback added in v0.2.36

func (s *DigitalInterruptWrapper) AddCallback(c chan board.Tick)

AddCallback adds a callback to be sent a low/high value to when a tick happens.

func (*DigitalInterruptWrapper) AddPostProcessor added in v0.2.36

func (s *DigitalInterruptWrapper) AddPostProcessor(pp board.PostProcessor)

AddPostProcessor adds a post processor that should be used to modify what is returned by Value.

func (*DigitalInterruptWrapper) Close added in v0.2.36

Close does nothing.

func (*DigitalInterruptWrapper) RemoveCallback added in v0.2.36

func (s *DigitalInterruptWrapper) RemoveCallback(c chan board.Tick)

RemoveCallback removes a listener for interrupts.

func (*DigitalInterruptWrapper) Tick added in v0.2.36

func (s *DigitalInterruptWrapper) Tick(ctx context.Context, high bool, nanoseconds uint64) error

Tick is to be called either manually if the interrupt is a proxy to some real hardware interrupt or for tests. nanoseconds is from an arbitrary point in time, but always increasing and always needs to be accurate.

func (*DigitalInterruptWrapper) Value added in v0.2.36

func (s *DigitalInterruptWrapper) Value(ctx context.Context, extra map[string]interface{}) (int64, error)

Value returns the current value of the interrupt which is based on the type of interrupt.

type GPIOPin

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

A GPIOPin reads back the same set values.

func (*GPIOPin) Get

func (gp *GPIOPin) Get(ctx context.Context, extra map[string]interface{}) (bool, error)

Get gets the high/low state of the pin.

func (*GPIOPin) PWM

func (gp *GPIOPin) PWM(ctx context.Context, extra map[string]interface{}) (float64, error)

PWM gets the pin's given duty cycle.

func (*GPIOPin) PWMFreq

func (gp *GPIOPin) PWMFreq(ctx context.Context, extra map[string]interface{}) (uint, error)

PWMFreq gets the PWM frequency of the pin.

func (*GPIOPin) Set

func (gp *GPIOPin) Set(ctx context.Context, high bool, extra map[string]interface{}) error

Set sets the pin to either low or high.

func (*GPIOPin) SetPWM

func (gp *GPIOPin) SetPWM(ctx context.Context, dutyCyclePct float64, extra map[string]interface{}) error

SetPWM sets the pin to the given duty cycle.

func (*GPIOPin) SetPWMFreq

func (gp *GPIOPin) SetPWMFreq(ctx context.Context, freqHz uint, extra map[string]interface{}) error

SetPWMFreq sets the given pin to the given PWM frequency.

type I2C

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

A I2C allows opening an I2CHandle.

func (*I2C) OpenHandle

func (s *I2C) OpenHandle(addr byte) (board.I2CHandle, error)

OpenHandle opens a handle to perform I2C transfers that must be later closed to release access to the bus.

type I2CHandle

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

A I2CHandle allows read/write and Close.

func (*I2CHandle) Close

func (h *I2CHandle) Close() error

Close releases access to the bus.

func (*I2CHandle) Read

func (h *I2CHandle) Read(ctx context.Context, count int) ([]byte, error)

func (*I2CHandle) ReadBlockData added in v0.2.0

func (h *I2CHandle) ReadBlockData(ctx context.Context, register byte, numBytes uint8) ([]byte, error)

ReadBlockData reads the given number of bytes from the i2c channel.

func (*I2CHandle) ReadByteData

func (h *I2CHandle) ReadByteData(ctx context.Context, register byte) (byte, error)

ReadByteData reads a byte from the i2c channel.

func (*I2CHandle) Write

func (h *I2CHandle) Write(ctx context.Context, tx []byte) error

func (*I2CHandle) WriteBlockData added in v0.2.0

func (h *I2CHandle) WriteBlockData(ctx context.Context, register byte, data []byte) error

WriteBlockData writes the given bytes to the i2c channel.

func (*I2CHandle) WriteByteData

func (h *I2CHandle) WriteByteData(ctx context.Context, register, data byte) error

WriteByteData writes a byte to the i2c channel.

type SPI

type SPI struct {
	FIFO chan []byte
	// contains filtered or unexported fields
}

A SPI allows opening an SPIHandle.

func (*SPI) Close added in v0.2.36

func (s *SPI) Close(ctx context.Context) error

Close does nothing.

func (*SPI) OpenHandle

func (s *SPI) OpenHandle() (board.SPIHandle, error)

OpenHandle opens a handle to perform SPI transfers that must be later closed to release access to the bus.

type SPIHandle

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

A SPIHandle allows Xfer and Close.

func (*SPIHandle) Close

func (h *SPIHandle) Close() error

Close releases access to the bus.

func (*SPIHandle) Xfer

func (h *SPIHandle) Xfer(ctx context.Context, baud uint, chipSelect string, mode uint, tx []byte) ([]byte, error)

Xfer transfers the given data.

Jump to

Keyboard shortcuts

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