gpiote: take borrow instead of owned pin.

This makes it possible to read the pin while the channel is created.
This commit is contained in:
Dario Nieuwenhuis 2020-09-29 04:17:32 +02:00
parent 32a9b3f4ae
commit c81d626254
2 changed files with 8 additions and 8 deletions

View file

@ -51,11 +51,11 @@ impl Gpiote {
} }
} }
pub fn new_input_channel<T>( pub fn new_input_channel<'a, T>(
&self, &'a self,
pin: GpioPin<Input<T>>, pin: &'a GpioPin<Input<T>>,
trigger_mode: EventPolarity, trigger_mode: EventPolarity,
) -> Result<Channel<'_>, NewChannelError> { ) -> Result<Channel<'a>, NewChannelError> {
interrupt::free(|_| { interrupt::free(|_| {
unsafe { INSTANCE = self }; unsafe { INSTANCE = self };

View file

@ -28,7 +28,7 @@ async fn run() {
let pin1 = port0.p0_11.into_pullup_input().degrade(); let pin1 = port0.p0_11.into_pullup_input().degrade();
let button1 = async { let button1 = async {
let ch = g let ch = g
.new_input_channel(pin1, gpiote::EventPolarity::HiToLo) .new_input_channel(&pin1, gpiote::EventPolarity::HiToLo)
.dewrap(); .dewrap();
loop { loop {
@ -40,7 +40,7 @@ async fn run() {
let pin2 = port0.p0_12.into_pullup_input().degrade(); let pin2 = port0.p0_12.into_pullup_input().degrade();
let button2 = async { let button2 = async {
let ch = g let ch = g
.new_input_channel(pin2, gpiote::EventPolarity::LoToHi) .new_input_channel(&pin2, gpiote::EventPolarity::LoToHi)
.dewrap(); .dewrap();
loop { loop {
@ -52,7 +52,7 @@ async fn run() {
let pin3 = port0.p0_24.into_pullup_input().degrade(); let pin3 = port0.p0_24.into_pullup_input().degrade();
let button3 = async { let button3 = async {
let ch = g let ch = g
.new_input_channel(pin3, gpiote::EventPolarity::Toggle) .new_input_channel(&pin3, gpiote::EventPolarity::Toggle)
.dewrap(); .dewrap();
loop { loop {
@ -64,7 +64,7 @@ async fn run() {
let pin4 = port0.p0_25.into_pullup_input().degrade(); let pin4 = port0.p0_25.into_pullup_input().degrade();
let button4 = async { let button4 = async {
let ch = g let ch = g
.new_input_channel(pin4, gpiote::EventPolarity::Toggle) .new_input_channel(&pin4, gpiote::EventPolarity::Toggle)
.dewrap(); .dewrap();
loop { loop {