@@ -13,7 +13,7 @@ use futures_util::task::AtomicWaker;
1313use crate :: {
1414 gpdma:: {
1515 config:: DmaConfig ,
16- periph:: { DmaDuplex , DmaRx , DmaTx , Rx , RxAddr , Tx , TxAddr } ,
16+ periph:: { DmaDuplex , DmaRx , DmaTx , RxAddr , TxAddr } ,
1717 DmaChannel , DmaTransfer , Error as DmaError , Word as DmaWord ,
1818 } ,
1919 interrupt,
@@ -222,16 +222,16 @@ where
222222}
223223
224224#[ allow( private_bounds) ]
225- impl < SPI , MODE , W > SpiDma < SPI , MODE , W >
225+ impl < SPI , CH , W > SpiDma < SPI , DmaRx < SPI , W , CH > , W >
226226where
227227 SPI : Instance + Waker ,
228228 W : Word + DmaWord ,
229- MODE : Rx < W > ,
229+ CH : DmaChannel ,
230230{
231231 pub fn start_dma_read < ' a , D > (
232232 & ' a mut self ,
233233 mut destination : D ,
234- ) -> Result < DmaTransfer < ' a , < MODE as Rx < W > > :: CH > , Error >
234+ ) -> Result < DmaTransfer < ' a , CH > , Error >
235235 where
236236 D : WriteBuffer < Word = W > ,
237237 {
@@ -243,7 +243,7 @@ where
243243 self . setup_read_mode ( ) ?;
244244
245245 let spi = & mut self . spi ;
246- let transfer = self . mode . init_rx_transfer ( config, destination) ;
246+ let mut transfer = self . mode . init_rx_transfer ( config, destination) ;
247247
248248 spi. inner . enable_rx_dma ( ) ;
249249
@@ -264,16 +264,16 @@ where
264264}
265265
266266#[ allow( private_bounds) ]
267- impl < SPI , MODE , W > SpiDma < SPI , MODE , W >
267+ impl < SPI , CH , W > SpiDma < SPI , DmaTx < SPI , W , CH > , W >
268268where
269269 SPI : Instance + Waker ,
270270 W : Word + DmaWord ,
271- MODE : Tx < W > ,
271+ CH : DmaChannel ,
272272{
273273 pub fn start_dma_write < ' a , S > (
274274 & ' a mut self ,
275275 source : S ,
276- ) -> Result < DmaTransfer < ' a , < MODE as Tx < W > > :: CH > , Error >
276+ ) -> Result < DmaTransfer < ' a , CH > , Error >
277277 where
278278 S : ReadBuffer < Word = W > ,
279279 {
@@ -287,7 +287,7 @@ where
287287 self . setup_write_mode ( ) ?;
288288
289289 let spi = & mut self . spi ;
290- let transfer = self . mode . init_tx_transfer ( config, source) ;
290+ let mut transfer = self . mode . init_tx_transfer ( config, source) ;
291291
292292 transfer. start_nonblocking ( ) ;
293293 spi. inner . enable_tx_dma ( ) ;
@@ -338,8 +338,9 @@ where
338338 self . check_transfer_mode ( ) ?;
339339
340340 let spi = & mut self . spi ;
341- let tx_transfer = self . mode . init_tx_transfer ( tx_config, source) ;
342- let rx_transfer = self . mode . init_rx_transfer ( rx_config, destination) ;
341+ let ( mut tx_transfer, mut rx_transfer) = self
342+ . mode
343+ . init_duplex_transfer ( tx_config, rx_config, source, destination) ;
343344
344345 spi. inner . enable_rx_dma ( ) ;
345346 rx_transfer. start_nonblocking ( ) ;
0 commit comments