| 
1 | 1 | use crate::address_from_pins;  | 
2 |  | -use embedded_hal::i2c::{ErrorType, I2c, Operation, SevenBitAddress};  | 
3 | 2 | use crate::prelude::MultiplexerError;  | 
 | 3 | +use embedded_hal::i2c::{ErrorType, I2c, Operation, SevenBitAddress};  | 
4 | 4 | 
 
  | 
5 | 5 | pub struct MultiplexerBus {  | 
6 | 6 |     address: u8,  | 
@@ -57,42 +57,63 @@ where  | 
57 | 57 |     }  | 
58 | 58 | }  | 
59 | 59 | 
 
  | 
60 |  | -impl<I2C> ErrorType for BusPort<I2C> where I2C: I2c {  | 
 | 60 | +impl<I2C> ErrorType for BusPort<I2C>  | 
 | 61 | +where  | 
 | 62 | +    I2C: I2c,  | 
 | 63 | +{  | 
61 | 64 |     type Error = MultiplexerError<I2C::Error>;  | 
62 | 65 | }  | 
63 | 66 | 
 
  | 
64 | 67 | impl<I2C> I2c for BusPort<I2C>  | 
65 |  | -where I2C: I2c  | 
 | 68 | +where  | 
 | 69 | +    I2C: I2c,  | 
66 | 70 | {  | 
67 | 71 |     fn read(&mut self, address: SevenBitAddress, read: &mut [u8]) -> Result<(), Self::Error> {  | 
68 | 72 |         self.open_port()?;  | 
69 |  | -        self.bus.read(address, read).map_err(|err| MultiplexerError::I2CError(err))  | 
 | 73 | +        self.bus  | 
 | 74 | +            .read(address, read)  | 
 | 75 | +            .map_err(|err| MultiplexerError::I2CError(err))  | 
70 | 76 |     }  | 
71 | 77 | 
 
  | 
72 | 78 |     fn write(&mut self, address: SevenBitAddress, write: &[u8]) -> Result<(), Self::Error> {  | 
73 | 79 |         self.open_port()?;  | 
74 |  | -        self.bus.write(address, write).map_err(|err| MultiplexerError::I2CError(err))  | 
 | 80 | +        self.bus  | 
 | 81 | +            .write(address, write)  | 
 | 82 | +            .map_err(|err| MultiplexerError::I2CError(err))  | 
75 | 83 |     }  | 
76 | 84 | 
 
  | 
77 |  | -    fn write_read(&mut self, address: SevenBitAddress, write: &[u8], read: &mut [u8]) -> Result<(), Self::Error> {  | 
 | 85 | +    fn write_read(  | 
 | 86 | +        &mut self,  | 
 | 87 | +        address: SevenBitAddress,  | 
 | 88 | +        write: &[u8],  | 
 | 89 | +        read: &mut [u8],  | 
 | 90 | +    ) -> Result<(), Self::Error> {  | 
78 | 91 |         self.open_port()?;  | 
79 |  | -        self.bus.write_read(address, write, read).map_err(|err| MultiplexerError::I2CError(err))  | 
 | 92 | +        self.bus  | 
 | 93 | +            .write_read(address, write, read)  | 
 | 94 | +            .map_err(|err| MultiplexerError::I2CError(err))  | 
80 | 95 |     }  | 
81 | 96 | 
 
  | 
82 |  | -    fn transaction(&mut self, address: SevenBitAddress, operations: &mut [Operation<'_>]) -> Result<(), Self::Error> {  | 
 | 97 | +    fn transaction(  | 
 | 98 | +        &mut self,  | 
 | 99 | +        address: SevenBitAddress,  | 
 | 100 | +        operations: &mut [Operation<'_>],  | 
 | 101 | +    ) -> Result<(), Self::Error> {  | 
83 | 102 |         self.open_port()?;  | 
84 |  | -        self.bus.transaction(address, operations).map_err(|err| MultiplexerError::I2CError(err))  | 
 | 103 | +        self.bus  | 
 | 104 | +            .transaction(address, operations)  | 
 | 105 | +            .map_err(|err| MultiplexerError::I2CError(err))  | 
85 | 106 |     }  | 
86 | 107 | }  | 
87 | 108 | 
 
  | 
88 | 109 | #[cfg(test)]  | 
89 | 110 | mod test {  | 
90 | 111 |     extern crate alloc;  | 
 | 112 | +    use crate::prelude::*;  | 
91 | 113 |     use alloc::vec;  | 
92 | 114 |     use core::cell::RefCell;  | 
93 | 115 |     use embedded_hal::i2c::I2c;  | 
94 | 116 |     use embedded_hal_bus::i2c::RefCellDevice;  | 
95 |  | -    use crate::prelude::*;  | 
96 | 117 |     use embedded_hal_mock::eh1::i2c::{Mock, Transaction};  | 
97 | 118 | 
 
  | 
98 | 119 |     #[test]  | 
@@ -192,7 +213,7 @@ mod test {  | 
192 | 213 |             assert!(multiplexed_i2c_d.read(component_addr, &mut md).is_ok());  | 
193 | 214 |             assert_eq!(md, [0x45, 0x48]);  | 
194 | 215 |         }  | 
195 |  | -          | 
 | 216 | + | 
196 | 217 |         i2c.into_inner().done();  | 
197 | 218 |     }  | 
198 | 219 | 
 
  | 
 | 
0 commit comments