Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion hil-test/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@ harness = false
name = "get_time"
harness = false

[[test]]
name = "delay"
harness = false

[dependencies]
cfg-if = "1.0.0"
critical-section = "1.1.2"
Expand Down Expand Up @@ -136,4 +140,4 @@ debug-assertions = false
incremental = false
opt-level = 3
lto = "fat"
overflow-checks = false
overflow-checks = false
80 changes: 80 additions & 0 deletions hil-test/tests/delay.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
//! Delay Test

#![no_std]
#![no_main]

use defmt_rtt as _;
use embedded_hal::delay::DelayNs;
use esp_backtrace as _;
use esp_hal::{clock::ClockControl, delay::Delay, peripherals::Peripherals, system::SystemControl};

struct Context {
delay: Delay,
}

impl Context {
pub fn init() -> Self {
let peripherals = Peripherals::take();
let system = SystemControl::new(peripherals.SYSTEM);
let clocks = ClockControl::boot_defaults(system.clock_control).freeze();

let delay = Delay::new(&clocks);

Context { delay }
}
}

#[cfg(test)]
#[embedded_test::tests]
mod tests {
use super::*;

#[init]
fn init() -> Context {
Context::init()
}

#[test]
#[timeout(1)]
fn delay_ns(mut ctx: Context) {
let t1 = esp_hal::time::current_time();
ctx.delay.delay_ns(600_000_000);
let t2 = esp_hal::time::current_time();

assert!(t2 > t1);
assert!((t2 - t1).to_nanos() >= 600_000_000u64);
}

#[test]
#[timeout(1)]
fn delay_700millis(ctx: Context) {
let t1 = esp_hal::time::current_time();
ctx.delay.delay_millis(700);
let t2 = esp_hal::time::current_time();

assert!(t2 > t1);
assert!((t2 - t1).to_millis() >= 700u64);
}

#[test]
#[timeout(2)]
fn delay_1_500_000us(mut ctx: Context) {
let t1 = esp_hal::time::current_time();
ctx.delay.delay_us(1_500_000);
let t2 = esp_hal::time::current_time();

assert!(t2 > t1);
assert!((t2 - t1).to_micros() >= 1_500_000u64);
}

#[test]
#[timeout(5)]
fn delay_3_000ms(mut ctx: Context) {
let t1 = esp_hal::time::current_time();
ctx.delay.delay_ms(3000);
let t2 = esp_hal::time::current_time();

assert!(t2 > t1);
assert!((t2 - t1).to_millis() >= 3000u64);
}
}
2 changes: 1 addition & 1 deletion hil-test/tests/gpio.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ use esp_hal::{
gpio::{GpioPin, Input, Io, Output, OutputPin, PullDown, PushPull, Unknown},
macros::handler,
peripherals::Peripherals,
timer::TimerGroup,
system::SystemControl,
timer::TimerGroup,
};

static COUNTER: Mutex<RefCell<u32>> = Mutex::new(RefCell::new(0));
Expand Down
2 changes: 1 addition & 1 deletion hil-test/tests/uart_async.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ use esp_hal::{
clock::ClockControl,
gpio::Io,
peripherals::{Peripherals, UART0},
system::SystemControl,
uart::{config::Config, TxRxPins, Uart, UartRx, UartTx},
Async,
system::SystemControl,
};

struct Context {
Expand Down