// Copyright 2016 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Package driver contains interfaces to be implemented by various SPI implementations. package driver // import "golang.org/x/exp/io/spi/driver" const ( Mode = iota Bits MaxSpeed Order Delay CSChange ) // Opener is an interface to be implemented by the SPI driver to open // a connection to an SPI device. type Opener interface { Open() (Conn, error) } // Conn is a connection to an SPI device. // TODO(jbd): Extend the interface to query configuration values. type Conn interface { // Configure configures the SPI device. // // Available configuration keys are: // - Mode, the SPI mode (valid values are 0, 1, 2 and 3). // - Bits, bits per word (default is 8-bit per word). // - Speed, the max clock speed (in Hz). // - Order, bit order to be used in transfers. Zero value represents // the MSB-first, non-zero values represent LSB-first encoding. // - Delay, the pause time between frames (in usecs). // Some SPI devices require a minimum amount of wait time after // each frame write. If set, Delay amount of usecs are inserted after // each write. // - CSChange, whether to leave the device's chipselect active after a Tx. // // SPI devices can override these values. Configure(k, v int) error // Tx performs a SPI transaction: w is written if not nil, the result is // put into r if not nil. len(w) must be equal to len(r), otherwise the // driver should return an error. Tx(w, r []byte) error // Close frees the underlying resources and closes the connection. Close() error }