233 lines
5.1 KiB
C
233 lines
5.1 KiB
C
|
|
|
|||
|
|
// ͨ<><CDA8> SPI <20><><EFBFBD><EFBFBD>W5500<30><30>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>̫<EFBFBD><CCAB><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD><D3B9><EFBFBD>
|
|||
|
|
|
|||
|
|
#include "config.h"
|
|||
|
|
|
|||
|
|
#ifndef __ETHERNET_H__
|
|||
|
|
#define __ETHERNET_H__
|
|||
|
|
|
|||
|
|
|
|||
|
|
#include "socket.h"
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
int type;
|
|||
|
|
int status;
|
|||
|
|
u8 socket;
|
|||
|
|
u32 localIp;
|
|||
|
|
u16 localPort;
|
|||
|
|
|
|||
|
|
u32 remoteIp;
|
|||
|
|
u16 remotePort;
|
|||
|
|
|
|||
|
|
int newconnect;
|
|||
|
|
|
|||
|
|
}SocketCtrl;
|
|||
|
|
|
|||
|
|
|
|||
|
|
#define STA_INIT 0
|
|||
|
|
#define STA_CLOSED 1
|
|||
|
|
#define STA_CONNECT 2
|
|||
|
|
#define STA_READY 3
|
|||
|
|
|
|||
|
|
#define FLAG_ENABLE 0x55AA
|
|||
|
|
|
|||
|
|
#define MAX_TRANS_DATA 1500
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// Ĭ<><C4AC>IP<49><50>ַ
|
|||
|
|
#ifndef DEF_LOCAL_IP1
|
|||
|
|
#define DEF_LOCAL_IP1 192
|
|||
|
|
#endif
|
|||
|
|
#ifndef DEF_LOCAL_IP2
|
|||
|
|
#define DEF_LOCAL_IP2 168
|
|||
|
|
#endif
|
|||
|
|
#ifndef DEF_LOCAL_IP3
|
|||
|
|
#define DEF_LOCAL_IP3 16
|
|||
|
|
#endif
|
|||
|
|
#ifndef DEF_LOCAL_IP4
|
|||
|
|
#define DEF_LOCAL_IP4 253
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#ifndef DEF_GATEWAY_IP1
|
|||
|
|
#define DEF_GATEWAY_IP1 192
|
|||
|
|
#endif
|
|||
|
|
#ifndef DEF_GATEWAY_IP2
|
|||
|
|
#define DEF_GATEWAY_IP2 168
|
|||
|
|
#endif
|
|||
|
|
#ifndef DEF_GATEWAY_IP3
|
|||
|
|
#define DEF_GATEWAY_IP3 16
|
|||
|
|
#endif
|
|||
|
|
#ifndef DEF_GATEWAY_IP4
|
|||
|
|
#define DEF_GATEWAY_IP4 1
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#ifndef DEF_DNS_IP1
|
|||
|
|
#define DEF_DNS_IP1 192
|
|||
|
|
#endif
|
|||
|
|
#ifndef DEF_DNS_IP2
|
|||
|
|
#define DEF_DNS_IP2 168
|
|||
|
|
#endif
|
|||
|
|
#ifndef DEF_DNS_IP3
|
|||
|
|
#define DEF_DNS_IP3 16
|
|||
|
|
#endif
|
|||
|
|
#ifndef DEF_DNS_IP4
|
|||
|
|
#define DEF_DNS_IP4 1
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#ifndef DEF_REMOTE_IP1
|
|||
|
|
#define DEF_REMOTE_IP1 192
|
|||
|
|
#endif
|
|||
|
|
#ifndef DEF_REMOTE_IP2
|
|||
|
|
#define DEF_REMOTE_IP2 168
|
|||
|
|
#endif
|
|||
|
|
#ifndef DEF_REMOTE_IP3
|
|||
|
|
#define DEF_REMOTE_IP3 16
|
|||
|
|
#endif
|
|||
|
|
#ifndef DEF_REMOTE_IP4
|
|||
|
|
#define DEF_REMOTE_IP4 41
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// UDP ͨѶ
|
|||
|
|
#ifndef UDP_NUM
|
|||
|
|
#define UDP_NUM 0
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#define UDP_SN_BEG 0
|
|||
|
|
#define UDP_LOCAL_PORT_BEG 5100
|
|||
|
|
#define UDP_LOCAL_IP MAKEIP(DEF_LOCAL_IP1,DEF_LOCAL_IP2,DEF_LOCAL_IP3,DEF_LOCAL_IP4)
|
|||
|
|
|
|||
|
|
#define UDP_REMOTE_PORT 5101
|
|||
|
|
#define UDP_REMOTE_IP MAKEIP(DEF_REMOTE_IP1,DEF_REMOTE_IP2,DEF_REMOTE_IP3,DEF_REMOTE_IP4)
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#define UDP_COMM 0
|
|||
|
|
#define TCP_SERVER 1
|
|||
|
|
#define TCP_CLIENT 2
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#define LOCAL_IP MAKEIP(DEF_LOCAL_IP1,DEF_LOCAL_IP2,DEF_LOCAL_IP3,DEF_LOCAL_IP4)
|
|||
|
|
#define NET_MASK MAKEIP(255,255,255,0)
|
|||
|
|
#define GATE_WAY MAKEIP(DEF_GATEWAY_IP1,DEF_GATEWAY_IP2,DEF_GATEWAY_IP3,DEF_GATEWAY_IP4)
|
|||
|
|
#define DNS_IP MAKEIP(DEF_DNS_IP1,DEF_DNS_IP2,DEF_DNS_IP3,DEF_DNS_IP4)
|
|||
|
|
|
|||
|
|
#define TCP_REMOTE_IP MAKEIP(DEF_REMOTE_IP1,DEF_REMOTE_IP2,DEF_REMOTE_IP3,DEF_REMOTE_IP4)
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// TCP server
|
|||
|
|
#ifndef SERVER_NUM
|
|||
|
|
#define SERVER_NUM 0 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#define TCP_SERVER_SN_BEG (UDP_SN_BEG+UDP_NUM) // TCP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ Socket <20><>, ֧<><D6A7> 1--7; <20><><EFBFBD><EFBFBD> SERVER_NUM+TCP_SERVER_SN_BEG С<><D0A1> 7
|
|||
|
|
#define TCP_SERVER_PORT_BEG 5000 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF>
|
|||
|
|
#define TCP_SERVER_LOCAL_IP_BEG LOCAL_IP
|
|||
|
|
#define TCP_SERVER_LOCAL_IP_ADD ((u32)1<<24)
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// TCP client
|
|||
|
|
#ifndef CLIENT_NUM
|
|||
|
|
#define CLIENT_NUM 0 // <20>ͻ<EFBFBD><CDBB>˸<EFBFBD><CBB8><EFBFBD>
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#define TCP_CLIENT_SN_BEG (TCP_SERVER_SN_BEG+SERVER_NUM) // TCP <20>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>ʼ Socket <20><>, ֧<><D6A7> 1--7; <20><><EFBFBD><EFBFBD> SERVER_NUM+TCP_SERVER_SN_BEG С<><D0A1> 7
|
|||
|
|
#define TCP_CLIENT_LOCAL_PORT_BEG (TCP_SERVER_PORT_BEG+8) // <20><><EFBFBD><EFBFBD> port
|
|||
|
|
#define TCP_CLIENT_LOCAL_IP LOCAL_IP
|
|||
|
|
|
|||
|
|
#define TCP_CLIENT_REMOTE_IP_BEG (TCP_REMOTE_IP+(TCP_CLIENT_REMOTE_IP_ADD*SERVER_NUM))
|
|||
|
|
#define TCP_CLIENT_REMOTE_PORT_BEG 502
|
|||
|
|
|
|||
|
|
#define TCP_CLIENT_REMOTE_IP_ADD ((u32)1<<24)
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
|
|||
|
|
//---------------------------------------------------------------------------
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
#ifdef _IN_ETHERNET_C
|
|||
|
|
|
|||
|
|
wiz_NetInfo g_netInfo;
|
|||
|
|
wiz_PhyConf g_phyConfig;
|
|||
|
|
wiz_NetTimeout g_netTimeout;
|
|||
|
|
|
|||
|
|
u32 g_localIP;
|
|||
|
|
u32 g_netMask;
|
|||
|
|
u32 g_gateWay;
|
|||
|
|
u32 g_dnsIP;
|
|||
|
|
|
|||
|
|
|
|||
|
|
#else
|
|||
|
|
|
|||
|
|
extern wiz_NetInfo g_netInfo;
|
|||
|
|
extern wiz_PhyConf g_phyConfig;
|
|||
|
|
extern wiz_NetTimeout g_netTimeout;
|
|||
|
|
|
|||
|
|
|
|||
|
|
extern u32 g_localIP;
|
|||
|
|
extern u32 g_netMask;
|
|||
|
|
extern u32 g_gateWay;
|
|||
|
|
extern u32 g_dnsIP;
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#define LINK_INIT 0
|
|||
|
|
#define LINK_UP 1
|
|||
|
|
#define LINK_WAIT 2
|
|||
|
|
#define LINK_DOWN 3
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// <20><>ʼ<EFBFBD><CABC>
|
|||
|
|
void InitEthernet(void);
|
|||
|
|
|
|||
|
|
void InitNetConfig(void);
|
|||
|
|
|
|||
|
|
// <20>жϴ<D0B6><CFB4><EFBFBD>
|
|||
|
|
void EthernetIntProc(void);
|
|||
|
|
|
|||
|
|
// <20><>̫<EFBFBD><CCAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void EthernetServiceRun(void);
|
|||
|
|
|
|||
|
|
void GetChipConfig(void);
|
|||
|
|
|
|||
|
|
// Ethernet <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int EthernetSendData(SocketCtrl * pCtrl, u8 * pDatBuf, int len);
|
|||
|
|
|
|||
|
|
// Ethernet <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int EthernetGetData(SocketCtrl * pCtrl, u8 * pDat, int expectLen);
|
|||
|
|
|
|||
|
|
// Ethernet <20>ѽ<EFBFBD><D1BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
|
int EthernetGetRsLen(SocketCtrl * pCtrl);
|
|||
|
|
|
|||
|
|
// <20>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD>
|
|||
|
|
int EthernetGetSdFreeLen(SocketCtrl * pCtrl);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|||
|
|
void SetNetAddr(u32 ip, u32 mask, u32 gateway, u32 dns);
|
|||
|
|
|
|||
|
|
SocketCtrl * GetCtrlFromSocketIdx(int sIdx);
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#define MAKEIP(ip1,ip2,ip3,ip4) ((u32)( (((u32)(ip4&0xff))<<24) + (((u32)(ip3&0xff))<<16) + (((u32)(ip2&0xff))<<8) + (((u32)(ip1&0xff))<<0)))
|
|||
|
|
|
|||
|
|
#define GETIP1(ip) ((u8)(((u32)(ip)) >> 0) & 0xFF)
|
|||
|
|
#define GETIP2(ip) ((u8)(((u32)(ip)) >> 8) & 0xFF)
|
|||
|
|
#define GETIP3(ip) ((u8)(((u32)(ip)) >> 16) & 0xFF)
|
|||
|
|
#define GETIP4(ip) ((u8)(((u32)(ip)) >> 24) & 0xFF)
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|