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

📄 webserver.i

📁 实现在指定视频服务器下的视频点播
💻 I
📖 第 1 页 / 共 5 页
字号:











 


 

 







 
 



















 













 
# 715 "uip.h"







 

u16 htons(u16 val);


 







 

extern volatile u8 *uip_appdata;

extern volatile unsigned int uip_appdata_length; 


extern volatile u8 *uip_sappdata; 







 
extern volatile u8 *uip_urgdata; 











 
extern volatile u16 uip_len, uip_slen;


extern volatile u8 uip_urglen, uip_surglen;












 
struct uip_conn {
  u16 ripaddr[2];    
  
  u16 lport;         
  u16 rport;        
   
  
  u8 rcv_nxt[4];    
 
  u8 snd_nxt[4];    
 
  u16 len;           
  u16 mss;          
 
  u16 initialmss;   
   
  u8 sa;            
 
  u8 sv;            
 
  u8 rto;            
  u8 tcpstateflags;  
  u8 timer;          
  u8 nrtx;          
 

   
  u8 appstate[(sizeof(struct httpd_state))];  
};


 
extern struct uip_conn *uip_conn;
 
extern struct uip_conn uip_conns[10];



 



 
extern volatile u8 uip_acc32[4];

 


# 842 "uip.h"





 
struct uip_stats {
  struct {
    uip_stats_t drop;     
 
    uip_stats_t recv;     
 
    uip_stats_t sent;     
 
    uip_stats_t vhlerr;   
 
    uip_stats_t hblenerr; 
 
    uip_stats_t lblenerr; 
 
    uip_stats_t fragerr;  
 
    uip_stats_t chkerr;   
 
    uip_stats_t protoerr; 
 
  } ip;                    
  struct {
    uip_stats_t drop;      
    uip_stats_t recv;      
    uip_stats_t sent;      
    uip_stats_t typeerr;  
 
  } icmp;                  
  struct {
    uip_stats_t drop;      
    uip_stats_t recv;      
    uip_stats_t sent;      
    uip_stats_t chkerr;   
 
    uip_stats_t ackerr;   
 
    uip_stats_t rst;       
    uip_stats_t rexmit;    
    uip_stats_t syndrop;  
 
    uip_stats_t synrst;   
 
  } tcp;                   
};





 
extern struct uip_stats uip_stat;


 


 
 





 
extern volatile u8 uip_flags;





 

# 945 "uip.h"








 
void uip_process(u8 flag);





 

# 971 "uip.h"

 
# 983 "uip.h"
  




 
typedef struct {
   
  u8 vhl,
    tos,          
    len[2],       
    ipid[2],        
    ipoffset[2],  
    ttl,          
    proto;     
  u16 ipchksum;
  u16 srcipaddr[2], 
    destipaddr[2];
  
   
  u16 srcport,
    destport;
  u8 seqno[4],  
    ackno[4],
    tcpoffset,
    flags,
    wnd[2];     
  u16 tcpchksum;
  u8 urgp[2];
  u8 optdata[4];
} uip_tcpip_hdr;

 
typedef struct {
   
  u8 vhl,
    tos,          
    len[2],       
    ipid[2],        
    ipoffset[2],  
    ttl,          
    proto;     
  u16 ipchksum;
  u16 srcipaddr[2], 
    destipaddr[2];
   
  u8 type, icode;
  u16 icmpchksum;
  u16 id, seqno;  
} uip_icmpip_hdr;


 
typedef struct {
   
  u8 vhl,
    tos,          
    len[2],       
    ipid[2],        
    ipoffset[2],  
    ttl,          
    proto;     
  u16 ipchksum;
  u16 srcipaddr[2], 
    destipaddr[2];
  
   
  u16 srcport,
    destport;
  u16 udplen;
  u16 udpchksum;
} uip_udpip_hdr;






extern const u16 uip_hostaddr[2];











 

# 56 "uip_arp.h"





 
struct uip_eth_addr {
  u8 addr[6];
};

