⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stoe.h

📁 台湾亚信电子ASIX11015以太网驱动.AX系列单片机带TCP/IP协议栈,和适合网络应用.希望和大家一起探讨
💻 H
字号:
/*
 ******************************************************************************
 *     Copyright (c) 2006	ASIX Electronic Corporation      All rights reserved.
 *
 *     This is unpublished proprietary source code of ASIX Electronic Corporation
 *
 *     The copyright notice above does not evidence any actual or intended
 *     publication of such source code.
 ******************************************************************************
 */
/*=============================================================================
 * Module Name: stoe.h
 * Purpose:
 * Author:
 * Date:
 * Notes:
 * $Log: stoe.h,v $
 * Revision 1.1.1.1  2006/02/23 00:55:10  borbin
 * no message
 *
 *=============================================================================
 */

#ifndef __STOE_H__
#define __STOE_H__


/* INCLUDE FILE DECLARATIONS */
#include "types.h"
#include "stoe_cfg.h"
#include "mac.h"
#include "phy.h"


/* NAMING CONSTANT DECLARATIONS */
#define MAX_ETHERNET_LEN		1514
#define MAC_ADDRESS_LEN			6
#define ETH_HEADER_LEN			14
#define VLAN_HEADER_LEN			4
#define SNAP_LEN				8

#if (STOE_TRANSPARENT)
#define MAX_FRAME_SIZE			(MAX_ETHERNET_LEN + VLAN_HEADER_LEN)
#else
#define MAX_FRAME_SIZE			(MAX_ETHERNET_LEN + VLAN_HEADER_LEN - ETH_HEADER_LEN)
#endif

#define PAGE_SIZE				256

/* STOE header */
#define MAC_TX_RX_HEADER		6

/* calculate BDP start address */
#define STOE_SOCKET_BUFFER_SIZE	((PAGES_OF_XMIT + PAGES_OF_RCV + 1) * PAGE_SIZE)
#define DEFAULT_STACK_BOUNDARY	0x8000	/* 32 K*/
#define STOE_BDP_START_ADDR		(DEFAULT_STACK_BOUNDARY - STOE_SOCKET_BUFFER_SIZE)
#define STOE_RCV_BUF_SIZE		(PAGES_OF_RCV * PAGE_SIZE)
#define STOE_XMIT_BUF_SIZE		(PAGES_OF_XMIT * PAGE_SIZE)

/* STOE register definitions */
#define STOE_L2_CTL_REG			0x00
#define STOE_RX_VLAN_TAG_REG	0x02
#define	STOE_TX_VLAN_TAG_REG	0x04
#define	STOE_ARP_CMD_REG		0x06
#define STOE_ARP_ADDR_REG		0x07
#define STOE_ARP_DATA_REG		0x08
#define STOE_ARP_TIMEOUT_REG	0x0E
#define STOE_IP_ADDR_REG		0x10
#define STOE_SUBNET_MASK_REG	0x14
#define STOE_GATEWAY_IP_REG		0x18
#define STOE_CHKSUM_STATUS_REG	0x1C
#define STOE_L4_CTL_REG			0x20
#define STOE_L4_CMD_REG			0x21
#define STOE_L4_BDP_PNT_REG		0x22
#define STOE_L4_DMA_GAP_REG		0x24
#define STOE_INT_STATUS_REG		0x30
#define STOE_INT_MASK_REG		0x31

/* Bit definitions: STOE_L2_CTL_REG	*/
#define RX_VLAN_ENABLE			BIT0
#define RX_TRANSPARENT			BIT1
#define RX_START_OPERA			BIT3
#define	TX_VLAN_ENABLE			BIT4
#define TX_TRANSPARENT			BIT5
#define	TX_SNAP_ENABLE			BIT6
#define TX_START_OPERA			BIT7

/* Bit definitions: STOE_ARP_CMD_REG */
#define	ARP_CACHE_CMD_READ		BIT0
#define ARP_CACHE_CMD_GO		BIT1

/* Bit definitions: STOE_L4_CTL_REG	*/
#define	DROP_CHKSUMERR_PKT		BIT0
#define ENABLE_XMIT_CHKSUM		BIT1
#define ENABLE_RCV_CROSS		BIT2
#define ENABLE_XMIT_CROSS		BIT3 

/* Bit definitions: STOE_L4_CMD_REG	*/
#define RESUME_PKT_RCV			BIT0
#define XMIT_PACKET				BIT4

/* Bit definitions: STOE_STATUS_REG	*/
/* Bit definitions: STOE_INT_MASK_REG */
#define	ARP_HASH_COLLISION		BIT0
#define RCV_PACKET				BIT1
#define	RCV_BUF_RING_FULL		BIT2
#define	ARP_CACHE_NOT_FIND		BIT4
#define XMIT_EMPTY_BUF			BIT5
#define XMIT_COMPLETE			BIT6
#define STOE_DEFAULT_INT_MASK	(RCV_BUF_RING_FULL | RCV_PACKET)

