1
0
mirror of https://github.com/hybridgroup/gobot.git synced 2025-04-27 13:48:56 +08:00
Ron Evans 06d26b4102 spi: remove unneeded code as suggested by @maruel
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2018-04-16 09:56:17 +02:00

96 lines
2.7 KiB
Go

package spi
import (
xspi "periph.io/x/periph/conn/spi"
xsysfs "periph.io/x/periph/host/sysfs"
)
const (
// NotInitialized is the initial value for a bus/chip
NotInitialized = -1
)
// Operations are the wrappers around the actual functions used by the SPI Device interface
type Operations interface {
Close() error
Tx(w, r []byte) error
}
// Device is the interface to a specific spi bus/chip
type Device interface {
Operations
}
// Connector lets Adaptors provide the interface for Drivers
// to get access to the SPI buses on platforms that support SPI.
type Connector interface {
// GetSpiConnection returns a connection to a SPI device at the specified bus and chip.
// Bus numbering starts at index 0, the range of valid buses is
// platform specific. Same with chip numbering.
GetSpiConnection(busNum, chip, mode, bits int, maxSpeed int64) (device Device, err error)
// GetSpiDefaultBus returns the default SPI bus index
GetSpiDefaultBus() int
// GetSpiDefaultChip returns the default SPI chip index
GetSpiDefaultChip() int
// GetDefaultMode returns the default SPI mode (0/1/2/3)
GetSpiDefaultMode() int
// GetDefaultMode returns the default SPI number of bits (8)
GetSpiDefaultBits() int
// GetSpiDefaultMaxSpeed returns the max SPI speed
GetSpiDefaultMaxSpeed() int64
}
// Connection is a connection to an SPI device with a specified bus
// on a specific chip.
// Implements SPIOperations to talk to the device, wrapping the
// calls in SetAddress to always target the specified device.
// Provided by an Adaptor by implementing the SPIConnector interface.
type Connection Operations
// SpiConnection is the implementation of the SPI interface using the periph.io
// implementataion for Linux.
type SpiConnection struct {
Connection
port xspi.PortCloser
dev xspi.Conn
bus int
chip int
bits int
mode int
maxSpeed int64
}
// NewConnection creates and returns a new connection to a specific
// spi device on a bus/chip using the periph.io interface
func NewConnection(port xspi.PortCloser, conn xspi.Conn) (connection *SpiConnection) {
return &SpiConnection{port: port, dev: conn}
}
// Close the SPI connection
func (c *SpiConnection) Close() error {
return c.port.Close()
}
// Tx uses the SPI device to send/receive data.
func (c *SpiConnection) Tx(w, r []byte) error {
return c.dev.Tx(w, r)
}
// GetSpiConnection is a helper to return a SPI device
func GetSpiConnection(busNum, chipNum, mode, bits int, maxSpeed int64) (Device, error) {
p, err := xsysfs.NewSPI(busNum, chipNum)
if err != nil {
return nil, err
}
c, err := p.Connect(maxSpeed, xspi.Mode(mode), bits)
if err != nil {
return nil, err
}
return NewConnection(p, c), nil
}