use thiserror::Error;
use crate::model::{Model, ModelAddr};
use crate::models::Models;
use super::ModbusError;
impl<M: Model> Copy for ModelAddr<M> {}
impl<M: Model> Clone for ModelAddr<M> {
fn clone(&self) -> Self {
*self
}
}
#[derive(Debug)]
pub struct UnknownModel {
pub id: u16,
pub addr: u16,
pub len: u16,
}
#[derive(Debug)]
pub struct DiscoveryResult {
pub models: Models,
pub unknown_models: Vec<UnknownModel>,
}
#[derive(Debug, Error)]
pub enum DiscoveryError {
#[error("Modbus error: {0}")]
ModbusError(#[from] ModbusError),
#[error("SunS identifier not found")]
SunsIdentifierNotFound,
#[error("Address overflow detected")]
AddressOverflow,
}