rusty_modbus_server/
config.rs1use std::net::SocketAddr;
4use std::time::Duration;
5
6use rusty_modbus_tcp::config::TcpServerConfig;
7use rusty_modbus_types::UnitId;
8
9#[derive(Debug, Clone)]
11pub struct ServerConfig {
12 pub listen_addr: SocketAddr,
14 pub unit_id: UnitId,
16 pub max_connections: usize,
18 pub max_transactions: u16,
20 pub shutdown_timeout: Duration,
22 pub device_id: DeviceIdentification,
24 pub tcp_config: TcpServerConfig,
26}
27
28impl Default for ServerConfig {
29 fn default() -> Self {
30 Self {
31 listen_addr: "0.0.0.0:502".parse().unwrap(),
32 unit_id: UnitId(1),
33 max_connections: 64,
34 max_transactions: 16,
35 shutdown_timeout: Duration::from_secs(10),
36 device_id: DeviceIdentification::default(),
37 tcp_config: TcpServerConfig::default(),
38 }
39 }
40}
41
42#[derive(Debug, Clone)]
44pub struct DeviceIdentification {
45 pub vendor_name: String,
47 pub product_code: String,
49 pub major_minor_revision: String,
51 pub vendor_url: Option<String>,
53 pub product_name: Option<String>,
55 pub model_name: Option<String>,
57 pub user_application_name: Option<String>,
59}
60
61impl Default for DeviceIdentification {
62 fn default() -> Self {
63 Self {
64 vendor_name: String::from("rusty-modbus"),
65 product_code: String::from("RMOD"),
66 major_minor_revision: String::from("0.1.0"),
67 vendor_url: None,
68 product_name: None,
69 model_name: None,
70 user_application_name: None,
71 }
72 }
73}