/*#include "platform.h" #include "eth.h" #include "enc28j60.h" #include "arp.h" #include "ip.h"*/ #include "platform.h" #include "eth.h" #include "enc28j60.h" #include "ap.h" #include "arp.h" #include "icmp.h" #include "ip.h" #include "udp.h" #include "stdlib.h" #include "globals.h" // _DEBUG=1; // S P I N E T const unsigned char myname[15] = {0x20,0x46,0x44,0x46,0x41,0x45,0x4A,0x45,0x4F,0x45,0x46,0x46,0x45,0x43,0x41}; // for "name services" unsigned char buffer[BUFFER_SIZE]; unsigned char client[MAX_CLIENT][4]; unsigned int max_tcp_packet = 1050; /* ========================================================================== přislo neco? */ void eth_proc(void) { unsigned int len; struct ETH_header *eth; eth = (struct ETH_header *) buffer; if ( (len = nic_rx()) ) { netbuf_read(buffer, len); // read buffer switch (eth->typelen) { case HTONS(ETHTYPE_ARP): // přišel ARP paket arp (len, buffer); //uart_send("ARP\n"); break; case HTONS(ETHTYPE_IP): // přišel IP paket ip_in(len); //uart_send("IP\n"); break; //uart_send("unk\n"); } nic_rx_free(); } } /* ========================================================================== ethernet init - hardware - registers */ void eth_init (void) { unsigned char ccnt; //for (ccnt = 0; ccnt != 6; ccnt++) mymac[ccnt] = ReadWord(ccnt); //for (ccnt = 0; ccnt != 4; ccnt++) myip[ccnt] = ReadWord(ccnt + 8); for (ccnt = 0; ccnt <= MAX_CLIENT; ccnt++) client[ccnt][0] = 0; nic_init(); nic_rx_free(); } /* ========================================================================== swap mac address void eth_my (unsigned char *buff) { unsigned char a; buff[0]=0x00; buff[1]=0x16; buff[2]=0x76; buff[3]=0xda; buff[4]=0x93; buff[5]=0xf1; buff[0]=0x08; buff[1]=0x00; buff[2]=0x27; buff[3]=0xda; buff[4]=0xbb; buff[5]=0xe5; buff[12]=0x08; buff[13]=0x0; for (a = 0; a < 6; a++) { buff[a+6] = mymac[a]; } } */ /* ========================================================================== swap mac address */ void eth (unsigned char *buff) { unsigned char a; for (a = 0; a < 6; a++) { buff[a] = buff[a + 6]; buff[a+6] = mymac[a]; } } void eth_my (unsigned char *buff) { unsigned char a; for (a = 0; a < 6; a++) { buff[a] = rem_mac[a]; buff[a+6] = mymac[a]; } } /* ========================================================================== check MAC address with broadcast */ unsigned char Checkbroadcast(void) { if (buffer[0] == 0xFF && buffer[1] == 0xFF && buffer[2] == 0xFF && buffer[3] == 0xFF && buffer[4] == 0xFF && buffer[5] == 0xFF) return 1; else return 0; } /*============================================================================ function: Checkmymac description: chack my MAC address ===========================================================================*/ unsigned char Checkmymac(void){ unsigned char chtmp; for (chtmp = 0; chtmp != 6; chtmp++) { if (buffer[chtmp] != mymac[chtmp]) return 0; } return 1; }