Copyright (C) 2011-2014 Reto Buerki <reet@codelabs.ch>. Free use of this software is granted under the terms of the GNAT Modified General Public License (GMGPL).
D_Bus/Ada |
The D_Bus/Ada library provides an Ada binding to the D-Bus message bus used for inter-process communication on most modern Linux desktop systems. LicenceCopyright (C) 2011-2014 Reto Buerki <reet@codelabs.ch>. Free use of this software is granted under the terms of the GNAT Modified General Public License (GMGPL). DownloadRelease versionThe current release version of D_Bus/Ada is available at http://www.codelabs.ch/download/. Verify a ReleaseTo verify the integrity and authenticity of the distribution tarball, import the key http://www.codelabs.ch/keys/0xBB793815pub.asc and type the following command: $ gpg --verify libdbusada-{version}.tar.bz2.sig The key fingerprint of the public key (0xBB793815) is: Key fingerprint = A2FB FF56 83FB 67D8 017B C50C F8C5 F8B5 BB79 3815 Development versionThe current development version of D_Bus/Ada is available through its git repository: $ git clone http://git.codelabs.ch/git/dbus-ada.git A browsable version of the repository is available here: http://git.codelabs.ch/?p=dbus-ada.git. BuildTo compile D_Bus/Ada on your system, you need to have the following software installed:
TestingBefore you install D_Bus/Ada on your system, you might want to test the library and verify that everything works as expected. D_Bus/Ada contains an unit test suite which can be run by entering the following command: $ make tests InstallationTo install D_Bus/Ada on your system, type the following: $ make PREFIX=/usr/local install If no PREFIX is specified, $(HOME)/libraries is used as install destination. ExamplesD_Bus/Ada provides example code to demonstrate the usage of the D_Bus/Ada API. To build all examples type the following: $ make examples You can start an example application like so: obj/examples/list_names. The following code connects to the D-Bus session bus, calls the remote org.freedesktop.DBus.ListNames method and prints all the results: -- -- D_Bus/Ada - An Ada binding to D-Bus -- -- Copyright (C) 2011, 2012 Reto Buerki <reet@codelabs.ch> -- -- This program is free software; you can redistribute it and/or -- modify it under the terms of the GNU General Public License -- as published by the Free Software Foundation; either version 2 -- of the License, or (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -- USA. -- -- As a special exception, if other files instantiate generics from this -- unit, or you link this unit with other files to produce an -- executable this unit does not by itself cause the resulting -- executable to be covered by the GNU General Public License. This -- exception does not however invalidate any other reasons why the -- executable file might be covered by the GNU Public License. -- with Ada.Text_IO; with D_Bus.Types; with D_Bus.Arguments.Basic; with D_Bus.Arguments.Containers; with D_Bus.Connection; pragma Unreferenced (D_Bus.Arguments.Basic); pragma Unreferenced (D_Bus.Arguments.Containers); procedure List_Names is use D_Bus; use D_Bus.Arguments.Basic; use type D_Bus.Types.Obj_Path; -- Connect to the D-Bus session bus Conn : constant Connection.Connection_Type := Connection.Connect; Result : Arguments.Argument_List_Type; procedure Print (Argument : Arguments.Argument_Type'Class); -- Print out an argument. procedure Print (Argument : Arguments.Argument_Type'Class) is begin Ada.Text_IO.Set_Col (To => 1); Ada.Text_IO.Put ("(" & Argument.Get_Code'Img & " )"); Ada.Text_IO.Set_Col (To => 10); Ada.Text_IO.Put_Line (Argument.To_String); end Print; begin -- Request a name on the bus Connection.Request_Name (Connection => Conn, Name => "dbus.ada.caller"); -- Call a method on a remote object Result := Connection.Call_Blocking (Connection => Conn, Destination => "org.freedesktop.DBus", Path => +"/", Iface => "org.freedesktop.DBus", Method => "ListNames"); Ada.Text_IO.Put_Line ("Method called successfully:"); Arguments.Iterate (List => Result, Process => Print'Access); end List_Names; |