diff --git a/Cargo.toml b/Cargo.toml index 238410d..927d3dd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,4 +7,8 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +log = "0.4.11" +pretty_env_logger = "0.4.0" rppal = "0.11.3" +tokio = { version = "0.2", features = ["macros"] } +warp = "0.2.5" diff --git a/src/main.rs b/src/main.rs index 3c1ef60..032532e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,26 +1,31 @@ use std::thread::sleep; use std::time::Duration; -use rppal::gpio::{Gpio, Trigger}; +use log::info; +use rppal::gpio::{Gpio, Level, Trigger}; +use warp::Filter; const BUTTON_PIN: u8 = 26; -fn main() { +fn button_pressed(_level: Level) { + println!("pushed"); + sleep(Duration::from_millis(25)); +} + +#[tokio::main] +async fn main() { + pretty_env_logger::init(); + let gpio = Gpio::new().expect("gpio init"); let mut pin = gpio.get(BUTTON_PIN).expect("pin init").into_input_pulldown(); - pin.set_interrupt(Trigger::RisingEdge).expect("set interrupt"); + pin.set_async_interrupt(Trigger::RisingEdge, button_pressed).expect("set interrupt"); - let mut count = 0; - loop { - match pin.poll_interrupt(true, Some(Duration::from_secs(5))) { - Ok(Some(_)) => { - count += 1; - println!("pushed: {}", count); - sleep(Duration::from_millis(25)); - }, - Ok(None) => println!("time"), - err => { err.expect("poll"); } - } - } + // GET / + let root = warp::path::end() + .and(warp::get()) + .map(|| info!("GET /")).untuple_one() + .and(warp::fs::file("./static/main.html")); + + warp::serve(root).run(([0, 0, 0, 0], 8060)).await; } diff --git a/static/main.html b/static/main.html new file mode 100644 index 0000000..21218b2 --- /dev/null +++ b/static/main.html @@ -0,0 +1,9 @@ + + + + + Fáfnir Doorbell + + + +