Board Type
RaspberryPi3
Operating System
Raspbian Buster
Swift Version
swift-5.1.5
Description
SPI send call fails with "Message too long" error.
This appears to fix this issue.
struct spi_ioc_transfer {
//var tx_buf: UnsafeMutableRawPointer
//var rx_buf: UnsafeMutableRawPointer
var tx_buf: UInt64
var rx_buf: UInt64
var len: UInt32
var speed_hz: UInt32 = 500000
var delay_usecs: UInt16 = 0
var bits_per_word: UInt8 = 8
let cs_change: UInt8 = 0
let tx_nbits: UInt8 = 0
let rx_nbits: UInt8 = 0
let pad: UInt16 = 0
}
And in transferData function
var r: CInt = 0
r = tx.withUnsafeMutableBufferPointer { (txPtr: inout UnsafeMutableBufferPointer<UInt8>) -> CInt in
if let txPtr1 = UnsafeMutableRawPointer(txPtr.baseAddress) {
return rx.withUnsafeMutableBufferPointer { (rxPtr : inout UnsafeMutableBufferPointer<UInt8>) -> CInt in
if let rxPtr1 = UnsafeMutableRawPointer(rxPtr.baseAddress) {
var tr = spi_ioc_transfer(
//tx_buf: txPtr.baseAddress!,
tx_buf: UInt64(UInt(bitPattern: txPtr1)),
//rx_buf: rxPtr.baseAddress!,
rx_buf: UInt64(UInt(bitPattern: rxPtr1)),
len: UInt32(txPtr.count),
speed_hz: speed,
delay_usecs: delay,
bits_per_word: bits)
return ioctl(fd, SPI_IOC_MESSAGE1, &tr)
}
return 0
}
}
return 0
}
Board Type
RaspberryPi3
Operating System
Raspbian Buster
Swift Version
swift-5.1.5
Description
SPI send call fails with "Message too long" error.
This appears to fix this issue.
struct spi_ioc_transfer {
//var tx_buf: UnsafeMutableRawPointer
//var rx_buf: UnsafeMutableRawPointer
var tx_buf: UInt64
var rx_buf: UInt64
var len: UInt32
var speed_hz: UInt32 = 500000
var delay_usecs: UInt16 = 0
var bits_per_word: UInt8 = 8
let cs_change: UInt8 = 0
let tx_nbits: UInt8 = 0
let rx_nbits: UInt8 = 0
let pad: UInt16 = 0
}
And in transferData function
var r: CInt = 0