1    /*
     2     * Copyright (c) 2012, Texas Instruments Incorporated
     3     * All rights reserved.
     4     *
     5     * Redistribution and use in source and binary forms, with or without
     6     * modification, are permitted provided that the following conditions
     7     * are met:
     8     *
     9     * *  Redistributions of source code must retain the above copyright
    10     *    notice, this list of conditions and the following disclaimer.
    11     *
    12     * *  Redistributions in binary form must reproduce the above copyright
    13     *    notice, this list of conditions and the following disclaimer in the
    14     *    documentation and/or other materials provided with the distribution.
    15     *
    16     * *  Neither the name of Texas Instruments Incorporated nor the names of
    17     *    its contributors may be used to endorse or promote products derived
    18     *    from this software without specific prior written permission.
    19     *
    20     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    21     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
    22     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    23     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
    24     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    25     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    26     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
    27     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    28     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
    29     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    30     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    31     * */
    32    /*
    33     *  ======== Tcp.xdc ========
    34     *
    35     *  Tcp module definition file and initial values.
    36     */
    37    
    38    /*!
    39     *  ======== Tcp ========
    40     *  NDK Transmission Control Protocol (TCP) settings and configuration.
    41     *
    42     *  The Tcp module is used to configure settings for TCP, including:
    43     *
    44     *  @p(blist)
    45     *      - Buffer sizes
    46     *      - Maximum number of reassembly packets
    47     *      - Idle time
    48     *      - KEEP probe settings
    49     *  @p
    50     */
    51    
    52    @Template("./Tcp.xdt")
    53    
    54    metaonly module Tcp {
    55    
    56        /*
    57         * Default values
    58         *  @_nodoc
    59         */
    60        const Int defaultMaxReasmPkts  = 2;
    61        const Int defaultTxBufSize     = 8192;
    62        const Int defaultRxBufSize     = 8192;
    63        const Int defaultRxBufLimit    = 8192;
    64        const Int defaultKeepIdleTime  = 72000;
    65        const Int defaultKpProbIntv    = 750;
    66        const Int defaultKpProbTimeout = 6000;
    67    
    68        /*!
    69         *  Specifies the maximum number of reassembly packets allowed per
    70         *  TCP socket.
    71         */
    72        config Int maxNumReasmPkts = defaultMaxReasmPkts;
    73    
    74        /*!
    75         *  Sets the size of the TCP send buffer.
    76         */
    77        config Int transmitBufSize = defaultTxBufSize;
    78    
    79        /*!
    80         *  Sets the size of the TCP receive buffer (copy mode).
    81         */
    82        config Int receiveBufSize = defaultRxBufSize;
    83    
    84        /*!
    85         *  Sets the max number of cumulative bytes in packet buffers that can be
    86         *  queued up at any given TCP based socket (non-copy mode).
    87         */
    88        config Int receiveBufLimit = defaultRxBufLimit;
    89    
    90        /*!
    91         *  Amount of time to allow socket to idle. Only affects sockets
    92         *  specified with SO_KEEPALIVE value.
    93         *
    94         *  Time units for this value are in 0.1 seconds.
    95         */
    96        config Int keepIdleTime = defaultKeepIdleTime;
    97    
    98        /*!
    99         *  Time interval specifying the amount of time in between TCP KEEP probes
   100         *  Only affects sockets specified with SO_KEEPALIVE value.
   101         *
   102         *  Used to determine if socket should be kept open. Time units for this
   103         *  value are in 0.1 seconds.
   104         */
   105        config Int keepProbeInterval = defaultKpProbIntv;
   106    
   107        /*!
   108         *  Time TCP will continue to send unanswered KEEP probes before timing out
   109         *  the connection.
   110         *
   111         *  Time units for this value are in 0.1 seconds.
   112         */
   113        config Int keepProbeTimeout = defaultKpProbTimeout;
   114    
   115    }