| /* Copyright (c) 2013 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef CRAS_BT_PROFILE_H_ |
| #define CRAS_BT_PROFILE_H_ |
| |
| #include <dbus/dbus.h> |
| |
| #include "cras_bt_device.h" |
| |
| #define PROFILE_MANAGER_OBJ_PATH "/org/bluez" |
| |
| /* Structure in cras to represent an external profile of bluez. All members |
| * and functions are documented in bluez/doc/profile-api.txt, more options |
| * can be put into this structure when we need it. |
| */ |
| struct cras_bt_profile { |
| const char *name; |
| const char *object_path; |
| const char *uuid; |
| const char *role; |
| const char *record; |
| int version; |
| int features; |
| void (*release)(struct cras_bt_profile *profile); |
| int (*new_connection)(DBusConnection *conn, |
| struct cras_bt_profile *profile, |
| struct cras_bt_device *device, int rfcomm_fd); |
| void (*request_disconnection)(struct cras_bt_profile *profile, |
| struct cras_bt_device *device); |
| void (*cancel)(struct cras_bt_profile *profile); |
| struct cras_bt_profile *prev, *next; |
| }; |
| |
| /* Adds the profile to cras and registers it with bluez. |
| * Args: |
| * conn - The dbus connection. |
| * profile - Pointer to the profile structure to be add. |
| */ |
| int cras_bt_add_profile(DBusConnection *conn, struct cras_bt_profile *profile); |
| |
| /* Removes |profile| from the list of profiles registered with bluez. |
| * Args: |
| * conn - The dbus connection. |
| * profile - Pointer to the profile structure to be removed. |
| */ |
| int cras_bt_rm_profile(DBusConnection *conn, struct cras_bt_profile *profile); |
| |
| /* Gets the profile by object path. |
| * Args: |
| * path - The object path of the desired profile. |
| * |
| * Returns: |
| * The profile of the requested object path, or NULL if it |
| * does not exist. |
| */ |
| struct cras_bt_profile *cras_bt_profile_get(const char *path); |
| |
| /* Resets all added profiles. */ |
| void cras_bt_profile_reset(); |
| |
| /* Notifies all profiles when a device is disconnected. */ |
| void cras_bt_profile_on_device_disconnected(struct cras_bt_device *device); |
| |
| /* Registeres |profile| with bluez. |
| * Args: |
| * conn - The dbus connection. |
| * profile - Pointer to the profile structure to be registered. |
| */ |
| int cras_bt_register_profile(DBusConnection *conn, |
| struct cras_bt_profile *profile); |
| |
| /* Unregisteres |profile| with bluez. |
| * Args: |
| * conn - The dbus connection. |
| * profile - Pointer to the profile structure to be unregistered. |
| */ |
| int cras_bt_unregister_profile(DBusConnection *conn, |
| struct cras_bt_profile *profile); |
| |
| /* Registers all added profiles. |
| * Args: |
| * conn - The dbus connection. |
| * Returns: |
| * 0 on success, or negative error code on failure. |
| */ |
| int cras_bt_register_profiles(DBusConnection *conn); |
| |
| #endif /* CRAS_BT_PROFILE_H_ */ |