<?xml version="1.0"?>
<doc>
    <assembly>
        <name>NModbus</name>
    </assembly>
    <members>
        <member name="T:NModbus.Data.DefaultPointSource`1">
            <summary>
            A simple implementation of the point source. All registers are 
            </summary>
            <typeparam name="TPoint"></typeparam>
        </member>
        <member name="T:NModbus.Data.DiscreteCollection">
            <summary>
                Collection of discrete values.
            </summary>
        </member>
        <member name="F:NModbus.Data.DiscreteCollection.BitsPerByte">
            <summary>
                Number of bits per byte.
            </summary>
        </member>
        <member name="M:NModbus.Data.DiscreteCollection.#ctor">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.Data.DiscreteCollection" /> class.
            </summary>
        </member>
        <member name="M:NModbus.Data.DiscreteCollection.#ctor(System.Boolean[])">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.Data.DiscreteCollection" /> class.
            </summary>
            <param name="bits">Array for discrete collection.</param>
        </member>
        <member name="M:NModbus.Data.DiscreteCollection.#ctor(System.Byte[])">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.Data.DiscreteCollection" /> class.
            </summary>
            <param name="bytes">Array for discrete collection.</param>
        </member>
        <member name="M:NModbus.Data.DiscreteCollection.#ctor(System.Collections.Generic.IList{System.Boolean})">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.Data.DiscreteCollection" /> class.
            </summary>
            <param name="bits">List for discrete collection.</param>
        </member>
        <member name="M:NModbus.Data.DiscreteCollection.#ctor(System.Collections.Generic.List{System.Boolean})">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.Data.DiscreteCollection" /> class.
            </summary>
            <param name="bits">List for discrete collection.</param>
        </member>
        <member name="P:NModbus.Data.DiscreteCollection.NetworkBytes">
            <summary>
                Gets the network bytes.
            </summary>
        </member>
        <member name="P:NModbus.Data.DiscreteCollection.ByteCount">
            <summary>
                Gets the byte count.
            </summary>
        </member>
        <member name="M:NModbus.Data.DiscreteCollection.ToString">
            <summary>
                Returns a <see cref="T:System.String" /> that represents the current <see cref="T:System.Object" />.
            </summary>
            <returns>
                A <see cref="T:System.String" /> that represents the current <see cref="T:System.Object" />.
            </returns>
        </member>
        <member name="P:NModbus.Data.FileRecordCollection.FileNumber">
            <summary>
            The Extended Memory file number
            </summary>
        </member>
        <member name="P:NModbus.Data.FileRecordCollection.StartingAddress">
            <summary>
            The starting register address within the file.
            </summary>
        </member>
        <member name="P:NModbus.Data.FileRecordCollection.DataBytes">
            <summary>
             The bytes written to the extended memory file.
            </summary>
        </member>
        <member name="P:NModbus.Data.FileRecordCollection.ByteCount">
            <summary>
                Gets the byte count.
            </summary>
        </member>
        <member name="M:NModbus.Data.FileRecordCollection.ToString">
            <summary>
                Returns a <see cref="T:System.String" /> that represents the current <see cref="T:System.Object" />.
            </summary>
            <returns>
                A <see cref="T:System.String" /> that represents the current <see cref="T:System.Object" />.
            </returns>
        </member>
        <member name="T:NModbus.Data.IModbusMessageDataCollection">
            <summary>
                Modbus message containing data.
            </summary>
        </member>
        <member name="P:NModbus.Data.IModbusMessageDataCollection.NetworkBytes">
            <summary>
                Gets the network bytes.
            </summary>
        </member>
        <member name="P:NModbus.Data.IModbusMessageDataCollection.ByteCount">
            <summary>
                Gets the byte count.
            </summary>
        </member>
        <member name="T:NModbus.Data.PointSource`1">
            <summary>
            A simple implementation of the point source. Memory for all points is allocated the first time a point is accessed. 
            This is useful for cases where many points are used.
            </summary>
            <typeparam name="T"></typeparam>
        </member>
        <member name="T:NModbus.Data.RegisterCollection">
            <summary>
                Collection of 16 bit registers.
            </summary>
        </member>
        <member name="M:NModbus.Data.RegisterCollection.#ctor">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.Data.RegisterCollection" /> class.
            </summary>
        </member>
        <member name="M:NModbus.Data.RegisterCollection.#ctor(System.Byte[])">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.Data.RegisterCollection" /> class.
            </summary>
            <param name="bytes">Array for register collection.</param>
        </member>
        <member name="M:NModbus.Data.RegisterCollection.#ctor(System.UInt16[])">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.Data.RegisterCollection" /> class.
            </summary>
            <param name="registers">Array for register collection.</param>
        </member>
        <member name="M:NModbus.Data.RegisterCollection.#ctor(System.Collections.Generic.IList{System.UInt16})">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.Data.RegisterCollection" /> class.
            </summary>
            <param name="registers">List for register collection.</param>
        </member>
        <member name="P:NModbus.Data.RegisterCollection.ByteCount">
            <summary>
                Gets the byte count.
            </summary>
        </member>
        <member name="M:NModbus.Data.RegisterCollection.ToString">
            <summary>
                Returns a <see cref="T:System.String" /> that represents the current <see cref="T:System.Object" />.
            </summary>
            <returns>
                A <see cref="T:System.String" /> that represents the current <see cref="T:System.Object" />.
            </returns>
        </member>
        <member name="T:NModbus.Device.ConcurrentModbusMaster">
            <summary>
            Provides concurrency control across multiple Modbus readers/writers.
            </summary>
        </member>
        <member name="T:NModbus.Device.ModbusDevice">
            <summary>
                Modbus device.
            </summary>
        </member>
        <member name="P:NModbus.Device.ModbusDevice.Transport">
            <summary>
                Gets the Modbus Transport.
            </summary>
        </member>
        <member name="M:NModbus.Device.ModbusDevice.Dispose">
            <summary>
                Releases unmanaged and - optionally - managed resources.
            </summary>
        </member>
        <member name="M:NModbus.Device.ModbusDevice.Dispose(System.Boolean)">
            <summary>
                Releases unmanaged and - optionally - managed resources.
            </summary>
            <param name="disposing">
                <c>true</c> to release both managed and unmanaged resources;
                <c>false</c> to release only unmanaged resources.
            </param>
        </member>
        <member name="T:NModbus.Device.ModbusFunctionServiceBase`1">
            <summary>
            Base class for 
            </summary>
            <typeparam name="TRequest">The type of request to handle.</typeparam>
        </member>
        <member name="T:NModbus.Device.ModbusIpMaster">
            <summary>
               Modbus IP master device.
            </summary>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.#ctor(NModbus.IModbusTransport)">
            <summary>
                Modbus IP master device.
            </summary>
            <param name="transport">Transport used by this master.</param>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.ReadCoils(System.UInt16,System.UInt16)">
            <summary>
               Reads from 1 to 2000 contiguous coils status.
            </summary>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of coils to read.</param>
            <returns>Coils status.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.ReadCoilsAsync(System.UInt16,System.UInt16)">
            <summary>
               Asynchronously reads from 1 to 2000 contiguous coils status.
            </summary>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of coils to read.</param>
            <returns>A task that represents the asynchronous read operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.ReadInputs(System.UInt16,System.UInt16)">
            <summary>
               Reads from 1 to 2000 contiguous discrete input status.
            </summary>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of discrete inputs to read.</param>
            <returns>Discrete inputs status.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.ReadInputsAsync(System.UInt16,System.UInt16)">
            <summary>
               Asynchronously reads from 1 to 2000 contiguous discrete input status.
            </summary>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of discrete inputs to read.</param>
            <returns>A task that represents the asynchronous read operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.ReadHoldingRegisters(System.UInt16,System.UInt16)">
            <summary>
               Reads contiguous block of holding registers.
            </summary>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of holding registers to read.</param>
            <returns>Holding registers status.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.ReadHoldingRegistersAsync(System.UInt16,System.UInt16)">
            <summary>
               Asynchronously reads contiguous block of holding registers.
            </summary>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of holding registers to read.</param>
            <returns>A task that represents the asynchronous read operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.ReadInputRegisters(System.UInt16,System.UInt16)">
            <summary>
               Reads contiguous block of input registers.
            </summary>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of holding registers to read.</param>
            <returns>Input registers status.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.ReadInputRegistersAsync(System.UInt16,System.UInt16)">
            <summary>
               Asynchronously reads contiguous block of input registers.
            </summary>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of holding registers to read.</param>
            <returns>A task that represents the asynchronous read operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.WriteSingleCoil(System.UInt16,System.Boolean)">
            <summary>
               Writes a single coil value.
            </summary>
            <param name="coilAddress">Address to write value to.</param>
            <param name="value">Value to write.</param>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.WriteSingleCoilAsync(System.UInt16,System.Boolean)">
            <summary>
               Asynchronously writes a single coil value.
            </summary>
            <param name="coilAddress">Address to write value to.</param>
            <param name="value">Value to write.</param>
            <returns>A task that represents the asynchronous write operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.WriteSingleRegister(System.UInt16,System.UInt16)">
            <summary>
                Write a single holding register.
            </summary>
            <param name="registerAddress">Address to write.</param>
            <param name="value">Value to write.</param>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.WriteSingleRegisterAsync(System.UInt16,System.UInt16)">
            <summary>
               Asynchronously writes a single holding register.
            </summary>
            <param name="registerAddress">Address to write.</param>
            <param name="value">Value to write.</param>
            <returns>A task that represents the asynchronous write operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.WriteMultipleRegisters(System.UInt16,System.UInt16[])">
            <summary>
                Write a block of 1 to 123 contiguous registers.
            </summary>
            <param name="startAddress">Address to begin writing values.</param>
            <param name="data">Values to write.</param>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.WriteMultipleRegistersAsync(System.UInt16,System.UInt16[])">
            <summary>
               Asynchronously writes a block of 1 to 123 contiguous registers.
            </summary>
            <param name="startAddress">Address to begin writing values.</param>
            <param name="data">Values to write.</param>
            <returns>A task that represents the asynchronous write operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.WriteMultipleCoils(System.UInt16,System.Boolean[])">
            <summary>
                Force each coil in a sequence of coils to a provided value.
            </summary>
            <param name="startAddress">Address to begin writing values.</param>
            <param name="data">Values to write.</param>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.WriteMultipleCoilsAsync(System.UInt16,System.Boolean[])">
            <summary>
               Asynchronously writes a sequence of coils.
            </summary>
            <param name="startAddress">Address to begin writing values.</param>
            <param name="data">Values to write.</param>
            <returns>A task that represents the asynchronous write operation</returns>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.ReadWriteMultipleRegisters(System.UInt16,System.UInt16,System.UInt16,System.UInt16[])">
            <summary>
                Performs a combination of one read operation and one write operation in a single MODBUS transaction.
                The write operation is performed before the read.
                Message uses default TCP slave id of 0.
            </summary>
            <param name="startReadAddress">Address to begin reading (Holding registers are addressed starting at 0).</param>
            <param name="numberOfPointsToRead">Number of registers to read.</param>
            <param name="startWriteAddress">Address to begin writing (Holding registers are addressed starting at 0).</param>
            <param name="writeData">Register values to write.</param>
        </member>
        <member name="M:NModbus.Device.ModbusIpMaster.ReadWriteMultipleRegistersAsync(System.UInt16,System.UInt16,System.UInt16,System.UInt16[])">
            <summary>
               Asynchronously performs a combination of one read operation and one write operation in a single Modbus transaction.
               The write operation is performed before the read.
            </summary>
            <param name="startReadAddress">Address to begin reading (Holding registers are addressed starting at 0).</param>
            <param name="numberOfPointsToRead">Number of registers to read.</param>
            <param name="startWriteAddress">Address to begin writing (Holding registers are addressed starting at 0).</param>
            <param name="writeData">Register values to write.</param>
            <returns>A task that represents the asynchronous operation.</returns>
        </member>
        <member name="T:NModbus.Device.ModbusMaster">
            <summary>
                Modbus master device.
            </summary>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.ReadCoils(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Reads from 1 to 2000 contiguous coils status.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of coils to read.</param>
            <returns>Coils status.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.ReadCoilsAsync(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Asynchronously reads from 1 to 2000 contiguous coils status.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of coils to read.</param>
            <returns>A task that represents the asynchronous read operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.ReadInputs(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Reads from 1 to 2000 contiguous discrete input status.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of discrete inputs to read.</param>
            <returns>Discrete inputs status.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.ReadInputsAsync(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Asynchronously reads from 1 to 2000 contiguous discrete input status.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of discrete inputs to read.</param>
            <returns>A task that represents the asynchronous read operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.ReadHoldingRegisters(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Reads contiguous block of holding registers.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of holding registers to read.</param>
            <returns>Holding registers status.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.ReadHoldingRegistersAsync(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Asynchronously reads contiguous block of holding registers.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of holding registers to read.</param>
            <returns>A task that represents the asynchronous read operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.ReadInputRegisters(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Reads contiguous block of input registers.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of holding registers to read.</param>
            <returns>Input registers status.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.ReadInputRegistersAsync(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Asynchronously reads contiguous block of input registers.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of holding registers to read.</param>
            <returns>A task that represents the asynchronous read operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.WriteSingleCoil(System.Byte,System.UInt16,System.Boolean)">
            <summary>
               Writes a single coil value.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="coilAddress">Address to write value to.</param>
            <param name="value">Value to write.</param>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.WriteSingleCoilAsync(System.Byte,System.UInt16,System.Boolean)">
            <summary>
               Asynchronously writes a single coil value.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="coilAddress">Address to write value to.</param>
            <param name="value">Value to write.</param>
            <returns>A task that represents the asynchronous write operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.WriteSingleRegister(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Writes a single holding register.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="registerAddress">Address to write.</param>
            <param name="value">Value to write.</param>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.WriteSingleRegisterAsync(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Asynchronously writes a single holding register.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="registerAddress">Address to write.</param>
            <param name="value">Value to write.</param>
            <returns>A task that represents the asynchronous write operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.WriteMultipleRegisters(System.Byte,System.UInt16,System.UInt16[])">
            <summary>
                Write a block of 1 to 123 contiguous 16 bit holding registers.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="startAddress">Address to begin writing values.</param>
            <param name="data">Values to write.</param>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.WriteMultipleRegistersAsync(System.Byte,System.UInt16,System.UInt16[])">
            <summary>
               Asynchronously writes a block of 1 to 123 contiguous registers.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="startAddress">Address to begin writing values.</param>
            <param name="data">Values to write.</param>
            <returns>A task that represents the asynchronous write operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.WriteMultipleCoils(System.Byte,System.UInt16,System.Boolean[])">
            <summary>
               Writes a sequence of coils.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="startAddress">Address to begin writing values.</param>
            <param name="data">Values to write.</param>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.WriteMultipleCoilsAsync(System.Byte,System.UInt16,System.Boolean[])">
            <summary>
               Asynchronously writes a sequence of coils.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="startAddress">Address to begin writing values.</param>
            <param name="data">Values to write.</param>
            <returns>A task that represents the asynchronous write operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.ReadWriteMultipleRegisters(System.Byte,System.UInt16,System.UInt16,System.UInt16,System.UInt16[])">
            <summary>
               Performs a combination of one read operation and one write operation in a single Modbus transaction.
               The write operation is performed before the read.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startReadAddress">Address to begin reading (Holding registers are addressed starting at 0).</param>
            <param name="numberOfPointsToRead">Number of registers to read.</param>
            <param name="startWriteAddress">Address to begin writing (Holding registers are addressed starting at 0).</param>
            <param name="writeData">Register values to write.</param>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.ReadWriteMultipleRegistersAsync(System.Byte,System.UInt16,System.UInt16,System.UInt16,System.UInt16[])">
            <summary>
               Asynchronously performs a combination of one read operation and one write operation in a single Modbus transaction.
               The write operation is performed before the read.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startReadAddress">Address to begin reading (Holding registers are addressed starting at 0).</param>
            <param name="numberOfPointsToRead">Number of registers to read.</param>
            <param name="startWriteAddress">Address to begin writing (Holding registers are addressed starting at 0).</param>
            <param name="writeData">Register values to write.</param>
            <returns>A task that represents the asynchronous operation.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.WriteFileRecord(System.Byte,System.UInt16,System.UInt16,System.Byte[])">
            <summary>
            Write a file record to the device.
            </summary>
            <param name="slaveAdress">Address of device to write values to</param>
            <param name="fileNumber">The Extended Memory file number</param>
            <param name="startingAddress">The starting register address within the file</param>
            <param name="data">The data to be written</param>
        </member>
        <member name="M:NModbus.Device.ModbusMaster.ExecuteCustomMessage``1(NModbus.IModbusMessage)">
            <summary>
               Executes the custom message.
            </summary>
            <typeparam name="TResponse">The type of the response.</typeparam>
            <param name="request">The request.</param>
        </member>
        <member name="T:NModbus.Device.ModbusMasterTcpConnection">
            <summary>
            Represents an incoming connection from a Modbus master. Contains the slave's logic to process the connection.
            </summary>
        </member>
        <member name="E:NModbus.Device.ModbusMasterTcpConnection.ModbusMasterTcpConnectionClosed">
            <summary>
                Occurs when a Modbus master TCP connection is closed.
            </summary>
        </member>
        <member name="T:NModbus.Device.ModbusSerialMaster">
            <summary>
                Modbus serial master device.
            </summary>
        </member>
        <member name="P:NModbus.Device.ModbusSerialMaster.NModbus#IModbusSerialMaster#Transport">
            <summary>
                Gets the Modbus Transport.
            </summary>
        </member>
        <member name="M:NModbus.Device.ModbusSerialMaster.ReturnQueryData(System.Byte,System.UInt16)">
            <summary>
                Serial Line only.
                Diagnostic function which loops back the original data.
                NModbus only supports looping back one ushort value, this is a limitation of the "Best Effort" implementation of
                the RTU protocol.
            </summary>
            <param name="slaveAddress">Address of device to test.</param>
            <param name="data">Data to return.</param>
            <returns>Return true if slave device echoed data.</returns>
        </member>
        <member name="M:NModbus.Device.ModbusSlaveNetwork.ListenAsync(System.Threading.CancellationToken)">
            <summary>
            Start slave listening for requests.
            </summary>
        </member>
        <member name="M:NModbus.Device.ModbusSlaveNetwork.ApplyRequest(NModbus.IModbusMessage)">
            <summary>
            Apply the request.
            </summary>
            <param name="request"></param>
        </member>
        <member name="T:NModbus.Device.ModbusTcpSlaveNetwork">
            <summary>
                Modbus TCP slave device.
            </summary>
        </member>
        <member name="P:NModbus.Device.ModbusTcpSlaveNetwork.Masters">
            <summary>
                Gets the Modbus TCP Masters connected to this Modbus TCP Slave.
            </summary>
        </member>
        <member name="P:NModbus.Device.ModbusTcpSlaveNetwork.Server">
            <summary>
                Gets the server.
            </summary>
            <value>The server.</value>
            <remarks>
                This property is not thread safe, it should only be consumed within a lock.
            </remarks>
        </member>
        <member name="M:NModbus.Device.ModbusTcpSlaveNetwork.ListenAsync(System.Threading.CancellationToken)">
            <summary>
                Start slave listening for requests.
            </summary>
        </member>
        <member name="M:NModbus.Device.ModbusTcpSlaveNetwork.Dispose(System.Boolean)">
            <summary>
                Releases unmanaged and - optionally - managed resources
            </summary>
            <param name="disposing">
                <c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only
                unmanaged resources.
            </param>
            <remarks>Dispose is thread-safe.</remarks>
        </member>
        <member name="T:NModbus.Device.ModbusUdpSlaveNetwork">
            <summary>
                Modbus UDP slave device.
            </summary>
        </member>
        <member name="M:NModbus.Device.ModbusUdpSlaveNetwork.ListenAsync(System.Threading.CancellationToken)">
            <summary>
                Start slave listening for requests.
            </summary>
        </member>
        <member name="T:NModbus.Device.PointEventArgs">
            <summary>
            Modbus Slave request event args containing information on the message.
            </summary>
        </member>
        <member name="M:NModbus.Extensions.CrcExtensions.DoesCrcMatch(System.Byte[])">
            <summary>
            Determines whether the crc stored in the message matches the calculated crc.
            </summary>
            <param name="message"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.Extensions.CrcExtensions.GetCRC(System.Byte[])">
            <summary>
            Gets the CRC of the message
            </summary>
            <param name="message"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.Extensions.DictionaryExtensions.GetValueOrDefault``2(System.Collections.Generic.IDictionary{``0,``1},``0)">
            <summary>
            Gets the specified value in the dictionary. If not found, returns default for TValue.
            </summary>
            <typeparam name="TKey"></typeparam>
            <typeparam name="TValue"></typeparam>
            <param name="dictionary"></param>
            <param name="key"></param>
            <returns></returns>
        </member>
        <member name="T:NModbus.Extensions.Enron.EnronModbus">
            <summary>
                Utility extensions for the Enron Modbus dialect.
            </summary>
        </member>
        <member name="M:NModbus.Extensions.Enron.EnronModbus.ReadHoldingRegisters32(NModbus.IModbusMaster,System.Byte,System.UInt16,System.UInt16)">
            <summary>
                Read contiguous block of 32 bit holding registers.
            </summary>
            <param name="master">The Modbus master.</param>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of holding registers to read.</param>
            <returns>Holding registers status</returns>
        </member>
        <member name="M:NModbus.Extensions.Enron.EnronModbus.ReadInputRegisters32(NModbus.IModbusMaster,System.Byte,System.UInt16,System.UInt16)">
            <summary>
                Read contiguous block of 32 bit input registers.
            </summary>
            <param name="master">The Modbus master.</param>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of holding registers to read.</param>
            <returns>Input registers status</returns>
        </member>
        <member name="M:NModbus.Extensions.Enron.EnronModbus.WriteSingleRegister32(NModbus.IModbusMaster,System.Byte,System.UInt16,System.UInt32)">
            <summary>
                Write a single 16 bit holding register.
            </summary>
            <param name="master">The Modbus master.</param>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="registerAddress">Address to write.</param>
            <param name="value">Value to write.</param>
        </member>
        <member name="M:NModbus.Extensions.Enron.EnronModbus.WriteMultipleRegisters32(NModbus.IModbusMaster,System.Byte,System.UInt16,System.UInt32[])">
            <summary>
                Write a block of contiguous 32 bit holding registers.
            </summary>
            <param name="master">The Modbus master.</param>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="startAddress">Address to begin writing values.</param>
            <param name="data">Values to write.</param>
        </member>
        <member name="M:NModbus.Extensions.Enron.EnronModbus.Convert(System.UInt32[])">
            <summary>
                Convert the 32 bit registers to two 16 bit values.
            </summary>
        </member>
        <member name="M:NModbus.Extensions.Enron.EnronModbus.Convert(System.UInt16[])">
            <summary>
                Convert the 16 bit registers to 32 bit registers.
            </summary>
        </member>
        <member name="T:NModbus.Extensions.Functions.Endian">
            <summary>
            Class containing functions to covert endian from network device to host this code is running on.
            </summary>
        </member>
        <member name="M:NModbus.Extensions.Functions.Endian.BigEndian(System.Byte[])">
            <summary>
            Converts BigEndian source bytes to Endian format of system.
            Source BE: 0x0A,0x0B,0x0C,0x0D. 
            Target BE: 0x0A,0x0B,0x0C,0x0D.
            Target LE: 0x0D,0x0C,0x0B,0x0A.
            </summary>
            <param name="sourceBytes">Byte array from device</param>
            <returns>Bytes in Endian format for system</returns>
        </member>
        <member name="M:NModbus.Extensions.Functions.Endian.LittleEndian(System.Byte[])">
            <summary>
            Converts LittleEndian source bytes to Endian format of system. 
            Source LE: 0x0D,0x0C,0x0B,0x0A. 
            Target BE: 0x0A,0x0B,0x0C,0x0D.
            Target LE: 0x0D,0x0C,0x0B,0x0A.
            </summary>
            <param name="sourceBytes">Byte array from device</param>
            <returns>Bytes in Endian format for system</returns>
        </member>
        <member name="T:NModbus.Extensions.Functions.RegisterFunctions">
            <summary>
              This class provides some functions that can be used to read/write values of a set word size.
            </summary>
        </member>
        <member name="T:NModbus.Extensions.ModbusMasterEnhanced">
            <summary>
            Utility Class to support Modbus 32/64bit devices. 
            </summary>
        </member>
        <member name="M:NModbus.Extensions.ModbusMasterEnhanced.#ctor(NModbus.IModbusMaster,System.UInt32,System.Func{System.Byte[],System.Byte[]},System.Boolean)">
            <summary>
            Constructor with values to be used by all methods. 
            Default is 32bit, LittleEndian, with wordswapping.
            </summary>
            <param name="master">The Modbus master</param>
            <param name="wordSize">Wordsize used by device. 16/32/64 are valid.</param>
            <param name="endian">The endian encoding of the device.</param>
            <param name="wordSwapped">Should the ushort words mirrored then flattened to bytes.</param>
        </member>
        <member name="M:NModbus.Extensions.ModbusMasterEnhanced.ReadCharHoldingRegisters(System.Byte,System.UInt16,System.UInt16)">
            <summary>
            Reads registers and converts the result into a char array.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of chars to read.</param>
            <returns></returns>
        </member>
        <member name="M:NModbus.Extensions.ModbusMasterEnhanced.ReadUshortHoldingRegisters(System.Byte,System.UInt16,System.UInt16)">
            <summary>
            Reads registers and converts the result into a ushort array.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of ushorts to read.</param>
            <returns></returns>
        </member>
        <member name="M:NModbus.Extensions.ModbusMasterEnhanced.ReadShortHoldingRegisters(System.Byte,System.UInt16,System.UInt16)">
            <summary>
            Reads registers and converts the result into a short array.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of shots to read.</param>
            <returns></returns>
        </member>
        <member name="M:NModbus.Extensions.ModbusMasterEnhanced.ReadUintHoldingRegisters(System.Byte,System.UInt16,System.UInt16)">
            <summary>
            Reads registers and converts the result into a uint array.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of uints to read.</param>
            <returns></returns>
        </member>
        <member name="M:NModbus.Extensions.ModbusMasterEnhanced.ReadIntHoldingRegisters(System.Byte,System.UInt16,System.UInt16)">
            <summary>
            Reads registers and converts the result into a int array.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of ints to read.</param>
            <returns></returns>
        </member>
        <member name="M:NModbus.Extensions.ModbusMasterEnhanced.ReadFloatHoldingRegisters(System.Byte,System.UInt16,System.UInt16)">
            <summary>
            Reads registers and converts the result into a float array.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of floats to read.</param>
            <returns></returns>
        </member>
        <member name="M:NModbus.Extensions.ModbusMasterEnhanced.WriteCharHoldingRegisters(System.Byte,System.UInt16,System.Char[])">
            <summary>
                Write a char array to registers.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="startAddress">Address to start writting values at.</param>
            <param name="data">Chars to write to device.</param>
        </member>
        <member name="M:NModbus.Extensions.ModbusMasterEnhanced.WriteUshortHoldingRegisters(System.Byte,System.UInt16,System.UInt16[])">
            <summary>
                Write a ushort array to registers.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="startAddress">Address to start writting values at.</param>
            <param name="data">Ushorts to write to device.</param>
        </member>
        <member name="M:NModbus.Extensions.ModbusMasterEnhanced.WriteShortHoldingRegisters(System.Byte,System.UInt16,System.Int16[])">
            <summary>
                Write a short array to registers.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="startAddress">Address to start writting values at.</param>
            <param name="data">Shorts to write to device.</param>
        </member>
        <member name="M:NModbus.Extensions.ModbusMasterEnhanced.WriteIntHoldingRegisters(System.Byte,System.UInt16,System.Int32[])">
            <summary>
                Write a int array to registers.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="startAddress">Address to start writting values at.</param>
            <param name="data">Ints to write to device.</param>
        </member>
        <member name="M:NModbus.Extensions.ModbusMasterEnhanced.WriteUIntHoldingRegisters(System.Byte,System.UInt16,System.UInt32[])">
            <summary>
                Write a uint array to registers.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="startAddress">Address to start writting values at.</param>
            <param name="data">Uints to write to device.</param>
        </member>
        <member name="M:NModbus.Extensions.ModbusMasterEnhanced.WriteFloatHoldingRegisters(System.Byte,System.UInt16,System.Single[])">
            <summary>
                Write a float array to registers.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="startAddress">Address to start writting values at.</param>
            <param name="data">Floats to write to device.</param>
        </member>
        <member name="T:NModbus.FactoryExtensions">
            <summary>
            Extension methods for the IModbusFactory interface.
            </summary>
        </member>
        <member name="M:NModbus.FactoryExtensions.CreateRtuMaster(NModbus.IModbusFactory,NModbus.IO.IStreamResource)">
            <summary>
            Creates an RTU master.
            </summary>
            <param name="factory"></param>
            <param name="streamResource"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.FactoryExtensions.CreateAsciiMaster(NModbus.IModbusFactory,NModbus.IO.IStreamResource)">
            <summary>
            Creates an ASCII master.
            </summary>
            <param name="factory"></param>
            <param name="streamResource"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.FactoryExtensions.CreateRtuSlaveNetwork(NModbus.IModbusFactory,NModbus.IO.IStreamResource)">
            <summary>
            Creates an RTU slave network.
            </summary>
            <param name="factory"></param>
            <param name="streamResource"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.FactoryExtensions.CreateAsciiSlaveNetwork(NModbus.IModbusFactory,NModbus.IO.IStreamResource)">
            <summary>
            Creates an ASCII slave network.
            </summary>
            <param name="factory"></param>
            <param name="streamResource"></param>
            <returns></returns>
        </member>
        <member name="T:NModbus.IModbusFactory">
            <summary>
            Container for modbus function services.
            </summary>
        </member>
        <member name="M:NModbus.IModbusFactory.GetFunctionService(System.Byte)">
            <summary>
            Get the service for a given function code.
            </summary>
            <param name="functionCode"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.IModbusFactory.GetAllFunctionServices">
            <summary>
            Gets all of the services.
            </summary>
            <returns></returns>
        </member>
        <member name="M:NModbus.IModbusFactory.CreateMaster(NModbus.IModbusSerialTransport)">
            <summary>
            Create an rtu master.
            </summary>
            <param name="transport"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.IModbusFactory.CreateMaster(System.Net.Sockets.UdpClient)">
            <summary>
            Create a TCP master.
            </summary>
            <param name="client"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.IModbusFactory.CreateMaster(System.Net.Sockets.TcpClient)">
            <summary>
            
            </summary>
            <param name="client"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.IModbusFactory.CreateSlave(System.Byte,NModbus.ISlaveDataStore)">
            <summary>
            Creates a Modbus Slave.
            </summary>
            <param name="unitId">The address of this slave on the Modbus network.</param>
            <param name="dataStore">Optionally specify a custom data store for the created slave.</param>
            <returns></returns>
        </member>
        <member name="M:NModbus.IModbusFactory.CreateSlaveNetwork(NModbus.IModbusRtuTransport)">
            <summary>
            Creates a slave network based on the RTU transport.
            </summary>
            <param name="transport"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.IModbusFactory.CreateSlaveNetwork(NModbus.IModbusAsciiTransport)">
            <summary>
            Creates an ascii slave network.
            </summary>
            <param name="transport">The ascii transport to base this on.</param>
            <returns></returns>
        </member>
        <member name="M:NModbus.IModbusFactory.CreateSlaveNetwork(System.Net.Sockets.TcpListener)">
            <summary>
            Create a slave network based on TCP.
            </summary>
            <param name="tcpListener"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.IModbusFactory.CreateSlaveNetwork(System.Net.Sockets.UdpClient)">
            <summary>
            Creates a UDP modbus slave network.
            </summary>
            <param name="client"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.IModbusFactory.CreateRtuTransport(NModbus.IO.IStreamResource)">
            <summary>
            Creates an RTU transpoort. 
            </summary>
            <param name="streamResource"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.IModbusFactory.CreateAsciiTransport(NModbus.IO.IStreamResource)">
            <summary>
            Creates an Ascii Transport.
            </summary>
            <param name="streamResource"></param>
            <returns></returns>
        </member>
        <member name="T:NModbus.IModbusFunctionService">
            <summary>
            A Modbus slave message handler.
            </summary>
        </member>
        <member name="P:NModbus.IModbusFunctionService.FunctionCode">
            <summary>
            The function code that this handles
            </summary>
        </member>
        <member name="M:NModbus.IModbusFunctionService.CreateRequest(System.Byte[])">
            <summary>
            Creates a message that wrapps the request frame.
            </summary>
            <param name="frame"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.IModbusFunctionService.HandleSlaveRequest(NModbus.IModbusMessage,NModbus.ISlaveDataStore)">
            <summary>
            Handle a slave request.
            </summary>
            <param name="request"></param>
            <param name="dataStore"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.IModbusFunctionService.GetRtuRequestBytesToRead(System.Byte[])">
            <summary>
            Gets the number of bytes to read for a request
            </summary>
            <param name="frameStart"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.IModbusFunctionService.GetRtuResponseBytesToRead(System.Byte[])">
            <summary>
            Gets the number of bytes to read for a response.
            </summary>
            <param name="frameStart"></param>
            <returns></returns>
        </member>
        <member name="T:NModbus.IModbusLogger">
            <summary>
            Simple logging target. Designed to be easily integrated into other logging frameworks.
            </summary>
        </member>
        <member name="M:NModbus.IModbusLogger.Log(NModbus.LoggingLevel,System.String)">
            <summary>
            Conditionally log a message
            </summary>
            <param name="level"></param>
            <param name="message"></param>
        </member>
        <member name="M:NModbus.IModbusLogger.ShouldLog(NModbus.LoggingLevel)">
            <summary>
            True if this level should be logged, false otherwise.
            </summary>
            <param name="level"></param>
            <returns></returns>
        </member>
        <member name="T:NModbus.IModbusMaster">
            <summary>
                Modbus master device.
            </summary>
        </member>
        <member name="P:NModbus.IModbusMaster.Transport">
            <summary>
                Transport used by this master.
            </summary>
        </member>
        <member name="M:NModbus.IModbusMaster.ReadCoils(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Reads from 1 to 2000 contiguous coils status.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of coils to read.</param>
            <returns>Coils status.</returns>
        </member>
        <member name="M:NModbus.IModbusMaster.ReadCoilsAsync(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Asynchronously reads from 1 to 2000 contiguous coils status.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of coils to read.</param>
            <returns>A task that represents the asynchronous read operation.</returns>
        </member>
        <member name="M:NModbus.IModbusMaster.ReadInputs(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Reads from 1 to 2000 contiguous discrete input status.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of discrete inputs to read.</param>
            <returns>Discrete inputs status.</returns>
        </member>
        <member name="M:NModbus.IModbusMaster.ReadInputsAsync(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Asynchronously reads from 1 to 2000 contiguous discrete input status.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of discrete inputs to read.</param>
            <returns>A task that represents the asynchronous read operation.</returns>
        </member>
        <member name="M:NModbus.IModbusMaster.ReadHoldingRegisters(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Reads contiguous block of holding registers.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of holding registers to read.</param>
            <returns>Holding registers status.</returns>
        </member>
        <member name="M:NModbus.IModbusMaster.ReadHoldingRegistersAsync(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Asynchronously reads contiguous block of holding registers.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of holding registers to read.</param>
            <returns>A task that represents the asynchronous read operation.</returns>
        </member>
        <member name="M:NModbus.IModbusMaster.ReadInputRegisters(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Reads contiguous block of input registers.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of holding registers to read.</param>
            <returns>Input registers status.</returns>
        </member>
        <member name="M:NModbus.IModbusMaster.ReadInputRegistersAsync(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Asynchronously reads contiguous block of input registers.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startAddress">Address to begin reading.</param>
            <param name="numberOfPoints">Number of holding registers to read.</param>
            <returns>A task that represents the asynchronous read operation.</returns>
        </member>
        <member name="M:NModbus.IModbusMaster.WriteSingleCoil(System.Byte,System.UInt16,System.Boolean)">
            <summary>
               Writes a single coil value.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="coilAddress">Address to write value to.</param>
            <param name="value">Value to write.</param>
        </member>
        <member name="M:NModbus.IModbusMaster.WriteSingleCoilAsync(System.Byte,System.UInt16,System.Boolean)">
            <summary>
               Asynchronously writes a single coil value.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="coilAddress">Address to write value to.</param>
            <param name="value">Value to write.</param>
            <returns>A task that represents the asynchronous write operation.</returns>
        </member>
        <member name="M:NModbus.IModbusMaster.WriteSingleRegister(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Writes a single holding register.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="registerAddress">Address to write.</param>
            <param name="value">Value to write.</param>
        </member>
        <member name="M:NModbus.IModbusMaster.WriteSingleRegisterAsync(System.Byte,System.UInt16,System.UInt16)">
            <summary>
               Asynchronously writes a single holding register.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="registerAddress">Address to write.</param>
            <param name="value">Value to write.</param>
            <returns>A task that represents the asynchronous write operation.</returns>
        </member>
        <member name="M:NModbus.IModbusMaster.WriteMultipleRegisters(System.Byte,System.UInt16,System.UInt16[])">
            <summary>
               Writes a block of 1 to 123 contiguous registers.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="startAddress">Address to begin writing values.</param>
            <param name="data">Values to write.</param>
        </member>
        <member name="M:NModbus.IModbusMaster.WriteMultipleRegistersAsync(System.Byte,System.UInt16,System.UInt16[])">
            <summary>
               Asynchronously writes a block of 1 to 123 contiguous registers.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="startAddress">Address to begin writing values.</param>
            <param name="data">Values to write.</param>
            <returns>A task that represents the asynchronous write operation.</returns>
        </member>
        <member name="M:NModbus.IModbusMaster.WriteMultipleCoils(System.Byte,System.UInt16,System.Boolean[])">
            <summary>
               Writes a sequence of coils.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="startAddress">Address to begin writing values.</param>
            <param name="data">Values to write.</param>
        </member>
        <member name="M:NModbus.IModbusMaster.WriteMultipleCoilsAsync(System.Byte,System.UInt16,System.Boolean[])">
            <summary>
               Asynchronously writes a sequence of coils.
            </summary>
            <param name="slaveAddress">Address of the device to write to.</param>
            <param name="startAddress">Address to begin writing values.</param>
            <param name="data">Values to write.</param>
            <returns>A task that represents the asynchronous write operation.</returns>
        </member>
        <member name="M:NModbus.IModbusMaster.ReadWriteMultipleRegisters(System.Byte,System.UInt16,System.UInt16,System.UInt16,System.UInt16[])">
            <summary>
               Performs a combination of one read operation and one write operation in a single Modbus transaction.
               The write operation is performed before the read.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startReadAddress">Address to begin reading (Holding registers are addressed starting at 0).</param>
            <param name="numberOfPointsToRead">Number of registers to read.</param>
            <param name="startWriteAddress">Address to begin writing (Holding registers are addressed starting at 0).</param>
            <param name="writeData">Register values to write.</param>
        </member>
        <member name="M:NModbus.IModbusMaster.ReadWriteMultipleRegistersAsync(System.Byte,System.UInt16,System.UInt16,System.UInt16,System.UInt16[])">
            <summary>
               Asynchronously performs a combination of one read operation and one write operation in a single Modbus transaction.
               The write operation is performed before the read.
            </summary>
            <param name="slaveAddress">Address of device to read values from.</param>
            <param name="startReadAddress">Address to begin reading (Holding registers are addressed starting at 0).</param>
            <param name="numberOfPointsToRead">Number of registers to read.</param>
            <param name="startWriteAddress">Address to begin writing (Holding registers are addressed starting at 0).</param>
            <param name="writeData">Register values to write.</param>
            <returns>A task that represents the asynchronous operation</returns>
        </member>
        <member name="M:NModbus.IModbusMaster.WriteFileRecord(System.Byte,System.UInt16,System.UInt16,System.Byte[])">
            <summary>
            Write a file record to the device.
            </summary>
            <param name="slaveAdress">Address of device to write values to</param>
            <param name="fileNumber">The Extended Memory file number</param>
            <param name="startingAddress">The starting register address within the file</param>
            <param name="data">The data to be written</param>
        </member>
        <member name="M:NModbus.IModbusMaster.ExecuteCustomMessage``1(NModbus.IModbusMessage)">
            <summary>
               Executes the custom message.
            </summary>
            <typeparam name="TResponse">The type of the response.</typeparam>
            <param name="request">The request.</param>
        </member>
        <member name="T:NModbus.IModbusMessage">
            <summary>
                A message built by the master (client) that initiates a Modbus transaction.
            </summary>
        </member>
        <member name="P:NModbus.IModbusMessage.FunctionCode">
            <summary>
                The function code tells the server what kind of action to perform.
            </summary>
        </member>
        <member name="P:NModbus.IModbusMessage.SlaveAddress">
            <summary>
                Address of the slave (server).
            </summary>
        </member>
        <member name="P:NModbus.IModbusMessage.MessageFrame">
            <summary>
                Composition of the slave address and protocol data unit.
            </summary>
        </member>
        <member name="P:NModbus.IModbusMessage.ProtocolDataUnit">
            <summary>
                Composition of the function code and message data.
            </summary>
        </member>
        <member name="P:NModbus.IModbusMessage.TransactionId">
            <summary>
                A unique identifier assigned to a message when using the IP protocol.
            </summary>
        </member>
        <member name="M:NModbus.IModbusMessage.Initialize(System.Byte[])">
            <summary>
                Initializes a modbus message from the specified message frame.
            </summary>
            <param name="frame">Bytes of Modbus frame.</param>
        </member>
        <member name="T:NModbus.IModbusSerialMaster">
            <summary>
                Modbus Serial Master device.
            </summary>
        </member>
        <member name="P:NModbus.IModbusSerialMaster.Transport">
            <summary>
                Transport for used by this master.
            </summary>
        </member>
        <member name="M:NModbus.IModbusSerialMaster.ReturnQueryData(System.Byte,System.UInt16)">
            <summary>
                Serial Line only.
                Diagnostic function which loops back the original data.
                NModbus only supports looping back one ushort value, this is a
                limitation of the "Best Effort" implementation of the RTU protocol.
            </summary>
            <param name="slaveAddress">Address of device to test.</param>
            <param name="data">Data to return.</param>
            <returns>Return true if slave device echoed data.</returns>
        </member>
        <member name="T:NModbus.IModbusSlave">
            <summary>
            A modbus slave.
            </summary>
        </member>
        <member name="P:NModbus.IModbusSlave.UnitId">
            <summary>
            Gets the unit id of this slave.
            </summary>
        </member>
        <member name="P:NModbus.IModbusSlave.DataStore">
            <summary>
            Gets the data store for this slave.
            </summary>
        </member>
        <member name="M:NModbus.IModbusSlave.ApplyRequest(NModbus.IModbusMessage)">
            <summary>
            Applies the request.
            </summary>
            <param name="request"></param>
            <returns></returns>
        </member>
        <member name="T:NModbus.IModbusSlaveNetwork">
            <summary>
            A network of slave devices on a single transport.
            </summary>
        </member>
        <member name="M:NModbus.IModbusSlaveNetwork.ListenAsync(System.Threading.CancellationToken)">
            <summary>
            Listen for incoming requests.
            </summary>
            <returns></returns>
        </member>
        <member name="M:NModbus.IModbusSlaveNetwork.AddSlave(NModbus.IModbusSlave)">
            <summary>
            Add a slave to the network.
            </summary>
            <param name="slave"></param>
        </member>
        <member name="M:NModbus.IModbusSlaveNetwork.GetSlave(System.Byte)">
            <summary>
            Get a slave from the network.
            </summary>
            <param name="unitId">The slave address</param>
            <returns>The specified slave, or null if one can't be found.</returns>
        </member>
        <member name="M:NModbus.IModbusSlaveNetwork.RemoveSlave(System.Byte)">
            <summary>
            Removes a slave from the network.
            </summary>
            <param name="unitId"></param>
        </member>
        <member name="T:NModbus.IPointSource`1">
            <summary>
            Represents a memory map.
            </summary>
            <typeparam name="TPoint"></typeparam>
        </member>
        <member name="M:NModbus.IPointSource`1.ReadPoints(System.UInt16,System.UInt16)">
            <summary>
            Read a series of points.
            </summary>
            <param name="startAddress"></param>
            <param name="numberOfPoints"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.IPointSource`1.WritePoints(System.UInt16,`0[])">
            <summary>
            Write a series of points.
            </summary>
            <param name="startAddress"></param>
            <param name="points"></param>
        </member>
        <member name="T:NModbus.ISlaveDataStore">
            <summary>
            Object simulation of a device memory map.
            </summary>
        </member>
        <member name="P:NModbus.ISlaveDataStore.CoilDiscretes">
            <summary>
            Gets the descrete coils.
            </summary>
        </member>
        <member name="P:NModbus.ISlaveDataStore.CoilInputs">
            <summary>
            Gets the discrete inputs.
            </summary>
        </member>
        <member name="P:NModbus.ISlaveDataStore.HoldingRegisters">
            <summary>
            Gets the holding registers.
            </summary>
        </member>
        <member name="P:NModbus.ISlaveDataStore.InputRegisters">
            <summary>
            Gets the input registers.
            </summary>
        </member>
        <member name="T:NModbus.LoggingLevel">
            <summary>
            Following the guidelines from https://github.com/aspnet/Logging/wiki/Guidelines.
            </summary>
        </member>
        <member name="F:NModbus.LoggingLevel.Trace">
            <summary>
            The most detailed log messages, may contain sensitive application data. These messages should be disabled by default and should never be enabled in a production environment.
            </summary>
        </member>
        <member name="F:NModbus.LoggingLevel.Debug">
            <summary>
            Logs that are used for interactive investigation during development should use the Debug level. These logs should primarily contain information useful for debugging and have no long-term value. 
            This is the default most verbose level of logging.
            </summary>
        </member>
        <member name="F:NModbus.LoggingLevel.Information">
            <summary>
            Track the general flow of the application using logs at the Information level. These logs should have value in the long term.
            </summary>
        </member>
        <member name="F:NModbus.LoggingLevel.Warning">
            <summary>
            Warnings should highlight an abnormal or unexpected event in the application flow. This event does not cause the application execution to stop, but can signify sub-optimal performance or a potential problem for the future. A common place to log a warning is from handled exceptions. 
            </summary>
        </member>
        <member name="F:NModbus.LoggingLevel.Error">
            <summary>
            An error should be logged when the current flow of execution is stopped due to a failure. These should indicate a failure in the current activity, not an application-wide failure. These will mainly be unhandled exceptions and recoverable failures. 
            </summary>
        </member>
        <member name="F:NModbus.LoggingLevel.Critical">
            <summary>
            A critical log should describe an unrecoverable application or system crash, or a catastrophic failure that requires immediate attention. 
            </summary>
        </member>
        <member name="T:NModbus.InvalidModbusRequestException">
            <summary>
                An exception that provides the exception code that will be sent in response to an invalid Modbus request.
            </summary>
        </member>
        <member name="M:NModbus.InvalidModbusRequestException.#ctor(System.Byte)">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.InvalidModbusRequestException" /> class with a specified Modbus exception code.
            </summary>
            <param name="exceptionCode">The Modbus exception code to provide to the slave.</param>
        </member>
        <member name="M:NModbus.InvalidModbusRequestException.#ctor(System.String,System.Byte)">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.InvalidModbusRequestException" /> class with a specified error message and Modbus exception code.
            </summary>
            <param name="message">The error message that explains the reason for the exception.</param>
            <param name="exceptionCode">The Modbus exception code to provide to the slave.</param>
        </member>
        <member name="M:NModbus.InvalidModbusRequestException.#ctor(System.Byte,System.Exception)">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.InvalidModbusRequestException" /> class with a specified Modbus exception code and a reference to the inner exception that is the cause of this exception.
            </summary>
            <param name="exceptionCode">The Modbus exception code to provide to the slave.</param>
            <param name="innerException">The exception that is the cause of the current exception. If the <paramref name="innerException" /> parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception.</param>
        </member>
        <member name="M:NModbus.InvalidModbusRequestException.#ctor(System.String,System.Byte,System.Exception)">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.InvalidModbusRequestException" /> class with a specified Modbus exception code and a reference to the inner exception that is the cause of this exception.
            </summary>
            <param name="message">The error message that explains the reason for the exception.</param>
            <param name="exceptionCode">The Modbus exception code to provide to the slave.</param>
            <param name="innerException">The exception that is the cause of the current exception. If the <paramref name="innerException" /> parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception.</param>
        </member>
        <member name="M:NModbus.InvalidModbusRequestException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.InvalidModbusRequestException" /> class with serialized data.
            </summary>
            <param name="info">The object that holds the serialized object data.</param>
            <param name="context">The contextual information about the source or destination.</param>
        </member>
        <member name="P:NModbus.InvalidModbusRequestException.ExceptionCode">
            <summary>
                Gets the Modbus exception code to provide to the slave.
            </summary>
        </member>
        <member name="M:NModbus.InvalidModbusRequestException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>Sets the <see cref="T:System.Runtime.Serialization.SerializationInfo" /> object with the Modbus exception code and additional exception information.</summary>
            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo" /> that holds the serialized object data about the exception being thrown.</param>
            <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext" /> that contains contextual information about the source or destination.</param>
        </member>
        <member name="T:NModbus.IO.IStreamResource">
            <summary>
                Represents a serial resource.
                Implementor - http://en.wikipedia.org/wiki/Bridge_Pattern
            </summary>
        </member>
        <member name="P:NModbus.IO.IStreamResource.InfiniteTimeout">
            <summary>
                Indicates that no timeout should occur.
            </summary>
        </member>
        <member name="P:NModbus.IO.IStreamResource.ReadTimeout">
            <summary>
                Gets or sets the number of milliseconds before a timeout occurs when a read operation does not finish.
            </summary>
        </member>
        <member name="P:NModbus.IO.IStreamResource.WriteTimeout">
            <summary>
                Gets or sets the number of milliseconds before a timeout occurs when a write operation does not finish.
            </summary>
        </member>
        <member name="M:NModbus.IO.IStreamResource.DiscardInBuffer">
            <summary>
                Purges the receive buffer.
            </summary>
        </member>
        <member name="M:NModbus.IO.IStreamResource.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
                Reads a number of bytes from the input buffer and writes those bytes into a byte array at the specified offset.
            </summary>
            <param name="buffer">The byte array to write the input to.</param>
            <param name="offset">The offset in the buffer array to begin writing.</param>
            <param name="count">The number of bytes to read.</param>
            <returns>The number of bytes read.</returns>
        </member>
        <member name="M:NModbus.IO.IStreamResource.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
                Writes a specified number of bytes to the port from an output buffer, starting at the specified offset.
            </summary>
            <param name="buffer">The byte array that contains the data to write to the port.</param>
            <param name="offset">The offset in the buffer array to begin writing.</param>
            <param name="count">The number of bytes to write.</param>
        </member>
        <member name="T:NModbus.IO.ModbusAsciiTransport">
            <summary>
                Refined Abstraction - http://en.wikipedia.org/wiki/Bridge_Pattern
            </summary>
        </member>
        <member name="T:NModbus.IO.ModbusIpTransport">
            <summary>
                Transport for Internet protocols.
                Refined Abstraction - http://en.wikipedia.org/wiki/Bridge_Pattern
            </summary>
        </member>
        <member name="M:NModbus.IO.ModbusIpTransport.GetNewTransactionId">
            <summary>
                Create a new transaction ID.
            </summary>
        </member>
        <member name="T:NModbus.IO.ModbusRtuTransport">
            <summary>
                Refined Abstraction - http://en.wikipedia.org/wiki/Bridge_Pattern
            </summary>
        </member>
        <member name="T:NModbus.IO.ModbusSerialTransport">
            <summary>
                Transport for Serial protocols.
                Refined Abstraction - http://en.wikipedia.org/wiki/Bridge_Pattern
            </summary>
        </member>
        <member name="P:NModbus.IO.ModbusSerialTransport.CheckFrame">
            <summary>
            Gets or sets a value indicating whether LRC/CRC frame checking is performed on messages.
            </summary>
        </member>
        <member name="T:NModbus.IO.ModbusTransport">
            <summary>
            Modbus transport.
            Abstraction - http://en.wikipedia.org/wiki/Bridge_Pattern
            </summary>
        </member>
        <member name="M:NModbus.IO.ModbusTransport.#ctor(NModbus.IModbusFactory,NModbus.IModbusLogger)">
            <summary>
                This constructor is called by the NullTransport.
            </summary>
        </member>
        <member name="P:NModbus.IO.ModbusTransport.Retries">
            <summary>
                Number of times to retry sending message after encountering a failure such as an IOException,
                TimeoutException, or a corrupt message.
            </summary>
        </member>
        <member name="P:NModbus.IO.ModbusTransport.RetryOnOldResponseThreshold">
            <summary>
            If non-zero, this will cause a second reply to be read if the first is behind the sequence number of the
            request by less than this number.  For example, set this to 3, and if when sending request 5, response 3 is
            read, we will attempt to re-read responses.
            </summary>
        </member>
        <member name="P:NModbus.IO.ModbusTransport.SlaveBusyUsesRetryCount">
            <summary>
            If set, Slave Busy exception causes retry count to be used.  If false, Slave Busy will cause infinite retries
            </summary>
        </member>
        <member name="P:NModbus.IO.ModbusTransport.WaitToRetryMilliseconds">
            <summary>
                Gets or sets the number of milliseconds the tranport will wait before retrying a message after receiving
                an ACKNOWLEGE or SLAVE DEVICE BUSY slave exception response.
            </summary>
        </member>
        <member name="P:NModbus.IO.ModbusTransport.ReadTimeout">
            <summary>
                Gets or sets the number of milliseconds before a timeout occurs when a read operation does not finish.
            </summary>
        </member>
        <member name="P:NModbus.IO.ModbusTransport.WriteTimeout">
            <summary>
                Gets or sets the number of milliseconds before a timeout occurs when a write operation does not finish.
            </summary>
        </member>
        <member name="P:NModbus.IO.ModbusTransport.StreamResource">
            <summary>
                Gets the stream resource.
            </summary>
        </member>
        <member name="P:NModbus.IO.ModbusTransport.Logger">
            <summary>
            Gets the logger for this instance.
            </summary>
        </member>
        <member name="M:NModbus.IO.ModbusTransport.Dispose">
            <summary>
                Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:NModbus.IO.ModbusTransport.ShouldRetryResponse(NModbus.IModbusMessage,NModbus.IModbusMessage)">
            <summary>
                Check whether we need to attempt to read another response before processing it (e.g. response was from previous request)
            </summary>
        </member>
        <member name="M:NModbus.IO.ModbusTransport.OnShouldRetryResponse(NModbus.IModbusMessage,NModbus.IModbusMessage)">
            <summary>
                Provide hook to check whether receiving a response should be retried
            </summary>
        </member>
        <member name="M:NModbus.IO.ModbusTransport.OnValidateResponse(NModbus.IModbusMessage,NModbus.IModbusMessage)">
            <summary>
                Provide hook to do transport level message validation.
            </summary>
        </member>
        <member name="M:NModbus.IO.ModbusTransport.Dispose(System.Boolean)">
            <summary>
                Releases unmanaged and - optionally - managed resources
            </summary>
            <param name="disposing">
                <c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only
                unmanaged resources.
            </param>
        </member>
        <member name="T:NModbus.IO.SocketAdapter">
            <summary>
                Concrete Implementor - http://en.wikipedia.org/wiki/Bridge_Pattern
                This implementation is for sockets that Convert Rs485 to Ethernet.
            </summary>
        </member>
        <member name="T:NModbus.IO.TcpClientAdapter">
            <summary>
                Concrete Implementor - http://en.wikipedia.org/wiki/Bridge_Pattern
            </summary>
        </member>
        <member name="T:NModbus.IO.UdpClientAdapter">
            <summary>
                Concrete Implementor - http://en.wikipedia.org/wiki/Bridge_Pattern
            </summary>
        </member>
        <member name="T:NModbus.Logging.DebugModbusLogger">
            <summary>
            Writes using Debug.WriteLine().
            </summary>
        </member>
        <member name="T:NModbus.Logging.ModbusLogger">
            <summary>
            Base class for Modbus loggers.
            </summary>
        </member>
        <member name="M:NModbus.Logging.ModbusLogger.ShouldLog(NModbus.LoggingLevel)">
            <summary>
            Returns true if the level should be loggged, false otherwise.
            </summary>
            <param name="level"></param>
            <returns></returns>
        </member>
        <member name="M:NModbus.Logging.ModbusLogger.Log(NModbus.LoggingLevel,System.String)">
            <summary>
            Log the specified message at the specified level.
            </summary>
            <param name="level"></param>
            <param name="message"></param>
        </member>
        <member name="M:NModbus.Logging.ModbusLogger.LogCore(NModbus.LoggingLevel,System.String)">
            <summary>
            Override this method to implement logging behavior. This function will only be called if ShouldLog(level) is true.
            </summary>
            <param name="level"></param>
            <param name="message"></param>
        </member>
        <member name="T:NModbus.Logging.NullModbusLogger">
            <summary>
            Empty logger.
            </summary>
        </member>
        <member name="F:NModbus.Logging.NullModbusLogger.Instance">
            <summary>
            Singleton.
            </summary>
        </member>
        <member name="M:NModbus.Logging.NullModbusLogger.Log(NModbus.LoggingLevel,System.String)">
            <summary>
            This won't do anything.
            </summary>
            <param name="level"></param>
            <param name="message"></param>
        </member>
        <member name="M:NModbus.Logging.NullModbusLogger.ShouldLog(NModbus.LoggingLevel)">
            <summary>
            Always returnsa false
            </summary>
            <param name="level"></param>
            <returns></returns>
        </member>
        <member name="T:NModbus.Message.AbstractModbusMessage">
            <summary>
                Abstract Modbus message.
            </summary>
        </member>
        <member name="M:NModbus.Message.AbstractModbusMessage.#ctor">
            <summary>
                Abstract Modbus message.
            </summary>
        </member>
        <member name="M:NModbus.Message.AbstractModbusMessage.#ctor(System.Byte,System.Byte)">
            <summary>
                Abstract Modbus message.
            </summary>
        </member>
        <member name="T:NModbus.Message.IModbusRequest">
            <summary>
                Methods specific to a modbus request message.
            </summary>
        </member>
        <member name="M:NModbus.Message.IModbusRequest.ValidateResponse(NModbus.IModbusMessage)">
            <summary>
                Validate the specified response against the current request.
            </summary>
        </member>
        <member name="T:NModbus.Message.ModbusMessageFactory">
            <summary>
            Modbus message factory.
            </summary>
        </member>
        <member name="M:NModbus.Message.ModbusMessageFactory.CreateModbusMessage``1(System.Byte[])">
            <summary>
            Create a Modbus message.
            </summary>
            <typeparam name="T">Modbus message type.</typeparam>
            <param name="frame">Bytes of Modbus frame.</param>
            <returns>New Modbus message based on type and frame bytes.</returns>
        </member>
        <member name="T:NModbus.Message.ModbusMessageImpl">
            <summary>
                Class holding all implementation shared between two or more message types.
                Interfaces expose subsets of type specific implementations.
            </summary>
        </member>
        <member name="M:NModbus.Message.SlaveExceptionResponse.ToString">
            <summary>
                Returns a <see cref="T:System.String"></see> that represents the current <see cref="T:System.Object"></see>.
            </summary>
            <returns>
                A <see cref="T:System.String"></see> that represents the current <see cref="T:System.Object"></see>.
            </returns>
        </member>
        <member name="T:NModbus.Message.WriteMultipleCoilsRequest">
            <summary>
                Write Multiple Coils request.
            </summary>
        </member>
        <member name="M:NModbus.Message.WriteMultipleCoilsRequest.#ctor">
            <summary>
                Write Multiple Coils request.
            </summary>
        </member>
        <member name="M:NModbus.Message.WriteMultipleCoilsRequest.#ctor(System.Byte,System.UInt16,NModbus.Data.DiscreteCollection)">
            <summary>
                Write Multiple Coils request.
            </summary>
        </member>
        <member name="T:NModbus.Modbus">
            <summary>
                Defines constants related to the Modbus protocol.
            </summary>
        </member>
        <member name="F:NModbus.ModbusFactory.BuiltInFunctionServices">
            <summary>
            The "built-in" message handlers.
            </summary>
        </member>
        <member name="M:NModbus.ModbusFactory.#ctor">
            <summary>
            Create a factory which uses the built in standard slave function handlers.
            </summary>
        </member>
        <member name="M:NModbus.ModbusFactory.#ctor(System.Collections.Generic.IEnumerable{NModbus.IModbusFunctionService},System.Boolean,NModbus.IModbusLogger)">
            <summary>
            Create a factory which optionally uses the built in function services and allows custom services to be added.
            </summary>
            <param name="functionServices">User provided function services.</param>
            <param name="includeBuiltIn">If true, the built in function services are included. Otherwise, all function services will come from the functionService parameter.</param>
            <param name="logger">Logger</param>
        </member>
        <member name="T:NModbus.ModbusFunctionCodes">
            <summary>
            Supported function codes
            </summary>
        </member>
        <member name="T:NModbus.SlaveException">
            <summary>
                Represents slave errors that occur during communication.
            </summary>
        </member>
        <member name="M:NModbus.SlaveException.#ctor">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.SlaveException" /> class.
            </summary>
        </member>
        <member name="M:NModbus.SlaveException.#ctor(System.String)">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.SlaveException" /> class.
            </summary>
            <param name="message">The message.</param>
        </member>
        <member name="M:NModbus.SlaveException.#ctor(System.String,System.Exception)">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.SlaveException" /> class.
            </summary>
            <param name="message">The message.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="M:NModbus.SlaveException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
                Initializes a new instance of the <see cref="T:NModbus.SlaveException" /> class.
            </summary>
            <param name="info">
                The <see cref="T:System.Runtime.Serialization.SerializationInfo"></see> that holds the serialized
                object data about the exception being thrown.
            </param>
            <param name="context">
                The <see cref="T:System.Runtime.Serialization.StreamingContext"></see> that contains contextual
                information about the source or destination.
            </param>
            <exception cref="T:System.Runtime.Serialization.SerializationException">
                The class name is null or
                <see cref="P:System.Exception.HResult"></see> is zero (0).
            </exception>
            <exception cref="T:System.ArgumentNullException">The info parameter is null. </exception>
        </member>
        <member name="P:NModbus.SlaveException.Message">
            <summary>
                Gets a message that describes the current exception.
            </summary>
            <value>
                The error message that explains the reason for the exception, or an empty string.
            </value>
        </member>
        <member name="P:NModbus.SlaveException.FunctionCode">
            <summary>
                Gets the response function code that caused the exception to occur, or 0.
            </summary>
            <value>The function code.</value>
        </member>
        <member name="P:NModbus.SlaveException.SlaveExceptionCode">
            <summary>
                Gets the slave exception code, or 0.
            </summary>
            <value>The slave exception code.</value>
        </member>
        <member name="P:NModbus.SlaveException.SlaveAddress">
            <summary>
                Gets the slave address, or 0.
            </summary>
            <value>The slave address.</value>
        </member>
        <member name="M:NModbus.SlaveException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
                When overridden in a derived class, sets the <see cref="T:System.Runtime.Serialization.SerializationInfo"></see>
                with information about the exception.
            </summary>
            <param name="info">
                The <see cref="T:System.Runtime.Serialization.SerializationInfo"></see> that holds the serialized
                object data about the exception being thrown.
            </param>
            <param name="context">
                The <see cref="T:System.Runtime.Serialization.StreamingContext"></see> that contains contextual
                information about the source or destination.
            </param>
            <exception cref="T:System.ArgumentNullException">The info parameter is a null reference (Nothing in Visual Basic). </exception>
            <PermissionSet>
                <IPermission
                    class="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                    version="1" Read="*AllFiles*" PathDiscovery="*AllFiles*" />
                <IPermission
                    class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                    version="1" Flags="SerializationFormatter" />
            </PermissionSet>
        </member>
        <member name="T:NModbus.SlaveExceptionCodes">
            <summary>
             Modbus slave exception codes
            </summary>
        </member>
        <member name="F:NModbus.SlaveExceptionCodes.IllegalFunction">
            <summary>
            The function code received in the query is not an allowable action for the slave.  This may be because the function code is only applicable to newer devices, and was not implemented in the unit selected.  It could also indicate that the slave is in the wrong state to process a request of this type, for example because it is unconfigured and is being asked to return register values. If a Poll Program Complete command was issued, this code indicates that no program function preceded it.
            </summary>
        </member>
        <member name="F:NModbus.SlaveExceptionCodes.IllegalDataAddress">
            <summary>
            The data address received in the query is not an allowable address for the slave. More specifically, the combination of reference number and transfer length is invalid. For a controller with 100 registers, a request with offset 96 and length 4 would succeed, a request with offset 96 and length 5 will generate exception 02.
            </summary>
        </member>
        <member name="F:NModbus.SlaveExceptionCodes.IllegalDataValue">
            <summary>
            A value contained in the query data field is not an allowable value for the slave.  This indicates a fault in the structure of remainder of a complex request, such as that the implied length is incorrect. It specifically does NOT mean that a data item submitted for storage in a register has a value outside the expectation of the application program, since the MODBUS protocol is unaware of the significance of any particular value of any particular register.
            </summary>
        </member>
        <member name="F:NModbus.SlaveExceptionCodes.SlaveDeviceFailure">
            <summary>
            An unrecoverable error occurred while the slave was attempting to perform the requested action.
            </summary>
        </member>
        <member name="F:NModbus.SlaveExceptionCodes.Acknowledge">
            <summary>
            Specialized use in conjunction with programming commands.
            
            The slave has accepted the request and is processing it, but a long duration of time will be required to do so.T
            his response is returned to prevent a timeout error from occurring in the master.The master can next issue a 
            Poll Program Complete message to determine if processing is completed.
            </summary>
        </member>
        <member name="F:NModbus.SlaveExceptionCodes.SlaveDeviceBusy">
            <summary>
            Specialized use in conjunction with programming commands.
            The slave is engaged in processing a long-duration program command.The master should retransmit 
            the message later when the slave is free.
            </summary>
        </member>
        <member name="T:NModbus.Utility.DiscriminatedUnionOption">
            <summary>
                Possible options for DiscriminatedUnion type.
            </summary>
        </member>
        <member name="F:NModbus.Utility.DiscriminatedUnionOption.A">
            <summary>
                Option A.
            </summary>
        </member>
        <member name="F:NModbus.Utility.DiscriminatedUnionOption.B">
            <summary>
                Option B.
            </summary>
        </member>
        <member name="T:NModbus.Utility.DiscriminatedUnion`2">
            <summary>
                A data type that can store one of two possible strongly typed options.
            </summary>
            <typeparam name="TA">The type of option A.</typeparam>
            <typeparam name="TB">The type of option B.</typeparam>
        </member>
        <member name="P:NModbus.Utility.DiscriminatedUnion`2.A">
            <summary>
                Gets the value of option A.
            </summary>
        </member>
        <member name="P:NModbus.Utility.DiscriminatedUnion`2.B">
            <summary>
                Gets the value of option B.
            </summary>
        </member>
        <member name="P:NModbus.Utility.DiscriminatedUnion`2.Option">
            <summary>
                Gets the discriminated value option set for this instance.
            </summary>
        </member>
        <member name="M:NModbus.Utility.DiscriminatedUnion`2.CreateA(`0)">
            <summary>
                Factory method for creating DiscriminatedUnion with option A set.
            </summary>
        </member>
        <member name="M:NModbus.Utility.DiscriminatedUnion`2.CreateB(`1)">
            <summary>
                Factory method for creating DiscriminatedUnion with option B set.
            </summary>
        </member>
        <member name="M:NModbus.Utility.DiscriminatedUnion`2.ToString">
            <summary>
                Returns a <see cref="T:System.String" /> that represents the current <see cref="T:System.Object" />.
            </summary>
            <returns>
                A <see cref="T:System.String" /> that represents the current <see cref="T:System.Object" />.
            </returns>
        </member>
        <member name="T:NModbus.Utility.ModbusUtility">
            <summary>
                Modbus utility methods.
            </summary>
        </member>
        <member name="M:NModbus.Utility.ModbusUtility.GetDouble(System.UInt16,System.UInt16,System.UInt16,System.UInt16)">
            <summary>
                Converts four UInt16 values into a IEEE 64 floating point format.
            </summary>
            <param name="b3">Highest-order ushort value.</param>
            <param name="b2">Second-to-highest-order ushort value.</param>
            <param name="b1">Second-to-lowest-order ushort value.</param>
            <param name="b0">Lowest-order ushort value.</param>
            <returns>IEEE 64 floating point value.</returns>
        </member>
        <member name="M:NModbus.Utility.ModbusUtility.GetSingle(System.UInt16,System.UInt16)">
            <summary>
                Converts two UInt16 values into a IEEE 32 floating point format.
            </summary>
            <param name="highOrderValue">High order ushort value.</param>
            <param name="lowOrderValue">Low order ushort value.</param>
            <returns>IEEE 32 floating point value.</returns>
        </member>
        <member name="M:NModbus.Utility.ModbusUtility.GetUInt32(System.UInt16,System.UInt16)">
            <summary>
                Converts two UInt16 values into a UInt32.
            </summary>
        </member>
        <member name="M:NModbus.Utility.ModbusUtility.GetAsciiBytes(System.Byte[])">
            <summary>
                Converts an array of bytes to an ASCII byte array.
            </summary>
            <param name="numbers">The byte array.</param>
            <returns>An array of ASCII byte values.</returns>
        </member>
        <member name="M:NModbus.Utility.ModbusUtility.GetAsciiBytes(System.UInt16[])">
            <summary>
                Converts an array of UInt16 to an ASCII byte array.
            </summary>
            <param name="numbers">The ushort array.</param>
            <returns>An array of ASCII byte values.</returns>
        </member>
        <member name="M:NModbus.Utility.ModbusUtility.NetworkBytesToHostUInt16(System.Byte[])">
            <summary>
                Converts a network order byte array to an array of UInt16 values in host order.
            </summary>
            <param name="networkBytes">The network order byte array.</param>
            <returns>The host order ushort array.</returns>
        </member>
        <member name="M:NModbus.Utility.ModbusUtility.HexToBytes(System.String)">
            <summary>
                Converts a hex string to a byte array.
            </summary>
            <param name="hex">The hex string.</param>
            <returns>Array of bytes.</returns>
        </member>
        <member name="M:NModbus.Utility.ModbusUtility.CalculateLrc(System.Byte[])">
            <summary>
                Calculate Longitudinal Redundancy Check.
            </summary>
            <param name="data">The data used in LRC.</param>
            <returns>LRC value.</returns>
        </member>
        <member name="M:NModbus.Utility.ModbusUtility.CalculateCrc(System.Byte[])">
            <summary>
                Calculate Cyclical Redundancy Check.
            </summary>
            <param name="data">The data used in CRC.</param>
            <returns>CRC value.</returns>
        </member>
    </members>
</doc>
