Documentation ¶
Overview ¶
Package tester contains mock structs to make it easier to test I2C devices.
TODO: info on how to use this.
Index ¶
- Constants
- type Cmd
- type Failer
- type I2CBus
- func (bus *I2CBus) AddDevice(d I2CDevice)
- func (bus *I2CBus) FindDevice(addr uint8) I2CDevice
- func (bus *I2CBus) NewDevice(addr uint8) *I2CDevice8
- func (bus *I2CBus) ReadRegister(addr uint8, r uint8, buf []byte) error
- func (bus *I2CBus) Tx(addr uint16, w, r []byte) error
- func (bus *I2CBus) WriteRegister(addr uint8, r uint8, buf []byte) error
- type I2CDevice
- type I2CDevice16
- type I2CDevice8
- type I2CDeviceCmd
Constants ¶
const MaxRegisters = 255
MaxRegisters is the maximum number of registers supported for a Device.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cmd ¶ added in v0.16.0
Cmd represents a command sent via I2C to a device.
A command matches when (Command & Mask) == (Data & Mask). If a command is recognized, Response bytes is returned.
type Failer ¶
type Failer interface { // Fatalf prints the Printf-formatted message and exits the current // goroutine. Fatalf(f string, a ...interface{}) }
Failer is used by the I2CDevice type to abort when it's used in unexpected ways, such as reading an out-of-range register.
type I2CBus ¶
type I2CBus struct {
// contains filtered or unexported fields
}
I2CBus implements the I2C interface in memory for testing.
func NewI2CBus ¶
NewI2CBus returns an I2CBus mock I2C instance that uses c to flag errors if they happen. After creating a I2C instance, add devices to it with addDevice before using NewI2CBus interface.
func (*I2CBus) AddDevice ¶
AddDevice adds a new mock device to the mock I2C bus. It panics if a device with the same address is added more than once.
func (*I2CBus) FindDevice ¶
FindDevice returns the device with the given address.
func (*I2CBus) NewDevice ¶ added in v0.15.1
func (bus *I2CBus) NewDevice(addr uint8) *I2CDevice8
NewDevice creates a new device with the given address and adds it to the mock I2C bus.
func (*I2CBus) ReadRegister ¶
ReadRegister implements I2C.ReadRegister.
type I2CDevice16 ¶ added in v0.16.0
type I2CDevice16 struct { // Registers holds the device registers. It can be inspected // or changed as desired for testing. Registers map[uint8]uint16 // If Err is non-nil, it will be returned as the error from the // I2C methods. Err error // contains filtered or unexported fields }
I2CDevice represents a mock I2C device on a mock I2C bus with 16-bit registers.
func NewI2CDevice16 ¶ added in v0.16.0
func NewI2CDevice16(c Failer, addr uint8) *I2CDevice16
NewI2CDevice returns a new mock I2C device.
To use this mock, populate the Registers map with known / expected registers. Attempts by the code under test to write to a register that has not been populated into the map will be treated as an error.
func (*I2CDevice16) Addr ¶ added in v0.16.0
func (d *I2CDevice16) Addr() uint8
Addr returns the Device address.
func (*I2CDevice16) ReadRegister ¶ added in v0.16.0
func (d *I2CDevice16) ReadRegister(r uint8, buf []byte) error
ReadRegister implements I2C.ReadRegister.
func (*I2CDevice16) Tx ¶ added in v0.16.0
func (bus *I2CDevice16) Tx(w, r []byte) error
Tx implements I2C.Tx.
func (*I2CDevice16) WriteRegister ¶ added in v0.16.0
func (d *I2CDevice16) WriteRegister(r uint8, buf []byte) error
WriteRegister implements I2C.WriteRegister.
type I2CDevice8 ¶ added in v0.16.0
type I2CDevice8 struct { // Registers holds the device registers. It can be inspected // or changed as desired for testing. Registers [MaxRegisters]uint8 // If Err is non-nil, it will be returned as the error from the // I2C methods. Err error // contains filtered or unexported fields }
I2CDevice represents a mock I2C device on a mock I2C bus with 8-bit registers.
func NewI2CDevice ¶
func NewI2CDevice(c Failer, addr uint8) *I2CDevice8
NewI2CDevice returns a new mock I2C device.
For compatibility, this creates an instance of NewI2CDevice8
func NewI2CDevice8 ¶ added in v0.16.0
func NewI2CDevice8(c Failer, addr uint8) *I2CDevice8
NewI2CDevice8 returns a new mock I2C device.
func (*I2CDevice8) Addr ¶ added in v0.16.0
func (d *I2CDevice8) Addr() uint8
Addr returns the Device address.
func (*I2CDevice8) ReadRegister ¶ added in v0.16.0
func (d *I2CDevice8) ReadRegister(r uint8, buf []byte) error
ReadRegister implements I2C.ReadRegister.
func (*I2CDevice8) Tx ¶ added in v0.16.0
func (bus *I2CDevice8) Tx(w, r []byte) error
Tx implements I2C.Tx.
func (*I2CDevice8) WriteRegister ¶ added in v0.16.0
func (d *I2CDevice8) WriteRegister(r uint8, buf []byte) error
WriteRegister implements I2C.WriteRegister.
type I2CDeviceCmd ¶ added in v0.16.0
type I2CDeviceCmd struct { // Commands are the commands the device recognizes and responds to. Commands map[uint8]*Cmd // If Err is non-nil, it will be returned as the error from the // I2C methods. Err error // contains filtered or unexported fields }
I2CDeviceCmd represents a mock I2C device that does not have 'registers', but has a command/response model.
Commands and canned responses are pre-loaded into the Commands member. For each command the mock receives it will lookup the command and return the corresponding canned response.
func NewI2CDeviceCmd ¶ added in v0.16.0
func NewI2CDeviceCmd(c Failer, addr uint8) *I2CDeviceCmd
NewI2CDeviceCmd returns a new mock I2C device.
func (*I2CDeviceCmd) Addr ¶ added in v0.16.0
func (d *I2CDeviceCmd) Addr() uint8
Addr returns the Device address.
func (*I2CDeviceCmd) FindCommand ¶ added in v0.16.0
func (d *I2CDeviceCmd) FindCommand(command []byte) *Cmd
func (*I2CDeviceCmd) ReadRegister ¶ added in v0.16.0
func (d *I2CDeviceCmd) ReadRegister(r uint8, buf []byte) error
ReadRegister implements I2C.ReadRegister.
func (*I2CDeviceCmd) Tx ¶ added in v0.16.0
func (d *I2CDeviceCmd) Tx(w, r []byte) error
Tx implements I2C.Tx.
func (*I2CDeviceCmd) WriteRegister ¶ added in v0.16.0
func (d *I2CDeviceCmd) WriteRegister(r uint8, buf []byte) error
WriteRegister implements I2C.WriteRegister.