Home | History | Annotate | Download | only in server
      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