77// except according to those terms.
88
99// macros import
10- use nix:: { ioctl_read, ioctl_write_ptr, ioctl_write_buf} ;
10+ use super :: SpiModeFlags ;
11+ use nix:: { ioctl_read, ioctl_write_buf, ioctl_write_ptr} ;
1112use std:: io;
1213use std:: marker:: PhantomData ;
1314use std:: os:: unix:: prelude:: * ;
14- use super :: SpiModeFlags ;
1515
1616fn from_nix_error ( err : :: nix:: Error ) -> io:: Error {
17- io:: Error :: from_raw_os_error ( err. as_errno ( ) . unwrap_or_else ( || nix:: errno:: Errno :: UnknownErrno ) as i32 )
17+ io:: Error :: from_raw_os_error (
18+ err. as_errno ( )
19+ . unwrap_or_else ( || nix:: errno:: Errno :: UnknownErrno ) as i32 ,
20+ )
1821}
1922
2023fn from_nix_result < T > ( res : :: nix:: Result < T > ) -> io:: Result < T > {
@@ -24,7 +27,6 @@ fn from_nix_result<T>(res: ::nix::Result<T>) -> io::Result<T> {
2427 }
2528}
2629
27-
2830/// Structure that is used when performing communication
2931/// with the kernel.
3032///
@@ -130,18 +132,48 @@ mod ioctl {
130132 ioctl_read ! ( get_lsb_first, SPI_IOC_MAGIC , SPI_IOC_NR_LSB_FIRST , u8 ) ;
131133 ioctl_write_ptr ! ( set_lsb_first, SPI_IOC_MAGIC , SPI_IOC_NR_LSB_FIRST , u8 ) ;
132134
133- ioctl_read ! ( get_bits_per_word, SPI_IOC_MAGIC , SPI_IOC_NR_BITS_PER_WORD , u8 ) ;
134- ioctl_write_ptr ! ( set_bits_per_word, SPI_IOC_MAGIC , SPI_IOC_NR_BITS_PER_WORD , u8 ) ;
135-
136- ioctl_read ! ( get_max_speed_hz, SPI_IOC_MAGIC , SPI_IOC_NR_MAX_SPEED_HZ , u32 ) ;
137- ioctl_write_ptr ! ( set_max_speed_hz, SPI_IOC_MAGIC , SPI_IOC_NR_MAX_SPEED_HZ , u32 ) ;
135+ ioctl_read ! (
136+ get_bits_per_word,
137+ SPI_IOC_MAGIC ,
138+ SPI_IOC_NR_BITS_PER_WORD ,
139+ u8
140+ ) ;
141+ ioctl_write_ptr ! (
142+ set_bits_per_word,
143+ SPI_IOC_MAGIC ,
144+ SPI_IOC_NR_BITS_PER_WORD ,
145+ u8
146+ ) ;
147+
148+ ioctl_read ! (
149+ get_max_speed_hz,
150+ SPI_IOC_MAGIC ,
151+ SPI_IOC_NR_MAX_SPEED_HZ ,
152+ u32
153+ ) ;
154+ ioctl_write_ptr ! (
155+ set_max_speed_hz,
156+ SPI_IOC_MAGIC ,
157+ SPI_IOC_NR_MAX_SPEED_HZ ,
158+ u32
159+ ) ;
138160
139161 // NOTE: this macro works for single transfers but cannot properly
140162 // calculate size for multi transfer whose length we will not know
141163 // until runtime. We fallback to using the underlying ioctl for that
142164 // use case.
143- ioctl_write_ptr ! ( spidev_transfer, SPI_IOC_MAGIC , SPI_IOC_NR_TRANSFER , spi_ioc_transfer) ;
144- ioctl_write_buf ! ( spidev_transfer_buf, SPI_IOC_MAGIC , SPI_IOC_NR_TRANSFER , spi_ioc_transfer) ;
165+ ioctl_write_ptr ! (
166+ spidev_transfer,
167+ SPI_IOC_MAGIC ,
168+ SPI_IOC_NR_TRANSFER ,
169+ spi_ioc_transfer
170+ ) ;
171+ ioctl_write_buf ! (
172+ spidev_transfer_buf,
173+ SPI_IOC_MAGIC ,
174+ SPI_IOC_NR_TRANSFER ,
175+ spi_ioc_transfer
176+ ) ;
145177}
146178
147179/// Representation of a spidev transfer that is shared
@@ -175,11 +207,7 @@ pub fn get_lsb_first(fd: RawFd) -> io::Result<u8> {
175207}
176208
177209pub fn set_lsb_first ( fd : RawFd , lsb_first : bool ) -> io:: Result < ( ) > {
178- let lsb_first_value: u8 = if lsb_first {
179- 1
180- } else {
181- 0
182- } ;
210+ let lsb_first_value: u8 = if lsb_first { 1 } else { 0 } ;
183211 from_nix_result ( unsafe { ioctl:: set_lsb_first ( fd, & lsb_first_value) } ) ?;
184212 Ok ( ( ) )
185213}
@@ -214,8 +242,6 @@ pub fn transfer(fd: RawFd, transfer: &mut SpidevTransfer) -> io::Result<()> {
214242}
215243
216244pub fn transfer_multiple ( fd : RawFd , transfers : & mut [ SpidevTransfer ] ) -> io:: Result < ( ) > {
217- from_nix_result ( unsafe {
218- ioctl:: spidev_transfer_buf ( fd, transfers)
219- } ) ?;
245+ from_nix_result ( unsafe { ioctl:: spidev_transfer_buf ( fd, transfers) } ) ?;
220246 Ok ( ( ) )
221247}
0 commit comments