diff --git a/src/feedback.rs b/src/feedback.rs index 86fdad5..c381098 100644 --- a/src/feedback.rs +++ b/src/feedback.rs @@ -8,10 +8,10 @@ use tokio::{join, time::sleep}; use crate::hardware::{Buzzer, StatusLed}; #[cfg(not(feature = "mock_pi"))] -use crate::{gpio_buzzer::GPIOBuzzer, spi_led::SpiLed}; +use crate::{hardware::GPIOBuzzer, hardware::SpiLed}; #[cfg(feature = "mock_pi")] -use crate::mock::{MockBuzzer, MockLed}; +use crate::hardware::{MockBuzzer, MockLed}; const LED_BLINK_DURATION: Duration = Duration::from_secs(1); diff --git a/src/gpio_buzzer.rs b/src/hardware/gpio_buzzer.rs similarity index 100% rename from src/gpio_buzzer.rs rename to src/hardware/gpio_buzzer.rs diff --git a/src/hotspot.rs b/src/hardware/hotspot.rs similarity index 100% rename from src/hotspot.rs rename to src/hardware/hotspot.rs diff --git a/src/mock.rs b/src/hardware/mock.rs similarity index 100% rename from src/mock.rs rename to src/hardware/mock.rs diff --git a/src/hardware.rs b/src/hardware/mod.rs similarity index 77% rename from src/hardware.rs rename to src/hardware/mod.rs index 21db1d7..108d810 100644 --- a/src/hardware.rs +++ b/src/hardware/mod.rs @@ -1,11 +1,14 @@ use anyhow::Result; use std::time::Duration; -#[cfg(feature = "mock_pi")] -use crate::mock::MockHotspot; +mod gpio_buzzer; +mod hotspot; +mod mock; +mod spi_led; -#[cfg(not(feature = "mock_pi"))] -use crate::hotspot::NMHotspot; +pub use gpio_buzzer::GPIOBuzzer; +pub use mock::{MockBuzzer, MockHotspot, MockLed}; +pub use spi_led::SpiLed; pub trait StatusLed { fn turn_off(&mut self) -> Result<()>; @@ -32,11 +35,11 @@ pub trait Hotspot { pub fn create_hotspot() -> Result { #[cfg(feature = "mock_pi")] { - Ok(MockHotspot {}) + Ok(mock::MockHotspot {}) } #[cfg(not(feature = "mock_pi"))] { - NMHotspot::new_from_env() + hotspot::NMHotspot::new_from_env() } } diff --git a/src/spi_led.rs b/src/hardware/spi_led.rs similarity index 100% rename from src/spi_led.rs rename to src/hardware/spi_led.rs diff --git a/src/main.rs b/src/main.rs index 2453d42..5d737a0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,12 +1,8 @@ #![allow(dead_code)] -use activity_fairing::{ActivityNotifier, spawn_idle_watcher}; use anyhow::Result; use feedback::{Feedback, FeedbackImpl}; -use hardware::{Hotspot, create_hotspot}; -use id_store::IDStore; use log::{error, info, warn}; -use pm3::run_pm3; use std::{ env::{self, args}, sync::Arc, @@ -24,20 +20,15 @@ use tokio::{ }; use webserver::start_webserver; -mod activity_fairing; +use crate::{hardware::{create_hotspot, Hotspot}, pm3::run_pm3, store::IDStore, webserver::{spawn_idle_watcher, ActivityNotifier}}; + mod feedback; -mod gpio_buzzer; mod hardware; -mod hotspot; -mod id_mapping; -mod id_store; -mod logger; -mod mock; -mod parser; mod pm3; -mod spi_led; +mod logger; mod tally_id; mod webserver; +mod store; const STORE_PATH: &str = "./data.json"; diff --git a/src/pm3/mod.rs b/src/pm3/mod.rs new file mode 100644 index 0000000..3d67335 --- /dev/null +++ b/src/pm3/mod.rs @@ -0,0 +1,4 @@ +mod runner; +mod parser; + +pub use runner::run_pm3; diff --git a/src/parser.rs b/src/pm3/parser.rs similarity index 100% rename from src/parser.rs rename to src/pm3/parser.rs diff --git a/src/pm3.rs b/src/pm3/runner.rs similarity index 100% rename from src/pm3.rs rename to src/pm3/runner.rs diff --git a/src/id_mapping.rs b/src/store/id_mapping.rs similarity index 100% rename from src/id_mapping.rs rename to src/store/id_mapping.rs diff --git a/src/id_store.rs b/src/store/id_store.rs similarity index 95% rename from src/id_store.rs rename to src/store/id_store.rs index 62ac331..cd5b70a 100644 --- a/src/id_store.rs +++ b/src/store/id_store.rs @@ -1,9 +1,10 @@ -use crate::{id_mapping::IDMapping, tally_id::TallyID}; use anyhow::{Result, anyhow}; use serde::{Deserialize, Serialize}; use std::collections::{HashMap, HashSet}; use tokio::fs; +use crate::{store::IDMapping, tally_id::TallyID}; + /// Represents a single day that IDs can attend #[derive(Deserialize, Serialize)] pub struct AttendanceDay { diff --git a/src/store/mod.rs b/src/store/mod.rs new file mode 100644 index 0000000..89e2394 --- /dev/null +++ b/src/store/mod.rs @@ -0,0 +1,5 @@ +mod id_store; +mod id_mapping; + +pub use id_store::IDStore; +pub use id_mapping::{IDMapping,Name}; diff --git a/src/activity_fairing.rs b/src/webserver/activity_fairing.rs similarity index 100% rename from src/activity_fairing.rs rename to src/webserver/activity_fairing.rs diff --git a/src/webserver/mod.rs b/src/webserver/mod.rs new file mode 100644 index 0000000..e1d4290 --- /dev/null +++ b/src/webserver/mod.rs @@ -0,0 +1,6 @@ +mod server; +mod activity_fairing; + +pub use activity_fairing::{ActivityNotifier,spawn_idle_watcher}; +pub use server::start_webserver; + diff --git a/src/webserver.rs b/src/webserver/server.rs similarity index 96% rename from src/webserver.rs rename to src/webserver/server.rs index 2180d7e..a1bd1fa 100644 --- a/src/webserver.rs +++ b/src/webserver/server.rs @@ -14,10 +14,9 @@ use tokio::select; use tokio::sync::Mutex; use tokio::sync::broadcast::Sender; -use crate::activity_fairing::ActivityNotifier; -use crate::id_mapping::{IDMapping, Name}; -use crate::id_store::IDStore; +use crate::store::{IDMapping, IDStore, Name}; use crate::tally_id::TallyID; +use crate::webserver::ActivityNotifier; #[derive(Embed)] #[folder = "web/dist"]