?? tftpmain.c
字號:
#include "skbuff.h"
#include "eth.h"
#include "arp.h"
#include "ip.h"
#include "udp.h"
#include "utils.h"
#include "DataType.h"
#include "44B.h"
#include "os_cpu.h"
int DownLoadEnd;
int DownLoadOnly;
int arp_count=0;
unsigned long LoadLength;
unsigned long load_addr = 0x8000;
extern void Uart_Printf(char *fmt,...);
extern struct sk_buff skbuff[BUFF_LEN];
extern void OSTimeDly (INT16U ticks);
void net_handle(struct sk_buff* sk_buff_handle)
{
struct ethhdr *eth_hdr;
eth_hdr = (struct ethhdr *)(sk_buff_handle->data);
skb_pull(sk_buff_handle,ETH_HLEN);
//Uart_Printf("\n----%x", eth_hdr->h_proto);
//608->0806 arp ;8->0800 ip
//#define ETH_P_IP 0x0800 /* Internet Protocol packet */
//#define ETH_P_ARP 0x0806 /* Address Resolution packet */
if (ntohs(eth_hdr->h_proto) == ETH_P_ARP)
{
Uart_Printf("arp\n");
//arp_count++;
//Uart_Printf("任務接收到%x個arp包\n",arp_count);
arp_rcv_packet(sk_buff_handle);
}
else if(ntohs(eth_hdr->h_proto) == ETH_P_IP)
{
Uart_Printf("ip\n");
ip_rcv_packet(sk_buff_handle);
}
}
void tftp_init(unsigned long ip, unsigned long addr, int method)
{
unsigned char eth_addr[ETH_ALEN];
Uart_Printf("*************Mini TFTP Server 1.0*************\n");
load_addr = addr;
DownLoadEnd = 0;
DownLoadOnly = method;
LoadLength = 0;
eth_init();
eth_get_addr(eth_addr);
arp_init();
ip_init(ip);
udp_init();
arp_add_entry(eth_addr,ip);
}
void tftp_main(unsigned long ip, unsigned long addr, int method)
{
unsigned char eth_addr[ETH_ALEN];
//unsigned char *s = (unsigned char *)&ip;
//void (*fp)(U32, U32);
//fp = (void (*)(U32, U32))0xc008000;
//Uart_Printf("Mini TFTP Server 1.0 (IP : %d.%d.%d.%d PORT: %d)\n", s[3], s[2], s[1], s[0], TFTP);
Uart_Printf("*************Mini TFTP Server 1.0*************\n");
load_addr = addr;
DownLoadEnd = 0;
DownLoadOnly = method;
LoadLength = 0;
eth_init();
eth_get_addr(eth_addr);
arp_init();
ip_init(ip);
udp_init();
arp_add_entry(eth_addr,ip);
//while(1){
//Uart_Printf("UCOS任務執行中,數據包在中斷中處理完畢,^_^!\n");
//Uart_Printf("接收到信號量,開始接收數據包,^_^!\n");
//Uart_Printf("total_packet1-->%x!\n",total_packet);
//packet_check();
//while(total_packet!=0){
//Uart_Printf("執行BUFF_LEN次net_handle!\n");
//Uart_Printf("nethandle執行了%x次!\n",++i);
//net_handle();
//}
//if(DownLoadEnd)
//{
// Uart_Printf("Download end\n");
// (*fp)(0, 178);
//}
//Uart_Printf("total_packet2-->%x!\n",total_packet);
//Uart_Printf("rd_p-->%x!\n",rd_p);
//Uart_Printf("wr_p-->%x!\n",wr_p);
//SemGet=0;
//rINTMSK=~(BIT_GLOBAL|BIT_TIMER0|BIT_EINT1); //start timer INT
//rI_ISPC=BIT_TIMER0|BIT_EINT1;
//Uart_Printf("net_handle is running\n");
OSTimeDly(5);//不延時循環會死掉,Uart_Printf不可重入,中斷里也使用該函數
//if (kbhit()&&(getch()==ESC_KEY))
//{
// putch('\n');
// return 0;
//}
//if(DownLoadEnd)
//{
// puts("Download end\n");
// return LoadLength;
//}
//}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -