In the TCPIPConfig.h header file, you must also define an array of structures to declare and initialize any sockets that you need. The sample structure is:
#define TCP_CONFIGURATION ROM struct { BYTE vSocketPurpose, BYTE vMemoryMedium, WORD wTXBufferSize, WORD wRXBufferSize } TCPSocketInitializer[] = { {TCP_PURPOSE_GENERIC_TCP_CLIENT, TCP_ETH_RAM, 125, 100}, {TCP_PURPOSE_GENERIC_TCP_SERVER, TCP_ETH_RAM, 20, 20}, {TCP_PURPOSE_TELNET, TCP_ETH_RAM, 200, 150}, //{TCP_PURPOSE_TELNET, TCP_ETH_RAM, 200, 150}, //{TCP_PURPOSE_TELNET, TCP_ETH_RAM, 200, 150}, //{TCP_PURPOSE_FTP_COMMAND, TCP_ETH_RAM, 100, 40}, //{TCP_PURPOSE_FTP_DATA, TCP_ETH_RAM, 0, 128}, {TCP_PURPOSE_TCP_PERFORMANCE_TX, TCP_ETH_RAM, 200, 1}, //{TCP_PURPOSE_TCP_PERFORMANCE_RX, TCP_ETH_RAM, 40, 1500}, {TCP_PURPOSE_UART_2_TCP_BRIDGE, TCP_ETH_RAM, 256, 256}, {TCP_PURPOSE_HTTP_SERVER, TCP_ETH_RAM, 200, 200}, {TCP_PURPOSE_HTTP_SERVER, TCP_ETH_RAM, 200, 200}, {TCP_PURPOSE_DEFAULT, TCP_ETH_RAM, 200, 200}, {TCP_PURPOSE_BERKELEY_SERVER, TCP_ETH_RAM, 25, 20}, //{TCP_PURPOSE_BERKELEY_SERVER, TCP_ETH_RAM, 25, 20}, //{TCP_PURPOSE_BERKELEY_SERVER, TCP_ETH_RAM, 25, 20}, //{TCP_PURPOSE_BERKELEY_CLIENT, TCP_ETH_RAM, 125, 100}, }; #define END_OF_TCP_CONFIGURATION
As you can see from the structure parameters, the four parameters you'll need to include in each of your socket declarations are:
- Socket purpose/type
- RAM storage location
- TX FIFO buffer size
- RX FIFO buffer size
Several example socket declarations are listed. The socket purpose for each corresponds to one of the socket types. The RAM storage for each socket example sets the location to TCP_ETH_RAM (the MAC/PHY chip RAM). Other options are TCP_PIC_RAM (the PIC's own RAM) and TCP_SPI_RAM (an external SPI RAM device). Finally, the TX and RX FIFOs are declared. Each RX buffer must contain at least one byte, to handle the SYN and FIN messages required by TCP. Each socket you declare will require up to 48 bytes of PIC RAM, and 40 + (TX FIFO size) + (RX FIFO size) bytes of RAM on the storage medium that you select.