Skip to content

Commit 9adc253

Browse files
committed
Use Result<T, E> with the interface error type
Every read/write is fallible with interface usage (spi/i2c/etc) so the returns should be Result<T, E>'s for all write/modify/read calls to a register.
1 parent 63212e6 commit 9adc253

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/generate/iface/common.rs

+11-11
Original file line numberDiff line numberDiff line change
@@ -55,34 +55,34 @@ impl<'a, I, K: Copy, V, A: Access> Reg<'a, I, K, V, A> {
5555

5656
impl<'a, I: Interface<K, V>, K: Copy, V: Copy, A: Read> Reg<'a, I, K, V, A> {
5757
#[inline(always)]
58-
pub fn read(&mut self) -> V {
59-
self.iface.read(self.addr).unwrap()
58+
pub fn read(&mut self) -> Result<V, I::Error> {
59+
self.iface.read(self.addr)
6060
}
6161
}
6262

6363
impl<'a, I: Interface<K, V>, K: Copy, V: Copy, A: Write> Reg<'a, I, K, V, A> {
6464
#[inline(always)]
65-
pub fn write_value(&mut self, val: V) {
66-
self.iface.write(self.addr, val).unwrap()
65+
pub fn write_value(&mut self, val: V) -> Result<(), I::Error> {
66+
self.iface.write(self.addr, val)
6767
}
6868
}
6969

7070
impl<'a, I: Interface<K, V>, K: Copy, V: Default + Copy, A: Write> Reg<'a, I, K, V, A> {
7171
#[inline(always)]
72-
pub fn write<R>(&mut self, f: impl FnOnce(&mut V) -> R) -> R {
72+
pub fn write<R>(&mut self, f: impl FnOnce(&mut V) -> R) -> Result<R, I::Error> {
7373
let mut val = Default::default();
7474
let res = f(&mut val);
75-
self.write_value(val);
76-
res
75+
self.write_value(val)?;
76+
Ok(res)
7777
}
7878
}
7979

8080
impl<'a, I: Interface<K, V>, K: Copy, V: Copy, A: Read + Write> Reg<'a, I, K, V, A> {
8181
#[inline(always)]
82-
pub fn modify<R>(&mut self, f: impl FnOnce(&mut V) -> R) -> R {
83-
let mut val = self.read();
82+
pub fn modify<R>(&mut self, f: impl FnOnce(&mut V) -> R) -> Result<R, I::Error> {
83+
let mut val = self.read()?;
8484
let res = f(&mut val);
85-
self.write_value(val);
86-
res
85+
self.write_value(val)?;
86+
Ok(res)
8787
}
8888
}

0 commit comments

Comments
 (0)