Lo que antiguamente llamabamos "Browser" está siendo reestructurado para que permita una fácil ampliación de funcionalidades. El objetivo inicial del Browser fue darle al usuario un menú básico para que pudiera elegir entre las opciones que le permitía el administrador. Además fue mejorado dándole una interfaz algo más avanzada al administrador para que pudiera ejecutar comandos, ver su salida y modificar la página que se muestra en ese momento.
Con la modificación del código se busca obtener un sistema menos rígido para poder agregar elementos sin que afecte los demás. Sin embargo, se descarto un sistema de plugins normal, como el que pudiera tener una aplicación de escritorio. La principal razón fue que la política de las aplicaciones del cliente es la compilación estática. Crear un sistema de plugins cargando librerías de manera dinámica podría producir errores inesperados. Otra importante razón es la complejidad que puede llegar a tener un sistema así, cuando realmente no se va a ver beneficiar de sus principales ventajas. Por lo tanto, se optó por un sistema más rígido, más sencillo de implementar y permitiendo las funcionalidades hasta ahora pensadas. Este sistema es el de señales y slots que ofrece Qt. Todas las partes (se podrían calificar de plugin) serán opcionales a la hora de ejecución.
El sistema central donde todos los demás elementos se van a conectar es llamado core. Es simplemente un proceso que se puede ejecutar de manera controlada. Este proceso emite una serie de señales que el resto de elementos pueden conectarse para tomar alguna decisión. Por ejemplo si el comando escribe algo por su salida estándar, el core emitirá su correspondiente señal con la cadena que ha impreso y poder se capturada por la parte navegador e imprimirla por pantalla. Además tienes algunos slots para que los distintos elementos puedan ordenar al core realizar alguna acción. Por ejemplo ejecutar un comando cuando se haya clickeado desde el navegador.
Es una clase accesible desde cualquier parte del código y es usada para leer y escribir las opciones y las variables de entorno. Está protegido de manera que no se produzcan errores si se accede simultáneamente desde varios hilos.
Es lo que antes llamábamos el modo user del antiguo "browser". Muestra un menú básico, permite ejecutar las opciones que el administrador le ofrece y muestra el progreso del proceso.
Es lo que antes llamábamos el modo admin del antiguo "browser". Permite los mismo que lo anterior y además se puede consultar un log, se permite cambiar la página que muestra y tiene consolas que permite ejecutar comandos. Se ampliarán funcionalidades que se tiene pensadas.
Todo lo anterior está programado estando en fase de pruebas. A continuación más partes que están pensadas ser programadas
Se encarga de escribir en un fichero de log los mensajes que entren dentro del nivel de log seleccionado.
Si el framebuffer no está disponible, mostrar un menú en modo texto y que el usuario pueda interactuar con él.
Que el servidor pueda mandar órdenes a través de un socket, se ejecuten de manera correcta y le devuelva la salida.
Para compilar el programa hay que tener las librerias Qt, en especial, Qt Embedded Linux. En el caso que quisiéramos compilar el programa de manera estática habría que compilar Qt también de manera estática. No es posible usando unas librerías Qt dinámicas compilar un programa de manera estática y viceversa. Ahora mismo se está trabajando con la version 4.6.2. El enlace para descargarlo es esté:
http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.tar.gz
Una vez descomprimido los comandos para compilarlo e instalarlo son: