Toribio
De Proyecto Butiá
Bobot:
Resumen de componentes en bobot, y formas de comuniaciones
OS .so library lua modules lua module
xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx
serial -----------serialcomm---------comms_serial---|
: (C) (lua) | |---- drivers (lua)
libusb0.1 | |
|------------bobot------------- drivers (lua)
stdio | (lua) |
: | | |---- drivers (lua)
usb---------------libusb--------------comms_usb-----| |
(C+liblua.h) (lua) |
|
|---------------butialo, other apps.
|
|---------------bobot-server-----------------userapps
(lua)
xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx
lua module socket
Toribio
OS fd (PIPE) lua+Lumen
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx
|---- drivers (lua)
|
usb, serial, hid? ---------- bridge ------------ toribio ------------- drivers (lua)
# (C) (lua+Lumen) |
# | |---- drivers (lua)
(stdio, libusb1, ...?) |
|
|---------------butialo, other apps.
|
|---------------bobot-server-----------------userapps
(lua)
xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx
lua Lumen socket
Propuesta actual...
POSIX lua library Lumen tasks
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx
|---- drivers (lua)
|
fd ---------------- nixio ------------ toribio ------------- drivers (lua)
(C) (lua+Lumen) |
| |---- drivers (lua)
|
|
|---------------butialo, other apps.
|
|---------------bobot-server-----------------userapps
(lua)
xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx
Lumen task socket
USB4ALL:
Se proponen algunos cambios a la plataforma usb4all. Las ideas principales detras de estos cambios son;
- convertir a usb4all en un protocolo stateless. Actualmente, las comunicaciones son de la forma solicitud/respuesta. La respuesta solo se puede interpretar manteniendo el estado de la solicitud originante. Para convertirlo en stateless, hay que agregar información a las respuestas de forma de poder interpretarlo completamente sin tener que recordar las comunicaciones anteriores.
- Fácil de portar impementaciones de usb4all clásico. Las implementaciones alternativas deben seguir funcionando con solo agregar infomracion extra a los paquetes. La lógica original debe seguir siendo valida.
- Esto abre las puertas a comunicaciones asincrónicas desde la placa al host.
Puntualmente, los cambios son:
Paquete de respuesta de open
Agregar nombre de modulo, etc.
OPEN(8bits) | INEP(8bits) | OUTEP(8bits) | MODULE(8bytes) | HANDLER(8bits)
Paquete de respuesta de close
Agregar handler.
CLOSE(8bits) | HANDLER(8bits) | STATUS(8bits)
Respuesta de consulta de un modulo
GET_USER_MODULES_LINE (8bits) | LINE(8bits) | MODULE(8bytes)