?lang_form? ?lang_select? ?lang_submit? ?lang_endform?
{HEADER END}
{FILE START}

library

?curdirlinks? - Rev 32

?prevdifflink? - Blame - ?getfile?

/*********************************************************************
 *
 *  Microchip TCP/IP Stack Include File
 *
 *********************************************************************
 * FileName:        TCPIP.h
 * Dependencies:    
 * Processor:       PIC18, PIC24F, PIC24H, dsPIC30F, dsPIC33F, PIC32
 * Compiler:        Microchip C32 v1.05 or higher
 *                                      Microchip C30 v3.12 or higher
 *                                      Microchip C18 v3.30 or higher
 *                                      HI-TECH PICC-18 PRO 9.63PL2 or higher
 * Company:         Microchip Technology, Inc.
 *
 * Software License Agreement
 *
 * Copyright (C) 2002-2009 Microchip Technology Inc.  All rights
 * reserved.
 *
 * Microchip licenses to you the right to use, modify, copy, and
 * distribute:
 * (i)  the Software when embedded on a Microchip microcontroller or
 *      digital signal controller product ("Device") which is
 *      integrated into Licensee's product; or
 * (ii) ONLY the Software driver source files ENC28J60.c, ENC28J60.h,
 *              ENCX24J600.c and ENCX24J600.h ported to a non-Microchip device
 *              used in conjunction with a Microchip ethernet controller for
 *              the sole purpose of interfacing with the ethernet controller.
 *
 * You should refer to the license agreement accompanying this
 * Software for additional information regarding your rights and
 * obligations.
 *
 * THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT
 * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT
 * LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL
 * MICROCHIP BE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT OR
 * CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF
 * PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, ANY CLAIMS
 * BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO ANY DEFENSE
 * THEREOF), ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION, OR OTHER
 * SIMILAR COSTS, WHETHER ASSERTED ON THE BASIS OF CONTRACT, TORT
 * (INCLUDING NEGLIGENCE), BREACH OF WARRANTY, OR OTHERWISE.
 *
 *
 * Author               Date            Comment
 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Howard Schlunder             12/20/06        Original
 ********************************************************************/
#ifndef __TCPIP_HITECH_WORKAROUND_H
#define __TCPIP_HITECH_WORKAROUND_H

#define TCPIP_STACK_VERSION             "v5.25"         // TCP/IP stack version

#include <string.h>
#include <stdlib.h>
#include "GenericTypeDefs.h"
#include "Compiler.h"
#include "HardwareProfile.h"

// RESERVED FEATURE -- do not change from current value of 1u as this is not 
// fully implemented yet.
// Defines the number of different network interfaces to support (ex: 2 for 
// Wifi and Ethernet simultaneously).
#define NETWORK_INTERFACES              (1u)    

/*******************************************************************
 * Memory Configuration
 *   The following section sets up the memory types for use by
 *   this application.
 *******************************************************************/
        // Represents data stored in Ethernet buffer RAM
        #define TCP_ETH_RAM     0u
        // The base address for TCP data in Ethernet RAM
        #define TCP_ETH_RAM_BASE_ADDRESS                        (BASE_TCB_ADDR)
        // Represents data stored in local PIC RAM
        #define TCP_PIC_RAM     1u
        // The base address for TCP data in PIC RAM
        #define TCP_PIC_RAM_BASE_ADDRESS                        ((PTR_BASE)&TCPBufferInPIC[0])
        // Represents data stored in external SPI RAM
        #define TCP_SPI_RAM     2u

/*******************************************************************
 * User Configuration
 *   Load the user-specific configuration from TCPIPConfig.h
 *******************************************************************/
#include "TCPIPConfig.h"

/*******************************************************************
 * Configuration Rules Enforcement
 *   The following section enforces requirements for modules based 
 *   on configurations selected in TCPIPConfig.h
 *******************************************************************/

#ifndef STACK_USE_MDD

        // Make sure MPFS included for modules that require it
        #if defined(STACK_USE_FTP_SERVER) || defined(STACK_USE_HTTP_SERVER)
                #define STACK_USE_MPFS
        #endif
        
        #if defined(STACK_USE_HTTP2_SERVER)
                #define STACK_USE_MPFS2
        #endif
        
        #if defined(STACK_USE_SNMP_SERVER) && !defined(STACK_USE_MPFS) && !defined(STACK_USE_MPFS2)
                #define STACK_USE_MPFS2
        #endif

#endif
        
        // FTP is not supported in MPFS2 or when MPFS is stored in internal program 
        // memory (instead of external EEPROM).
        #if ( (!defined(MPFS_USE_EEPROM) && !defined(MPFS_USE_SPI_FLASH)) || defined(STACK_USE_MPFS2) ) && defined(STACK_USE_FTP)
                #error FTP server is not supported with HTTP2 / MPFS2, or with internal Flash memory storage
        #endif
        
        // When IP Gleaning is enabled, ICMP must also be enabled.
        #if defined(STACK_USE_IP_GLEANING)
            #if !defined(STACK_USE_ICMP_SERVER)
                #define STACK_USE_ICMP_SERVER
            #endif
        #endif
        
        // Include modules required by specific HTTP demos
        #if !defined(STACK_USE_HTTP2_SERVER)
                #undef STACK_USE_HTTP_EMAIL_DEMO
                #undef STACK_USE_HTTP_MD5_DEMO
                #undef STACK_USE_HTTP_APP_RECONFIG
        #endif
        #if defined(STACK_USE_HTTP_EMAIL_DEMO)
                #if !defined(STACK_USE_SMTP_CLIENT)
                        #error HTTP E-mail Demo requires SMTP_CLIENT and HTTP2
                #endif
        #endif
        #if defined(STACK_USE_HTTP_MD5_DEMO)
                #if !defined(STACK_USE_MD5)
                        #define STACK_USE_MD5
                #endif
        #endif
        
        // Can't do MPFS upload without POST or external memory
        #if defined(HTTP_MPFS_UPLOAD)
                #if !defined(HTTP_USE_POST) || (!defined(MPFS_USE_EEPROM) && !defined(MPFS_USE_SPI_FLASH))
                        #undef HTTP_MPFS_UPLOAD
                #endif
        #endif
        
        // Make sure that the DNS client is enabled if services require it
        #if defined(STACK_USE_GENERIC_TCP_CLIENT_EXAMPLE) || \
                defined(STACK_USE_SNTP_CLIENT) || \
                defined(STACK_USE_DYNAMICDNS_CLIENT) || \
                defined(STACK_USE_SMTP_CLIENT)
            #if !defined(STACK_USE_DNS)
                #define STACK_USE_DNS
            #endif
        #endif
        
        // Make sure that STACK_CLIENT_MODE is defined if a service 
        // depends on it
        #if defined(STACK_USE_FTP_SERVER) || \
                defined(STACK_USE_SNMP_SERVER) || \
                defined(STACK_USE_DNS) || \
                defined(STACK_USE_GENERIC_TCP_CLIENT_EXAMPLE) || \
                defined(STACK_USE_TFTP_CLIENT) || \
                defined(STACK_USE_SMTP_CLIENT) || \
                defined(STACK_USE_ICMP_CLIENT) || \
                defined(STACK_USE_DYNAMICDNS_CLIENT) || \
                defined(STACK_USE_SNTP_CLIENT) || \
                defined(STACK_USE_BERKELEY_API) || \
                defined(STACK_USE_SSL_CLIENT)
                #if !defined(STACK_CLIENT_MODE)
                    #define STACK_CLIENT_MODE
                #endif
        #endif
        
        // Make sure that STACK_USE_TCP is defined if a service 
        // depends on it
        #if defined(STACK_USE_UART2TCP_BRIDGE) || \
                defined(STACK_USE_HTTP_SERVER) || \
                defined(STACK_USE_HTTP2_SERVER) || \
                defined(STACK_USE_FTP_SERVER) || \
                defined(STACK_USE_TELNET_SERVER) || \
                defined(STACK_USE_GENERIC_TCP_CLIENT_EXAMPLE) || \
                defined(STACK_USE_GENERIC_TCP_SERVER_EXAMPLE) || \
                defined(STACK_USE_SMTP_CLIENT) || \
                defined(STACK_USE_TCP_PERFORMANCE_TEST) || \
                defined(STACK_USE_DYNAMICDNS_CLIENT) || \
                defined(STACK_USE_BERKELEY_API) || \
                defined(STACK_USE_SSL_CLIENT) || \
                defined(STACK_USE_SSL_SERVER)
            #if !defined(STACK_USE_TCP)
                #define STACK_USE_TCP
            #endif
        #endif
        
        // If TCP is not enabled, clear all memory allocations
        #if !defined(STACK_USE_TCP)
                #undef TCP_ETH_RAM_SIZE
                #undef TCP_PIC_RAM_SIZE
                #undef TCP_SPI_RAM_SIZE
                #define TCP_ETH_RAM_SIZE 0u
                #define TCP_PIC_RAM_SIZE 0u
                #define TCP_SPI_RAM_SIZE 0u
        #endif
        
        // If PIC RAM is used to store TCP socket FIFOs and TCBs, 
        // let's allocate it so the linker dynamically chooses 
        // where to locate it and prevents other variables from 
        // overlapping with it
        #if defined(__TCP_C) && TCP_PIC_RAM_SIZE > 0u
                #if defined(__18CXX) && !defined(HI_TECH_C)
                        #pragma udata TCPSocketMemory
                #endif
                static BYTE TCPBufferInPIC[TCP_PIC_RAM_SIZE] __attribute__((far));
                #if defined(__18CXX) && !defined(HI_TECH_C)
                        #pragma udata
                #endif
        #endif
        
        // Make sure that STACK_USE_UDP is defined if a service 
        // depends on it
        #if defined(STACK_USE_DHCP_CLIENT) || \
                defined(STACK_USE_DHCP_SERVER) || \
                defined(STACK_USE_DNS) || \
                defined(STACK_USE_NBNS) || \
                defined(STACK_USE_SNMP_SERVER) || \
                defined(STACK_USE_TFTP_CLIENT) || \
                defined(STACK_USE_ANNOUNCE) || \
                defined(STACK_USE_UDP_PERFORMANCE_TEST) || \
                defined(STACK_USE_SNTP_CLIENT) || \
                defined(STACK_USE_BERKELEY_API)
            #if !defined(STACK_USE_UDP)
                #define STACK_USE_UDP
            #endif
        #endif

        // When using SSL server, enable RSA decryption
        #if defined(STACK_USE_SSL_SERVER)
                #define STACK_USE_RSA_DECRYPT
                #define STACK_USE_SSL
        #endif
        
        // When using SSL client, enable RSA encryption
        #if defined(STACK_USE_SSL_CLIENT)
                #define STACK_USE_RSA_ENCRYPT
                #define STACK_USE_SSL
        #endif

        // If using SSL (either), include the rest of the support modules
        #if defined(STACK_USE_SSL)
                #define STACK_USE_ARCFOUR
                #define STACK_USE_MD5
                #define STACK_USE_SHA1
                #define STACK_USE_RANDOM
        #endif

        // When using either RSA operation, include the RSA module
        #if defined(STACK_USE_RSA_ENCRYPT) || defined(STACK_USE_RSA_DECRYPT)
                #define STACK_USE_RSA
                #define STACK_USE_BIGINT
        #endif

        // Enable the LCD if configured in the hardware profile
        #if defined(LCD_DATA_IO) || defined(LCD_DATA0_IO)
                #define USE_LCD
        #endif
        
        // SPI Flash MPFS images must start on a block boundary
        #if (defined(STACK_USE_MPFS2) || defined(STACK_USE_MPFS)) && \
                defined(MPFS_USE_SPI_FLASH) && ((MPFS_RESERVE_BLOCK & 0x0fff) != 0)
                #error MPFS_RESERVE_BLOCK must be a multiple of 4096 for SPI Flash storage
        #endif
        
        // HTTP2 requires 2 MPFS2 handles per connection, plus one spare
        #if defined(STACK_USE_HTTP2_SERVER)
                #if MAX_MPFS_HANDLES < ((MAX_HTTP_CONNECTIONS * 2) + 1)
                        #error HTTP2 requires 2 MPFS2 file handles per connection, plus one additional.
                #endif
        #endif

