📄 stacktsk.h
字号:
#define MY_DEFAULT_MAC_BYTE2 (0x04)
#define MY_DEFAULT_MAC_BYTE3 (0xA3)
#define MY_DEFAULT_MAC_BYTE4 (0x00)
#define MY_DEFAULT_MAC_BYTE5 (0x00)
#define MY_DEFAULT_MAC_BYTE6 (0x00)
/****************************************/
#define MY_MAC_BYTE1 AppConfig.MyMACAddr.v[0]
#define MY_MAC_BYTE2 AppConfig.MyMACAddr.v[1]
#define MY_MAC_BYTE3 AppConfig.MyMACAddr.v[2]
#define MY_MAC_BYTE4 AppConfig.MyMACAddr.v[3]
#define MY_MAC_BYTE5 AppConfig.MyMACAddr.v[4]
#define MY_MAC_BYTE6 AppConfig.MyMACAddr.v[5]
/*
* Subnet mask for this node.
* Must not be all zero's or else this node will never transmit
* anything !!
*/
#define MY_MASK_BYTE1 AppConfig.MyMask.v[0]
#define MY_MASK_BYTE2 AppConfig.MyMask.v[1]
#define MY_MASK_BYTE3 AppConfig.MyMask.v[2]
#define MY_MASK_BYTE4 AppConfig.MyMask.v[3]
/*
* Hardcoded IP address of this node
* My IP = 10.10.5.10
*
* Gateway = 10.10.5.10
*/
#define MY_IP_BYTE1 AppConfig.MyIPAddr.v[0]
#define MY_IP_BYTE2 AppConfig.MyIPAddr.v[1]
#define MY_IP_BYTE3 AppConfig.MyIPAddr.v[2]
#define MY_IP_BYTE4 AppConfig.MyIPAddr.v[3]
/*
* Harcoded Gateway address for this node.
* This should be changed to match actual network environment.
*/
#define MY_GATE_BYTE1 AppConfig.MyGateway.v[0]
#define MY_GATE_BYTE2 AppConfig.MyGateway.v[1]
#define MY_GATE_BYTE3 AppConfig.MyGateway.v[2]
#define MY_GATE_BYTE4 AppConfig.MyGateway.v[3]
/*
* TCP configurations
* To minmize page update, match number of sockets and
* HTTP connections with different page sources in a
* page.
* For example, if page contains reference to 3 more pages,
* browser may try to open 4 simultaneous HTTP connections,
* and to minimize browser delay, set HTTP connections to
* 4, MAX_SOCKETS to 4.
* If you are using ICMP or other applications, you should
* keep at least one socket available for them.
*/
/*
* Maximum sockets to be defined.
* Note that each socket consumes 36 bytes of RAM.
*/
#define MAX_SOCKETS (4u)
/*
* Avaialble UDP Socket
*/
#define MAX_UDP_SOCKETS (2u)
#if (MAX_SOCKETS <= 0 || MAX_SOCKETS > 255)
#error Invalid MAX_SOCKETS value specified.
#endif
#if (MAX_UDP_SOCKETS <= 0 || MAX_UDP_SOCKETS > 255 )
#error Invlaid MAX_UDP_SOCKETS value specified
#endif
#if !defined(STACK_USE_SLIP)
#define MAC_TX_BUFFER_SIZE (1024)
#define MAC_TX_BUFFER_COUNT (1)
// Note: Defining MAC_TX_BUFFER_COUNT > 1 has NOT been tested,
// which means the feature is probably broken at this time.
#else
/*
* For SLIP, there can only be one transmit and one receive buffer.
* Both buffer must fit in one bank. If bigger buffer is required,
* you must manually locate tx and rx buffer in different bank
* or modify your linker script file to support arrays bigger than
* 256 bytes.
*/
#define MAC_TX_BUFFER_SIZE (250)
#define MAC_TX_BUFFER_COUNT (1)
#endif
// Rests are Receive Buffers
#define MAC_RX_BUFFER_SIZE (MAC_TX_BUFFER_SIZE)
#if (MAC_TX_BUFFER_SIZE <= 0 || MAC_TX_BUFFER_SIZE > 1500 )
#error Invalid MAC_TX_BUFFER_SIZE value specified.
#endif
#if ( (MAC_TX_BUFFER_SIZE * MAC_TX_BUFFER_COUNT) > (4* 1024) )
#error Not enough room for Receive buffer.
#endif
/*
* Maximum numbers of simultaneous HTTP connections allowed.
* Each connection consumes 10 bytes.
*/
#define MAX_HTTP_CONNECTIONS (2u)
#if (MAX_HTTP_CONNECTIONS <= 0 || MAX_HTTP_CONNECTIONS > 255 )
#error Invalid MAX_HTTP_CONNECTIONS value specified.
#endif
#define AVAILABLE_SOCKETS (MAX_SOCKETS)
#if defined(STACK_USE_HTTP_SERVER)
#define AVAILABLE_SOCKETS2 (AVAILABLE_SOCKETS - MAX_HTTP_CONNECTIONS)
#else
#define AVAILABLE_SOCKETS2 (MAX_SOCKETS)
#endif
/*
* When using FTP, you must have at least two sockets free
*/
#if defined(STACK_USE_FTP_SERVER)
#define AVAILABLE_SOCKETS3 (AVAILABLE_SOCKETS2 - 2)
#else
#define AVAILABLE_SOCKETS3 (AVAILABLE_SOCKETS2)
#endif
#if AVAILABLE_SOCKETS3 < 0
#error Maximum TCP Socket count is not enough.
#error Either increase MAX_SOCKETS or decrease module socket usage.
#endif
#define AVAILABLE_UDP_SOCKETS (MAX_UDP_SOCKETS)
#if defined(STACK_USE_DHCP)
#define AVAILABLE_UDP_SOCKETS2 (AVAILABLE_UDP_SOCKETS - 1)
#else
#define AVAILABLE_UDP_SOCKETS2 AVAILABLE_UDP_SOCKETS
#endif
#if defined(STACK_USE_SNMP_SERVER)
#define AVAILABLE_UDP_SOCKETS3 (AVAILABLE_UDP_SOCKETS2 - 1)
#else
#define AVAILABLE_UDP_SOCKETS3 AVAILABLE_UDP_SOCKETS2
#endif
#if defined(STACK_USE_TFTP_CLIENT)
#define AVAILABLE_UDP_SOCKETS4 (AVAILABLE_UDP_SOCKETS2)
#else
#define AVAILABLE_UDP_SOCKETS4 AVAILABLE_UDP_SOCKETS3
#endif
#if AVAILABLE_UDP_SOCKETS4 < 0
#error Maximum UDP Socket count is not enough.
#error Either increase MAX_UDP_SOCKETS or decrease module UDP socket usage.
#endif
#undef BOOL
#undef TRUE
#undef FALSE
#undef BYTE
#undef WORD
#undef DWORD
typedef enum _BOOL { FALSE = 0, TRUE } BOOL;
typedef unsigned char BYTE; // 8-bit
typedef unsigned short WORD; // 16-bit
//#ifndef _WIN32
////typedef unsigned short long SWORD; // 24-bit
//typedef unsigned int SWORD; // 24-bit、、***************************************
//
//#else
//typedef short SWORD;
//#endif
typedef unsigned int DWORD; // 32-bit
typedef union _BYTE_VAL
{
struct
{
unsigned int b0:1;
unsigned int b1:1;
unsigned int b2:1;
unsigned int b3:1;
unsigned int b4:1;
unsigned int b5:1;
unsigned int b6:1;
unsigned int b7:1;
}__attribute__ ((packed)) bits;
BYTE Val;
}__attribute__ ((packed)) BYTE_VAL;
//typedef union _SWORD_VAL
//{
// SWORD Val;
// struct
// {
// BYTE LSB;
// BYTE MSB;
// BYTE USB;
// } byte;
//} SWORD_VAL;
typedef union _WORD_VAL
{
WORD Val;
struct
{
BYTE LSB;
BYTE MSB;
}__attribute__ ((packed)) byte;
BYTE v[2];
}__attribute__ ((packed)) WORD_VAL;
#define LSB(a) ((a).v[0])
#define MSB(a) ((a).v[1])
typedef union _DWORD_VAL
{
DWORD Val;
struct
{
BYTE LOLSB;
BYTE LOMSB;
BYTE HILSB;
BYTE HIMSB;
}__attribute__ ((packed)) byte;
struct
{
WORD LSW;
WORD MSW;
}__attribute__ ((packed)) word;
BYTE v[4];
}__attribute__ ((packed)) DWORD_VAL;
#define LOWER_LSB(a) ((a).v[0])
#define LOWER_MSB(a) ((a).v[1])
#define UPPER_LSB(a) ((a).v[2])
#define UPPER_MSB(a) ((a).v[3])
typedef BYTE BUFFER;
typedef struct _MAC_ADDR
{
BYTE v[6];
}__attribute__ ((packed)) MAC_ADDR;
typedef union _IP_ADDR
{
BYTE v[4];
DWORD Val;
}__attribute__ ((packed)) IP_ADDR;
typedef struct _NODE_INFO
{
MAC_ADDR MACAddr;
IP_ADDR IPAddr;
}__attribute__ ((packed)) NODE_INFO;
typedef struct _APP_CONFIG
{
IP_ADDR MyIPAddr;
MAC_ADDR MyMACAddr;
IP_ADDR MyMask;
IP_ADDR MyGateway;
WORD_VAL SerialNumber;
IP_ADDR SMTPServerAddr; // Not used.
struct
{
unsigned int bIsDHCPEnabled : 1;
}__attribute__ ((packed)) Flags;
IP_ADDR TFTPServerAddr;
}__attribute__ ((packed)) APP_CONFIG;
typedef union _STACK_FLAGS
{
struct
{
unsigned int bInConfigMode : 1;
}__attribute__ ((packed)) bits;
BYTE Val;
}__attribute__ ((packed)) STACK_FLAGS;
#ifndef THIS_IS_STACK_APPLICATION
extern APP_CONFIG AppConfig;
#endif
#if defined(STACK_USE_IP_GLEANING) || defined(STACK_USE_DHCP)
#ifndef STACK_INCLUDE
extern STACK_FLAGS stackFlags;
#endif
#endif
#if defined(STACK_USE_IP_GLEANING) || defined(STACK_USE_DHCP)
#define StackIsInConfigMode() (stackFlags.bits.bInConfigMode)
#else
#define StackIsInConfigMode() (FALSE)
#endif
/*********************************************************************
* Function: void StackInit(void)
*
* PreCondition: None
*
* Input: None
*
* Output: Stack and its componentns are initialized
*
* Side Effects: None
*
* Note: This function must be called before any of the
* stack or its component routines be used.
*
********************************************************************/
void StackInit(void);
/*********************************************************************
* Function: void StackTask(void)
*
* PreCondition: StackInit() is already called.
*
* Input: None
*
* Output: Stack FSM is executed.
*
* Side Effects: None
*
* Note: This FSM checks for new incoming packets,
* and routes it to appropriate stack components.
* It also performs timed operations.
*
* This function must be called periodically called
* to make sure that timely response.
*
********************************************************************/
void StackTask(void);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -