OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Demo/] [WizNET_DEMO_TERN_186/] [include/] [SOCKET.H] - Rev 585

Compare with Previous | Blame | View Log

/*
********************************************************************************
* TERN, Inc.
* (c) Copyright 2005, http://www.tern.com
*
* - Derived based on development version provided by Wiznet.
*
* Filename : socket.h
* Programmer(s):
* Created : 2002/06/20
* Modified :
*  2002/09/27 : - Renaming
*                              INT_STATUS --> INT_REG
*                              STATUS(i) --> INT_STATUS(i)
*                              C_STATUS(i) --> SOCK_STATUS(i)
*  2003/11/06 : Ported for use with TERN controller.  Note all byte access is at even addresses
*  2005/10/8  : Modified constants for easier initialization.
*
* Description : Header file of W3100A for TERN embedded controller
********************************************************************************
*/
#ifndef __SOCKET_H__
#define __SOCKET_H__

#include "types.h"
#include "i2chip_hw.h"
#include <dos.h>

/*******************************************************************/
#define MAX_SOCK_NUM    4                                       // Concurrent maxmium number of socket

#define I2CHIP_C0_CR       0x00
#define I2CHIP_C1_CR       0x01
#define I2CHIP_C2_CR       0x02
#define I2CHIP_C3_CR       0x03
#define I2CHIP_C0_ISR      0x04
#define I2CHIP_C1_ISR      0x05
#define I2CHIP_C2_ISR      0x06
#define I2CHIP_C3_ISR      0x07
#define I2CHIP_IR          0x08
#define I2CHIP_IMR         0x09

#define I2CHIP_IDM_OR           0x0C
#define I2CHIP_IDM_AR0     0x0D
#define I2CHIP_IDM_AR1     0x0E
#define I2CHIP_IDM_DR      0x0F
#define I2CHIP_C0_RW_PR    0x10
#define I2CHIP_C0_RR_PR    0x14
#define I2CHIP_C0_TA_PR    0x18
#define I2CHIP_C1_RW_PR    0x1C
#define I2CHIP_C1_RR_PR    0x20
#define I2CHIP_C1_TA_PR    0x24
#define I2CHIP_C2_RW_PR    0x28
#define I2CHIP_C2_RR_PR    0x2C
#define I2CHIP_C2_TA_PR    0x30
#define I2CHIP_C3_RW_PR    0x34
#define I2CHIP_C3_RR_PR    0x38
#define I2CHIP_C3_TA_PR    0x3C
#define I2CHIP_C0_TW_PR    0x40
#define I2CHIP_C0_TR_PR    0x44
#define I2CHIP_C1_TW_PR    0x4C
#define I2CHIP_C1_TR_PR    0x50
#define I2CHIP_C2_TW_PR    0x58
#define I2CHIP_C2_TR_PR    0x5C
#define I2CHIP_C3_TW_PR    0x64
#define I2CHIP_C3_TR_PR    0x68
#define I2CHIP_GAR         0x80
#define I2CHIP_SMR         0x84
#define I2CHIP_SHAR             0x88
#define I2CHIP_SIPR        0x8E
#define I2CHIP_IRTR        0x92
#define I2CHIP_RCR         0x94
#define I2CHIP_RMSR        0x95
#define I2CHIP_TMSR        0x96
#define I2CHIP_C0_SSR      0xA0
#define I2CHIP_C0_SOPR     0xA1
#define I2CHIP_C0_DIR      0xA8
#define I2CHIP_CO_DPR      0xAC
#define I2CHIP_C0_SPR      0xAE
#define I2CHIP_C0_IPR      0xB0
#define I2CHIP_C0_TOSR     0xB1
#define I2CHIP_C0_MSSR     0xB2

#define I2CHIP_C1_SSR      0xB8
#define I2CHIP_C1_SOPR     0xB9
#define I2CHIP_C1_DIR      0xC0
#define I2CHIP_C1_DPR      0xC4
#define I2CHIP_C1_SPR      0xC6
#define I2CHIP_C1_IPR      0xC8
#define I2CHIP_C1_TOSR     0xC9
#define I2CHIP_C1_MSSR     0xCA

#define I2CHIP_C2_SSR      0xD0
#define I2CHIP_C2_SOPR     0xD1
#define I2CHIP_C2_DIR      0xD8
#define I2CHIP_C2_DPR      0xDC
#define I2CHIP_C2_SPR      0xDE
#define I2CHIP_C2_IPR      0xE0
#define I2CHIP_C2_TOSR     0xE1
#define I2CHIP_C2_MSSR     0xE2

#define I2CHIP_C3_SSR      0xE8
#define I2CHIP_C3_SOPR     0xE9
#define I2CHIP_C3_DIR      0xF0
#define I2CHIP_C3_DPR      0xF4
#define I2CHIP_C3_SPR      0xF6
#define I2CHIP_C3_IPR      0xF8
#define I2CHIP_C3_TOSR     0xF9
#define I2CHIP_C3_MSSR     0xFA

#define MAX_SEGMENT_SIZE        1460                    // Maximum TCP transmission packet size
#define MAX_BUF_SIZE1           0


/* SOCKET OPTION(Settting OPT_PROTOCOL REG.) */
#define SOCKOPT_BROADCAST       0x80            // Transmission, Reception of broadcasting data
#define SOCKOPT_NDTIMEOUT       0x40            // Setting timeout
#define SOCKOPT_NDACK           0x20            // Setting No Delayed Ack(TCP)
#define SOCKOPT_SWS                     0x10            // Setting Silly Window Syndrome(TCP)

/* OPTION(Setting OPT_PROTOCOL REG.) for MAC LAYER RAW MODE */
#define MACLOPT_RXERR           0x80            // Setting reception of error packet
#define MACLOPT_BROADCAST       0x40            // Setting reception of broadcast packet
#define MACLOPT_PROMISC         0x20            // Setting reception of promiscuous packet

/* Distinguish TCP / UDP / IP RAW / MAC RAW (Setting OPT_PROTOCOL REG.) */
#define SOCK_CLOSEDM    0x00                    // unused socket
#define SOCK_STREAM             0x01                    // TCP
#define SOCK_DGRAM              0x02                    // UDP
#define SOCK_IPL_RAW    0x03                    // IP LAYER RAW SOCK
#define SOCK_MACL_RAW   0x04                    // MAC LAYER RAW SOCK

/* Setting IP PROTOCOL */
#define IPPROTO_IP              0               // dummy for IP
#define IPPROTO_ICMP            1               // control message protocol
#define IPPROTO_IGMP            2               // internet group management protocol
#define IPPROTO_GGP             3               // gateway^2 (deprecated)
#define IPPROTO_TCP             6               // tcp
#define IPPROTO_PUP             12              // pup
#define IPPROTO_UDP             17              // user datagram protocol
#define IPPROTO_IDP             22              // xns idp
#define IPPROTO_ND              77              // UNOFFICIAL net disk proto
#define IPPROTO_RAW             255             // raw IP packet

/* Select parameter to use */
#define SEL_CONTROL     0                        //Confirm socket status
#define SEL_SEND                1                       // Confirm Tx free buffer size
#define SEL_RECV                2                       // Confirm Rx data size

/* Command variables */
#define CSYS_INIT               0x01       // To set up network information(mac address, gateway address,
                              // subnet mask, source ip)
#define CSOCK_INIT      0x02            // To initialize socket
#define CCONNECT                0x04            // To establish connection as tcp client mode
#define CLISTEN         0x08            // To wait for connection request as tcp server mode
#define CCLOSE                  0x10            // To terminate connection
#define CSEND                   0x20            // To send data
#define CRECV                   0x40            // To receive data
#define CSW_RESET               0x80            // To do software reset

#define CSET_MEMORY_TEST   0x80     // To set the memory test bit
#define CRESET_MEMORY_TEST 0x00     // To clear the memory test bit

/* Status Variables */
#define SSYS_INIT_OK            0x01    // Completion of CSYS_INIT command
#define SSOCK_INIT_OK   0x02    // Completion of CSOCK_INIT command
#define SESTABLISHED            0x04    // Completion of connection setup
#define SCLOSED                 0x08    // Completion of CCLOSED command
#define SSEND_OK                   0x20 // Completion of sending data
#define SRECV_OK                   0x40 // Completion of receiving data

/* Socket Status Vabiables */
#define SOCK_CLOSED                0x00    // Status of connection closed
#define SOCK_ARP                      0x01              // Status of ARP
#define SOCK_LISTEN                0x02         // Status of waiting for TCP connection setup
#define SOCK_SYNSENT               0x03         // Status of setting up TCP connection
#define SOCK_SYNSENT_ACK        0x04            // Status of setting up TCP connection
#define SOCK_SYNRECV               0x05         // Status of setting up TCP connection
#define SOCK_ESTABLISHED        0x06            // Status of TCP connection established
#define SOCK_CLOSE_WAIT         0x07            // Status of closing TCP connection
#define SOCK_LAST_ACK           0x08            // Status of closing TCP connection
#define SOCK_FIN_WAIT1          0x09            // Status of closing TCP connection
#define SOCK_FIN_WAIT2          0x0A            // Status of closing TCP connection
#define SOCK_CLOSING               0x0B         // Status of closing TCP connection
#define SOCK_TIME_WAIT          0x0C            // Status of closing TCP connection
#define SOCK_RESET                 0x0D         // Status of closing TCP connection
#define SOCK_INIT                     0x0E              // Status of socket initialization
#define SOCK_UDP                      0x0F              // Status of UDP
#define SOCK_RAW                      0x10              // Status of IP RAW

/* TERN Behavior Parameters */
#define TERN_TDMA_THRES    10000      // Use DMA for transmits if data > thres bytes.
#define TERN_RDMA_THRES    10000      // Use DMA for receives if data > thres bytes.
                                      // High thres value effectively disables DMA
                                      
void far interrupt in4_isr_i2chip(void);

//void ISR_ESTABLISHED(SOCKET s);
//void ISR_CLOSED(SOCKET s);
//void ISR_RX(SOCKET s);

void initW3100A(void);
void sysinit(u_char sbufsize, u_char rbufsize);
void setsubmask(u_char * addr);
void setgateway(u_char * addr);
void setMACAddr(u_char * addr);
void setIP(u_char * addr);

char socket(SOCKET s, u_char protocol, u_int port, u_char flag);

void setIPprotocol(SOCKET s, u_char ipprotocol);

void setINTMask(u_char mask);
void settimeout(u_char * val);
void setTOS(SOCKET s, u_char tos);

void GetDestAddr(SOCKET s, u_char* addr);

//void setbroadcast(SOCKET s);

char connect(SOCKET s, u_char far * addr, u_int port);
char NBconnect(SOCKET s, u_char far * addr, u_int port);

//char listen(SOCKET s, u_char far * addr, u_int far * port);
char NBlisten(SOCKET s);

void initseqnum(SOCKET s);

int send(SOCKET s, u_char far * buf, u_int len);
int send_in(SOCKET s, u_char far * buf, u_int len);
int recv(SOCKET s, u_char far * buf, u_int len);

u_int sendto(SOCKET , u_char far * buf, u_int, u_char * addr, u_int);
u_int sendto_in(SOCKET , u_char far *, u_int);
u_int recvfrom(SOCKET , u_char far * buf, u_int, u_char * addr, u_int *);

u_int read_data(SOCKET s, u_int src_offset, u_char far * dst, u_int len);
u_int write_data(SOCKET s, u_char far * src, u_int dst_offset, u_int len);

void close(SOCKET s);
char reset_sock(SOCKET s);

u_int select(SOCKET s, u_char func);
void recv_clear(SOCKET s);
u_char tx_empty(SOCKET s);

#endif  // __SOCKET_H__

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.