#include "TCPIP Stack/StackTsk.h"
#include "TCPIP Stack/Helpers.h"
#include "TCPIP Stack/Delay.h"
#include "TCPIP Stack/Tick.h"
#include "TCPIP Stack/MAC.h"
#include "TCPIP Stack/IP.h"
#include "TCPIP Stack/ARP.h"

#if defined(STACK_USE_BIGINT)
        #include "TCPIP Stack/BigInt.h"
#endif

#if defined(STACK_USE_RSA)
        #include "TCPIP Stack/RSA.h"
#endif

#if defined(STACK_USE_ARCFOUR)
        #include "TCPIP Stack/ARCFOUR.h"
#endif

#if defined(STACK_USE_AUTO_IP)
    #include "TCPIP Stack/AutoIP.h"
#endif

#if defined(STACK_USE_RANDOM)
        #include "TCPIP Stack/Random.h"
#endif

#if defined(STACK_USE_MD5) || defined(STACK_USE_SHA1)
        #include "TCPIP Stack/Hashes.h"
#endif

        #include "TCPIP Stack/XEEPROM.h"
        #include "TCPIP Stack/SPIFlash.h"
        #include "TCPIP Stack/SPIRAM.h"

#if defined(STACK_USE_UDP)
        #include "TCPIP Stack/UDP.h"
