| /* Copyright (c) 2014 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_IODEV_H_ |
| #define CRAS_BT_IODEV_H_ |
| |
| #include "cras_bt_device.h" |
| |
| struct cras_iodev; |
| |
| /* Creates a bluetooth iodev. */ |
| struct cras_iodev *cras_bt_io_create(struct cras_bt_device *device, |
| struct cras_iodev *dev, |
| enum cras_bt_device_profile profile); |
| |
| /* Destroys a bluetooth iodev. */ |
| void cras_bt_io_destroy(struct cras_iodev *bt_iodev); |
| |
| /* Looks up for the node of given profile, returns NULL if doesn't exist. */ |
| struct cras_ionode *cras_bt_io_get_profile(struct cras_iodev *bt_iodev, |
| enum cras_bt_device_profile profile); |
| |
| /* Appends a profile specific iodev to bt_iodev. */ |
| int cras_bt_io_append(struct cras_iodev *bt_iodev, struct cras_iodev *dev, |
| enum cras_bt_device_profile profile); |
| |
| /* Checks if the active node of bt_io matches a profile. */ |
| int cras_bt_io_on_profile(struct cras_iodev *bt_iodev, |
| enum cras_bt_device_profile profile); |
| |
| /* Returns A2DP, HFP or HSP that this bt_iodev is running for. |
| * Do NOT use this function except for logging. |
| */ |
| enum cras_bt_device_profile |
| cras_bt_io_profile_to_log(struct cras_iodev *bt_iodev); |
| |
| /* Dry-run the profile device removal from bt_iodev. |
| * Returns: |
| * 0 if the bt_iodev will be empty and should to be destroied |
| * after the removal, othersie the value of the next preffered |
| * profile to use. |
| */ |
| unsigned int cras_bt_io_try_remove(struct cras_iodev *bt_iodev, |
| struct cras_iodev *dev); |
| |
| /* Removes a profile specific iodev from bt_iodev. |
| * Returns: |
| * 0 if dev is removed and bt_iodev successfully updated to |
| * the new profile, otherwise return negative error code. */ |
| int cras_bt_io_remove(struct cras_iodev *bt_iodev, struct cras_iodev *dev); |
| |
| #endif /* CRAS_BT_IODEV_H_ */ |