From 4f38d8c6d54fc1273bbf5325d41c0e536442889a Mon Sep 17 00:00:00 2001 From: Rahix Date: Sat, 13 Jan 2024 16:29:42 +0100 Subject: [PATCH] Use `unwrap-infallible` After removing `void`, we're still missing a way to explicitly unwrap infallible results such that it is clear that no panic can occur in this location. Because the standard library does not yet provide a solution to this, let's use the `unwrap-infallible` crate [1] in the meantime. This topic was also discussed in more detail in the embedded-hal project [2]. [1]: https://crates.io/crates/unwrap-infallible [2]: https://github.com/rust-embedded/embedded-hal/issues/329 --- avr-hal-generic/Cargo.toml | 1 + avr-hal-generic/src/adc.rs | 2 +- avr-hal-generic/src/lib.rs | 1 + avr-hal-generic/src/usart.rs | 15 ++++++++------- .../arduino-diecimila/src/bin/diecimila-adc.rs | 9 +++++---- .../src/bin/diecimila-i2cdetect.rs | 9 +++++---- .../src/bin/diecimila-spi-feedback.rs | 7 ++++--- .../arduino-diecimila/src/bin/diecimila-usart.rs | 7 ++++--- examples/arduino-leonardo/src/bin/leonardo-adc.rs | 11 ++++++----- .../src/bin/leonardo-i2cdetect.rs | 9 +++++---- .../src/bin/leonardo-spi-feedback.rs | 7 ++++--- .../arduino-leonardo/src/bin/leonardo-usart.rs | 7 ++++--- examples/arduino-mega1280/src/bin/mega1280-adc.rs | 9 +++++---- .../src/bin/mega1280-i2cdetect.rs | 9 +++++---- .../arduino-mega1280/src/bin/mega1280-usart.rs | 7 ++++--- .../src/bin/mega1280spi-feedback.rs | 7 ++++--- examples/arduino-mega2560/src/bin/mega2560-adc.rs | 9 +++++---- .../src/bin/mega2560-i2cdetect.rs | 9 +++++---- .../src/bin/mega2560-spi-feedback.rs | 7 ++++--- .../arduino-mega2560/src/bin/mega2560-usart.rs | 7 ++++--- examples/arduino-nano/src/bin/nano-adc.rs | 13 +++++++------ examples/arduino-nano/src/bin/nano-panic.rs | 9 +++++---- examples/arduino-uno/src/bin/uno-adc.rs | 11 ++++++----- examples/arduino-uno/src/bin/uno-eeprom.rs | 9 +++++---- examples/arduino-uno/src/bin/uno-hc-sr04.rs | 7 ++++--- examples/arduino-uno/src/bin/uno-i2cdetect.rs | 9 +++++---- examples/arduino-uno/src/bin/uno-infrared.rs | 5 +++-- examples/arduino-uno/src/bin/uno-millis.rs | 5 +++-- examples/arduino-uno/src/bin/uno-panic.rs | 9 +++++---- examples/arduino-uno/src/bin/uno-spi-feedback.rs | 7 ++++--- examples/arduino-uno/src/bin/uno-timer.rs | 11 ++++++----- examples/arduino-uno/src/bin/uno-usart.rs | 7 ++++--- examples/nano168/src/bin/nano168-adc.rs | 11 ++++++----- examples/nano168/src/bin/nano168-i2cdetect.rs | 9 +++++---- examples/nano168/src/bin/nano168-ldr.rs | 7 ++++--- examples/nano168/src/bin/nano168-millis.rs | 5 +++-- examples/nano168/src/bin/nano168-usart.rs | 7 ++++--- examples/nano168/src/bin/nano168-watchdog.rs | 11 ++++++----- .../sparkfun-promicro/src/bin/promicro-adc.rs | 11 ++++++----- .../src/bin/promicro-i2cdetect.rs | 9 +++++---- .../src/bin/promicro-spi-feedback.rs | 7 ++++--- .../sparkfun-promicro/src/bin/promicro-usart.rs | 7 ++++--- 42 files changed, 188 insertions(+), 147 deletions(-) diff --git a/avr-hal-generic/Cargo.toml b/avr-hal-generic/Cargo.toml index 3a77330761..ceacf1bd6e 100644 --- a/avr-hal-generic/Cargo.toml +++ b/avr-hal-generic/Cargo.toml @@ -12,6 +12,7 @@ paste = "1.0.0" avr-device = "0.5.3" embedded-storage = "0.2" embedded-hal = "1.0" +unwrap-infallible = "0.1.5" [dependencies.embedded-hal-v0] version = "0.2.3" diff --git a/avr-hal-generic/src/adc.rs b/avr-hal-generic/src/adc.rs index ba1868419a..ed133006ab 100644 --- a/avr-hal-generic/src/adc.rs +++ b/avr-hal-generic/src/adc.rs @@ -132,7 +132,7 @@ impl> AdcChannel for Channel { /// let voltage = adc.read_blocking(&a0); /// /// // alternatively, a non-blocking interface exists -/// let voltage = nb::block!(adc.read_nonblocking(&a0)).unwrap(); +/// let voltage = nb::block!(adc.read_nonblocking(&a0)).unwrap_infallible(); /// ``` pub struct Adc, CLOCK> { p: ADC, diff --git a/avr-hal-generic/src/lib.rs b/avr-hal-generic/src/lib.rs index 2b9c9d7c21..b48c62bc3e 100644 --- a/avr-hal-generic/src/lib.rs +++ b/avr-hal-generic/src/lib.rs @@ -28,6 +28,7 @@ pub mod wdt; pub mod prelude { pub use hal::prelude::*; pub use ufmt::uWrite as _ufmt_uWrite; + pub use unwrap_infallible::UnwrapInfallible as _unwrap_infallible_UnwrapInfallible; } // For making certain traits unimplementable from outside this crate. diff --git a/avr-hal-generic/src/usart.rs b/avr-hal-generic/src/usart.rs index 76474eb08e..60faa22d37 100644 --- a/avr-hal-generic/src/usart.rs +++ b/avr-hal-generic/src/usart.rs @@ -4,6 +4,7 @@ use core::cmp::Ordering; use core::marker; +use crate::prelude::*; use crate::port; @@ -219,11 +220,11 @@ pub trait UsartOps { /// 57600.into_baudrate(), /// ); /// -/// ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap(); +/// ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap_infallible(); /// /// loop { -/// let b = nb::block!(serial.read()).unwrap(); -/// ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap(); +/// let b = nb::block!(serial.read()).unwrap_infallible(); +/// ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap_infallible(); /// } /// ``` pub struct Usart, RX, TX, CLOCK> { @@ -278,7 +279,7 @@ impl, RX, TX, CLOCK> Usart, RX, TX, CLOCK> Usart u8 { - nb::block!(self.p.raw_read()).unwrap() + nb::block!(self.p.raw_read()).unwrap_infallible() } /// Enable the interrupt for [`Event`]. @@ -437,7 +438,7 @@ impl, RX, TX, CLOCK> ufmt::uWrite fn write_str(&mut self, s: &str) -> Result<(), Self::Error> { for b in s.as_bytes().iter() { - nb::block!(self.p.raw_write(*b)).unwrap() + nb::block!(self.p.raw_write(*b)).unwrap_infallible() } Ok(()) } diff --git a/examples/arduino-diecimila/src/bin/diecimila-adc.rs b/examples/arduino-diecimila/src/bin/diecimila-adc.rs index d90fe07c9c..0de00c4ba3 100644 --- a/examples/arduino-diecimila/src/bin/diecimila-adc.rs +++ b/examples/arduino-diecimila/src/bin/diecimila-adc.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; use arduino_hal::adc; @@ -17,8 +18,8 @@ fn main() -> ! { adc.read_blocking(&adc::channel::Vbg), adc.read_blocking(&adc::channel::Gnd), ); - ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap(); - ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap(); + ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap_infallible(); // To store multiple channels in an array, we use the `into_channel()` method. let channels: [adc::Channel; 6] = [ @@ -33,10 +34,10 @@ fn main() -> ! { loop { for (i, ch) in channels.iter().enumerate() { let v = adc.read_blocking(ch); - ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap(); + ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap_infallible(); } - ufmt::uwriteln!(&mut serial, "").unwrap(); + ufmt::uwriteln!(&mut serial, "").unwrap_infallible(); arduino_hal::delay_ms(1000); } } diff --git a/examples/arduino-diecimila/src/bin/diecimila-i2cdetect.rs b/examples/arduino-diecimila/src/bin/diecimila-i2cdetect.rs index 49552d6b16..ae2bf7ef18 100644 --- a/examples/arduino-diecimila/src/bin/diecimila-i2cdetect.rs +++ b/examples/arduino-diecimila/src/bin/diecimila-i2cdetect.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; #[arduino_hal::entry] @@ -16,12 +17,12 @@ fn main() -> ! { 50000, ); - ufmt::uwriteln!(&mut serial, "Write direction test:\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Write direction test:\r").unwrap_infallible(); i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Write) - .unwrap(); - ufmt::uwriteln!(&mut serial, "\r\nRead direction test:\r").unwrap(); + .unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "\r\nRead direction test:\r").unwrap_infallible(); i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Read) - .unwrap(); + .unwrap_infallible(); loop {} } diff --git a/examples/arduino-diecimila/src/bin/diecimila-spi-feedback.rs b/examples/arduino-diecimila/src/bin/diecimila-spi-feedback.rs index 41f5ac91c4..95f0be133a 100644 --- a/examples/arduino-diecimila/src/bin/diecimila-spi-feedback.rs +++ b/examples/arduino-diecimila/src/bin/diecimila-spi-feedback.rs @@ -15,6 +15,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use arduino_hal::spi; use embedded_hal_v0::spi::FullDuplex; use panic_halt as _; @@ -39,11 +40,11 @@ fn main() -> ! { loop { // Send a byte - nb::block!(spi.send(0b00001111)).unwrap(); + nb::block!(spi.send(0b00001111)).unwrap_infallible(); // Because MISO is connected to MOSI, the read data should be the same - let data = nb::block!(spi.read()).unwrap(); + let data = nb::block!(spi.read()).unwrap_infallible(); - ufmt::uwriteln!(&mut serial, "data: {}\r", data).unwrap(); + ufmt::uwriteln!(&mut serial, "data: {}\r", data).unwrap_infallible(); arduino_hal::delay_ms(1000); } } diff --git a/examples/arduino-diecimila/src/bin/diecimila-usart.rs b/examples/arduino-diecimila/src/bin/diecimila-usart.rs index 0e8d2c29a2..ed6a719d41 100644 --- a/examples/arduino-diecimila/src/bin/diecimila-usart.rs +++ b/examples/arduino-diecimila/src/bin/diecimila-usart.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; use embedded_hal_v0::serial::Read; @@ -11,13 +12,13 @@ fn main() -> ! { let pins = arduino_hal::pins!(dp); let mut serial = arduino_hal::default_serial!(dp, pins, 57600); - ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap_infallible(); loop { // Read a byte from the serial connection default - let b = nb::block!(serial.read()).unwrap(); + let b = nb::block!(serial.read()).unwrap_infallible(); // Answer - ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap(); + ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap_infallible(); } } diff --git a/examples/arduino-leonardo/src/bin/leonardo-adc.rs b/examples/arduino-leonardo/src/bin/leonardo-adc.rs index a6be4e8a2a..aef03002e4 100644 --- a/examples/arduino-leonardo/src/bin/leonardo-adc.rs +++ b/examples/arduino-leonardo/src/bin/leonardo-adc.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; use arduino_hal::adc; @@ -18,9 +19,9 @@ fn main() -> ! { adc.read_blocking(&adc::channel::Gnd), adc.read_blocking(&adc::channel::Temperature), ); - ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap(); - ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap(); - ufmt::uwriteln!(&mut serial, "Temperature: {}", tmp).unwrap(); + ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "Temperature: {}", tmp).unwrap_infallible(); let a0 = pins.a0.into_analog_input(&mut adc); let a1 = pins.a1.into_analog_input(&mut adc); @@ -40,10 +41,10 @@ fn main() -> ! { ]; for (i, v) in values.iter().enumerate() { - ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap(); + ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap_infallible(); } - ufmt::uwriteln!(&mut serial, "").unwrap(); + ufmt::uwriteln!(&mut serial, "").unwrap_infallible(); arduino_hal::delay_ms(1000); } } diff --git a/examples/arduino-leonardo/src/bin/leonardo-i2cdetect.rs b/examples/arduino-leonardo/src/bin/leonardo-i2cdetect.rs index 06f99afddc..8a3496b472 100644 --- a/examples/arduino-leonardo/src/bin/leonardo-i2cdetect.rs +++ b/examples/arduino-leonardo/src/bin/leonardo-i2cdetect.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; #[arduino_hal::entry] @@ -16,10 +17,10 @@ fn main() -> ! { 50000, ); - ufmt::uwriteln!(&mut serial, "Write direction test:\r").unwrap(); - i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Write).unwrap(); - ufmt::uwriteln!(&mut serial, "\r\nRead direction test:\r").unwrap(); - i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Read).unwrap(); + ufmt::uwriteln!(&mut serial, "Write direction test:\r").unwrap_infallible(); + i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Write).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "\r\nRead direction test:\r").unwrap_infallible(); + i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Read).unwrap_infallible(); loop {} } diff --git a/examples/arduino-leonardo/src/bin/leonardo-spi-feedback.rs b/examples/arduino-leonardo/src/bin/leonardo-spi-feedback.rs index e25205f87a..11551f83da 100644 --- a/examples/arduino-leonardo/src/bin/leonardo-spi-feedback.rs +++ b/examples/arduino-leonardo/src/bin/leonardo-spi-feedback.rs @@ -15,6 +15,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use arduino_hal::spi; use embedded_hal_v0::spi::FullDuplex; use panic_halt as _; @@ -39,11 +40,11 @@ fn main() -> ! { loop { // Send a byte - nb::block!(spi.send(0b00001111)).unwrap(); + nb::block!(spi.send(0b00001111)).unwrap_infallible(); // Because MISO is connected to MOSI, the read data should be the same - let data = nb::block!(spi.read()).unwrap(); + let data = nb::block!(spi.read()).unwrap_infallible(); - ufmt::uwriteln!(&mut serial, "data: {}\r", data).unwrap(); + ufmt::uwriteln!(&mut serial, "data: {}\r", data).unwrap_infallible(); arduino_hal::delay_ms(1000); } } diff --git a/examples/arduino-leonardo/src/bin/leonardo-usart.rs b/examples/arduino-leonardo/src/bin/leonardo-usart.rs index c5f3d015e2..a8c2339555 100644 --- a/examples/arduino-leonardo/src/bin/leonardo-usart.rs +++ b/examples/arduino-leonardo/src/bin/leonardo-usart.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; use embedded_hal_v0::serial::Read; @@ -11,13 +12,13 @@ fn main() -> ! { let pins = arduino_hal::pins!(dp); let mut serial = arduino_hal::default_serial!(dp, pins, 57600); - ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap_infallible(); loop { // Read a byte from the serial connection - let b = nb::block!(serial.read()).unwrap(); + let b = nb::block!(serial.read()).unwrap_infallible(); // Answer - ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap(); + ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap_infallible(); } } diff --git a/examples/arduino-mega1280/src/bin/mega1280-adc.rs b/examples/arduino-mega1280/src/bin/mega1280-adc.rs index afbc2d52e7..76139665c4 100644 --- a/examples/arduino-mega1280/src/bin/mega1280-adc.rs +++ b/examples/arduino-mega1280/src/bin/mega1280-adc.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; use arduino_hal::adc; @@ -17,8 +18,8 @@ fn main() -> ! { adc.read_blocking(&adc::channel::Vbg), adc.read_blocking(&adc::channel::Gnd), ); - ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap(); - ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap(); + ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap_infallible(); // To store multiple channels in an array, we use the `into_channel()` method. let channels: [adc::Channel; 16] = [ @@ -43,10 +44,10 @@ fn main() -> ! { loop { for (i, ch) in channels.iter().enumerate() { let v = adc.read_blocking(ch); - ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap(); + ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap_infallible(); } - ufmt::uwriteln!(&mut serial, "").unwrap(); + ufmt::uwriteln!(&mut serial, "").unwrap_infallible(); arduino_hal::delay_ms(1000); } } diff --git a/examples/arduino-mega1280/src/bin/mega1280-i2cdetect.rs b/examples/arduino-mega1280/src/bin/mega1280-i2cdetect.rs index 0695ee6f52..676266c322 100644 --- a/examples/arduino-mega1280/src/bin/mega1280-i2cdetect.rs +++ b/examples/arduino-mega1280/src/bin/mega1280-i2cdetect.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; #[arduino_hal::entry] @@ -16,10 +17,10 @@ fn main() -> ! { 50000, ); - ufmt::uwriteln!(&mut serial, "Write direction test:\r").unwrap(); - i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Write).unwrap(); - ufmt::uwriteln!(&mut serial, "\r\nRead direction test:\r").unwrap(); - i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Read).unwrap(); + ufmt::uwriteln!(&mut serial, "Write direction test:\r").unwrap_infallible(); + i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Write).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "\r\nRead direction test:\r").unwrap_infallible(); + i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Read).unwrap_infallible(); loop {} } diff --git a/examples/arduino-mega1280/src/bin/mega1280-usart.rs b/examples/arduino-mega1280/src/bin/mega1280-usart.rs index c5f3d015e2..a8c2339555 100644 --- a/examples/arduino-mega1280/src/bin/mega1280-usart.rs +++ b/examples/arduino-mega1280/src/bin/mega1280-usart.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; use embedded_hal_v0::serial::Read; @@ -11,13 +12,13 @@ fn main() -> ! { let pins = arduino_hal::pins!(dp); let mut serial = arduino_hal::default_serial!(dp, pins, 57600); - ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap_infallible(); loop { // Read a byte from the serial connection - let b = nb::block!(serial.read()).unwrap(); + let b = nb::block!(serial.read()).unwrap_infallible(); // Answer - ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap(); + ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap_infallible(); } } diff --git a/examples/arduino-mega1280/src/bin/mega1280spi-feedback.rs b/examples/arduino-mega1280/src/bin/mega1280spi-feedback.rs index 5856b65a09..6024ae46b0 100644 --- a/examples/arduino-mega1280/src/bin/mega1280spi-feedback.rs +++ b/examples/arduino-mega1280/src/bin/mega1280spi-feedback.rs @@ -15,6 +15,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use arduino_hal::spi; use embedded_hal_v0::spi::FullDuplex; use panic_halt as _; @@ -39,11 +40,11 @@ fn main() -> ! { loop { // Send a byte - nb::block!(spi.send(0b00001111)).unwrap(); + nb::block!(spi.send(0b00001111)).unwrap_infallible(); // Because MISO is connected to MOSI, the read data should be the same - let data = nb::block!(spi.read()).unwrap(); + let data = nb::block!(spi.read()).unwrap_infallible(); - ufmt::uwriteln!(&mut serial, "data: {}\r", data).unwrap(); + ufmt::uwriteln!(&mut serial, "data: {}\r", data).unwrap_infallible(); arduino_hal::delay_ms(1000); } } diff --git a/examples/arduino-mega2560/src/bin/mega2560-adc.rs b/examples/arduino-mega2560/src/bin/mega2560-adc.rs index afbc2d52e7..76139665c4 100644 --- a/examples/arduino-mega2560/src/bin/mega2560-adc.rs +++ b/examples/arduino-mega2560/src/bin/mega2560-adc.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; use arduino_hal::adc; @@ -17,8 +18,8 @@ fn main() -> ! { adc.read_blocking(&adc::channel::Vbg), adc.read_blocking(&adc::channel::Gnd), ); - ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap(); - ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap(); + ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap_infallible(); // To store multiple channels in an array, we use the `into_channel()` method. let channels: [adc::Channel; 16] = [ @@ -43,10 +44,10 @@ fn main() -> ! { loop { for (i, ch) in channels.iter().enumerate() { let v = adc.read_blocking(ch); - ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap(); + ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap_infallible(); } - ufmt::uwriteln!(&mut serial, "").unwrap(); + ufmt::uwriteln!(&mut serial, "").unwrap_infallible(); arduino_hal::delay_ms(1000); } } diff --git a/examples/arduino-mega2560/src/bin/mega2560-i2cdetect.rs b/examples/arduino-mega2560/src/bin/mega2560-i2cdetect.rs index 0695ee6f52..676266c322 100644 --- a/examples/arduino-mega2560/src/bin/mega2560-i2cdetect.rs +++ b/examples/arduino-mega2560/src/bin/mega2560-i2cdetect.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; #[arduino_hal::entry] @@ -16,10 +17,10 @@ fn main() -> ! { 50000, ); - ufmt::uwriteln!(&mut serial, "Write direction test:\r").unwrap(); - i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Write).unwrap(); - ufmt::uwriteln!(&mut serial, "\r\nRead direction test:\r").unwrap(); - i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Read).unwrap(); + ufmt::uwriteln!(&mut serial, "Write direction test:\r").unwrap_infallible(); + i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Write).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "\r\nRead direction test:\r").unwrap_infallible(); + i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Read).unwrap_infallible(); loop {} } diff --git a/examples/arduino-mega2560/src/bin/mega2560-spi-feedback.rs b/examples/arduino-mega2560/src/bin/mega2560-spi-feedback.rs index 97919c1bd3..d05fa025f7 100644 --- a/examples/arduino-mega2560/src/bin/mega2560-spi-feedback.rs +++ b/examples/arduino-mega2560/src/bin/mega2560-spi-feedback.rs @@ -15,6 +15,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use arduino_hal::spi; use embedded_hal_v0::spi::FullDuplex; use panic_halt as _; @@ -39,11 +40,11 @@ fn main() -> ! { loop { // Send a byte - nb::block!(spi.send(0b00001111)).unwrap(); + nb::block!(spi.send(0b00001111)).unwrap_infallible(); // Because MISO is connected to MOSI, the read data should be the same - let data = nb::block!(spi.read()).unwrap(); + let data = nb::block!(spi.read()).unwrap_infallible(); - ufmt::uwriteln!(&mut serial, "data: {}\r", data).unwrap(); + ufmt::uwriteln!(&mut serial, "data: {}\r", data).unwrap_infallible(); arduino_hal::delay_ms(1000); } } diff --git a/examples/arduino-mega2560/src/bin/mega2560-usart.rs b/examples/arduino-mega2560/src/bin/mega2560-usart.rs index c5f3d015e2..a8c2339555 100644 --- a/examples/arduino-mega2560/src/bin/mega2560-usart.rs +++ b/examples/arduino-mega2560/src/bin/mega2560-usart.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; use embedded_hal_v0::serial::Read; @@ -11,13 +12,13 @@ fn main() -> ! { let pins = arduino_hal::pins!(dp); let mut serial = arduino_hal::default_serial!(dp, pins, 57600); - ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap_infallible(); loop { // Read a byte from the serial connection - let b = nb::block!(serial.read()).unwrap(); + let b = nb::block!(serial.read()).unwrap_infallible(); // Answer - ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap(); + ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap_infallible(); } } diff --git a/examples/arduino-nano/src/bin/nano-adc.rs b/examples/arduino-nano/src/bin/nano-adc.rs index c470f626f3..00105e959b 100644 --- a/examples/arduino-nano/src/bin/nano-adc.rs +++ b/examples/arduino-nano/src/bin/nano-adc.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; use arduino_hal::adc; @@ -18,9 +19,9 @@ fn main() -> ! { adc.read_blocking(&adc::channel::Gnd), adc.read_blocking(&adc::channel::Temperature), ); - ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap(); - ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap(); - ufmt::uwriteln!(&mut serial, "Temperature: {}", tmp).unwrap(); + ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "Temperature: {}", tmp).unwrap_infallible(); let a0 = pins.a0.into_analog_input(&mut adc); let a1 = pins.a1.into_analog_input(&mut adc); @@ -40,7 +41,7 @@ fn main() -> ! { ]; for (i, v) in values.iter().enumerate() { - ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap(); + ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap_infallible(); } // Arduino Nano has two more ADC pins A6 and A7. Accessing them works a bit different from @@ -49,9 +50,9 @@ fn main() -> ! { adc.read_blocking(&adc::channel::ADC6), adc.read_blocking(&adc::channel::ADC7), ); - ufmt::uwrite!(&mut serial, "A6: {} A7: {}", a6, a7).unwrap(); + ufmt::uwrite!(&mut serial, "A6: {} A7: {}", a6, a7).unwrap_infallible(); - ufmt::uwriteln!(&mut serial, "").unwrap(); + ufmt::uwriteln!(&mut serial, "").unwrap_infallible(); arduino_hal::delay_ms(1000); } } diff --git a/examples/arduino-nano/src/bin/nano-panic.rs b/examples/arduino-nano/src/bin/nano-panic.rs index 26d0833d31..a2047094cf 100644 --- a/examples/arduino-nano/src/bin/nano-panic.rs +++ b/examples/arduino-nano/src/bin/nano-panic.rs @@ -7,6 +7,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; // Documentation build does not like this and fails with the following error, even though // everything is fine when compiling the binary. @@ -31,7 +32,7 @@ fn panic(info: &core::panic::PanicInfo) -> ! { let mut serial = arduino_hal::default_serial!(dp, pins, 57600); // Print out panic location - ufmt::uwriteln!(&mut serial, "Firmware panic!\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Firmware panic!\r").unwrap_infallible(); if let Some(loc) = info.location() { ufmt::uwriteln!( &mut serial, @@ -40,7 +41,7 @@ fn panic(info: &core::panic::PanicInfo) -> ! { loc.line(), loc.column(), ) - .unwrap(); + .unwrap_infallible(); } // Blink LED rapidly @@ -57,8 +58,8 @@ fn main() -> ! { let pins = arduino_hal::pins!(dp); let mut serial = arduino_hal::default_serial!(dp, pins, 57600); - ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap(); - ufmt::uwriteln!(&mut serial, "Panic in 5 seconds!\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "Panic in 5 seconds!\r").unwrap_infallible(); arduino_hal::delay_ms(5000); diff --git a/examples/arduino-uno/src/bin/uno-adc.rs b/examples/arduino-uno/src/bin/uno-adc.rs index 8ec9e1b84e..57ad302314 100644 --- a/examples/arduino-uno/src/bin/uno-adc.rs +++ b/examples/arduino-uno/src/bin/uno-adc.rs @@ -12,6 +12,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; use arduino_hal::adc; @@ -29,9 +30,9 @@ fn main() -> ! { adc.read_blocking(&adc::channel::Gnd), adc.read_blocking(&adc::channel::Temperature), ); - ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap(); - ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap(); - ufmt::uwriteln!(&mut serial, "Temperature: {}", tmp).unwrap(); + ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "Temperature: {}", tmp).unwrap_infallible(); let a0 = pins.a0.into_analog_input(&mut adc); let a1 = pins.a1.into_analog_input(&mut adc); @@ -51,10 +52,10 @@ fn main() -> ! { ]; for (i, v) in values.iter().enumerate() { - ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap(); + ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap_infallible(); } - ufmt::uwriteln!(&mut serial, "").unwrap(); + ufmt::uwriteln!(&mut serial, "").unwrap_infallible(); arduino_hal::delay_ms(1000); } } diff --git a/examples/arduino-uno/src/bin/uno-eeprom.rs b/examples/arduino-uno/src/bin/uno-eeprom.rs index 841cfd29dd..2ddb2024dc 100644 --- a/examples/arduino-uno/src/bin/uno-eeprom.rs +++ b/examples/arduino-uno/src/bin/uno-eeprom.rs @@ -4,6 +4,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; #[arduino_hal::entry] @@ -14,7 +15,7 @@ fn main() -> ! { let mut ep = arduino_hal::Eeprom::new(dp.EEPROM); let ep_capacity = ep.capacity(); - ufmt::uwriteln!(&mut serial, "eeprom capacity is:{}\r", ep_capacity).unwrap(); + ufmt::uwriteln!(&mut serial, "eeprom capacity is:{}\r", ep_capacity).unwrap_infallible(); // KNOWN ISSUE: Avoid to read entire eeprom capacity at once // See: https://github.com/Rahix/avr-hal/issues/410 @@ -23,13 +24,13 @@ fn main() -> ! { let _start_address: u16 = 0; if ep.read(0, &mut data).is_err() { - ufmt::uwriteln!(&mut serial, "read eeprom fail:\r").unwrap(); + ufmt::uwriteln!(&mut serial, "read eeprom fail:\r").unwrap_infallible(); loop {} } - ufmt::uwriteln!(&mut serial, "Got:\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Got:\r").unwrap_infallible(); for i in data { - ufmt::uwriteln!(&mut serial, "{}", i).unwrap(); + ufmt::uwriteln!(&mut serial, "{}", i).unwrap_infallible(); } let _=ep.erase(0, arduino_hal::Eeprom::CAPACITY); diff --git a/examples/arduino-uno/src/bin/uno-hc-sr04.rs b/examples/arduino-uno/src/bin/uno-hc-sr04.rs index 1ba8be0ea6..336aa78d66 100644 --- a/examples/arduino-uno/src/bin/uno-hc-sr04.rs +++ b/examples/arduino-uno/src/bin/uno-hc-sr04.rs @@ -13,6 +13,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; #[arduino_hal::entry] @@ -49,7 +50,7 @@ fn main() -> ! { &mut serial, "Nothing was detected and jump to outer loop.\r" ) - .unwrap(); + .unwrap_infallible(); continue 'outer; } } @@ -72,7 +73,7 @@ fn main() -> ! { &mut serial, "Nothing was detected and jump to outer loop.\r" ) - .unwrap(); + .unwrap_infallible(); continue 'outer; } _ => temp_timer / 58, @@ -87,6 +88,6 @@ fn main() -> ! { "Hello, we are {} cms away from target!\r", value ) - .unwrap(); + .unwrap_infallible(); } } diff --git a/examples/arduino-uno/src/bin/uno-i2cdetect.rs b/examples/arduino-uno/src/bin/uno-i2cdetect.rs index d11d76ef04..54d7f37301 100644 --- a/examples/arduino-uno/src/bin/uno-i2cdetect.rs +++ b/examples/arduino-uno/src/bin/uno-i2cdetect.rs @@ -17,6 +17,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; #[arduino_hal::entry] @@ -32,12 +33,12 @@ fn main() -> ! { 50000, ); - ufmt::uwriteln!(&mut serial, "Write direction test:\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Write direction test:\r").unwrap_infallible(); i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Write) - .unwrap(); - ufmt::uwriteln!(&mut serial, "\r\nRead direction test:\r").unwrap(); + .unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "\r\nRead direction test:\r").unwrap_infallible(); i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Read) - .unwrap(); + .unwrap_infallible(); loop { arduino_hal::delay_ms(1000); diff --git a/examples/arduino-uno/src/bin/uno-infrared.rs b/examples/arduino-uno/src/bin/uno-infrared.rs index 93261e7f8c..6cc2a5a89c 100644 --- a/examples/arduino-uno/src/bin/uno-infrared.rs +++ b/examples/arduino-uno/src/bin/uno-infrared.rs @@ -27,6 +27,7 @@ use arduino_hal::{ pac::tc0::tccr0b::CS0_A, port::mode::{Floating, Input, Output}, port::Pin, + prelude::*, }; use avr_device::interrupt::Mutex; @@ -77,7 +78,7 @@ fn main() -> ! { // Enable interrupts globally unsafe { avr_device::interrupt::enable() }; - ufmt::uwriteln!(&mut serial, "Hello from Arduino and Irdroino!\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Hello from Arduino and Irdroino!\r").unwrap_infallible(); loop { if let Some(cmd) = avr_device::interrupt::free(|cs| CMD.borrow(cs).take()) { @@ -88,7 +89,7 @@ fn main() -> ! { cmd.cmd, cmd.repeat ) - .unwrap(); + .unwrap_infallible(); } arduino_hal::delay_ms(100); diff --git a/examples/arduino-uno/src/bin/uno-millis.rs b/examples/arduino-uno/src/bin/uno-millis.rs index f8228a901f..bcde86af8f 100644 --- a/examples/arduino-uno/src/bin/uno-millis.rs +++ b/examples/arduino-uno/src/bin/uno-millis.rs @@ -12,6 +12,7 @@ #![no_main] #![feature(abi_avr_interrupt)] +use arduino_hal::prelude::*; use core::cell; use panic_halt as _; @@ -84,9 +85,9 @@ fn main() -> ! { // Wait for a character and print current time once it is received loop { - let b = nb::block!(serial.read()).unwrap(); + let b = nb::block!(serial.read()).unwrap_infallible(); let time = millis(); - ufmt::uwriteln!(&mut serial, "Got {} after {} ms!\r", b, time).unwrap(); + ufmt::uwriteln!(&mut serial, "Got {} after {} ms!\r", b, time).unwrap_infallible(); } } diff --git a/examples/arduino-uno/src/bin/uno-panic.rs b/examples/arduino-uno/src/bin/uno-panic.rs index 26d0833d31..a2047094cf 100644 --- a/examples/arduino-uno/src/bin/uno-panic.rs +++ b/examples/arduino-uno/src/bin/uno-panic.rs @@ -7,6 +7,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; // Documentation build does not like this and fails with the following error, even though // everything is fine when compiling the binary. @@ -31,7 +32,7 @@ fn panic(info: &core::panic::PanicInfo) -> ! { let mut serial = arduino_hal::default_serial!(dp, pins, 57600); // Print out panic location - ufmt::uwriteln!(&mut serial, "Firmware panic!\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Firmware panic!\r").unwrap_infallible(); if let Some(loc) = info.location() { ufmt::uwriteln!( &mut serial, @@ -40,7 +41,7 @@ fn panic(info: &core::panic::PanicInfo) -> ! { loc.line(), loc.column(), ) - .unwrap(); + .unwrap_infallible(); } // Blink LED rapidly @@ -57,8 +58,8 @@ fn main() -> ! { let pins = arduino_hal::pins!(dp); let mut serial = arduino_hal::default_serial!(dp, pins, 57600); - ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap(); - ufmt::uwriteln!(&mut serial, "Panic in 5 seconds!\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "Panic in 5 seconds!\r").unwrap_infallible(); arduino_hal::delay_ms(5000); diff --git a/examples/arduino-uno/src/bin/uno-spi-feedback.rs b/examples/arduino-uno/src/bin/uno-spi-feedback.rs index f1c2c32b93..944e307efb 100644 --- a/examples/arduino-uno/src/bin/uno-spi-feedback.rs +++ b/examples/arduino-uno/src/bin/uno-spi-feedback.rs @@ -14,6 +14,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use arduino_hal::spi; use embedded_hal_v0::spi::FullDuplex; use panic_halt as _; @@ -38,11 +39,11 @@ fn main() -> ! { loop { // Send a byte - nb::block!(spi.send(0b00001111)).unwrap(); + nb::block!(spi.send(0b00001111)).unwrap_infallible(); // Because MISO is connected to MOSI, the read data should be the same - let data = nb::block!(spi.read()).unwrap(); + let data = nb::block!(spi.read()).unwrap_infallible(); - ufmt::uwriteln!(&mut serial, "data: {}\r", data).unwrap(); + ufmt::uwriteln!(&mut serial, "data: {}\r", data).unwrap_infallible(); arduino_hal::delay_ms(1000); } } diff --git a/examples/arduino-uno/src/bin/uno-timer.rs b/examples/arduino-uno/src/bin/uno-timer.rs index 9cacddb945..bb315464a5 100644 --- a/examples/arduino-uno/src/bin/uno-timer.rs +++ b/examples/arduino-uno/src/bin/uno-timer.rs @@ -11,6 +11,7 @@ and then modernized to account for API drift since 2020 use arduino_hal::port::mode::Output; use arduino_hal::port::Pin; +use arduino_hal::prelude::*; use avr_device::atmega328p::tc1::tccr1b::CS1_A; use avr_device::atmega328p::TC1; use core::mem; @@ -29,7 +30,7 @@ fn main() -> ! { let pins = arduino_hal::pins!(dp); let mut serial = arduino_hal::default_serial!(dp, pins, 57600); - ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap_infallible(); let led = pins.d13.into_output(); @@ -61,7 +62,7 @@ fn main() -> ! { "configured timer output compare register = {}", tmr1.ocr1a.read().bits() ) - .unwrap(); + .unwrap_infallible(); loop { avr_device::asm::sleep() @@ -76,7 +77,7 @@ pub const fn calc_overflow(clock_hz: u32, target_hz: u32, prescale: u32) -> u32 clock_hz / target_hz / prescale - 1 } -pub fn rig_timer>(tmr1: &TC1, serial: &mut W) { +pub fn rig_timer>(tmr1: &TC1, serial: &mut W) { /* https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf section 15.11 @@ -93,7 +94,7 @@ pub fn rig_timer>(tmr1: &TC1, seria CS1_A::PRESCALE_1024 => 1024, CS1_A::NO_CLOCK | CS1_A::EXT_FALLING | CS1_A::EXT_RISING => { uwriteln!(serial, "uhoh, code tried to set the clock source to something other than a static prescaler {}", CLOCK_SOURCE as usize) - .unwrap(); + .unwrap_infallible(); 1 } }; @@ -104,7 +105,7 @@ pub fn rig_timer>(tmr1: &TC1, seria "configuring timer output compare register = {}", ticks ) - .unwrap(); + .unwrap_infallible(); tmr1.tccr1a.write(|w| w.wgm1().bits(0b00)); tmr1.tccr1b.write(|w| { diff --git a/examples/arduino-uno/src/bin/uno-usart.rs b/examples/arduino-uno/src/bin/uno-usart.rs index 37bf4c722f..e46fac1c41 100644 --- a/examples/arduino-uno/src/bin/uno-usart.rs +++ b/examples/arduino-uno/src/bin/uno-usart.rs @@ -4,6 +4,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; use embedded_hal_v0::serial::Read; @@ -14,13 +15,13 @@ fn main() -> ! { let pins = arduino_hal::pins!(dp); let mut serial = arduino_hal::default_serial!(dp, pins, 57600); - ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap_infallible(); loop { // Read a byte from the serial connection - let b = nb::block!(serial.read()).unwrap(); + let b = nb::block!(serial.read()).unwrap_infallible(); // Answer - ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap(); + ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap_infallible(); } } diff --git a/examples/nano168/src/bin/nano168-adc.rs b/examples/nano168/src/bin/nano168-adc.rs index 98f575a4bf..4476f134c0 100644 --- a/examples/nano168/src/bin/nano168-adc.rs +++ b/examples/nano168/src/bin/nano168-adc.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; use arduino_hal::adc; @@ -18,8 +19,8 @@ fn main() -> ! { adc.read_blocking(&adc::channel::Gnd), // The ATmega168 chip does not support the temperature functionality. ); - ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap(); - ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap(); + ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap_infallible(); let a0 = pins.a0.into_analog_input(&mut adc); let a1 = pins.a1.into_analog_input(&mut adc); @@ -39,7 +40,7 @@ fn main() -> ! { ]; for (i, v) in values.iter().enumerate() { - ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap(); + ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap_infallible(); } // Nano clone (with ATmega168) has two more ADC pins A6 and A7. Accessing them works a bit different from @@ -48,9 +49,9 @@ fn main() -> ! { adc.read_blocking(&adc::channel::ADC6), adc.read_blocking(&adc::channel::ADC7), ); - ufmt::uwrite!(&mut serial, "A6: {} A7: {}", a6, a7).unwrap(); + ufmt::uwrite!(&mut serial, "A6: {} A7: {}", a6, a7).unwrap_infallible(); - ufmt::uwriteln!(&mut serial, "").unwrap(); + ufmt::uwriteln!(&mut serial, "").unwrap_infallible(); arduino_hal::delay_ms(1000); } } diff --git a/examples/nano168/src/bin/nano168-i2cdetect.rs b/examples/nano168/src/bin/nano168-i2cdetect.rs index 205f1205b0..dc69ef4cf6 100644 --- a/examples/nano168/src/bin/nano168-i2cdetect.rs +++ b/examples/nano168/src/bin/nano168-i2cdetect.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; #[arduino_hal::entry] @@ -16,10 +17,10 @@ fn main() -> ! { 50000, ); - ufmt::uwriteln!(&mut serial, "Write direction test:\r").unwrap(); - i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Write).unwrap(); - ufmt::uwriteln!(&mut serial, "\r\nRead direction test:\r").unwrap(); - i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Read).unwrap(); + ufmt::uwriteln!(&mut serial, "Write direction test:\r").unwrap_infallible(); + i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Write).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "\r\nRead direction test:\r").unwrap_infallible(); + i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Read).unwrap_infallible(); loop {} } diff --git a/examples/nano168/src/bin/nano168-ldr.rs b/examples/nano168/src/bin/nano168-ldr.rs index 7c34974ae4..1af1b1789a 100644 --- a/examples/nano168/src/bin/nano168-ldr.rs +++ b/examples/nano168/src/bin/nano168-ldr.rs @@ -25,6 +25,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; #[arduino_hal::entry] @@ -55,9 +56,9 @@ fn main() -> ! { }; // output to the serial - ufmt::uwrite!(&mut serial, "This is a {} room! – ", worded).unwrap(); - ufmt::uwrite!(&mut serial, "Raw value: {} ", sensor_value).unwrap(); - ufmt::uwriteln!(&mut serial, "").unwrap(); + ufmt::uwrite!(&mut serial, "This is a {} room! – ", worded).unwrap_infallible(); + ufmt::uwrite!(&mut serial, "Raw value: {} ", sensor_value).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "").unwrap_infallible(); // wait for half a second then measure again arduino_hal::delay_ms(500); diff --git a/examples/nano168/src/bin/nano168-millis.rs b/examples/nano168/src/bin/nano168-millis.rs index e31e433846..a7b390d7c9 100644 --- a/examples/nano168/src/bin/nano168-millis.rs +++ b/examples/nano168/src/bin/nano168-millis.rs @@ -10,6 +10,7 @@ #![no_main] #![feature(abi_avr_interrupt)] +use arduino_hal::prelude::*; use core::cell; use panic_halt as _; @@ -82,10 +83,10 @@ fn main() -> ! { // Wait for a character and print current time once it is received loop { - let b = nb::block!(serial.read()).unwrap(); + let b = nb::block!(serial.read()).unwrap_infallible(); let time = millis(); - ufmt::uwriteln!(&mut serial, "Got {} after {} ms!\r", b, time).unwrap(); + ufmt::uwriteln!(&mut serial, "Got {} after {} ms!\r", b, time).unwrap_infallible(); } } diff --git a/examples/nano168/src/bin/nano168-usart.rs b/examples/nano168/src/bin/nano168-usart.rs index c5f3d015e2..a8c2339555 100644 --- a/examples/nano168/src/bin/nano168-usart.rs +++ b/examples/nano168/src/bin/nano168-usart.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; use embedded_hal_v0::serial::Read; @@ -11,13 +12,13 @@ fn main() -> ! { let pins = arduino_hal::pins!(dp); let mut serial = arduino_hal::default_serial!(dp, pins, 57600); - ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap_infallible(); loop { // Read a byte from the serial connection - let b = nb::block!(serial.read()).unwrap(); + let b = nb::block!(serial.read()).unwrap_infallible(); // Answer - ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap(); + ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap_infallible(); } } diff --git a/examples/nano168/src/bin/nano168-watchdog.rs b/examples/nano168/src/bin/nano168-watchdog.rs index 86c86f1e03..aac0426ea3 100644 --- a/examples/nano168/src/bin/nano168-watchdog.rs +++ b/examples/nano168/src/bin/nano168-watchdog.rs @@ -2,6 +2,7 @@ #![no_main] use arduino_hal::hal::wdt; +use arduino_hal::prelude::*; use panic_halt as _; #[arduino_hal::entry] @@ -13,22 +14,22 @@ fn main() -> ! { let mut led = pins.d13.into_output(); led.set_high(); - ufmt::uwriteln!(&mut serial, "Setup started...").unwrap(); + ufmt::uwriteln!(&mut serial, "Setup started...").unwrap_infallible(); for _ in 0..20 { - ufmt::uwrite!(&mut serial, ".").unwrap(); + ufmt::uwrite!(&mut serial, ".").unwrap_infallible(); led.toggle(); arduino_hal::delay_ms(100); } - ufmt::uwriteln!(&mut serial, "\nEnabling watchdog...").unwrap(); + ufmt::uwriteln!(&mut serial, "\nEnabling watchdog...").unwrap_infallible(); let mut watchdog = wdt::Wdt::new(dp.WDT, &dp.CPU.mcusr); watchdog.start(wdt::Timeout::Ms4000).unwrap(); - ufmt::uwriteln!(&mut serial, "\nWatchdog on watch...").unwrap(); + ufmt::uwriteln!(&mut serial, "\nWatchdog on watch...").unwrap_infallible(); loop { - ufmt::uwriteln!(&mut serial, "\nWaiting...").unwrap(); + ufmt::uwriteln!(&mut serial, "\nWaiting...").unwrap_infallible(); led.toggle(); arduino_hal::delay_ms(1000); diff --git a/examples/sparkfun-promicro/src/bin/promicro-adc.rs b/examples/sparkfun-promicro/src/bin/promicro-adc.rs index 00696efd8f..f7340aaf0a 100644 --- a/examples/sparkfun-promicro/src/bin/promicro-adc.rs +++ b/examples/sparkfun-promicro/src/bin/promicro-adc.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; use arduino_hal::adc; @@ -18,9 +19,9 @@ fn main() -> ! { adc.read_blocking(&adc::channel::Gnd), adc.read_blocking(&adc::channel::Temperature), ); - ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap(); - ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap(); - ufmt::uwriteln!(&mut serial, "Temperature: {}", tmp).unwrap(); + ufmt::uwriteln!(&mut serial, "Vbandgap: {}", vbg).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "Ground: {}", gnd).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "Temperature: {}", tmp).unwrap_infallible(); let a0 = pins.a0.into_analog_input(&mut adc); let a1 = pins.a1.into_analog_input(&mut adc); @@ -36,10 +37,10 @@ fn main() -> ! { ]; for (i, v) in values.iter().enumerate() { - ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap(); + ufmt::uwrite!(&mut serial, "A{}: {} ", i, v).unwrap_infallible(); } - ufmt::uwriteln!(&mut serial, "").unwrap(); + ufmt::uwriteln!(&mut serial, "").unwrap_infallible(); arduino_hal::delay_ms(1000); } } diff --git a/examples/sparkfun-promicro/src/bin/promicro-i2cdetect.rs b/examples/sparkfun-promicro/src/bin/promicro-i2cdetect.rs index 06f99afddc..8a3496b472 100644 --- a/examples/sparkfun-promicro/src/bin/promicro-i2cdetect.rs +++ b/examples/sparkfun-promicro/src/bin/promicro-i2cdetect.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; #[arduino_hal::entry] @@ -16,10 +17,10 @@ fn main() -> ! { 50000, ); - ufmt::uwriteln!(&mut serial, "Write direction test:\r").unwrap(); - i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Write).unwrap(); - ufmt::uwriteln!(&mut serial, "\r\nRead direction test:\r").unwrap(); - i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Read).unwrap(); + ufmt::uwriteln!(&mut serial, "Write direction test:\r").unwrap_infallible(); + i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Write).unwrap_infallible(); + ufmt::uwriteln!(&mut serial, "\r\nRead direction test:\r").unwrap_infallible(); + i2c.i2cdetect(&mut serial, arduino_hal::i2c::Direction::Read).unwrap_infallible(); loop {} } diff --git a/examples/sparkfun-promicro/src/bin/promicro-spi-feedback.rs b/examples/sparkfun-promicro/src/bin/promicro-spi-feedback.rs index 6bad51aac7..00cb37406e 100644 --- a/examples/sparkfun-promicro/src/bin/promicro-spi-feedback.rs +++ b/examples/sparkfun-promicro/src/bin/promicro-spi-feedback.rs @@ -15,6 +15,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use arduino_hal::spi; use embedded_hal_v0::spi::FullDuplex; use panic_halt as _; @@ -39,11 +40,11 @@ fn main() -> ! { loop { // Send a byte - nb::block!(spi.send(0b00001111)).unwrap(); + nb::block!(spi.send(0b00001111)).unwrap_infallible(); // Because MISO is connected to MOSI, the read data should be the same - let data = nb::block!(spi.read()).unwrap(); + let data = nb::block!(spi.read()).unwrap_infallible(); - ufmt::uwriteln!(&mut serial, "data: {}\r", data).unwrap(); + ufmt::uwriteln!(&mut serial, "data: {}\r", data).unwrap_infallible(); arduino_hal::delay_ms(1000); } } diff --git a/examples/sparkfun-promicro/src/bin/promicro-usart.rs b/examples/sparkfun-promicro/src/bin/promicro-usart.rs index c5f3d015e2..a8c2339555 100644 --- a/examples/sparkfun-promicro/src/bin/promicro-usart.rs +++ b/examples/sparkfun-promicro/src/bin/promicro-usart.rs @@ -1,6 +1,7 @@ #![no_std] #![no_main] +use arduino_hal::prelude::*; use panic_halt as _; use embedded_hal_v0::serial::Read; @@ -11,13 +12,13 @@ fn main() -> ! { let pins = arduino_hal::pins!(dp); let mut serial = arduino_hal::default_serial!(dp, pins, 57600); - ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap(); + ufmt::uwriteln!(&mut serial, "Hello from Arduino!\r").unwrap_infallible(); loop { // Read a byte from the serial connection - let b = nb::block!(serial.read()).unwrap(); + let b = nb::block!(serial.read()).unwrap_infallible(); // Answer - ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap(); + ufmt::uwriteln!(&mut serial, "Got {}!\r", b).unwrap_infallible(); } }