1/* 2 * 3 * BlueZ - Bluetooth protocol stack for Linux 4 * 5 * Copyright (C) 2010 GSyC/LibreSoft, Universidad Rey Juan Carlos. 6 * Authors: 7 * Santiago Carot Nemesio <sancane at gmail.com> 8 * Jose Antonio Santos-Cadenas <santoscadenas at gmail.com> 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License as published by 12 * the Free Software Foundation; either version 2 of the License, or 13 * (at your option) any later version. 14 * 15 * This program is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 * 20 * You should have received a copy of the GNU General Public License 21 * along with this program; if not, write to the Free Software 22 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 23 * 24 */ 25 26#ifdef HAVE_CONFIG_H 27#include <config.h> 28#endif 29 30#include <bluetooth/sdp.h> 31#include <bluetooth/sdp_lib.h> 32 33#include <btio.h> 34#include <adapter.h> 35#include <device.h> 36 37#include "hdp_types.h" 38 39#include "log.h" 40#include "hdp_manager.h" 41#include "hdp.h" 42 43#include "glib-helper.h" 44 45static DBusConnection *connection = NULL; 46 47static int hdp_adapter_probe(struct btd_adapter *adapter) 48{ 49 return hdp_adapter_register(connection, adapter); 50} 51 52static void hdp_adapter_remove(struct btd_adapter *adapter) 53{ 54 hdp_adapter_unregister(adapter); 55} 56 57static struct btd_adapter_driver hdp_adapter_driver = { 58 .name = "hdp-adapter-driver", 59 .probe = hdp_adapter_probe, 60 .remove = hdp_adapter_remove, 61}; 62 63static int hdp_driver_probe(struct btd_device *device, GSList *uuids) 64{ 65 return hdp_device_register(connection, device); 66} 67 68static void hdp_driver_remove(struct btd_device *device) 69{ 70 hdp_device_unregister(device); 71} 72 73static struct btd_device_driver hdp_device_driver = { 74 .name = "hdp-device-driver", 75 .uuids = BTD_UUIDS(HDP_UUID, HDP_SOURCE_UUID, HDP_SINK_UUID), 76 .probe = hdp_driver_probe, 77 .remove = hdp_driver_remove 78}; 79 80int hdp_manager_init(DBusConnection *conn) 81{ 82 if (hdp_manager_start(conn)) 83 return -1; 84 85 connection = dbus_connection_ref(conn); 86 btd_register_adapter_driver(&hdp_adapter_driver); 87 btd_register_device_driver(&hdp_device_driver); 88 89 return 0; 90} 91 92void hdp_manager_exit(void) 93{ 94 btd_unregister_device_driver(&hdp_device_driver); 95 btd_unregister_adapter_driver(&hdp_adapter_driver); 96 hdp_manager_stop(); 97 98 dbus_connection_unref(connection); 99 connection = NULL; 100} 101