diff --git a/spi.go b/spi.go index 1bcb918..63ad89e 100644 --- a/spi.go +++ b/spi.go @@ -1,27 +1,44 @@ +// SPI support. + package embd const ( spiCpha = 0x01 spiCpol = 0x02 + // SpiMode0 represents the mode0 operation (CPOL=0 CPHA=0) of spi. SpiMode0 = (0 | 0) + + // SpiMode0 represents the mode0 operation (CPOL=0 CPHA=1) of spi. SpiMode1 = (0 | spiCpha) + + // SpiMode0 represents the mode0 operation (CPOL=1 CPHA=0) of spi. SpiMode2 = (spiCpol | 0) + + // SpiMode0 represents the mode0 operation (CPOL=1 CPHA=1) of spi. SpiMode3 = (spiCpol | spiCpha) ) +// SPI interface allows interaction with the SPI bus. type SPIBus interface { + // TransferAndRecieveData transmits data in a buffer(slice) and receives into it. TransferAndRecieveData(dataBuffer []uint8) error + // ReceiveData receives data of length len into a slice. ReceiveData(len int) ([]uint8, error) + // TransferAndReceiveByte transmits a byte data and receives a byte. TransferAndReceiveByte(data byte) (byte, error) + // ReceiveByte receives a byte data. ReceiveByte() (byte, error) + // Close releases the resources associated with the bus. Close() error } +// SPIDriver interface interacts with the host descriptors to allow us +// control of SPI communication. type SPIDriver interface { Bus(byte, byte, int, int, int) SPIBus @@ -31,6 +48,7 @@ type SPIDriver interface { var spiDriverInitialized bool var spiDriverInstance SPIDriver +// InitSPI initializes the SPI driver. func InitSPI() error { if spiDriverInitialized { return nil @@ -51,10 +69,12 @@ func InitSPI() error { return nil } +// CloseSPI releases resources associated with the SPI driver. func CloseSPI() error { return spiDriverInstance.Close() } +// NewSPIBus returns a SPIBus. func NewSPIBus(mode, channel byte, speed, bpw, delay int) SPIBus { if err := InitSPI(); err != nil { panic(err)