1 // vim: set et sw=4 sts=4 :
9 static xdata at 0x0080 byte leds0;
10 static xdata at 0x00c0 byte leds1;
12 static byte xdata leds0 _at_ 0x0080;
13 static byte xdata leds1 _at_ 0x00c0;
20 leds1 = ~HIGH(word); \
25 void sleep(unsigned char times)
29 for (i = 0; i < 0xffff; ++i)
30 for (j = 0; j < times; ++j);
35 // Apagamos todos los leds
38 // Inicializamos dispositivo de red
42 while(1); // Si falla init nos quedamos bobos
46 ip_addr_local[0] = 10;
47 ip_addr_local[1] = 10;
48 ip_addr_local[2] = 10;
49 ip_addr_local[3] = 100;
51 // Inicializo puerto UDP
52 udp_port_local = 9000;
56 uint16 len = netdev_recv_start();
57 if (!len) // no recibimos nada
60 continue; // vamos de nuevo!
63 // Parseamos cabecera ethernet
64 if (!eth_read_frame_header()) // No es un buen header
67 netdev_recv_end(); // Tiramos el paquete
68 continue; // Vamos de nuevo!
71 // Vemos que protocolo transporta
74 case ETH_ARP: // FIXME, implementar ARP!
75 netdev_recv_end(); // Tiramos el paquete
76 continue; // Vamos de nuevo!
79 // Parseamos cabecera IP
80 if (!ip_read_packet_header()) // No es un buen header
82 netdev_recv_end(); // Tiramos el paquete
83 continue; // Vamos de nuevo!
86 // Vemos que protocolo transporta
89 case IP_ICMP: // FIXME, implementar ICMP!
90 netdev_recv_end(); // Tiramos el paquete
91 continue; // Vamos de nuevo!
94 // Parseamos cabecera UDP
95 if (!udp_read_dgram_header()) // No es un buen header
97 netdev_recv_end(); // Tiramos el paquete
98 continue; // Vamos de nuevo!
102 // Nuestro protocolo, por ahora un simple echo!
103 for (len = 8; len < udp_dgram_len; len += 2) // 8 por la cabecera UDP
105 leds(netdev_recv_word());