diff options
| author | Manuel Traut <manut@mecka.net> | 2012-05-29 23:32:25 +0200 |
|---|---|---|
| committer | Manuel Traut <manut@mecka.net> | 2012-05-29 23:32:25 +0200 |
| commit | 1dd697ee426589e3543051807e490f6a3ea6443b (patch) | |
| tree | 389c2a062585b0cc29d0b5793da3927a4d77a56d | |
| parent | 7913dd8af3861da4942123ab18d70d0aded921b1 (diff) | |
added README
with a little project overview
Signed-off-by: Manuel Traut <manut@mecka.net>
| -rw-r--r-- | README | 49 |
1 files changed, 49 insertions, 0 deletions
@@ -0,0 +1,49 @@ +DISTRIBUTED-IO +============== +Manuel Traut <manut@mecka.net> + +distributed-io is a software framework to group and control digital and analog +inputs and outputs that are distributed on different machines/boards. + +The initial idea was to control turnouts / LEDs / servos of a model railroad. +They are connected to GPIO ports of some embedded Linux boards. The Linux boards +are connected to each other by a common (W)LAN network. + +There is a central component called 'Manager' running on one board. Each I/O +pin of each board in the system is registered with a common name at the +'Manager'. A I/O pin can either be 'Digital' or 'Analog'. All registered pins +can be retrieved from the 'Manager'. + +A 'Device' represents a real world object. For example a model railroad turnout. +It can use several I/O pins from different boards. It gets the I/O pins from the +'Manager' by a common name. A 'Device' can export 'Functions'; a turnout for +example 'left()' and 'straight()'. A 'Device' can implement a 'Callback' and +register it at several 'Analog' or 'Digital' Inputs with a trigger condition. +The callback is called by the input object, as soon as the trigger matches. The +'Callback' is called with the triggered input object as a paramter. +A 'Device' needs to be registered at the 'Manager' with a common name. + +A 'Controller' can retrieve a list of all registered 'Devices' from the +'Manager'. The exported 'Functions' are also iteratable. + +The interfaces + +* 'Digital' +* 'Analog' +* 'Device' +* 'Manager' +* 'Controller' + +are defined in CORBA IDL. + +The 'Digital' and 'Analog' interface needs to be implemented if new hardware +should be supported. + +The 'Device' interface needs to be implemented for each logical/complex device +that should be controllable by the distributed-io framework. + +The 'Manager' interface needs to be implemented once and can be reused in each +distributed-io system. + +The 'Controller' interface is the user interface. It can for example host a +webinterface or mobile application. |
