static_pins/src/lib.rs

53 lines
955 B
Rust

#![no_std]
pub use static_pins_macros::*;
pub trait StaticPinOps {
type Port;
const PIN_NUM: u8;
const PIN_POS: u8;
fn into_input();
fn into_output();
fn into_output_high();
fn into_pull_up_input();
fn write(data: u8);
fn read() -> u8;
fn is_low() -> bool;
fn is_high() -> bool;
fn set_low();
fn set_high();
}
#[macro_export]
macro_rules! impl_static_pins {
($($pin:expr), +) => {
pub trait StaticPinOps {
type Port;
const PIN_NUM: u8;
const PIN_POS: u8;
fn into_input();
fn into_output();
fn into_output_high();
fn into_pull_up_input();
fn write(data: u8);
fn read() -> u8;
fn is_low() -> bool;
fn is_high() -> bool;
fn set_low();
fn set_high();
}
$(
impl_static_pin!($pin);
)+
}
}