The system was developed to provide remote management of Linux on the means of IR-remote controls, mobile devices (mobile phones) and other sources (eg network). In terms of the object interacting with a source of commands is called a controller (controller). The controller is waiting for commands (pressing buttons on the remote device) and sends a signal to its customers about this.
The system consists of two parts: server and client.
Server service (daemon), which tracks click on the buttons and controllers notify their customers of the event. Server provides its service to DBus.
The work with each type of controller is a special module that loads the server. So, to work with IR-remote control (LIRC), using the module controller-lirc.so, and for mobile devices - controller-serial.so.
All of the server occurs in the configuration file, which specifies what modules you need to download and how to configure them.
Server expandable, ie you can write modules for other teams.
Mobile devices can connect via:
# USB or Serial cable (using a device /dev/ttySx or /dev/ttyACMx);
# Bluetooth on the protocol RFCOMM (using device /dev/rfcommx);
The main thing is that the mobile device provides the ability to track events click on the button.
The client application is written using a library of Qt4, which, when launched, connects to the server, and performs user-defined actions, depending on the button press. The customer puts in their system tray icon, through which they can manage.
The actions specified in the scripting language ECMAScript (ECMA-262) or JAVA, the library provided by Qt4. Functional script language expand, it is possible to write extension modules, as in C++, and at the script itself.
To run external programs in the script put the function runCommand, and access to services DBus class DBusInterface.