Skip to content

Commit bfbe8e2

Browse files
committed
spi: Optimize send_slice
1 parent 55e40f8 commit bfbe8e2

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

spi/src/lib.rs

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,34 @@ where
9494

9595
err
9696
}
97+
98+
#[inline]
99+
fn send_slice(
100+
&mut self,
101+
data_or_command: display_interface::DataOrCommand,
102+
slice: &[Self::Word],
103+
) -> Result<(), DisplayError> {
104+
// Assert chip select pin
105+
self.cs.set_low().map_err(|_| DisplayError::CSError)?;
106+
107+
// 1 = data, 0 = command
108+
match data_or_command {
109+
display_interface::DataOrCommand::Data => self.dc.set_high(),
110+
display_interface::DataOrCommand::Command => self.dc.set_low(),
111+
}
112+
.map_err(|_| DisplayError::DCError)?;
113+
114+
// Send words over SPI
115+
let err = self
116+
.spi
117+
.write(slice)
118+
.map_err(|_| DisplayError::BusWriteError);
119+
120+
// Deassert chip select pin
121+
self.cs.set_high().ok();
122+
123+
err
124+
}
97125
}
98126

99127
/// SPI display interface.
@@ -147,4 +175,23 @@ where
147175
// Send words over SPI
148176
send_u8_iter(&mut self.spi, iter)
149177
}
178+
179+
#[inline]
180+
fn send_slice(
181+
&mut self,
182+
data_or_command: display_interface::DataOrCommand,
183+
slice: &[Self::Word],
184+
) -> Result<(), DisplayError> {
185+
// 1 = data, 0 = command
186+
match data_or_command {
187+
display_interface::DataOrCommand::Data => self.dc.set_high(),
188+
display_interface::DataOrCommand::Command => self.dc.set_low(),
189+
}
190+
.map_err(|_| DisplayError::DCError)?;
191+
192+
// Send words over SPI
193+
self.spi
194+
.write(slice)
195+
.map_err(|_| DisplayError::BusWriteError)
196+
}
150197
}

0 commit comments

Comments
 (0)