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; }
}
}