Select Git revision
openocd.cfg
led.rs 3.04 KiB
//! On-board user LEDs
use core::ops;
use prelude::*;
use gpio::gpioa::{self, PA5, PAx};
use gpio::{Output, PushPull};
/// LED
pub type LD1 = PA5<Output<PushPull>>;
// /// Array of all the user LEDs on the board
// pub struct Leds {
// leds: [Led; 8],
// }
// impl Leds {
// /// Initializes all the user LEDs
// pub fn new(mut gpioa: gpioa::Parts) -> Self {
// let n = gpioe
// .pe9
// .into_push_pull_output(&mut gpioe.moder, &mut gpioe.otyper);
// let ne = gpioe
// .pe10
// .into_push_pull_output(&mut gpioe.moder, &mut gpioe.otyper);
// let e = gpioe
// .pe11
// .into_push_pull_output(&mut gpioe.moder, &mut gpioe.otyper);
// let se = gpioe
// .pe12
// .into_push_pull_output(&mut gpioe.moder, &mut gpioe.otyper);
// let s = gpioe
// .pe13
// .into_push_pull_output(&mut gpioe.moder, &mut gpioe.otyper);
// let sw = gpioe
// .pe14
// .into_push_pull_output(&mut gpioe.moder, &mut gpioe.otyper);
// let w = gpioe
// .pe15
// .into_push_pull_output(&mut gpioe.moder, &mut gpioe.otyper);
// let nw = gpioe
// .pe8
// .into_push_pull_output(&mut gpioe.moder, &mut gpioe.otyper);
// Leds {
// leds: [
// n.into(),
// ne.into(),
// e.into(),
// se.into(),
// s.into(),
// sw.into(),
// w.into(),
// nw.into(),
// ],
// }
// }
// }
// impl ops::Deref for Leds {
// type Target = [Led];
// fn deref(&self) -> &[Led] {
// &self.leds
// }
// }
// impl ops::DerefMut for Leds {
// fn deref_mut(&mut self) -> &mut [Led] {
// &mut self.leds
// }
// }
// impl ops::Index<usize> for Leds {
// type Output = Led;
// fn index(&self, i: usize) -> &Led {
// &self.leds[i]
// }
// }
// impl ops::Index<Direction> for Leds {
// type Output = Led;
// fn index(&self, d: Direction) -> &Led {
// &self.leds[d as usize]
// }
// }
// impl ops::IndexMut<usize> for Leds {
// fn index_mut(&mut self, i: usize) -> &mut Led {
// &mut self.leds[i]
// }
// }
// impl ops::IndexMut<Direction> for Leds {
// fn index_mut(&mut self, d: Direction) -> &mut Led {
// &mut self.leds[d as usize]
// }
// }
/// One of the on-board user LEDs
pub struct Led {
pax: PAx<Output<PushPull>>,
}
macro_rules! ctor {
($($ldx:ident),+) => {
$(
impl Into<Led> for $ldx {
fn into(self) -> Led {
Led {
pax: self.downgrade(),
}
}
}
)+
}
}
ctor!(LD1);
impl Led {
/// Turns the LED off
pub fn off(&mut self) {
self.pax.set_low()
}
/// Turns the LED on
pub fn on(&mut self) {
self.pax.set_high()
}
}