aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32
diff options
context:
space:
mode:
authorMatt Ickstadt <[email protected]>2023-07-31 13:35:06 -0500
committerMatt Ickstadt <[email protected]>2023-07-31 13:35:06 -0500
commit1b0f4ee65390ec0e511c2455c0f26c8d4f661ec3 (patch)
tree5a2d93d94bb0fc1556a5d6e6354a3e7777f40276 /embassy-stm32
parent4da97433173fcab5196e7c2a69c295edff3588eb (diff)
stm32: add outlives bounds to TimeoutI2c impl blocks
This should make usage and error messages more clear.
Diffstat (limited to 'embassy-stm32')
-rw-r--r--embassy-stm32/src/i2c/timeout.rs16
1 files changed, 10 insertions, 6 deletions
diff --git a/embassy-stm32/src/i2c/timeout.rs b/embassy-stm32/src/i2c/timeout.rs
index 8dc228b34..bb6e105de 100644
--- a/embassy-stm32/src/i2c/timeout.rs
+++ b/embassy-stm32/src/i2c/timeout.rs
@@ -22,7 +22,7 @@ fn timeout_fn(timeout: Duration) -> impl Fn() -> Result<(), Error> {
22 } 22 }
23} 23}
24 24
25impl<'a, 'd, T: Instance, TXDMA, RXDMA> TimeoutI2c<'a, 'd, T, TXDMA, RXDMA> { 25impl<'a, 'd: 'a, T: Instance, TXDMA, RXDMA> TimeoutI2c<'a, 'd, T, TXDMA, RXDMA> {
26 pub fn new(i2c: &'a mut I2c<'d, T, TXDMA, RXDMA>, timeout: Duration) -> Self { 26 pub fn new(i2c: &'a mut I2c<'d, T, TXDMA, RXDMA>, timeout: Duration) -> Self {
27 Self { i2c, timeout } 27 Self { i2c, timeout }
28 } 28 }
@@ -65,7 +65,9 @@ impl<'a, 'd, T: Instance, TXDMA, RXDMA> TimeoutI2c<'a, 'd, T, TXDMA, RXDMA> {
65 } 65 }
66} 66}
67 67
68impl<'a, 'd, T: Instance, TXDMA, RXDMA> embedded_hal_02::blocking::i2c::Read for TimeoutI2c<'a, 'd, T, TXDMA, RXDMA> { 68impl<'a, 'd: 'a, T: Instance, TXDMA, RXDMA> embedded_hal_02::blocking::i2c::Read
69 for TimeoutI2c<'a, 'd, T, TXDMA, RXDMA>
70{
69 type Error = Error; 71 type Error = Error;
70 72
71 fn read(&mut self, addr: u8, read: &mut [u8]) -> Result<(), Self::Error> { 73 fn read(&mut self, addr: u8, read: &mut [u8]) -> Result<(), Self::Error> {
@@ -73,7 +75,9 @@ impl<'a, 'd, T: Instance, TXDMA, RXDMA> embedded_hal_02::blocking::i2c::Read for
73 } 75 }
74} 76}
75 77
76impl<'a, 'd, T: Instance, TXDMA, RXDMA> embedded_hal_02::blocking::i2c::Write for TimeoutI2c<'a, 'd, T, TXDMA, RXDMA> { 78impl<'a, 'd: 'a, T: Instance, TXDMA, RXDMA> embedded_hal_02::blocking::i2c::Write
79 for TimeoutI2c<'a, 'd, T, TXDMA, RXDMA>
80{
77 type Error = Error; 81 type Error = Error;
78 82
79 fn write(&mut self, addr: u8, write: &[u8]) -> Result<(), Self::Error> { 83 fn write(&mut self, addr: u8, write: &[u8]) -> Result<(), Self::Error> {
@@ -81,7 +85,7 @@ impl<'a, 'd, T: Instance, TXDMA, RXDMA> embedded_hal_02::blocking::i2c::Write fo
81 } 85 }
82} 86}
83 87
84impl<'a, 'd, T: Instance, TXDMA, RXDMA> embedded_hal_02::blocking::i2c::WriteRead 88impl<'a, 'd: 'a, T: Instance, TXDMA, RXDMA> embedded_hal_02::blocking::i2c::WriteRead
85 for TimeoutI2c<'a, 'd, T, TXDMA, RXDMA> 89 for TimeoutI2c<'a, 'd, T, TXDMA, RXDMA>
86{ 90{
87 type Error = Error; 91 type Error = Error;
@@ -95,11 +99,11 @@ impl<'a, 'd, T: Instance, TXDMA, RXDMA> embedded_hal_02::blocking::i2c::WriteRea
95mod eh1 { 99mod eh1 {
96 use super::*; 100 use super::*;
97 101
98 impl<'a, 'd, T: Instance, TXDMA, RXDMA> embedded_hal_1::i2c::ErrorType for TimeoutI2c<'a, 'd, T, TXDMA, RXDMA> { 102 impl<'a, 'd: 'a, T: Instance, TXDMA, RXDMA> embedded_hal_1::i2c::ErrorType for TimeoutI2c<'a, 'd, T, TXDMA, RXDMA> {
99 type Error = Error; 103 type Error = Error;
100 } 104 }
101 105
102 impl<'a, 'd, T: Instance, TXDMA, RXDMA> embedded_hal_1::i2c::I2c for TimeoutI2c<'a, 'd, T, TXDMA, RXDMA> { 106 impl<'a, 'd: 'a, T: Instance, TXDMA, RXDMA> embedded_hal_1::i2c::I2c for TimeoutI2c<'a, 'd, T, TXDMA, RXDMA> {
103 fn read(&mut self, address: u8, read: &mut [u8]) -> Result<(), Self::Error> { 107 fn read(&mut self, address: u8, read: &mut [u8]) -> Result<(), Self::Error> {
104 self.blocking_read(address, read) 108 self.blocking_read(address, read)
105 } 109 }