use std::net::SocketAddr;
use std::time::Duration;
use rusty_modbus_tcp::config::TcpServerConfig;
use rusty_modbus_types::UnitId;
#[derive(Debug, Clone)]
pub struct ServerConfig {
pub listen_addr: SocketAddr,
pub unit_id: UnitId,
pub max_connections: usize,
pub max_transactions: u16,
pub shutdown_timeout: Duration,
pub device_id: DeviceIdentification,
pub tcp_config: TcpServerConfig,
}
impl Default for ServerConfig {
fn default() -> Self {
Self {
listen_addr: "0.0.0.0:502".parse().unwrap(),
unit_id: UnitId(1),
max_connections: 64,
max_transactions: 16,
shutdown_timeout: Duration::from_secs(10),
device_id: DeviceIdentification::default(),
tcp_config: TcpServerConfig::default(),
}
}
}
#[derive(Debug, Clone)]
pub struct DeviceIdentification {
pub vendor_name: String,
pub product_code: String,
pub major_minor_revision: String,
pub vendor_url: Option<String>,
pub product_name: Option<String>,
pub model_name: Option<String>,
pub user_application_name: Option<String>,
}
impl Default for DeviceIdentification {
fn default() -> Self {
Self {
vendor_name: String::from("rusty-modbus"),
product_code: String::from("RMOD"),
major_minor_revision: String::from("0.1.0"),
vendor_url: None,
product_name: None,
model_name: None,
user_application_name: None,
}
}
}