diff --git a/src/connection.rs b/src/connection.rs index 994df25..92916ec 100644 --- a/src/connection.rs +++ b/src/connection.rs @@ -4,16 +4,26 @@ use crate::pin::Pin; /// Manages electrical connections between pins pub struct ConnectionManager { + pin_registry: HashMap>>, connections: HashMap>, // pin_name -> connected_pin_names } impl ConnectionManager { pub fn new() -> Self { ConnectionManager { + pin_registry: HashMap::new(), connections: HashMap::new(), } } + pub fn register_pin(&mut self, name: String, pin: Arc>) { + self.pin_registry.insert(name, pin); + } + + pub fn get_pin(&self, name: &str) -> Option>> { + self.pin_registry.get(name).cloned() + } + /// Connect two pins bidirectionally pub fn connect_pins(&mut self, pin1: Arc>, pin2: Arc>) -> Result<(), String> { let pin1_name = {