From df5ba727f2c8bd3f2a67f51a3f43d7f47b011b1c Mon Sep 17 00:00:00 2001 From: huntc Date: Sat, 5 Feb 2022 08:05:23 +1100 Subject: [PATCH] Further API simplification for the single seq scenario --- embassy-nrf/src/pwm.rs | 4 ++-- examples/nrf/src/bin/pwm_sequence.rs | 5 ++--- examples/nrf/src/bin/pwm_sequence_ppi.rs | 5 ++--- examples/nrf/src/bin/pwm_sequence_ws2812b.rs | 5 ++--- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/embassy-nrf/src/pwm.rs b/embassy-nrf/src/pwm.rs index 895292bc8..01b1f48d9 100644 --- a/embassy-nrf/src/pwm.rs +++ b/embassy-nrf/src/pwm.rs @@ -323,9 +323,9 @@ pub struct SingleSequencer<'d, 's, T: Instance> { impl<'d, 's, T: Instance> SingleSequencer<'d, 's, T> { /// Create a new sequencer - pub fn new(pwm: &'s mut SequencePwm<'d, T>, sequence: Sequence<'s>) -> Self { + pub fn new(pwm: &'s mut SequencePwm<'d, T>, words: &'s [u16], config: SequenceConfig) -> Self { Self { - sequencer: Sequencer::new(pwm, sequence, None), + sequencer: Sequencer::new(pwm, Sequence::new(words, config), None), } } diff --git a/examples/nrf/src/bin/pwm_sequence.rs b/examples/nrf/src/bin/pwm_sequence.rs index a76b1110b..f06ea0b19 100644 --- a/examples/nrf/src/bin/pwm_sequence.rs +++ b/examples/nrf/src/bin/pwm_sequence.rs @@ -9,7 +9,7 @@ use embassy::executor::Spawner; use embassy::time::{Duration, Timer}; use embassy_nrf::gpio::NoPin; use embassy_nrf::pwm::{ - Config, Prescaler, Sequence, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer, + Config, Prescaler, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer, }; use embassy_nrf::Peripherals; @@ -31,8 +31,7 @@ async fn main(_spawner: Spawner, p: Peripherals) { p.PWM0, p.P0_13, NoPin, NoPin, NoPin, config, )); - let sequence = Sequence::new(&seq_words, seq_config); - let sequencer = SingleSequencer::new(&mut pwm, sequence); + let sequencer = SingleSequencer::new(&mut pwm, &seq_words, seq_config); unwrap!(sequencer.start(SingleSequenceMode::Times(1))); // we can abort a sequence if we need to before its complete with pwm.stop() diff --git a/examples/nrf/src/bin/pwm_sequence_ppi.rs b/examples/nrf/src/bin/pwm_sequence_ppi.rs index 7e58c37e6..c25c5e10d 100644 --- a/examples/nrf/src/bin/pwm_sequence_ppi.rs +++ b/examples/nrf/src/bin/pwm_sequence_ppi.rs @@ -12,7 +12,7 @@ use embassy_nrf::gpio::{Input, NoPin, Pull}; use embassy_nrf::gpiote::{InputChannel, InputChannelPolarity}; use embassy_nrf::ppi::Ppi; use embassy_nrf::pwm::{ - Config, Prescaler, Sequence, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer, + Config, Prescaler, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer, }; use embassy_nrf::Peripherals; @@ -53,8 +53,7 @@ async fn main(_spawner: Spawner, p: Peripherals) { let start = unsafe { pwm.task_start_seq0() }; let stop = unsafe { pwm.task_stop() }; - let sequence = Sequence::new(&seq_words, seq_config); - let sequencer = SingleSequencer::new(&mut pwm, sequence); + let sequencer = SingleSequencer::new(&mut pwm, &seq_words, seq_config); unwrap!(sequencer.start(SingleSequenceMode::Infinite)); let mut ppi = Ppi::new_one_to_one(p.PPI_CH1, button1.event_in(), start); diff --git a/examples/nrf/src/bin/pwm_sequence_ws2812b.rs b/examples/nrf/src/bin/pwm_sequence_ws2812b.rs index 71ddd5283..d1a027a7e 100644 --- a/examples/nrf/src/bin/pwm_sequence_ws2812b.rs +++ b/examples/nrf/src/bin/pwm_sequence_ws2812b.rs @@ -9,7 +9,7 @@ use embassy::executor::Spawner; use embassy::time::{Duration, Timer}; use embassy_nrf::gpio::NoPin; use embassy_nrf::pwm::{ - Config, Prescaler, Sequence, SequenceConfig, SequenceLoad, SequencePwm, SingleSequenceMode, + Config, Prescaler, SequenceConfig, SequenceLoad, SequencePwm, SingleSequenceMode, SingleSequencer, }; use embassy_nrf::Peripherals; @@ -54,8 +54,7 @@ async fn main(_spawner: Spawner, p: Peripherals) { let mut bit_value = T0H; loop { - let sequence0 = Sequence::new(&seq_words, seq_config.clone()); - let sequences = SingleSequencer::new(&mut pwm, sequence0); + let sequences = SingleSequencer::new(&mut pwm, &seq_words, seq_config.clone()); unwrap!(sequences.start(SingleSequenceMode::Times(1))); Timer::after(Duration::from_millis(50)).await;