/*
* Alberto Seva WebServerSD.015t
*
*
http://dfists.ua.es/~alberto/arduino/arduino.htm *
*
* Mi proyecto es crear un servidor Web con el “Arduino UNO” (RS 715-4081[1]) y
* el "ETHernet shield with SD card” (RS 715-4072[2]).
*
* [1]
http://es.rs-online.com/web/p/products/715-4081/ * [2]
http://es.rs-online.com/web/p/microcontrolador-procesador/7154072/ *
* A partir del sketch 'SDWebBrowse.ino', las mejoras de mi código suponen
* lo siguiente:
*
* * Los nombres de fichero 8.3 que el sistema SdFat es capaz de encontrar,
* se guardan en el formato correspondiente a la página de códigos de
* MSDOS cp850. Se debe especificar esa página de códigos para que los
* enlaces se puedan reconstruir.
* * Los nombres 8.3 normalmente no deberían tener caracteres por encima
* del 0x7F, pero en algunas de mis tarjetas he descubierto que no es así.
* Surge el problema de que los enlaces con caracteres por encima del 0x7F
* enviados en los enlaces con formato cp850, regresan con el formto UTF-8
* expresado como %C2 ó %C3 y a continuación otro código con el formato
* %XX. Esos códigos hay que convertirlos primero a un carácter
* equivalente, y luego mediante una tabla totalmente arbitraria, al
* carácter correcto en cp850 que sirva en el proceso de búsqueda del
* nombre del fichero.
* * En el listado de directorio, la rutina es capaz de detectar las entradas
* de nombre largo y escribirlas como información aunque sin ninguna opción
* de búsqueda real.
* * En la petición de ficheros, se intenta mandar información del
* content-type de manera correcta. El HTML supone programar muchas cadenas
* constantes que hay que almacenar en la zona de programa para que el
* programa no se quede sin memoria.
* * La transmisión de ficheros usando un buffer, mejora muchísimo el
* rendimiento del servidor web.
*
* Se ha probado con el Arduino UNO y con el MEGA 2560 (RS 715-4084 [3].
* Como intento que funcione en el primero, hay unos trucos de ahorro de
* memoria compartiendo el buffer de entrada.
*
* Dos notas adicionales:
* * La comunicación serie está definida a 115200 bps.
* * Para que funcione y busque los caracteres acentuados, debe modificarse la librería.
* SdBaseFile.cpp como se indica en la cabecera del sketch.
*
* [3]
http://es.rs-online.com/web/p/microcontrolador-procesador/7154084/ */