using System.Net.Sockets; using NModbus.IO; namespace NModbus { /// /// Container for modbus function services. /// public interface IModbusFactory { /// /// Get the service for a given function code. /// /// /// IModbusFunctionService GetFunctionService(byte functionCode); /// /// Gets all of the services. /// /// IModbusFunctionService[] GetAllFunctionServices(); #region Master /// /// Create an rtu master. /// /// /// IModbusSerialMaster CreateMaster(IModbusSerialTransport transport); /// /// Create a TCP master. /// /// /// IModbusMaster CreateMaster(UdpClient client); /// /// /// /// /// IModbusMaster CreateMaster(TcpClient client); #endregion #region Slave /// /// Creates a Modbus Slave. /// /// The address of this slave on the Modbus network. /// Optionally specify a custom data store for the created slave. /// IModbusSlave CreateSlave(byte unitId, ISlaveDataStore dataStore = null); #endregion #region Slave Networks /// /// Creates a slave network based on the RTU transport. /// /// /// IModbusSlaveNetwork CreateSlaveNetwork(IModbusRtuTransport transport); /// /// Creates an ascii slave network. /// /// The ascii transport to base this on. /// IModbusSlaveNetwork CreateSlaveNetwork(IModbusAsciiTransport transport); /// /// Create a slave network based on TCP. /// /// /// IModbusTcpSlaveNetwork CreateSlaveNetwork(TcpListener tcpListener); /// /// Creates a UDP modbus slave network. /// /// /// IModbusSlaveNetwork CreateSlaveNetwork(UdpClient client); #endregion #region Transport /// /// Creates an RTU transpoort. /// /// /// IModbusRtuTransport CreateRtuTransport(IStreamResource streamResource); /// /// Creates an Ascii Transport. /// /// /// IModbusAsciiTransport CreateAsciiTransport(IStreamResource streamResource); /// /// Creates an IP Transport /// /// /// IModbusTransport CreateIpTransport(IStreamResource streamResource); #endregion IModbusLogger Logger { get; } } }