|
84 | 84 | self.spi.start_transfer();
|
85 | 85 | })
|
86 | 86 | }
|
| 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 | + } |
87 | 103 | }
|
88 | 104 |
|
89 | 105 | pub struct TxDmaTransfer<'a, SPI, W: FrameSize, CH, S> {
|
@@ -117,6 +133,22 @@ where
|
117 | 133 | self.spi.start_transfer();
|
118 | 134 | })
|
119 | 135 | }
|
| 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 | + } |
120 | 152 | }
|
121 | 153 |
|
122 | 154 | pub struct DuplexDmaTransfer<'a, SPI, W: FrameSize, TX, RX, S, D> {
|
|
0 commit comments