diff options
| author | jrmoulton <[email protected]> | 2024-06-17 21:15:26 -0600 |
|---|---|---|
| committer | jrmoulton <[email protected]> | 2024-08-13 09:46:16 -0600 |
| commit | 49357709ed4f619144746dd04e088d78ad7f355f (patch) | |
| tree | 8381639f6801f2d5d2a4cbbc2368e5efc37eb736 | |
| parent | 967fa1b2a2b551dfac9925e46817c97c7ec711f7 (diff) | |
Move slave constructor to v2 module
| -rw-r--r-- | embassy-stm32/src/i2c/mod.rs | 20 | ||||
| -rw-r--r-- | embassy-stm32/src/i2c/v2.rs | 21 |
2 files changed, 21 insertions, 20 deletions
diff --git a/embassy-stm32/src/i2c/mod.rs b/embassy-stm32/src/i2c/mod.rs index 0457595d2..a5ff61f3d 100644 --- a/embassy-stm32/src/i2c/mod.rs +++ b/embassy-stm32/src/i2c/mod.rs | |||
| @@ -268,26 +268,6 @@ impl<'d, M: Mode, IM: MasterMode> I2c<'d, M, IM> { | |||
| 268 | } | 268 | } |
| 269 | } | 269 | } |
| 270 | } | 270 | } |
| 271 | impl<'d, M: Mode> I2c<'d, M, Master> { | ||
| 272 | /// Configure the I2C driver for slave operations, allowing for the driver to be used as a slave and a master (multimaster) | ||
| 273 | pub fn into_slave_multimaster(mut self, slave_addr_config: SlaveAddrConfig) -> I2c<'d, M, MultiMaster> { | ||
| 274 | let mut slave = I2c { | ||
| 275 | info: self.info, | ||
| 276 | state: self.state, | ||
| 277 | kernel_clock: self.kernel_clock, | ||
| 278 | scl: self.scl.take(), | ||
| 279 | sda: self.sda.take(), | ||
| 280 | tx_dma: self.tx_dma.take(), | ||
| 281 | rx_dma: self.rx_dma.take(), | ||
| 282 | #[cfg(feature = "time")] | ||
| 283 | timeout: self.timeout, | ||
| 284 | _phantom: PhantomData, | ||
| 285 | _phantom2: PhantomData, | ||
| 286 | }; | ||
| 287 | slave.init_slave(slave_addr_config); | ||
| 288 | slave | ||
| 289 | } | ||
| 290 | } | ||
| 291 | 271 | ||
| 292 | impl<'d, M: Mode, IM: MasterMode> Drop for I2c<'d, M, IM> { | 272 | impl<'d, M: Mode, IM: MasterMode> Drop for I2c<'d, M, IM> { |
| 293 | fn drop(&mut self) { | 273 | fn drop(&mut self) { |
diff --git a/embassy-stm32/src/i2c/v2.rs b/embassy-stm32/src/i2c/v2.rs index c2560d819..acf4b3f12 100644 --- a/embassy-stm32/src/i2c/v2.rs +++ b/embassy-stm32/src/i2c/v2.rs | |||
| @@ -694,6 +694,27 @@ impl<'d, IM: MasterMode> I2c<'d, Async, IM> { | |||
| 694 | } | 694 | } |
| 695 | } | 695 | } |
| 696 | 696 | ||
| 697 | impl<'d, M: Mode> I2c<'d, M, Master> { | ||
| 698 | /// Configure the I2C driver for slave operations, allowing for the driver to be used as a slave and a master (multimaster) | ||
| 699 | pub fn into_slave_multimaster(mut self, slave_addr_config: SlaveAddrConfig) -> I2c<'d, M, MultiMaster> { | ||
| 700 | let mut slave = I2c { | ||
| 701 | info: self.info, | ||
| 702 | state: self.state, | ||
| 703 | kernel_clock: self.kernel_clock, | ||
| 704 | scl: self.scl.take(), | ||
| 705 | sda: self.sda.take(), | ||
| 706 | tx_dma: self.tx_dma.take(), | ||
| 707 | rx_dma: self.rx_dma.take(), | ||
| 708 | #[cfg(feature = "time")] | ||
| 709 | timeout: self.timeout, | ||
| 710 | _phantom: PhantomData, | ||
| 711 | _phantom2: PhantomData, | ||
| 712 | }; | ||
| 713 | slave.init_slave(slave_addr_config); | ||
| 714 | slave | ||
| 715 | } | ||
| 716 | } | ||
| 717 | |||
| 697 | impl<'d, M: Mode> I2c<'d, M, MultiMaster> { | 718 | impl<'d, M: Mode> I2c<'d, M, MultiMaster> { |
| 698 | pub(crate) fn init_slave(&mut self, config: SlaveAddrConfig) { | 719 | pub(crate) fn init_slave(&mut self, config: SlaveAddrConfig) { |
| 699 | self.info.regs.cr1().modify(|reg| { | 720 | self.info.regs.cr1().modify(|reg| { |