#endif

#if defined(STACK_USE_TCP)
        #include "TCPIP Stack/TCP.h"
#endif

#if defined(STACK_USE_BERKELEY_API)
        #include "TCPIP Stack/BerkeleyAPI.h"
#endif

#if defined(USE_LCD)
        #include "TCPIP Stack/LCDBlocking.h"
#endif

#if defined(STACK_USE_UART2TCP_BRIDGE)
        #include "TCPIP Stack/UART2TCPBridge.h"
#endif

#if defined(STACK_USE_UART)
        #include "TCPIP Stack/UART.h"
#endif

#if defined(STACK_USE_DHCP_CLIENT) || defined(STACK_USE_DHCP_SERVER)
        #include "TCPIP Stack/DHCP.h"
#endif

#if defined(STACK_USE_DNS) || defined(STACK_USE_DNS_SERVER)
        #include "TCPIP Stack/DNS.h"
#endif

#if defined(STACK_USE_MPFS)
        #include "TCPIP Stack/MPFS.h"
#endif

#if defined(STACK_USE_MPFS2)
        #include "TCPIP Stack/MPFS2.h"
#endif

#if defined(STACK_USE_FTP_SERVER)
        #include "TCPIP Stack/FTP.h"
#endif

#if defined(STACK_USE_HTTP_SERVER)
        #include "TCPIP Stack/HTTP.h"
#endif

#if defined(STACK_USE_HTTP2_SERVER)
        #ifdef STACK_USE_MDD
                #include "TCPIP Stack/FileSystem.h"
                #include "TCPIP Stack/_HTTP2.h"
        #else
                #include "TCPIP Stack/HTTP2.h"
        #endif
#endif

#if defined(STACK_USE_ICMP_SERVER) || defined(STACK_USE_ICMP_CLIENT)
        #include "TCPIP Stack/ICMP.h"
#endif

#if defined(STACK_USE_ANNOUNCE)
        #include "TCPIP Stack/Announce.h"
#endif

#if defined(STACK_USE_SNMP_SERVER)
        #include "TCPIP Stack/SNMP.h"
        #include "mib.h"
#endif

#if defined(STACK_USE_NBNS)
        #include "TCPIP Stack/NBNS.h"
#endif

#if defined(STACK_USE_DNS)
        #include "TCPIP Stack/DNS.h"
#endif

#if defined(STACK_USE_DYNAMICDNS_CLIENT)
        #include "TCPIP Stack/DynDNS.h"
#endif

#if defined(STACK_USE_TELNET_SERVER)
        #include "TCPIP Stack/Telnet.h"
#endif

#if defined(STACK_USE_SMTP_CLIENT)
        #include "TCPIP Stack/SMTP.h"
#endif

#if defined(STACK_USE_TFTP_CLIENT)
        #include "TCPIP Stack/TFTPc.h"
#endif

#if defined(STACK_USE_REBOOT_SERVER)
        #include "TCPIP Stack/Reboot.h"
#endif

#if defined(STACK_USE_SNTP_CLIENT)
        #include "TCPIP Stack/SNTP.h"
#endif

#if defined(STACK_USE_UDP_PERFORMANCE_TEST)
        #include "TCPIP Stack/UDPPerformanceTest.h"
#endif

#if defined(STACK_USE_TCP_PERFORMANCE_TEST)
        #include "TCPIP Stack/TCPPerformanceTest.h"
#endif

#if defined(STACK_USE_SSL)
        #include "TCPIP Stack/SSL.h"
#endif

#if defined(WF_CS_TRIS)
    #include "TCPIP Stack/WFMac.h"
#endif
#endif
{FILE END}
{FOOTER START}

Powered by WebSVN v2.8.3