La placa ya está recibiendo (es decir, recibiendo la placa y parseando Ethernet,
IP y UDP =), pero sigue habiendo algún problema que hace que al recibir el 2do
paquete los datos obtenidos del buffer no tengan sentido.
Ya ha surgido un problema similar y era por mal manejo de los buffers de la
placa, probablemente sea un bug similar.
También se separa la parte de los leds para simplificar su manejo y se agrega
código de debug (funciones de 'print' usando los leds =).
Primer intento de integración y creación del proyecto.
El programa es medio bobo, sólo recibe frames, los parsea (ethernet, ip, udp) y
muestra el payload de UDP. A pesar de esto no funciona, falta un poco de
debugging, pero como está basando en 2 grandes fragmentos que funcionaban por
separado, debería ser fácil ponerlo a andar.
Cambio el hack feo del retardo por un hack algo menos feo. Además de chequear
por el flag OVW me fijo si BNRY == CURR antes de resetear la placa.
Con esto anda como piña, la floodeo con todas las ganas y no se resetea nunca.
Seguían habiendo problemas al recibir varios paquetes seguidos, al parecer se
leía mal el ISR y eso provocaba que se resetea la placa sin que realmente haya
overflow del buffer. Con un asqueroso hack (poniendo un retardo antes de leer el
ISR _solo_ en ese lugar) parece mejorar considerablemente. Lo sigue haciendo,
pero MUY esporádicamente...
Primera implementación de Ethernet+IP+UDP. Falta el chequeo y cálculo de
checksum de IP (que aparentemente es obligatorio). La implementación se basa en
un par de funciones aún no implementadas que puede escribir y leer un byte de la
placa de red. Esa función probablemente haya que implementarla en ASM.
Por ahora no se implementa ARP e ICMP, porque no son estrictamente necesarios
para que el proyecto sea mínimamente funcional. De todas formas son altamente
deseables (en especial el ARP) y si queda tiempo la idea sería implementarlo.
Falta también, nuestro protocolo, que se monta sobre esto.
Bugfixes e integración del protocolo con la interfaz gráfica.
El cliente está terminado en cuanto a la funcionalidad pricipal (funcionalidad
vital básica =), pero faltan pulir varios detalles para que sea agradable de
usar.
Cambia el protocolo para que use CRC sólo para los datos, dejando en la cabecera
un bit de paridad para control de errores. Para este bit de paridad se usa uno
de los bits de las Variables.
Primer draft de la aplicación cliente.
Por ahora sólo responde a los eventos de dibujado. Falta hacer la parte de
cliente-servidor para que reciba y envie las cosas. En el futuro habrá que
extenderlo (o no?) para que se pueda cambiar el tamaño de la matriz (depende de
si llegamos a implementar esto en el dispositivo o no).
Agrego programa de prueba que muestra una matriz de 8x8 leds (conectados al
puerto 0) barriendola tipo gnuine perception. La parte de mostrar la matriz no
debería ser más que esto.