extern struct uip_eth_addr uip_ethaddr;



 
struct uip_eth_hdr {
  struct uip_eth_addr dest;
  struct uip_eth_addr src;
  u16_t type;
};








 
void uip_arp_init(void);





 
void uip_arp_ipin(void);






 
void uip_arp_arpin(void);










 
void uip_arp_out(void);


 
void uip_arp_timer(void);

 




 








 










 











 










 



















 
# 193 "uip_arp.h"

 




 
extern const u16_t uip_arp_draddr[2], uip_arp_netmask[2];









# 9 "webserver.c"





# 1 "MAC_Definition.h"






# 1 "D:\\Program Files\\Analog Devices\\VisualDSP 4.5\\Blackfin\\include\\ccblkfn.h"
#pragma once

#pragma system_header /* ccblkfn.h */







 

 











short __builtin_ones(int _x);
short __builtin_lvitmax1x16res1(int _x, int _y);
short __builtin_rvitmax1x16res1(int _x, int _y);
int __builtin_lvitmax2x16res1(int _x, int _y, int _z);
int __builtin_rvitmax2x16res1(int _x, int _y, int _z);
int __builtin_vitmaxres1x16(short _x);
int __builtin_vitmaxres2x16(int _x);
short __builtin_expadj1x32(int _x, short _y);
short __builtin_expadj2x16(int _x, short _y);
short __builtin_expadj1x16(short _x, short _y);
int __builtin_divs(int _x, int _y);
int __builtin_divq(int _x, int _y);
long long __builtin_mult64_32x32(int _x, int _y);
unsigned long long __builtin_multu64_32x32(unsigned int _x, unsigned int _y);
void __builtin_idle();
void __builtin_halt();
void __builtin_abort();
void __builtin_ssync();
void __builtin_ssync_int();
void __builtin_csync(void );
void __builtin_csync_int(void );
unsigned __builtin_cli();
void __builtin_sti(unsigned);
void __builtin_raise(int);
void __builtin_excpt(int);
unsigned int __builtin_sysreg_read(int);
void __builtin_sysreg_write(int,unsigned int);
unsigned long long __builtin_sysreg_read64(int);
void __builtin_sysreg_write64(int,unsigned long long);
void *__builtin_alloca(int);
long __builtin_circindex(long, long, unsigned long);
void *__builtin_circptr(const void *, long, const void *, unsigned long);
long long __builtin_bitmux_shr_res1(long long, int, int);
int __builtin_bitmux_shr_res2(long long);
int __builtin_bitmux_shr_res3(long long);
long long __builtin_bitmux_shl_res1(long long, int, int);
int __builtin_bitmux_shl_res2(long long);
int __builtin_bitmux_shl_res3(long long);


 
int __builtin_byteswap4(int);
short __builtin_byteswap2(short);


 
short __builtin_misaligned_load16(void *);
short __builtin_misaligned_load16_vol(volatile void *);
void __builtin_misaligned_store16(void *, short);
void __builtin_misaligned_store16_vol(volatile void *, short);

int __builtin_misaligned_load32(void *);
int __builtin_misaligned_load32_vol(volatile void *);
void __builtin_misaligned_store32(void *, int);
void __builtin_misaligned_store32_vol(volatile void *, int);

long long __builtin_misaligned_load64(void *);
long long __builtin_misaligned_load64_vol(volatile void *);
void __builtin_misaligned_store64(void *, long long);
void __builtin_misaligned_store64_vol(volatile void *, long long);





 
unsigned short __builtin_mmr_read16(volatile void *);
unsigned int __builtin_mmr_read32(volatile void *);
void __builtin_mmr_write16(volatile void *, unsigned short);
void __builtin_mmr_write32(volatile void *, unsigned int);




# 115 "D:\\Program Files\\Analog Devices\\VisualDSP 4.5\\Blackfin\\include\\ccblkfn.h"




 



# 135 "D:\\Program Files\\Analog Devices\\VisualDSP 4.5\\Blackfin\\include\\ccblkfn.h"

 
# 193 "D:\\Program Files\\Analog Devices\\VisualDSP 4.5\\Blackfin\\include\\ccblkfn.h"


















 
void *_l1_memcpy(void *datap, const void *instrp, size_t n);
 
void *_memcpy_l1(void *instrp, const void *datap, size_t n);










 
# 233 "D:\\Program Files\\Analog Devices\\VisualDSP 4.5\\Blackfin\\include\\ccblkfn.h"

