You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by jv...@apache.org on 2011/03/25 11:50:46 UTC

svn commit: r1085314 - in /mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus: ./ transport/rtu/ transport/tcp/

Author: jvermillard
Date: Fri Mar 25 10:50:46 2011
New Revision: 1085314

URL: http://svn.apache.org/viewvc?rev=1085314&view=rev
Log:
more javadoc on modbus classes

Modified:
    mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/ModbusTable.java
    mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusDecoder.java
    mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusEncoder.java
    mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusMessage.java
    mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusTransport.java
    mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusDecoder.java
    mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusEncoder.java
    mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusMessage.java
    mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusTransport.java

Modified: mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/ModbusTable.java
URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/ModbusTable.java?rev=1085314&r1=1085313&r2=1085314&view=diff
==============================================================================
--- mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/ModbusTable.java (original)
+++ mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/ModbusTable.java Fri Mar 25 10:50:46 2011
@@ -20,7 +20,7 @@
 package org.apache.mina.modbus;
 
 /**
- * A modbus table. This table is a slave and reply with values to the request of the master.
+ * A Modbus table. This table is a slave and reply with values to the request of the master.
  * 
  * @author <a href="http://mina.apache.org">Apache MINA Project</a>
  *

Modified: mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusDecoder.java
URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusDecoder.java?rev=1085314&r1=1085313&r2=1085314&view=diff
==============================================================================
--- mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusDecoder.java (original)
+++ mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusDecoder.java Fri Mar 25 10:50:46 2011
@@ -24,6 +24,7 @@ import java.nio.ByteOrder;
 import org.apache.mina.core.buffer.IoBuffer;
 import org.apache.mina.core.session.IoSession;
 import org.apache.mina.filter.codec.CumulativeProtocolDecoder;
+import org.apache.mina.filter.codec.ProtocolDecoder;
 import org.apache.mina.filter.codec.ProtocolDecoderException;
 import org.apache.mina.filter.codec.ProtocolDecoderOutput;
 import org.apache.mina.modbus.ModbusConstants;
@@ -31,6 +32,13 @@ import org.apache.mina.modbus.transport.
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * A {@link ProtocolDecoder} implementation decoding Modbus RTRU messages.
+ * Can be used in slave of master mode( {@link RTUModbusDecoder#RTUModbusDecoder(boolean)})
+ * 
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ *  *
+ */
 public class RTUModbusDecoder extends CumulativeProtocolDecoder {
 
     private static final Logger LOG = LoggerFactory.getLogger(RTUModbusDecoder.class);
@@ -42,6 +50,9 @@ public class RTUModbusDecoder extends Cu
     }
 
     @Override
