1 /* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
2  * Use of this source code is governed by a BSD-style license that can be
3  * found in the LICENSE file.
4  */
5 
6 #ifndef CRAS_BT_PROFILE_H_
7 #define CRAS_BT_PROFILE_H_
8 
9 #include <dbus/dbus.h>
10 
11 #include "cras_bt_device.h"
12 
13 #define PROFILE_MANAGER_OBJ_PATH "/org/bluez"
14 
15 /* Structure in cras to represent an external profile of bluez. All members
16  * and functions are documented in bluez/doc/profile-api.txt, more options
17  * can be put into this structure when we need it.
18  */
19 struct cras_bt_profile {
20 	const char *name;
21 	const char *object_path;
22 	const char *uuid;
23 	const char *role;
24 	const char *record;
25 	int version;
26 	int features;
27 	void (*release)(struct cras_bt_profile *profile);
28 	int (*new_connection)(DBusConnection *conn,
29 			      struct cras_bt_profile *profile,
30 			      struct cras_bt_device *device,
31 			      int rfcomm_fd);
32 	void (*request_disconnection)(struct cras_bt_profile *profile,
33 				      struct cras_bt_device *device);
34 	void (*cancel)(struct cras_bt_profile *profile);
35 	struct cras_bt_profile *prev, *next;
36 };
37 
38 /* Adds the profile to cras and registers it with bluez.
39  * Args:
40  *    conn - The dbus connection.
41  *    profile - Pointer to the profile structure to be add.
42  */
43 int cras_bt_add_profile(DBusConnection *conn,
44 			struct cras_bt_profile *profile);
45 
46 /* Gets the profile by object path.
47  * Args:
48  *    path - The object path of the desired profile.
49  *
50  * Returns:
51  *    The profile of the requested object path, or NULL if it
52  *    does not exist.
53  */
54 struct cras_bt_profile *cras_bt_profile_get(const char *path);
55 
56 /* Resets all added profiles. */
57 void cras_bt_profile_reset();
58 
59 /* Notifies all profiles when a device is disconnected. */
60 void cras_bt_profile_on_device_disconnected(struct cras_bt_device *device);
61 
62 /* Registers all added profiles.
63  * Args:
64  *    conn - The dbus connection.
65  * Returns:
66  *    0 on success, or negative error code on failure.
67  */
68 int cras_bt_register_profiles(DBusConnection *conn);
69 
70 #endif /* CRAS_BT_PROFILE_H_ */
71