blob: 3392fcc8efa06053a8ae9e3615246d37a38ac117 [file] [log] [blame]
/* @file
* @brief Internal APIs for Audio ISO handling
*
* Copyright (c) 2022 Codecoup
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/bluetooth/iso.h>
#include <zephyr/bluetooth/audio/audio.h>
struct bt_audio_iso_ep {
struct bt_audio_ep *ep;
struct bt_iso_chan_path path;
struct bt_iso_chan_io_qos qos;
uint8_t cc[CONFIG_BT_CODEC_MAX_DATA_COUNT * CONFIG_BT_CODEC_MAX_DATA_LEN];
};
struct bt_audio_iso {
struct bt_iso_chan chan;
struct bt_iso_chan_qos qos;
struct bt_audio_iso_ep rx;
struct bt_audio_iso_ep tx;
/* Must be at the end so that everything else in the structure can be
* memset to zero without affecting the ref.
*/
atomic_t ref;
};
typedef bool (*bt_audio_iso_func_t)(struct bt_audio_iso *iso, void *user_data);
struct bt_audio_iso *bt_audio_iso_new(void);
struct bt_audio_iso *bt_audio_iso_ref(struct bt_audio_iso *iso);
void bt_audio_iso_unref(struct bt_audio_iso *iso);
void bt_audio_iso_foreach(bt_audio_iso_func_t func, void *user_data);
struct bt_audio_iso *bt_audio_iso_find(bt_audio_iso_func_t func,
void *user_data);
void bt_audio_iso_init(struct bt_audio_iso *iso, struct bt_iso_chan_ops *ops);
void bt_audio_iso_bind_ep(struct bt_audio_iso *iso, struct bt_audio_ep *ep);
void bt_audio_iso_unbind_ep(struct bt_audio_iso *iso, struct bt_audio_ep *ep);
struct bt_audio_ep *bt_audio_iso_get_ep(struct bt_audio_iso *iso,
enum bt_audio_dir dir);