From 6c30e2d2f7e2809bcc8eee04da1cf7a8f4a4301c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CMunteanu?= Date: Wed, 31 Jul 2024 18:54:31 +0300 Subject: [PATCH] updated version with tests --- apis/peripherals/adc/src/lib.rs | 6 ++++-- apis/peripherals/adc/src/tests.rs | 20 +++++++++++++------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/apis/peripherals/adc/src/lib.rs b/apis/peripherals/adc/src/lib.rs index c7406574b..1229dfb05 100644 --- a/apis/peripherals/adc/src/lib.rs +++ b/apis/peripherals/adc/src/lib.rs @@ -23,8 +23,10 @@ impl Adc { .and(Ok(())) } //Returns the number of channels - pub fn get_number_of_channels() -> Result { - S::command(DRIVER_NUM, EXISTS, 0, 0).to_result::() + pub fn get_number_of_channels() -> Result { + S::command(DRIVER_NUM, EXISTS, 0, 0) + .to_result::() + .and_then(|number_channels| number_channels.try_into().map_err(|_| ErrorCode::Fail)) } // Initiate a sample reading diff --git a/apis/peripherals/adc/src/tests.rs b/apis/peripherals/adc/src/tests.rs index d27ebc2a7..80026c92d 100644 --- a/apis/peripherals/adc/src/tests.rs +++ b/apis/peripherals/adc/src/tests.rs @@ -25,11 +25,13 @@ fn read_single_sample() { let driver = fake::Adc::new(); kernel.add_driver(&driver); - assert_eq!(Adc::read_single_sample(), Ok(())); + let ch = Adc::get_number_of_channels().unwrap(); + + assert_eq!(Adc::read_single_sample(ch), Ok(())); assert!(driver.is_busy()); - assert_eq!(Adc::read_single_sample(), Err(ErrorCode::Busy)); - assert_eq!(Adc::read_single_sample_sync(), Err(ErrorCode::Busy)); + assert_eq!(Adc::read_single_sample(ch), Err(ErrorCode::Busy)); + assert_eq!(Adc::read_single_sample_sync(ch), Err(ErrorCode::Busy)); } #[test] @@ -43,18 +45,20 @@ fn register_unregister_listener() { sample.set(Some(adc_val)); }); share::scope(|subscribe| { - assert_eq!(Adc::read_single_sample(), Ok(())); + let ch = Adc::get_number_of_channels().unwrap(); + + assert_eq!(Adc::read_single_sample(ch), Ok(())); driver.set_value(100); assert_eq!(fake::Syscalls::yield_no_wait(), YieldNoWaitReturn::NoUpcall); assert_eq!(Adc::register_listener(&listener, subscribe), Ok(())); - assert_eq!(Adc::read_single_sample(), Ok(())); + assert_eq!(Adc::read_single_sample(ch), Ok(())); driver.set_value(100); assert_eq!(fake::Syscalls::yield_no_wait(), YieldNoWaitReturn::Upcall); assert_eq!(sample.get(), Some(100)); Adc::unregister_listener(); - assert_eq!(Adc::read_single_sample(), Ok(())); + assert_eq!(Adc::read_single_sample(ch), Ok(())); driver.set_value(100); assert_eq!(fake::Syscalls::yield_no_wait(), YieldNoWaitReturn::NoUpcall); }); @@ -66,6 +70,8 @@ fn read_single_sample_sync() { let driver = fake::Adc::new(); kernel.add_driver(&driver); + let ch = Adc::get_number_of_channels().unwrap(); + driver.set_value_sync(1000); - assert_eq!(Adc::read_single_sample_sync(), Ok(1000)); + assert_eq!(Adc::read_single_sample_sync(ch), Ok(1000)); }