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. The controller is waiting for commands (pressing the button on the remote device) and sends a signal to its customers on the bus DBus.
The system consists of two parts: server and client.
Server Server (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. 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); * IR-port. The main thing is that the mobile device provides the ability to track events click on the button.
TODOs: * Redesign the architecture iolib (on paper, all ready).
Client Client is an application which has been (was) writen by using Qt4, which during launching connects to server and performs actions which were provided by user according to held buttons. The actions specified in the scripting language ECMAScript (ECMA-262) or simply JAVAScript. Functional script language extensible. You can write plugins, as in C + +, and in java. To run external programs in the script put the function runCommand, and access to services DBus class DBusInterface. Examples of writing script extensions made two modules to manage through the DBus system kmix mixer and player amarok.
TODOs: * Group action. * Disconnecting the controller is not required. * Syntax JAVA scripts in the editor. * Completion code in the script (control structure, the current expansion). * Assistant for DBus-interface with the ability to insert code in the script.
Hi, I'm trying to compile under Slackware 13. It has kde 4.2.4 (so no irkick), is it compatible?
When I try to compile the server I get:
pascal@Toothy:~/freeremote/freeremoted-0.1.4$ ./build.bash
Usage:
build.bash <build_dir> [project_dir] [configuration] [arguments...]
pascal@Toothy:~/freeremote/freeremoted-0.1.4$ cmake .
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Boost version: 1.38.0
-- Found the following Boost libraries:
-- filesystem
-- program_options
-- signals
-- thread
-- Could NOT find TINYXML (missing: TINYXML_LIBRARY TINYXML_INCLUDE_DIR)
-- Could NOT find DBUSPP (missing: DBUSPP_LIBRARY DBUSPP_INCLUDE_DIR)
---------------------------------------------------------------------------------
Install bin: /home/pascal/freeremote/bin
Install config: /home/pascal/freeremote/etc/freeremoted
Install module: /home/pascal/freeremote/lib/freeremoted
Log file: /home/pascal/freeremote/freeremoted.log
---------------------------------------------------------------------------------
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pascal/freeremote/freeremoted-0.1.4
pascal@Toothy:~/freeremote/freeremoted-0.1.4$ ls
AUTHORS CMakeLists.txt Doxyfile Makefile build.bash* cmake.local/ config.h module/
CMakeCache.txt COPYING INSTALL-en README build.debug* cmake_install.cmake config.h.in server/
CMakeFiles/ ChangeLog INSTALL-ru TODO build.release* config/ iolib/ templates/
pascal@Toothy:~/freeremote/freeremoted-0.1.4$ make
Scanning dependencies of target io
[ 4%] Building CXX object iolib/CMakeFiles/io.dir/fddevice.cpp.o
[ 9%] Building CXX object iolib/CMakeFiles/io.dir/fdnamedevice.cpp.o
[ 14%] Building CXX object iolib/CMakeFiles/io.dir/iodevice.cpp.o
[ 19%] Building CXX object iolib/CMakeFiles/io.dir/iolib.cpp.o
[ 23%] Building CXX object iolib/CMakeFiles/io.dir/serialdevice.cpp.o
[ 28%] Building CXX object iolib/CMakeFiles/io.dir/socketdevice.cpp.o
[ 33%] Building CXX object iolib/CMakeFiles/io.dir/socketnotifier.cpp.o
[ 38%] Building CXX object iolib/CMakeFiles/io.dir/timer.cpp.o
Linking CXX static library libio.a
/usr/bin/ar cr libio.a CMakeFiles/io.dir/fddevice.cpp.o CMakeFiles/io.dir/fdnamedevice.cpp.o CMakeFiles/io.dir/iodevice.cpp.o CMakeFiles/io.dir/iolib.cpp.o CMakeFiles/io.dir/serialdevice.cpp.o CMakeFiles/io.dir/socketdevice.cpp.o CMakeFiles/io.dir/socketnotifier.cpp.o CMakeFiles/io.dir/timer.cpp.o
/usr/bin/ranlib libio.a
[ 38%] Built target io
Scanning dependencies of target freeremoted
[ 42%] Building CXX object server/CMakeFiles/freeremoted.dir/application.cpp.o
In file included from /home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:25:
/home/pascal/freeremote/freeremoted-0.1.4/server/manager.h:23:29: error: dbus++/object.hpp: No such file or directory
In file included from /home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:30:
/home/pascal/freeremote/freeremoted-0.1.4/server/dbus.h:27:29: error: dbus++/dbus++.hpp: No such file or directory
/home/pascal/freeremote/freeremoted-0.1.4/server/dbus.h:28:38: error: dbus++/interface_proxy.hpp: No such file or directory
/home/pascal/freeremote/freeremoted-0.1.4/server/dbus.h:29:41: error: dbus++/basic_object_proxy.hpp: No such file or directory
/home/pascal/freeremote/freeremoted-0.1.4/server/dbus.h:30:35: error: dbus++/basic_struct.hpp: No such file or directory
/home/pascal/freeremote/freeremoted-0.1.4/server/dbus.h:31:30: error: dbus++/variant.hpp: No such file or directory
/home/pascal/freeremote/freeremoted-0.1.4/server/dbus.h:32:34: error: dbus++/fixed_array.hpp: No such file or directory
/home/pascal/freeremote/freeremoted-0.1.4/server/dbus.h:33:47: error: dbus++/standard_interface_proxy.hpp: No such file or directory
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:35:27: error: dbus++/dbus.hpp: No such file or directory
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:36:38: error: dbus++/mainloop_object.hpp: No such file or directory
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:37:32: error: dbus++/exception.hpp: No such file or directory
In file included from /home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:25:
/home/pascal/freeremote/freeremoted-0.1.4/server/manager.h:39: error: ‘dbuspp’ has not been declared
/home/pascal/freeremote/freeremoted-0.1.4/server/manager.h:39: error: expected `{' before ‘object’
/home/pascal/freeremote/freeremoted-0.1.4/server/manager.h:39: error: function definition does not declare parameters
In file included from /home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:30:
/home/pascal/freeremote/freeremoted-0.1.4/server/dbus.h:35: error: expected constructor, destructor, or type conversion before ‘(’ token
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp: In constructor ‘freeremote::Application::Application()’:
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:67: error: ‘MODULEFILE_PATH’ was not declared in this scope
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp: In member function ‘void freeremote::Application::parseCommandLine(int, char**)’:
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:101: error: ‘cout’ is not a member of ‘std’
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:107: error: ‘cout’ is not a member of ‘std’
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:107: error: ‘VERSION’ was not declared in this scope
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:139: error: ‘cout’ is not a member of ‘std’
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:140: error: ‘cout’ is not a member of ‘std’
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp: In member function ‘void freeremote::Application::isRunning() const’:
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:152: error: ‘dbuspp’ has not been declared
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:152: error: expected `;' before ‘dbus’
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:153: error: ‘dbuspp’ has not been declared
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:153: error: expected `;' before ‘service’
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:155: error: ‘root’ was not declared in this scope
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:155: error: expected `;' before ‘dbusRoot’
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:156: error: ‘dbusRoot’ was not declared in this scope
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:156: error: ‘service’ was not declared in this scope
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp: In member function ‘void freeremote::Application::daemonize()’:
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:174: error: ‘LOGFILE’ was not declared in this scope
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp: In member function ‘void freeremote::Application::checkCfgFile()’:
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:199: error: ‘CONFIGFILE_PATH’ was not declared in this scope
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp: In member function ‘void freeremote::Application::exec()’:
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:226: error: ‘dbuspp’ has not been declared
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:226: error: expected `;' before ‘dbus’
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:227: error: ‘dbuspp’ has not been declared
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:227: error: expected `;' before ‘service’
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:229: error: ‘dbuspp’ has not been declared
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:229: error: expected `;' before ‘mainLoop’
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:230: error: ‘mainLoop’ was not declared in this scope
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:230: error: ‘service’ was not declared in this scope
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:232: error: aggregate ‘freeremote::Manager manager’ has incomplete type and cannot be defined
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:239: error: ‘dbus’ was not declared in this scope
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:243: error: ISO C++ forbids declaration of ‘dbuspp’ with no type
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:243: error: expected `)' before ‘::’ token
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:243: error: expected `{' before ‘::’ token
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:243: error: ‘::dbus_exception’ has not been declared
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:243: error: ‘x’ was not declared in this scope
/home/pascal/freeremote/freeremoted-0.1.4/server/application.cpp:243: error: expected `;' before ‘)’ token
make[2]: *** [server/CMakeFiles/freeremoted.dir/application.cpp.o] Error 1
make[1]: *** [server/CMakeFiles/freeremoted.dir/all] Error 2
make: *** [all] Error 2
Ratings & Comments
8 Comments
Hi, I'm trying to compile under Slackware 13. It has kde 4.2.4 (so no irkick), is it compatible? When I try to compile the server I get:
You need to install the missing libraries: libdbus + + (http://sourceforge.net/projects/libdbuspp/) tinyxml (http://sourceforge.net/projects/tinyxml/)
is this somehow related to the kde4 port of irkick or is this a whole new project?
This is a new project. Wants to create a common service (daemon) which will be able to work different carefull (KDE, Gnome, console).
carefull == clients :)
in any case, it's an interesting project :) keep going ;)
Thank you for your kind words. :)
Add archive contains two archives: the source server and client