From 72165e01224e2c81c526599df088795ea7fb3390 Mon Sep 17 00:00:00 2001 From: Ahmed Charles Date: Thu, 24 Feb 2022 12:44:08 -0800 Subject: [PATCH] Update embedded-hal dependency to 1.0.0-alpha.7 --- Cargo.toml | 6 ++--- src/delay.rs | 72 ++++++---------------------------------------------- 2 files changed, 11 insertions(+), 67 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 1567e128..4b5deaf4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "riscv" -version = "0.7.0" +version = "0.8.0-alpha.7" repository = "https://github.com/rust-embedded/riscv" authors = ["The RISC-V Team "] categories = ["embedded", "hardware-support", "no-std"] @@ -17,8 +17,8 @@ targets = [ [dependencies] bare-metal = "1.0.0" -bit_field = "0.10.0" -embedded-hal = "0.2.6" +bit_field = "0.10.1" +embedded-hal = "=1.0.0-alpha.7" [build-dependencies] riscv-target = "0.1.2" diff --git a/src/delay.rs b/src/delay.rs index c4647440..5d6f7472 100644 --- a/src/delay.rs +++ b/src/delay.rs @@ -1,5 +1,6 @@ use crate::register::mcycle; -use embedded_hal::blocking::delay::{DelayMs, DelayUs}; +use core::convert::Infallible; +use embedded_hal::delay::blocking::DelayUs; /// Machine mode cycle counter (`mcycle`) as a delay provider #[derive(Copy, Clone)] @@ -15,71 +16,14 @@ impl McycleDelay { } } -impl DelayUs for McycleDelay { +impl DelayUs for McycleDelay { + type Error = Infallible; + #[inline] - fn delay_us(&mut self, us: u64) { + fn delay_us(&mut self, us: u32) -> Result<(), Self::Error> { let t0 = mcycle::read64(); - let clock = (us * (self.ticks_second as u64)) / 1_000_000; + let clock = ((us as u64) * (self.ticks_second as u64)) / 1_000_000; while mcycle::read64().wrapping_sub(t0) <= clock {} - } -} - -impl DelayUs for McycleDelay { - #[inline(always)] - fn delay_us(&mut self, us: u32) { - self.delay_us(us as u64) - } -} - -// Implemented for constructions like `delay.delay_us(50_000);` -impl DelayUs for McycleDelay { - #[inline(always)] - fn delay_us(&mut self, us: i32) { - assert!(us >= 0); - self.delay_us(us as u32); - } -} - -impl DelayUs for McycleDelay { - #[inline(always)] - fn delay_us(&mut self, us: u16) { - self.delay_us(us as u32) - } -} - -impl DelayUs for McycleDelay { - #[inline(always)] - fn delay_us(&mut self, us: u8) { - self.delay_us(us as u32) - } -} - -impl DelayMs for McycleDelay { - #[inline] - fn delay_ms(&mut self, ms: u32) { - self.delay_us((ms as u64) * 1000) - } -} - -// Implemented for constructions like `delay.delay_ms(50_000);` -impl DelayMs for McycleDelay { - #[inline(always)] - fn delay_ms(&mut self, ms: i32) { - assert!(ms >= 0); - self.delay_ms(ms as u32); - } -} - -impl DelayMs for McycleDelay { - #[inline(always)] - fn delay_ms(&mut self, ms: u16) { - self.delay_ms(ms as u32) - } -} - -impl DelayMs for McycleDelay { - #[inline(always)] - fn delay_ms(&mut self, ms: u8) { - self.delay_ms(ms as u32) + Ok(()) } }