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 2007/05/03 14:44:11 UTC

svn commit: r534826 - in /mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial: DefaultSerialSessionConfig.java SerialConnector.java SerialSession.java SerialSessionConfig.java

Author: jvermillard
Date: Thu May  3 05:44:10 2007
New Revision: 534826

URL: http://svn.apache.org/viewvc?view=rev&rev=534826
Log:
Serial communications :
 - fixed TODO and FIXME,
 - removed useless parameters,
 - parametrized port opening timeout,
 - removed an hardcoded threshold value

Modified:
    mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/DefaultSerialSessionConfig.java
    mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
    mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java
    mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSessionConfig.java

Modified: mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/DefaultSerialSessionConfig.java
URL: http://svn.apache.org/viewvc/mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/DefaultSerialSessionConfig.java?view=diff&rev=534826&r1=534825&r2=534826
==============================================================================
--- mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/DefaultSerialSessionConfig.java (original)
+++ mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/DefaultSerialSessionConfig.java Thu May  3 05:44:10 2007
@@ -27,6 +27,9 @@
  */
 public class DefaultSerialSessionConfig implements SerialSessionConfig {
 
+
+    private int timeout = 2000;
+
     private int receiveThreshold = -1;
 
     private int inputBufferSize = 8;
@@ -68,11 +71,11 @@
         receiveThreshold = bytes;
     }
 
-    public int getReceiveTimeout() {
-        return receiveTimeout;
+    public int getTimeout() {
+        return timeout;
     }
-
-    public void setReceiveTimeout(int milliseconds) {
-        receiveTimeout = milliseconds;
+ 
+    public void setTimeout(int timeout) {
+        this.timeout = timeout;
     }
 }

Modified: mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java?view=diff&rev=534826&r1=534825&r2=534826
==============================================================================
--- mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java (original)
+++ mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java Thu May  3 05:44:10 2007
@@ -85,8 +85,8 @@
                                             + portId.getName());
                         }
 
-                        SerialPort serialPort = initalizePort("Apache MINA",
-                                2000, portId, portAddress);
+                        SerialPort serialPort = initializePort("Apache MINA",
+                                portId, portAddress);
 
                         ConnectFuture future = new DefaultConnectFuture();
                         SerialSession session = new SerialSession(this,
@@ -123,11 +123,13 @@
         return SerialSession.serialTransportType;
     }
 
-    // FIXME Is user and timeout used somewhere?
-    private SerialPort initalizePort(String user, int timeout,
+    private SerialPort initializePort(String user, 
             CommPortIdentifier portId, SerialAddress portAddress)
             throws UnsupportedCommOperationException, PortInUseException {
-        SerialPort serialPort = (SerialPort) portId.open("Apache MINA", 2000); // TODO:  need a parameter for millisec. timeout
+	
+	SerialSessionConfig config = (SerialSessionConfig) getSessionConfig();
+
+        SerialPort serialPort = (SerialPort) portId.open(user, config.getTimeout()); 
 
         serialPort.setSerialPortParams(portAddress.getBauds(), portAddress
                 .getDataBitsForRXTX(), portAddress.getStopBitsForRXTX(),
@@ -136,7 +138,6 @@
         serialPort.setFlowControlMode(portAddress.getFLowControlForRXTX());
 
         serialPort.notifyOnDataAvailable(true);
-        SerialSessionConfig config = (SerialSessionConfig) getSessionConfig();
 
         if (config.isLowLantecy())
             serialPort.setLowLatency();
@@ -148,13 +149,6 @@
         } else
             serialPort.disableReceiveThreshold();
 
-        if (config.getReceiveTimeout() >= 0) {
-            serialPort.enableReceiveTimeout(config.getReceiveTimeout());
-        } else
-            serialPort.disableReceiveTimeout();
-
-        serialPort.enableReceiveThreshold(8);
-
         return serialPort;
     }
-}
\ No newline at end of file
+}

Modified: mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java
URL: http://svn.apache.org/viewvc/mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java?view=diff&rev=534826&r1=534825&r2=534826
==============================================================================
--- mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java (original)
+++ mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java Thu May  3 05:44:10 2007
@@ -55,17 +55,15 @@
 public class SerialSession extends BaseIoSession implements
         SerialPortEventListener {
 
-    // TODO make immutable fields 'final'.
-
     private SerialSessionConfig config;
 
-    private IoHandler ioHandler;
+    private final IoHandler ioHandler;
 
-    private IoFilterChain filterChain;
+    private final IoFilterChain filterChain;
 
-    private IoService service;
+    private final IoService service;
 
-    private SerialAddress address;
+    private final SerialAddress address;
 
     private final Queue<WriteRequest> writeRequestQueue;
 
@@ -73,9 +71,9 @@
 
     private OutputStream outputStream;
 
-    private SerialPort port;
+    private final SerialPort port;
 
-    private Logger log;
+    private final Logger log;
 
     public static final TransportType serialTransportType = new DefaultTransportType(
             "serial communication", false, SerialAddress.class,
@@ -261,8 +259,7 @@
 
                         if (readBytes > 0) {
                             increaseReadBytes(readBytes);
-                            // TODO : check if it's the good allocation way
-                            ByteBuffer buf = ByteBuffer.allocate(readBytes);
+                            ByteBuffer buf = ByteBuffer.wrap(data,0,readBytes);
                             buf.put(data, 0, readBytes);
                             buf.flip();
                             getFilterChain().fireMessageReceived(
@@ -306,4 +303,4 @@
         ((SerialConnector) getService()).getListeners().fireSessionDestroyed(
                 this);
     }
-}
\ No newline at end of file
+}

Modified: mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSessionConfig.java
URL: http://svn.apache.org/viewvc/mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSessionConfig.java?view=diff&rev=534826&r1=534825&r2=534826
==============================================================================
--- mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSessionConfig.java (original)
+++ mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSessionConfig.java Thu May  3 05:44:10 2007
@@ -31,6 +31,18 @@
 public interface SerialSessionConfig extends IoSessionConfig {
 
     /**
+     * Gets the timeout for port opening in milliseconds.
+     * @return timeout for port opening in milliseconds
+     */
+    int getTimeout();
+
+    /**
+     * Sets the timeout for opening the port. Value in milliseconds.
+     * @param timeout the timeout value in millseconds
+     */
+    public void setTimeout(int timeout);
+
+    /**
      * Gets the input buffer size. Note that this method is advisory and the underlying OS 
      * may choose not to report correct values for the buffer size.
      * @return input buffer size in bytes
@@ -57,26 +69,17 @@
     void setLowLatency(boolean lowLatency);
 
     /**
-     * TODO : to test if it's usefull for MINA
-     * @return
+     * The current receive threshold (-1 if not enabled). Give the value of the current buffer 
+     * needed for generate a new frame.
+     * @return the receive thresold in bytes or -1 if disabled
      */
     int getReceiveThreshold();
 
     /**
-     * TODO : to test if it's usefull for MINA
-     * @param bytes
+     * Set the receive threshold in byte (set it to -1 for disable). The serial port will try to 
+     * provide frame of the given minimal byte count. Be carefull some devices doesn't support it.
+     * @param bytes minimal amount of byte before producing a new frame, or -1 if disabled
      */
     void setReceiveThreshold(int bytes);
 
-    /**
-     * TODO : to test if it's usefull for MINA
-     * @param bytes
-     */
-    int getReceiveTimeout();
-
-    /**
-     * TODO : to test if it's usefull for MINA
-     * @param bytes
-     */
-    void setReceiveTimeout(int milliseconds);
 }