use crate::error::Result;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum DeviceType {
I2C,
SPI,
GPIO,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum DeviceStatus {
Available,
Unavailable,
Error(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DeviceConfig {
pub address: String,
pub parameters: std::collections::HashMap<String, String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Device {
pub id: String,
pub device_type: DeviceType,
pub status: DeviceStatus,
pub config: DeviceConfig,
}
pub struct DeviceManager {
}
impl DeviceManager {
pub fn new() -> Self {
DeviceManager {}
}
pub async fn discover_devices(&self) -> Result<Vec<Device>> {
Ok(Vec::new())
}
pub async fn register_device(&mut self, _device: Device) -> Result<()> {
Ok(())
}
pub fn get_device(&self, _id: &str) -> Result<Option<Device>> {
Ok(None)
}
}
impl Default for DeviceManager {
fn default() -> Self {
Self::new()
}
}