extern int __builtin_testset(char *);
extern void __builtin_untestset(char *);

#pragma always_inline
static __inline void adi_acquire_lock(volatile unsigned short *t)
{
   int  tVal;

	__builtin_csync();
	tVal = __builtin_testset((char *)t);
	while ( tVal == 0 )
	{
		__builtin_csync();
		tVal = __builtin_testset((char *)t);
	}
}

#pragma always_inline
static __inline int adi_try_lock(volatile unsigned short *t)
{
	__builtin_csync();
	return __builtin_testset((char *)t);
}

#pragma always_inline
static __inline void adi_release_lock(volatile unsigned short *t)
{
	__builtin_untestset((char *)t);
	__builtin_ssync();
}

 
#pragma always_inline
static __inline void claim_atomic_access(volatile unsigned short *t)
{
	adi_acquire_lock(t);
}

#pragma always_inline
static __inline void release_atomic_access(volatile unsigned short *t)
{
	adi_release_lock(t);
}

# 297 "D:\\Program Files\\Analog Devices\\VisualDSP 4.5\\Blackfin\\include\\ccblkfn.h"





# 10 "MAC_Definition.h"
# 1 "D:\\Program Files\\Analog Devices\\VisualDSP 4.5\\Blackfin\\include\\sysreg.h"
#pragma once

#pragma system_header /* sysreg.h */







 

 




enum Regno {
        reg_NONE=(-1),
        reg_R0, reg_R1, reg_R2, reg_R3, reg_R4, reg_R5, reg_R6, reg_R7,
        reg_xR0, reg_xR1, reg_xR2, reg_xR3, reg_xR4, reg_xR5, reg_xR6, reg_xR7,
        reg_xR8, reg_xR9, reg_xR10, reg_xR11, reg_xR12, reg_xR13, reg_xR14, reg_xR15,
        reg_HR0,reg_HR1,reg_HR2,reg_HR3,reg_HR4,reg_HR5,reg_HR6,reg_HR7,
        reg_xHR0,reg_xHR1,reg_xHR2,reg_xHR3,reg_xHR4,reg_xHR5,reg_xHR6,reg_xHR7,
        reg_xHR8,reg_xHR9,reg_xHR10,reg_xHR11,reg_xHR12,reg_xHR13,reg_xHR14,reg_xHR15,
        reg_P0, reg_P1, reg_P2, reg_P3, reg_P4, reg_P5,
        reg_xP0, reg_xP1, reg_xP2, reg_xP3, reg_xP4, reg_xP5,
        reg_xP6, reg_xP7, reg_xP8, reg_xP9, reg_xP10, reg_xP11, reg_SP, reg_FP,
        reg_I0, reg_I1, reg_I2, reg_I3,
        reg_B0, reg_B1, reg_B2, reg_B3,
        reg_L0, reg_L1, reg_L2, reg_L3,
        reg_Q0, reg_Q1, reg_Q2, reg_Q3,  
        reg_M0, reg_M1, reg_M2, reg_M3,
        reg_ASTAT,       
        reg_SEQSTAT,reg_RETS,reg_CC,
        reg_A0,reg_A1,reg_LC0,reg_LC1,
        reg_RETI,reg_RETX,reg_RETN,
        reg_LT0, reg_LT1, reg_LB0, reg_LB1,
        reg_SYSCFG, reg_CYCLES, reg_CYCLES2,
        num_Regs,
        STACKPOINTER=reg_SP,
        FRAMEPOINTER=reg_FP,
        PARAMREG0=reg_R0,
        PARAMREG1=reg_R1,
        PARAMREG2=reg_R2,
        RESULTREG=reg_R0,
        FRESULTREG=reg_R0
};

# 11 "MAC_Definition.h"









































_Bool speed100	= 1;
_Bool full_dpx	= 1;

_Bool ip_chksum	= 0;
_Bool rxdwa		= 1;
_Bool rmii		= 0;

_Bool RunFlag	= 1;

_Bool negotiation = 1;


# 73 "MAC_Definition.h"







