Skip to content

Commit 4615314

Browse files
committed
Add TxDma/RxDma maintenance operations
1 parent 7c69941 commit 4615314

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

src/spi/dma.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,22 @@ where
8484
self.spi.start_transfer();
8585
})
8686
}
87+
88+
pub fn is_dma_complete(&self) -> Result<bool, Error> {
89+
let complete = self.transfer.is_transfer_complete()?
90+
&& self.transfer.is_transfer_complete()?;
91+
Ok(complete)
92+
}
93+
94+
pub fn end_transfer(&mut self) {
95+
self.spi.end_transaction();
96+
self.spi.disable_dma();
97+
}
98+
99+
pub fn free(self) -> Result<(CH, D), Error> {
100+
let (ch, _, d) = self.transfer.free()?;
101+
Ok((ch, d))
102+
}
87103
}
88104

89105
pub struct TxDmaTransfer<'a, SPI, W: FrameSize, CH, S> {
@@ -117,6 +133,22 @@ where
117133
self.spi.start_transfer();
118134
})
119135
}
136+
137+
pub fn is_dma_complete(&self) -> Result<bool, Error> {
138+
let complete = self.transfer.is_transfer_complete()?
139+
&& self.transfer.is_transfer_complete()?;
140+
Ok(complete)
141+
}
142+
143+
pub fn end_transfer(&mut self) {
144+
self.spi.end_transaction();
145+
self.spi.disable_dma();
146+
}
147+
148+
pub fn free(self) -> Result<(CH, S), Error> {
149+
let (ch, s, _) = self.transfer.free()?;
150+
Ok((ch, s))
151+
}
120152
}
121153

122154
pub struct DuplexDmaTransfer<'a, SPI, W: FrameSize, TX, RX, S, D> {

0 commit comments

Comments
 (0)