Toribio
De Proyecto Butiá
Revisión del 15:25 31 oct 2012 de Jorge (Discusión | contribuciones)
Toribio[1] es un entorno de desarrollo de aplicaciones de robótica para plataformas embebidas. Toribio está construido alrededor de Lumen[2], un despachador para programación concurrente cooperativa para Lua.
Lumen
Programar en Toribio (y por lo tanto Lumen) consiste en escribir tareas que emiten y reciben señales. Una señal es el mecanismo básico de intercambio de información y sincronización entre tareas. Una señal consiste en un evento y parámetros de tipos arbitrarios. Para esperar una señal se especifica el/los eventos de interes, y opcionalmente una o varias tareas emisoras. Las esperas pueden tener un timeout asociado.
Un ejemplo de dos tareas, donde una emite una señal periódicamente, y otra lo consume:
local sched=require 'sched'
-- task emits signals
local emitter_task = sched.run(function()
for i = 1, 10 do
sched.signal('an_event', i)
sched.sleep(1)
end
end)
-- task receives signals
sched.run(function()
local waitd = {emitter=emitter_task, events={'an_event'}}
while true do
local _, _, data = sched.wait(waitd)
print (data)
end
end)
sched.go()
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