+    /**
+     * {@inheritDoc}
+     */
     protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception {
 
         in.order(ByteOrder.BIG_ENDIAN);

Modified: mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusEncoder.java
URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusEncoder.java?rev=1085314&r1=1085313&r2=1085314&view=diff
==============================================================================
--- mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusEncoder.java (original)
+++ mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusEncoder.java Fri Mar 25 10:50:46 2011
@@ -27,10 +27,19 @@ import org.apache.mina.filter.codec.Prot
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * A {@link ProtocolEncoder} implementation encoding Modbus RTU messages.
+ * 
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ *
+ */
 public class RTUModbusEncoder implements ProtocolEncoder {
 
     private static final Logger LOG = LoggerFactory.getLogger(RTUModbusEncoder.class);
 
+    /**
+     * {@inheritDoc}
+     */
     public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws ProtocolEncoderException {
         if (message instanceof RTUModbusMessage) {
             IoBuffer buf = ((RTUModbusMessage) message).encode();
@@ -46,6 +55,9 @@ public class RTUModbusEncoder implements
         }
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public void dispose(IoSession session) throws Exception {
     }
 }

Modified: mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusMessage.java
URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusMessage.java?rev=1085314&r1=1085313&r2=1085314&view=diff
==============================================================================
--- mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusMessage.java (original)
+++ mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusMessage.java Fri Mar 25 10:50:46 2011
@@ -23,9 +23,17 @@ import java.nio.ByteOrder;
 import java.security.InvalidParameterException;
 
 import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.mina.modbus.ModbusConstants;
 import org.apache.mina.modbus.msg.ModbusMessage;
 
-
+/**
+ * The RTU Modbus message. It's {@link ModbusMessage} with the extra field used
+ * for the Modbus RTU.
+ * For understanding the different fields of a RTU modbus message you need to refer to
+ * the <a href="http://www.modbus.org">Modbus specification</a>.
+ * 
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
 public class RTUModbusMessage implements ModbusMessage {
 
     private int functionCode;
@@ -34,10 +42,23 @@ public class RTUModbusMessage implements
 
     private int device;
 
+    /**
+     * Create a RTU Modbus message with the specified device identifier and function code from
+     * {@link ModbusConstants}.
+     * @param device the device identifier
+     * @param functioncode the function code {@link ModbusConstants}
+     */
     public RTUModbusMessage(int device, int functioncode) {
         this(device, functioncode, new byte[] {});
     }
 
+    /**
+     * Create a RTU Modbus message  with the specified device identifier, payload and function code from
+     * {@link ModbusConstants}.
+     * @param device the device identifier
+     * @param functioncode the function code {@link ModbusConstants}
+     * @param data the payload
+     */
     public RTUModbusMessage(int device, int functioncode, byte[] data) {
         this.device = device;
         this.functionCode = functioncode;
@@ -72,18 +93,30 @@ public class RTUModbusMessage implements
         buffer.order(oldOrder);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public int getFunctionCode() {
         return functionCode;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public byte[] getData() {
         return data;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public void setData(byte[] data) {
         this.data = data;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public int getDevice() {
         return device;
     }
@@ -104,6 +137,12 @@ public class RTUModbusMessage implements
         return buff.flip();
     }
 
+    /**
+     * The RTU message can't be decoded due to a corruption resulting into an incorrect CRC 
+     * check.
+     * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+     *
+     */
     public class CRCException extends Exception {
 
         private static final long serialVersionUID = 1L;
@@ -114,6 +153,9 @@ public class RTUModbusMessage implements
 
     }
 
+    /**
+     * 16 bits polynomial CRC computation. Check RTU Modbus specification for fancy details.
+     */
     private int getCrc(IoBuffer buf, int start, int end) {
 
         int oldPos = buf.position();
@@ -152,6 +194,9 @@ public class RTUModbusMessage implements
         return "RTUModbusMessage {dev=" + getDevice() + ",func=" + getFunctionCode() + ",data = " + dataStr + " }";
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public void setFunctionCode(int functionCode) {
         this.functionCode = functionCode;
     }

Modified: mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusTransport.java
URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusTransport.java?rev=1085314&r1=1085313&r2=1085314&view=diff
==============================================================================
--- mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusTransport.java (original)
+++ mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/rtu/RTUModbusTransport.java Fri Mar 25 10:50:46 2011
@@ -47,11 +47,17 @@ public class RTUModbusTransport implemen
         this.hostname = hostname;
         this.port = port;
     }
-
+    
+    /**
+     * {@inheritDoc}
+     */
     public ProtocolDecoder createDecoder(boolean master) {
         return new RTUModbusDecoder(master);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public ProtocolEncoder createEncoder() {
         return new RTUModbusEncoder();
     }
@@ -60,6 +66,9 @@ public class RTUModbusTransport implemen
 
     private IoSession session;
 
+    /**
+     * {@inheritDoc}
+     */
     public void connect(final IoHandler handler) {
         // create connection thread
         Thread cnxThread = new Thread("ModbusConnection") {
@@ -91,11 +100,17 @@ public class RTUModbusTransport implemen
 
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public ModbusMessage createReplyMessage(ModbusMessage query) {
         RTUModbusMessage msg = (RTUModbusMessage) query;
         return new RTUModbusMessage(msg.getDevice(), msg.getFunctionCode());
     }
-
+    
+    /**
+     * {@inheritDoc}
+     */
     public ModbusMessage createMessage(int functionCode, int device) {
         return new RTUModbusMessage(device, functionCode);
     }

Modified: mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusDecoder.java
URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusDecoder.java?rev=1085314&r1=1085313&r2=1085314&view=diff
==============================================================================
--- mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusDecoder.java (original)
+++ mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusDecoder.java Fri Mar 25 10:50:46 2011
@@ -24,23 +24,38 @@ import java.nio.ByteOrder;
 import org.apache.mina.core.buffer.IoBuffer;
 import org.apache.mina.core.session.IoSession;
 import org.apache.mina.filter.codec.CumulativeProtocolDecoder;
+import org.apache.mina.filter.codec.ProtocolDecoder;
 import org.apache.mina.filter.codec.ProtocolDecoderException;
 import org.apache.mina.filter.codec.ProtocolDecoderOutput;
 import org.apache.mina.modbus.ModbusConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * A {@link ProtocolDecoder} implementation decoding Modbus TCP messages.
+ * Can be used in slave of master mode( {@link TCPModbusDecoder#TCPModbusDecoder(boolean)})
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ *
+ */
 public class TCPModbusDecoder extends CumulativeProtocolDecoder {
 
     private static final Logger LOG = LoggerFactory.getLogger(TCPModbusDecoder.class);
 
     private boolean master;
 
+    /**
+     * Create the decoder. 
+     * @param master <code>true</code> if the decoder if for behaving like a Modbus master (the master is the
+     * device sending queries, the slave is usualy a table only replying to request of the master).
+     */
     public TCPModbusDecoder(boolean master) {
         this.master = master;
     }
 
     @Override
+    /**
+     * {@inheritDoc}
+     */
     protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception {
 
         in.order(ByteOrder.BIG_ENDIAN);
@@ -48,9 +63,7 @@ public class TCPModbusDecoder extends Cu
         int startPos = in.position();
         boolean isDecoded = false;
 
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("doDecode bytes : " + in);
-        }
+        LOG.debug("doDecode bytes : {}",in);
 
         if ((in.remaining() < 8)) {
             in.position(startPos);
@@ -73,9 +86,8 @@ public class TCPModbusDecoder extends Cu
 
     @SuppressWarnings("unused")
     private boolean decodeReply(IoBuffer in, ProtocolDecoderOutput out) throws ProtocolDecoderException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Decode a reply : " + in);
-        }
+        LOG.debug("Decode a reply : {}",in);
+
         int startPos = in.position();
 
         in.order(ByteOrder.BIG_ENDIAN);
@@ -109,7 +121,7 @@ public class TCPModbusDecoder extends Cu
                 }
 
                 msg = new TCPModbusMessage(in);
-                //decode
+
                 out.write(msg);
                 return true;
 
@@ -139,7 +151,7 @@ public class TCPModbusDecoder extends Cu
             }
 
             msg = new TCPModbusMessage(in);
-            //decode
+
             out.write(msg);
             return true;
 
@@ -166,9 +178,7 @@ public class TCPModbusDecoder extends Cu
 
     @SuppressWarnings("unused")
     private boolean decodeQuery(IoBuffer in, ProtocolDecoderOutput out) throws ProtocolDecoderException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Decode a query : " + in);
-        }
+        LOG.debug("Decode a query : {}",in);
         int startPos = in.position();
 
         in.order(ByteOrder.BIG_ENDIAN);
@@ -227,7 +237,7 @@ public class TCPModbusDecoder extends Cu
                 return false;
             }
 
-            msg = new TCPModbusMessage(in);//, dataLen + 9);
+            msg = new TCPModbusMessage(in);
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Decoded a Modbus multiple query : " + msg);
             }

Modified: mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusEncoder.java
URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusEncoder.java?rev=1085314&r1=1085313&r2=1085314&view=diff
==============================================================================
--- mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusEncoder.java (original)
+++ mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusEncoder.java Fri Mar 25 10:50:46 2011
@@ -26,8 +26,17 @@ import org.apache.mina.filter.codec.Prot
 import org.apache.mina.filter.codec.ProtocolEncoderException;
 import org.apache.mina.filter.codec.ProtocolEncoderOutput;
 
+/**
+ * A {@link ProtocolEncoder} implementation encoding Modbus TCP messages.
+ * 
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ *
+ */
 public class TCPModbusEncoder implements ProtocolEncoder {
 
+    /**
+     * {@inheritDoc}
+     */
     public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws ProtocolEncoderException {
         if (message instanceof TCPModbusMessage) {
             IoBuffer buf = ((TCPModbusMessage) message).encode();
@@ -37,7 +46,10 @@ public class TCPModbusEncoder implements
         }
 
     }
-
+    
+    /**
+     * {@inheritDoc}
+     */
     public void dispose(IoSession session) throws Exception {
 
     }

Modified: mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusMessage.java
URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusMessage.java?rev=1085314&r1=1085313&r2=1085314&view=diff
==============================================================================
--- mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusMessage.java (original)
+++ mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusMessage.java Fri Mar 25 10:50:46 2011
@@ -22,17 +22,23 @@ package org.apache.mina.modbus.transport
 import java.nio.ByteOrder;
 
 import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.mina.modbus.ModbusConstants;
 import org.apache.mina.modbus.msg.ModbusMessage;
 
+/**
+ * The TCP Modbus message. It's {@link ModbusMessage} with the extra field used
+ * for the Modbus TCP.
+ * For understanding the different fields of a TCP modbus message you need to refer to
+ * the <a href="http://www.modbus.org">Modbus specification</a>.
+ * 
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ * 
+ */
 public class TCPModbusMessage implements ModbusMessage {
 
     // modbus variables
     private int functionCode;
 
-    public void setFunctionCode(int functionCode) {
-        this.functionCode = functionCode;
-    }
-
     private byte[] data;
 
     // TCP Modbus variables
@@ -42,17 +48,23 @@ public class TCPModbusMessage implements
 
     private int unitId;
 
-    public int getUnitId() {
-        return unitId;
-    }
-
+    /**
+     * Create a TCP Modbus message with the corresponding transaction identifier, function code 
+     * (see : {@link ModbusConstants}).
+     * @param transactionIdentifier the transaction identifier for this message (look at Modbus specifications)
+     * @param functionCode the function code for this message (one of {@link ModbusConstants}).
+     * @param unitId unit identifier  (look at Modbus specifications)
+     */
     public TCPModbusMessage(int transactionIdentifier, int functionCode, int unitId) {
         this.transactionIdentifier = transactionIdentifier;
-        // this.protocolIdentifier = protocolIdentifier;
         this.functionCode = functionCode;
         this.unitId = unitId;
     }
 
+    /**
+     * Create a TCP message from a buffer of bytes.
+     * @param buffer the buffer of bytes with the PDU
+     */
     public TCPModbusMessage(IoBuffer buffer) {
         ByteOrder oldOrder = buffer.order();
         buffer.order(ByteOrder.BIG_ENDIAN);
@@ -69,28 +81,68 @@ public class TCPModbusMessage implements
         buffer.order(oldOrder);
     }
 
+    /**
+     * The unit identifier of this message
+     * @return the unit identifier
+     */
+    public int getUnitId() {
+        return unitId;
+    }
+
+    /**
+     * Set the function code for this message (one of {@link ModbusConstants}).
+     */
+    public void setFunctionCode(int functionCode) {
+        this.functionCode = functionCode;
+    }
+
+    /**
+     * Get the payload of this modbus message.
+     */
     public byte[] getData() {
         return data;
     }
 
+    /**
+     * Get the function code of this message.
+     */
     public int getFunctionCode() {
         return functionCode;
     }
 
+    /**
+     * Set the payload of this Modbus message.
+     */
     public void setData(byte[] data) {
         this.data = data;
     }
 
+    /**
+     * Get the transaction identifier of this message.
+     * @return the transaction identifier
+     */
     public int getTransactionIdentifier() {
         return transactionIdentifier;
     }
-
+    
+    /**
+     * Get the protocol identifier of this message.
+     * @return the protocol identifier
+     */
     public int getProtocolIdentifier() {
         return protocolIdentifier;
     }
 
     /**
+     * Get the unit id of the device of this message.
+     */
+    public int getDevice() {
+        return unitId;
+    }
+
+    /**
      * create a buffer encoding this PDU
+     * 
      * @return a new pooled ByteBuffer
      */
     public IoBuffer encode() {
@@ -121,8 +173,4 @@ public class TCPModbusMessage implements
                 + ",unitId=" + getUnitId() + ",func=" + getFunctionCode() + ",data = " + data + " }";
     }
 
-    public int getDevice() {
-        return unitId;
-    }
-
 }
\ No newline at end of file

Modified: mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusTransport.java
URL: http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusTransport.java?rev=1085314&r1=1085313&r2=1085314&view=diff
==============================================================================
--- mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusTransport.java (original)
+++ mina/sandbox/jvermillard/mina-modbus/src/main/java/org/apache/mina/modbus/transport/tcp/TCPModbusTransport.java Fri Mar 25 10:50:46 2011
@@ -21,11 +21,13 @@ package org.apache.mina.modbus.transport
 
 
 import java.io.IOException;
+import java.lang.annotation.Inherited;
 import java.net.InetSocketAddress;
 
 import org.apache.mina.core.service.IoHandler;
 import org.apache.mina.filter.codec.ProtocolDecoder;
 import org.apache.mina.filter.codec.ProtocolEncoder;
+import org.apache.mina.modbus.ModbusSlave;
 import org.apache.mina.modbus.msg.ModbusMessage;
 import org.apache.mina.modbus.transport.ModbusTransport;
 import org.apache.mina.transport.socket.SocketAcceptor;
@@ -33,6 +35,13 @@ import org.apache.mina.transport.socket.
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * The TCP Modbus implementation of {@link ModbusTransport}.
+ * Useful for creating TCP Modbus table ( see {@link ModbusSlave}).
+ * 
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ *
+ */
 public class TCPModbusTransport implements ModbusTransport {
 
     private int transactionIdentifier = 0;
@@ -41,10 +50,17 @@ public class TCPModbusTransport implemen
 
     private Logger logger = LoggerFactory.getLogger(TCPModbusTransport.class);
 
+    /**
+     * Create the modbus transport which will bind the specified TCP port. 
+     * @param port the TCP port to bind
+     */
     public TCPModbusTransport(int port) {
         this.port = port;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public void connect(IoHandler handler) {
         SocketAcceptor acceptor = new NioSocketAcceptor();
         acceptor.setReuseAddress(true);
@@ -56,14 +72,23 @@ public class TCPModbusTransport implemen
         }
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public ProtocolDecoder createDecoder(boolean master) {
         return new TCPModbusDecoder(master);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public ProtocolEncoder createEncoder() {
         return new TCPModbusEncoder();
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public ModbusMessage createReplyMessage(ModbusMessage query) {
         TCPModbusMessage msg = (TCPModbusMessage) query;
         TCPModbusMessage reply = new TCPModbusMessage(msg.getTransactionIdentifier(), msg.getFunctionCode(), msg
@@ -71,6 +96,9 @@ public class TCPModbusTransport implemen
         return reply;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public ModbusMessage createMessage(int functionCode, int unitId) {
         return new TCPModbusMessage(((int) transactionIdentifier++ % Integer.MAX_VALUE), functionCode, unitId);
     }