main.c revision 29efa57d5a27b0cf5997381053be9cc48b2c2e80
1c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann/*
2c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *
3c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *  BlueZ - Bluetooth protocol stack for Linux
4c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *
5e823c15e43a6f924779e466d434c51157002d9eeMarcel Holtmann *  Copyright (C) 2004-2008  Marcel Holtmann <marcel@holtmann.org>
6c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *
7c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *
8c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *  This program is free software; you can redistribute it and/or modify
9c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *  it under the terms of the GNU General Public License as published by
10c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *  the Free Software Foundation; either version 2 of the License, or
11c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *  (at your option) any later version.
12c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *
13c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *  This program is distributed in the hope that it will be useful,
14c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *  GNU General Public License for more details.
17c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *
18c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *  You should have received a copy of the GNU General Public License
19c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *  along with this program; if not, write to the Free Software
20c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
21c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann *
22c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann */
23c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann
24c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann#ifdef HAVE_CONFIG_H
25c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann#include <config.h>
26c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann#endif
27c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann
28c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann#include <errno.h>
29c97480f11bdfdc3cbb867b8127074bcb6b047024Marcel Holtmann
303eb0a5cd951b680c89f92bce6dddce2da2539af0Johan Hedberg#include <dbus/dbus.h>
313eb0a5cd951b680c89f92bce6dddce2da2539af0Johan Hedberg
3229efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel Holtmann#include "plugin.h"
333eb0a5cd951b680c89f92bce6dddce2da2539af0Johan Hedberg#include "dbus.h"
3474b978057e7b3f8cad2952c0fe50a17a118339adMarcel Holtmann#include "manager.h"
353eb0a5cd951b680c89f92bce6dddce2da2539af0Johan Hedberg
3629efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel Holtmannstatic DBusConnection *conn;
37c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann
3829efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel Holtmannstatic int input_init(void)
39c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann{
4029efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel Holtmann	conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
4129efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel Holtmann	if (conn == NULL)
4229efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel Holtmann		return -EIO;
433eb0a5cd951b680c89f92bce6dddce2da2539af0Johan Hedberg
4429efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel Holtmann	if (input_manager_init(conn) < 0) {
4540ebcf393b790a4e6553e1314b29f0f34b3377a3Marcel Holtmann		dbus_connection_unref(conn);
4629efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel Holtmann		return -EIO;
473eb0a5cd951b680c89f92bce6dddce2da2539af0Johan Hedberg	}
483eb0a5cd951b680c89f92bce6dddce2da2539af0Johan Hedberg
4929efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel Holtmann	register_external_service(conn, "input", "Input service", "");
50398f6814486536e5906c3723f23cdae9e3c4642aMarcel Holtmann
5129efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel Holtmann	return 0;
5229efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel Holtmann}
533eb0a5cd951b680c89f92bce6dddce2da2539af0Johan Hedberg
5429efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel Holtmannstatic void input_exit(void)
5529efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel Holtmann{
5629efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel Holtmann	input_manager_exit();
57c6cd1ad500588247d4293b96db66d7a140ee81ecClaudio Takahasi
5840ebcf393b790a4e6553e1314b29f0f34b3377a3Marcel Holtmann	dbus_connection_unref(conn);
59c761480865c6b65e370e2bba750c86c226a7fc3fMarcel Holtmann}
6029efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel Holtmann
6129efa57d5a27b0cf5997381053be9cc48b2c2e80Marcel HoltmannBLUETOOTH_PLUGIN_DEFINE("input", input_init, input_exit)
62