/* TYPE DECLARATIONS */
//---------------------------------------------------------------
typedef struct _LOCAL_STATION
{
	/* MAC address */
	U8_T	PermStaAddr[MAC_ADDRESS_LEN];
	U8_T	CurrStaAddr[MAC_ADDRESS_LEN];

	/* IP address */
	U32_T	StationIP;
	U32_T	SubnetMask;
	U32_T	Gateway;
	U32_T	DefaultIP;
	U32_T	DefaultMask;
	U32_T	DefaultGateway;

} LOCAL_STATION;

//---------------------------------------------------------------
typedef struct _PACKET_INFORMATION
{
	U8_T XDATA*	PBuf;
	U8_T XDATA*	PIpHeader;
	U8_T XDATA*	PTUIHeader;	/* TCP Header, Udp Header, or ICMP IGMP Header */
	U8_T XDATA*	PData;

	U16_T		TotalLen;
	U16_T		IpTotalLen;
	U16_T		TUITotalLen;
	U16_T		DataLen;
	U8_T		Protocol;
	U8_T		IpHeaderLen;
	U8_T		TcpHeaderLen;
	U8_T		SocketId;
	U8_T		Pages;

} PACKET_INFORMATION;

//---------------------------------------------------------------
typedef struct _BUF_DESC_PAGE
{
#define RX_DESCRIPTOR_SIZE			128
#define RX_DESCRIPTOR_HEADER_SIZE	12
#define RX_RESERVED_BUFFER_SIZE		(RX_DESCRIPTOR_SIZE - RX_DESCRIPTOR_HEADER_SIZE -	\
									sizeof (LOCAL_STATION) - sizeof (PHY_INFO) -		\
									sizeof (MAC_INFO))

	/* hardware RX descriptor header */
	U8_T	BDP_ID;
	U8_T	Pad0;
	U16_T	RSPP;
	U16_T	REPP;
	U16_T	RHPR;
	U16_T	RTPR;
	U8_T	RFP;
	U8_T	Pad1;

	LOCAL_STATION 	NetStation;
	PHY_INFO		PhyInfo;
	MAC_INFO		MacInfo;

	U8_T	RcvReserved[RX_RESERVED_BUFFER_SIZE];

	/* hardware TX descriptor header */
	U16_T	TSPP;
	U16_T	TEPP;
	U16_T	THPR;
	U16_T	TTPR;
	U8_T	TFP;
	U8_T	Pad2;

	U16_T	VSPP;

	U8_T XDATA*	RcvStartAddr;
	U8_T XDATA*	RcvEndAddr;
	U8_T XDATA*	XmtStartAddr;
	U8_T XDATA*	XmtEndAddr;

	PACKET_INFORMATION	STOE_TxInform;
	PACKET_INFORMATION	STOE_RxInform;

} BUF_DESC_PAGE;

//---------------------------------------------------------------
typedef struct _STOE_FRAME_HEADER
{
	U16_T	NPR;
	U16_T	Length;
	U8_T	Protocol;
	U8_T	DataOffset;
	U8_T	Packet;

} STOE_FRAME_HEADER;

/* GLOBAL VARIABLES */
extern LOCAL_STATION XDATA*	PNetStation;
extern BUF_DESC_PAGE XDATA* PBDP;
extern void (*STOE_RcvCallback)(U8_T XDATA*, U16_T, U8_T);

/* EXPORTED SUBPROGRAM SPECIFICATIONS */
//---------------------------------------------------------------
void STOE_Init(U8_T);
void STOE_Start(void);
/* MACRO DECLARATIONS */
#define STOE_GetIPAddr()		(PNetStation->StationIP)
#define STOE_GetSubnetMask()	(PNetStation->SubnetMask)
#define STOE_GetGateway()		(PNetStation->Gateway)

void STOE_SetIPAddr(U32_T);
void STOE_SetSubnetMask(U32_T);
void STOE_SetGateway(U32_T);
#if (STOE_GET_INTSTATUS_MODE == STOE_INTERRUPT_MODE)
  void STOE_SetInterruptFlag(void);
  U8_T STOE_GetInterruptFlag(void);
#endif
void STOE_ProcessInterrupt(void);
void STOE_Send(U8_T XDATA*, U16_T, U8_T);
U8_T XDATA* STOE_AssignSendBuf(U16_T);
U8_T XDATA* STOE_CopyCode2TPBR(U8_T XDATA*, U8_T*, U16_T);


#endif /* End of __STOE_H__ */


/* End of stoe.h */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -