device.h revision 88d7897d4c6e129c52d7f84a670d49e712e27fd1
1a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz/*
2a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *
3a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *  BlueZ - Bluetooth protocol stack for Linux
4a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *
5de72271829f6bfd21aa6550a2ac6d81e35b53cadMarcel Holtmann *  Copyright (C) 2006-2007  Nokia Corporation
6fb333f1c88df9c50529a390297565a6627bcf7adMarcel Holtmann *  Copyright (C) 2004-2009  Marcel Holtmann <marcel@holtmann.org>
7a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *
8a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *
9a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *  This program is free software; you can redistribute it and/or modify
10a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *  it under the terms of the GNU General Public License as published by
11a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *  the Free Software Foundation; either version 2 of the License, or
12a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *  (at your option) any later version.
13a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *
14a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *  This program is distributed in the hope that it will be useful,
15a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *  GNU General Public License for more details.
18a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *
19a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *  You should have received a copy of the GNU General Public License
20a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *  along with this program; if not, write to the Free Software
21a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
22a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *
23a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz */
24a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz
251a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann#define GENERIC_AUDIO_UUID	"00001203-0000-1000-8000-00805F9B34FB"
26a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz
271a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann#define HSP_HS_UUID		"00001108-0000-1000-8000-00805F9B34FB"
281a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann#define HSP_AG_UUID		"00001112-0000-1000-8000-00805F9B34FB"
29a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz
301a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann#define HFP_HS_UUID		"0000111E-0000-1000-8000-00805F9B34FB"
311a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann#define HFP_AG_UUID		"0000111F-0000-1000-8000-00805F9B34FB"
32a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz
331a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann#define ADVANCED_AUDIO_UUID	"0000110D-0000-1000-8000-00805F9B34FB"
34a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz
351a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann#define A2DP_SOURCE_UUID	"0000110A-0000-1000-8000-00805F9B34FB"
361a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann#define A2DP_SINK_UUID		"0000110B-0000-1000-8000-00805F9B34FB"
37a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz
381a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann#define AVRCP_REMOTE_UUID	"0000110E-0000-1000-8000-00805F9B34FB"
391a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann#define AVRCP_TARGET_UUID	"0000110C-0000-1000-8000-00805F9B34FB"
40a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz
41a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz/* Move these to respective .h files once they exist */
42779b2cbee39544eefd8c09152e856ecc854c6707Johan Hedberg#define AUDIO_SOURCE_INTERFACE		"org.bluez.AudioSource"
4326dc8445ffa66aa3c933442848c3a92070b25fb7Johan Hedberg#define AUDIO_CONTROL_INTERFACE		"org.bluez.Control"
441a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann
45a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentzstruct source;
46a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentzstruct control;
47a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentzstruct target;
48d013a1eaa7beebbb49c1fe0015c70ad81566d97cJohan Hedbergstruct sink;
49d013a1eaa7beebbb49c1fe0015c70ad81566d97cJohan Hedbergstruct headset;
50d013a1eaa7beebbb49c1fe0015c70ad81566d97cJohan Hedbergstruct gateway;
5197e8180cfd8a2f31153bf40fed14826e064f7476Johan Hedbergstruct dev_priv;
52a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz
53caf9fdd6d0183afc3b21d1cd82eb637773c131deMarcel Holtmannstruct audio_device {
54548026e08bd9b83b3685d515a916e2cf674184f3Johan Hedberg	struct btd_device *btd_dev;
55548026e08bd9b83b3685d515a916e2cf674184f3Johan Hedberg
561a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann	DBusConnection *conn;
571a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann	char *path;
581a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann	bdaddr_t src;
591a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann	bdaddr_t dst;
601a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann
6180b1146a20aed2b63119a4d6557e6c9ec9b084c2Johan Hedberg	gboolean auto_connect;
6280b1146a20aed2b63119a4d6557e6c9ec9b084c2Johan Hedberg
631a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann	struct headset *headset;
641a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann	struct gateway *gateway;
651a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann	struct sink *sink;
661a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann	struct source *source;
671a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann	struct control *control;
681a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann	struct target *target;
698569aed5570e415a2d4361c521c0b511684e3b7eJohan Hedberg
7088d7897d4c6e129c52d7f84a670d49e712e27fd1Johan Hedberg	guint hs_preauth_id;
7188d7897d4c6e129c52d7f84a670d49e712e27fd1Johan Hedberg
7297e8180cfd8a2f31153bf40fed14826e064f7476Johan Hedberg	struct dev_priv *priv;
73a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz};
74a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz
7560ec17b68922904833973af118ff91e0f1df1b04Luiz Augusto von Dentzstruct audio_device *audio_device_register(DBusConnection *conn,
765063d28f172642d0e51c49f1e5d5881c87a36f20Luiz Augusto von Dentz					struct btd_device *device,
7712d81a98fe65d109c0b1caa242e96b005bcc8209Luiz Augusto von Dentz					const char *path, const bdaddr_t *src,
7812d81a98fe65d109c0b1caa242e96b005bcc8209Luiz Augusto von Dentz					const bdaddr_t *dst);
791a03aad91407d5b170787c24e32edfc2e673d76cMarcel Holtmann
8060ec17b68922904833973af118ff91e0f1df1b04Luiz Augusto von Dentzvoid audio_device_unregister(struct audio_device *device);
8192f94938b981fe6a892e365670d5fa4d58c94283Marcel Holtmann
829c3f955375abff0d9ec2c151a5ad4b402c0ac29eJohan Hedberggboolean audio_device_is_active(struct audio_device *dev,
8360ec17b68922904833973af118ff91e0f1df1b04Luiz Augusto von Dentz						const char *interface);
84e7e1be5d17f182e5d4119fc47cc18732511e363eLuiz Augusto von Dentz
85e7e1be5d17f182e5d4119fc47cc18732511e363eLuiz Augusto von Dentztypedef void (*authorization_cb) (DBusError *derr, void *user_data);
86e7e1be5d17f182e5d4119fc47cc18732511e363eLuiz Augusto von Dentz
8788d7897d4c6e129c52d7f84a670d49e712e27fd1Johan Hedbergint audio_device_cancel_authorization(struct audio_device *dev,
8888d7897d4c6e129c52d7f84a670d49e712e27fd1Johan Hedberg					authorization_cb cb, void *user_data);
8988d7897d4c6e129c52d7f84a670d49e712e27fd1Johan Hedberg
90e7e1be5d17f182e5d4119fc47cc18732511e363eLuiz Augusto von Dentzint audio_device_request_authorization(struct audio_device *dev,
91e7e1be5d17f182e5d4119fc47cc18732511e363eLuiz Augusto von Dentz					const char *uuid, authorization_cb cb,
92e7e1be5d17f182e5d4119fc47cc18732511e363eLuiz Augusto von Dentz					void *user_data);
93