1e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann/*
2e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *
3e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *  BlueZ - Bluetooth protocol stack for Linux
4e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *
59184e2eeb7b97371c6b83b747c8984e2340d2b47Marcel Holtmann *  Copyright (C) 2004-2010  Marcel Holtmann <marcel@holtmann.org>
6e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *
7e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *
8e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *  This program is free software; you can redistribute it and/or modify
9e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *  it under the terms of the GNU General Public License as published by
10e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *  the Free Software Foundation; either version 2 of the License, or
11e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *  (at your option) any later version.
12e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *
13e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *  This program is distributed in the hope that it will be useful,
14e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *  GNU General Public License for more details.
17e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *
18e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *  You should have received a copy of the GNU General Public License
19e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *  along with this program; if not, write to the Free Software
20e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
21e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann *
22e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann */
23e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann
24e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann#ifdef HAVE_CONFIG_H
25e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann#include <config.h>
26e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann#endif
27e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann
28d78b22fe007467b1e5129e6e7f0f5752fac85efeMarcel Holtmann#include <errno.h>
29e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann
30a1a1a2637ec9090c021dd83ed7707aabf5a8c0f4Marcel Holtmann#include <gdbus.h>
316dc594dbea588a7285dff7eac35d1c0c3fca206dMarcel Holtmann
32d78b22fe007467b1e5129e6e7f0f5752fac85efeMarcel Holtmann#include "plugin.h"
33d78b22fe007467b1e5129e6e7f0f5752fac85efeMarcel Holtmann#include "manager.h"
3424cce397c3479e95f3e525da9285234fbafd2984Marcel Holtmann
35c74f11481aabe51612c7200e1e3ab91f7f1c4abbMarcel Holtmannstatic DBusConnection *connection;
3640c45f2330725c32563e110474a91d1fe1109088Claudio Takahasi
37d78b22fe007467b1e5129e6e7f0f5752fac85efeMarcel Holtmannstatic int serial_init(void)
38e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann{
3940c45f2330725c32563e110474a91d1fe1109088Claudio Takahasi	connection = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
4040c45f2330725c32563e110474a91d1fe1109088Claudio Takahasi	if (connection == NULL)
41d78b22fe007467b1e5129e6e7f0f5752fac85efeMarcel Holtmann		return -EIO;
42cdb1b7c3435688bc6f30a3953f1152247ec51b95Claudio Takahasi
4340c45f2330725c32563e110474a91d1fe1109088Claudio Takahasi	if (serial_manager_init(connection) < 0) {
4440c45f2330725c32563e110474a91d1fe1109088Claudio Takahasi		dbus_connection_unref(connection);
45d78b22fe007467b1e5129e6e7f0f5752fac85efeMarcel Holtmann		return -EIO;
4640c45f2330725c32563e110474a91d1fe1109088Claudio Takahasi	}
4724cce397c3479e95f3e525da9285234fbafd2984Marcel Holtmann
48d78b22fe007467b1e5129e6e7f0f5752fac85efeMarcel Holtmann	return 0;
49d78b22fe007467b1e5129e6e7f0f5752fac85efeMarcel Holtmann}
50cdb1b7c3435688bc6f30a3953f1152247ec51b95Claudio Takahasi
51d78b22fe007467b1e5129e6e7f0f5752fac85efeMarcel Holtmannstatic void serial_exit(void)
52d78b22fe007467b1e5129e6e7f0f5752fac85efeMarcel Holtmann{
53d78b22fe007467b1e5129e6e7f0f5752fac85efeMarcel Holtmann	serial_manager_exit();
54c74f11481aabe51612c7200e1e3ab91f7f1c4abbMarcel Holtmann
5540c45f2330725c32563e110474a91d1fe1109088Claudio Takahasi	dbus_connection_unref(connection);
56e6fe40e5e92a6942869a2fc7e7cb210d18da3929Marcel Holtmann}
57d78b22fe007467b1e5129e6e7f0f5752fac85efeMarcel Holtmann
58e050cc3d1458116cad6f4182c81ba7d31949857cAlok BarsodeBLUETOOTH_PLUGIN_DEFINE(serial, VERSION,
592f28c39a63e19e41598af8088c5677859364bc04Alok Barsode			BLUETOOTH_PLUGIN_PRIORITY_DEFAULT, serial_init, serial_exit)
60