/* Copyright (c) 2013 The Chromium 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_TRANSPORT_H_ #define CRAS_BT_TRANSPORT_H_ #include <dbus/dbus.h> #include <stdint.h> #include "cras_bt_device.h" struct cras_bt_endpoint; struct cras_bt_transport; enum cras_bt_transport_state { CRAS_BT_TRANSPORT_STATE_IDLE, CRAS_BT_TRANSPORT_STATE_PENDING, CRAS_BT_TRANSPORT_STATE_ACTIVE }; struct cras_bt_transport *cras_bt_transport_create(DBusConnection *conn, const char *object_path); void cras_bt_transport_set_endpoint(struct cras_bt_transport *transport, struct cras_bt_endpoint *endpoint); void cras_bt_transport_destroy(struct cras_bt_transport *transport); void cras_bt_transport_reset(); struct cras_bt_transport *cras_bt_transport_get(const char *object_path); size_t cras_bt_transport_get_list( struct cras_bt_transport ***transport_list_out); const char *cras_bt_transport_object_path( const struct cras_bt_transport *transport); struct cras_bt_device *cras_bt_transport_device( const struct cras_bt_transport *transport); enum cras_bt_device_profile cras_bt_transport_profile( const struct cras_bt_transport *transport); int cras_bt_transport_configuration(const struct cras_bt_transport *transport, void *configuration, int len); enum cras_bt_transport_state cras_bt_transport_state( const struct cras_bt_transport *transport); int cras_bt_transport_fd(const struct cras_bt_transport *transport); uint16_t cras_bt_transport_write_mtu(const struct cras_bt_transport *transport); void cras_bt_transport_update_properties( struct cras_bt_transport *transport, DBusMessageIter *properties_array_iter, DBusMessageIter *invalidated_array_iter); int cras_bt_transport_try_acquire(struct cras_bt_transport *transport); int cras_bt_transport_acquire(struct cras_bt_transport *transport); /* Releases the cras_bt_transport. * Args: * transport - The transport object to release * blocking - True to send release dbus message in blocking mode, otherwise * in non-block mode. */ int cras_bt_transport_release(struct cras_bt_transport *transport, unsigned int blocking); /* Sets the volume to cras_bt_transport. Note that the volume gets applied * to BT headset only when the transport is in ACTIVE state. * Args: * transport - The transport object to set volume to. * volume - The desired volume value, range in [0-127]. */ int cras_bt_transport_set_volume(struct cras_bt_transport *transport, uint16_t volume); #endif /* CRAS_BT_TRANSPORT_H_ */