1/* 2 * 3 * BlueZ - Bluetooth protocol stack for Linux 4 * 5 * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org> 6 * 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 21 * 22 */ 23 24#ifdef HAVE_CONFIG_H 25#include <config.h> 26#endif 27 28#include <errno.h> 29 30#include <bluetooth/bluetooth.h> 31 32#include <gdbus.h> 33 34#include "plugin.h" 35#include "log.h" 36#include "manager.h" 37 38static GKeyFile *load_config_file(const char *file) 39{ 40 GKeyFile *keyfile; 41 GError *err = NULL; 42 43 keyfile = g_key_file_new(); 44 45 if (!g_key_file_load_from_file(keyfile, file, 0, &err)) { 46 error("Parsing %s failed: %s", file, err->message); 47 g_error_free(err); 48 g_key_file_free(keyfile); 49 return NULL; 50 } 51 52 return keyfile; 53} 54 55static DBusConnection *connection; 56 57static int input_init(void) 58{ 59 GKeyFile *config; 60 61 connection = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); 62 if (connection == NULL) 63 return -EIO; 64 65 config = load_config_file(CONFIGDIR "/input.conf"); 66 67 if (input_manager_init(connection, config) < 0) { 68 dbus_connection_unref(connection); 69 return -EIO; 70 } 71 72 if (config) 73 g_key_file_free(config); 74 75 return 0; 76} 77 78static void input_exit(void) 79{ 80 input_manager_exit(); 81 82 dbus_connection_unref(connection); 83} 84 85BLUETOOTH_PLUGIN_DEFINE(input, VERSION, 86 BLUETOOTH_PLUGIN_PRIORITY_DEFAULT, input_init, input_exit) 87