1a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz/*
2a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *
3a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *  BlueZ - Bluetooth protocol stack for Linux
4a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz *
55592142cb9383df0556b27ac59e96547b380310bJohan Hedberg *  Copyright (C) 2006-2010  Nokia Corporation
69184e2eeb7b97371c6b83b747c8984e2340d2b47Marcel Holtmann *  Copyright (C) 2004-2010  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
25f791c862d81b027c9da47005e6b8fb7bb1f9687fDaniel Orstadius#define GENERIC_AUDIO_UUID	"00001203-0000-1000-8000-00805f9b34fb"
26a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz
27f791c862d81b027c9da47005e6b8fb7bb1f9687fDaniel Orstadius#define HSP_HS_UUID		"00001108-0000-1000-8000-00805f9b34fb"
28f791c862d81b027c9da47005e6b8fb7bb1f9687fDaniel Orstadius#define HSP_AG_UUID		"00001112-0000-1000-8000-00805f9b34fb"
29a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz
30f791c862d81b027c9da47005e6b8fb7bb1f9687fDaniel Orstadius#define HFP_HS_UUID		"0000111e-0000-1000-8000-00805f9b34fb"
31f791c862d81b027c9da47005e6b8fb7bb1f9687fDaniel Orstadius#define HFP_AG_UUID		"0000111f-0000-1000-8000-00805f9b34fb"
32a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz
33f791c862d81b027c9da47005e6b8fb7bb1f9687fDaniel Orstadius#define ADVANCED_AUDIO_UUID	"0000110d-0000-1000-8000-00805f9b34fb"
34a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz
35f791c862d81b027c9da47005e6b8fb7bb1f9687fDaniel Orstadius#define A2DP_SOURCE_UUID	"0000110a-0000-1000-8000-00805f9b34fb"
36f791c862d81b027c9da47005e6b8fb7bb1f9687fDaniel Orstadius#define A2DP_SINK_UUID		"0000110b-0000-1000-8000-00805f9b34fb"
37a53371133fb399bd7fc70c131a82b64e7e20bac8Luiz Augusto von Dentz
38f791c862d81b027c9da47005e6b8fb7bb1f9687fDaniel Orstadius#define AVRCP_REMOTE_UUID	"0000110e-0000-1000-8000-00805f9b34fb"
39f791c862d81b027c9da47005e6b8fb7bb1f9687fDaniel Orstadius#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);
9304394771451b4fd89501dd665f1f0d2cefb4f05aJohan Hedberg
9404394771451b4fd89501dd665f1f0d2cefb4f05aJohan Hedbergvoid audio_device_set_authorized(struct audio_device *dev, gboolean auth);
95