u8 data[1576];
u8 BroadcastAddr[6] 	= {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
u8 MyAddr[6] 			= {0x00,'B','u','B','_','A'};
u8 SrcAddr[6] 			= {0x00,'B','u','B','_','A'};
u8 DstAddr[6] 			= {0xff,0xff,0xff,0xff,0xff,0xff};
u8 rx_src_addr[]	 	= "ABCDEF";
u8 rx_dst_addr[] 		= "ABCDEF";

u32 rx_MAC_protocol;


u32 TxStsHistory[1];
u32 RxStsHistory[1];


u16 PHYregs[0x20];












 





void MemFailure(void)
{
	printf("Failed to allocate some memory\n");
	a:
	goto a;
}











# 144 "MAC_Definition.h"


typedef struct ADI_DMA_CONFIG_REG {
	u16 b_DMA_EN:1;		
	u16 b_WNR:1;		
	u16 b_WDSIZE:2;		
	u16 b_DMA2D:1;		
	u16 b_RESTART:1;	
	u16 b_DI_SEL:1;		
	u16 b_DI_EN:1;		
	u16 b_NDSIZE:4;		
	u16 b_FLOW:3;		
} ADI_DMA_CONFIG_REG;

typedef struct dma_registers {
	struct dma_registers*	NEXT_DESC_PTR;
	unsigned long int		START_ADDR;
	ADI_DMA_CONFIG_REG		CONFIG;
} DMA_REGISTERS;





typedef struct adi_emac_staadd_reg {
	u32 b_STABUSY:1;	
	u32 b_STAOP:1;		
	u32 b_STADISPRE:1;	
	u32 b_STAIE:1;		
	u32 :2;				
	u32 b_REGAD:5;		
	u32 b_PHYAD:5;		
	u32 :16;			
} ADI_EMAC_STAADD_REG;

typedef struct adi_ether_frame_buffer {
	u16		NoBytes;		
	u8		Dest[6];		
	u8		Srce[6];		
	u16		LTfield;		
	u8		Data[0];		
} ADI_ETHER_FRAME_BUFFER; 


typedef struct adi_ether_buffer {	
	DMA_REGISTERS			Dma[2];	
	ADI_ETHER_FRAME_BUFFER	*Data;	
	u32	ElementCount;	
	u32	ElementWidth;	
	void*	CallbackParameter;
	u32	ProcessedFlag;	
	u32	ProcessedElementCount;
						
	struct adi_ether_buffer	*pNext;	
	void	*PayLoad;		
	u32	PayloadCount;	
	u32	PayloadWidth;	
	u16	IPHdrChksum;	
	u16	IPPayloadChksum;	
	u32	StatusWord;		
} ADI_ETHER_BUFFER;














ADI_ETHER_BUFFER *SetupTxBuffer(int datasize,unsigned int root)
{
	ADI_ETHER_FRAME_BUFFER *frmbuf;
	ADI_ETHER_BUFFER *buf;
	unsigned int i;
	int nobytes_buffer = sizeof(ADI_ETHER_BUFFER[2])/2;	
	
	
	buf = (ADI_ETHER_BUFFER *)malloc(nobytes_buffer+sizeof(ADI_ETHER_FRAME_BUFFER)+datasize);
	if (buf==0) MemFailure();
	frmbuf = (ADI_ETHER_FRAME_BUFFER *)(((char *)buf) + nobytes_buffer);
	
	
	memset(buf,0,nobytes_buffer);
	buf->Data = frmbuf;
	
	
	buf->Dma[0].NEXT_DESC_PTR = &(buf->Dma[1]);
	buf->Dma[0].START_ADDR = (u32)buf->Data;
	
	
	
	buf->Dma[0].CONFIG.b_DMA_EN = 1;		
	buf->Dma[0].CONFIG.b_WDSIZE = 2;		
	buf->Dma[0].CONFIG.b_NDSIZE = 5;		
	buf->Dma[0].CONFIG.b_FLOW   = 7;		
	
	
	
	buf->Dma[1].NEXT_DESC_PTR = (DMA_REGISTERS*)0;
	buf->Dma[1].START_ADDR = (u32)&buf->StatusWord;
	
	
	
	buf->Dma[1].CONFIG.b_DMA_EN = 1;		
	buf->Dma[1].CONFIG.b_WNR    = 1;		
	buf->Dma[1].CONFIG.b_WDSIZE = 2;		
	buf->Dma[1].CONFIG.b_NDSIZE = 0;		
	buf->Dma[1].CONFIG.b_FLOW   = 0;		
	
	
	frmbuf->NoBytes = 14+datasize; 


	frmbuf->LTfield = datasize;
	

	for(i=0; i<datasize; i++) frmbuf->Data[i] = 0x0;
	
	return buf;
	
}






ADI_ETHER_BUFFER *SetupRxBuffer(_Bool chksum)
{
	ADI_ETHER_FRAME_BUFFER *frmbuf;
	ADI_ETHER_BUFFER *buf;
	int i;
	int nobytes_buffer = sizeof(ADI_ETHER_BUFFER[2])/2;	
	
	
	buf = (ADI_ETHER_BUFFER *)malloc(nobytes_buffer+sizeof(ADI_ETHER_FRAME_BUFFER)+1576);
	if (buf==0) MemFailure();
	frmbuf = (ADI_ETHER_FRAME_BUFFER *)(((char *)buf) + nobytes_buffer);
	
	
	memset(buf,0,nobytes_buffer);	
	buf->Data = frmbuf;
	memset(frmbuf, 0xfe, 1576);	
	
	
	buf->Dma[0].NEXT_DESC_PTR = &(buf->Dma[1]);
	buf->Dma[0].START_ADDR = (u32)buf->Data;
	
	
	
	buf->Dma[0].CONFIG.b_DMA_EN = 1;		
	buf->Dma[0].CONFIG.b_WNR    = 1;		
	buf->Dma[0].CONFIG.b_WDSIZE = 2;		
	buf->Dma[0].CONFIG.b_NDSIZE = 5;		
	buf->Dma[0].CONFIG.b_FLOW   = 7;		
	
	
	
	buf->Dma[1].NEXT_DESC_PTR = (DMA_REGISTERS*)0;
	if (chksum) {
		buf->Dma[1].START_ADDR = (u32)&buf->IPHdrChksum;
	} else {
		buf->Dma[1].START_ADDR = (u32)&buf->StatusWord;
	}
	
	
	
	buf->Dma[1].CONFIG.b_DMA_EN = 1;		
	buf->Dma[1].CONFIG.b_WNR    = 1;		
	buf->Dma[1].CONFIG.b_WDSIZE = 2;		
	buf->Dma[1].CONFIG.b_FLOW   = 0;		
	
	
	return buf;
	
}


















 



ADI_ETHER_BUFFER 		*txbuf,
						*txfst,
				 		*txlst=0,
						*rxbuf,
						*rxfst,
						*rxlst=0;
					


















# 15 "webserver.c"
# 1 "protocol_numbers.h"



	
	
typedef struct ip_protocol{
	
  	 const char *protocol;
}IP_PROTOCOL_NUMBER;


IP_PROTOCOL_NUMBER ip_protocol_number [] ={
"HOPOPT IPv6 Hop-by-Hop Option                   [RFC1883]",
"ICMP Internet Control Message                    [RFC792]",
"IGMP        //Internet Group Management         [RFC1112]",
"GGP         //Gateway-to-Gateway                 [RFC823]",
"IP          //IP in IP (encapsulation)          [RFC2003]",
"ST          //Stream                    [RFC1190,RFC1819]",
"TCP         //Transmission Control               [RFC793]",
"CBT         //CBT                             [Ballardie]",
"EGP         //Exterior Gateway Protocol     [RFC888,DLM1]",
"IGP         //any private interior gateway (used by Cisco for their IGRP)        [IANA]",
"BBN-RCC-MON //BBN RCC Monitoring                    [SGC]",
"NVP-II      //Network Voice Protocol         [RFC741,SC3]",
"PUP         //PUP                             [PUP,XEROX]",
"ARGUS       //ARGUS                                [RWS4]",
"EMCON       //EMCON                                 [BN7]",
"XNET        //Cross Net Debugger            [IEN158,JFH2]",
"CHAOS       //Chaos                             

⌨️ 快捷键说明

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